changelog shortlog graph tags branches changeset file revisions annotate raw help

Mercurial > demo / fig/tests/tester.fr

revision 18: a1137af05c8d
parent 17: e4c9ec452eb6
child 19: fd19fdc77a20
     1.1--- a/fig/tests/tester.fr	Sat May 27 21:07:55 2023 -0400
     1.2+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3@@ -1,66 +0,0 @@
     1.4-\ From: John Hayes S1I
     1.5-\ Subject: tester.fr
     1.6-\ Date: Mon, 27 Nov 95 13:10:09 PST  
     1.7-
     1.8-\ (C) 1995 JOHNS HOPKINS UNIVERSITY / APPLIED PHYSICS LABORATORY
     1.9-\ MAY BE DISTRIBUTED FREELY AS LONG AS THIS COPYRIGHT NOTICE REMAINS.
    1.10-\ VERSION 1.2
    1.11-
    1.12-\ 24/11/2015 Replaced Core Ext word <> with = 0=
    1.13-\ 31/3/2015 Variable #ERRORS added and incremented for each error reported.
    1.14-\ 22/1/09 The words { and } have been changed to T{ and }T respectively to
    1.15-\ agree with the Forth 200X file ttester.fs. This avoids clashes with
    1.16-\ locals using { ... } and the FSL use of } 
    1.17-
    1.18-HEX
    1.19-
    1.20-\ SET THE FOLLOWING FLAG TO TRUE FOR MORE VERBOSE OUTPUT; THIS MAY
    1.21-\ ALLOW YOU TO TELL WHICH TEST CAUSED YOUR SYSTEM TO HANG.
    1.22-VARIABLE VERBOSE
    1.23-   FALSE VERBOSE !
    1.24-\   TRUE VERBOSE !
    1.25-
    1.26-: EMPTY-STACK   \ ( ... -- ) EMPTY STACK: HANDLES UNDERFLOWED STACK TOO.
    1.27-   DEPTH ?DUP IF DUP 0< IF NEGATE 0 DO 0 LOOP ELSE 0 DO DROP LOOP THEN THEN ;
    1.28-
    1.29-VARIABLE #ERRORS 0 #ERRORS !
    1.30-
    1.31-: ERROR      \ ( C-ADDR U -- ) DISPLAY AN ERROR MESSAGE FOLLOWED BY
    1.32-      \ THE LINE THAT HAD THE ERROR.
    1.33-   CR TYPE SOURCE TYPE       \ DISPLAY LINE CORRESPONDING TO ERROR
    1.34-   EMPTY-STACK               \ THROW AWAY EVERY THING ELSE
    1.35-   #ERRORS @ 1 + #ERRORS !
    1.36-\   QUIT  \ *** Uncomment this line to QUIT on an error
    1.37-;
    1.38-
    1.39-VARIABLE ACTUAL-DEPTH         \ STACK RECORD
    1.40-CREATE ACTUAL-RESULTS 20 CELLS ALLOT
    1.41-
    1.42-: T{      \ ( -- ) SYNTACTIC SUGAR.
    1.43-   ;
    1.44-
    1.45-: ->      \ ( ... -- ) RECORD DEPTH AND CONTENT OF STACK.
    1.46-   DEPTH DUP ACTUAL-DEPTH !      \ RECORD DEPTH
    1.47-   ?DUP IF            \ IF THERE IS SOMETHING ON STACK
    1.48-      0 DO ACTUAL-RESULTS I CELLS + ! LOOP \ SAVE THEM
    1.49-   THEN ;
    1.50-
    1.51-: }T      \ ( ... -- ) COMPARE STACK (EXPECTED) CONTENTS WITH SAVED
    1.52-      \ (ACTUAL) CONTENTS.
    1.53-   DEPTH ACTUAL-DEPTH @ = IF      \ IF DEPTHS MATCH
    1.54-      DEPTH ?DUP IF         \ IF THERE IS SOMETHING ON THE STACK
    1.55-         0  DO            \ FOR EACH STACK ITEM
    1.56-           ACTUAL-RESULTS I CELLS + @   \ COMPARE ACTUAL WITH EXPECTED
    1.57-           = 0= IF S" INCORRECT RESULT: " ERROR LEAVE THEN
    1.58-         LOOP
    1.59-      THEN
    1.60-   ELSE               \ DEPTH MISMATCH
    1.61-      S" WRONG NUMBER OF RESULTS: " ERROR
    1.62-   THEN ;
    1.63-
    1.64-: TESTING   \ ( -- ) TALKING COMMENT.
    1.65-  SOURCE VERBOSE @
    1.66-   IF DUP >R TYPE CR R> >IN !
    1.67-   ELSE >IN ! DROP [CHAR] * EMIT
    1.68-   THEN ;
    1.69-