1 \ From: John Hayes S1I
\r
3 \ Date: Mon, 27 Nov 95 13:10:09 PST
\r
5 \ (C) 1995 JOHNS HOPKINS UNIVERSITY / APPLIED PHYSICS LABORATORY
\r
6 \ MAY BE DISTRIBUTED FREELY AS LONG AS THIS COPYRIGHT NOTICE REMAINS.
\r
10 \ SET THE FOLLOWING FLAG TO TRUE FOR MORE VERBOSE OUTPUT; THIS MAY
\r
11 \ ALLOW YOU TO TELL WHICH TEST CAUSED YOUR SYSTEM TO HANG.
\r
15 : EMPTY-STACK \ ( ... -- ) EMPTY STACK: HANDLES UNDERFLOWED STACK TOO.
\r
16 DEPTH ?DUP IF DUP 0< IF NEGATE 0 DO 0 LOOP ELSE 0 DO DROP LOOP THEN THEN ;
\r
18 : ERROR \ ( C-ADDR U -- ) DISPLAY AN ERROR MESSAGE FOLLOWED BY
\r
19 \ THE LINE THAT HAD THE ERROR.
\r
20 TYPE SOURCE TYPE CR \ DISPLAY LINE CORRESPONDING TO ERROR
\r
21 EMPTY-STACK \ THROW AWAY EVERY THING ELSE
\r
24 VARIABLE ACTUAL-DEPTH \ STACK RECORD
\r
25 CREATE ACTUAL-RESULTS 20 CELLS ALLOT
\r
27 : { \ ( -- ) SYNTACTIC SUGAR.
\r
30 : -> \ ( ... -- ) RECORD DEPTH AND CONTENT OF STACK.
\r
31 DEPTH DUP ACTUAL-DEPTH ! \ RECORD DEPTH
\r
32 ?DUP IF \ IF THERE IS SOMETHING ON STACK
\r
33 0 DO ACTUAL-RESULTS I CELLS + ! LOOP \ SAVE THEM
\r
36 : } \ ( ... -- ) COMPARE STACK (EXPECTED) CONTENTS WITH SAVED
\r
37 \ (ACTUAL) CONTENTS.
\r
38 DEPTH ACTUAL-DEPTH @ = IF \ IF DEPTHS MATCH
\r
39 DEPTH ?DUP IF \ IF THERE IS SOMETHING ON THE STACK
\r
40 0 DO \ FOR EACH STACK ITEM
\r
41 ACTUAL-RESULTS I CELLS + @ \ COMPARE ACTUAL WITH EXPECTED
\r
42 <> IF S" INCORRECT RESULT: " ERROR LEAVE THEN
\r
45 ELSE \ DEPTH MISMATCH
\r
46 S" WRONG NUMBER OF RESULTS: " ERROR
\r
49 : TESTING \ ( -- ) TALKING COMMENT.
\r
51 IF DUP >R TYPE CR R> >IN !
\r