V25 with 64-bit support
[pforth] / fth / tester.fth
CommitLineData
bb6b2dcd 1\ From: John Hayes S1I\r
2\ Subject: tester.fr\r
3\ Date: Mon, 27 Nov 95 13:10:09 PST \r
4\r
5\ (C) 1995 JOHNS HOPKINS UNIVERSITY / APPLIED PHYSICS LABORATORY\r
6\ MAY BE DISTRIBUTED FREELY AS LONG AS THIS COPYRIGHT NOTICE REMAINS.\r
7\ VERSION 1.1\r
8HEX\r
9\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
12VARIABLE VERBOSE\r
13 FALSE VERBOSE !\r
14\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
17\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
22;\r
23\r
24VARIABLE ACTUAL-DEPTH \ STACK RECORD\r
25CREATE ACTUAL-RESULTS 20 CELLS ALLOT\r
26\r
27: { \ ( -- ) SYNTACTIC SUGAR.\r
28 ;\r
29\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
34 THEN ;\r
35\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
43 LOOP\r
44 THEN\r
45 ELSE \ DEPTH MISMATCH\r
46 S" WRONG NUMBER OF RESULTS: " ERROR\r
47 THEN ;\r
48\r
49: TESTING \ ( -- ) TALKING COMMENT.\r
50 SOURCE VERBOSE @\r
51 IF DUP >R TYPE CR R> >IN !\r
52 ELSE >IN ! DROP\r
53 THEN ;\r
54\r