retroforth/tests/rx.retro
crc be25e2939c more tests for words in rx (6 remain w/o tests)
FossilOrigin-Name: 0ae9fc6c65b40b7a116f2dcc2142fb12c0f28e4ac10b6ffa62b7e766fb5435f2
2020-03-11 19:34:10 +00:00

477 lines
7.8 KiB
Forth

~~~
'Total var
'WordsTested var
'Flag var
'Tests var
'InTestState var
:pad s:length #32 swap - #0 n:max &sp times ;
:Testing (s-)
dup 'Test:__ s:put s:put pad #-1 !Flag #0 !Tests &WordsTested v:inc reset ;
:passed (-)
'->_ s:put @Tests n:put '_tests_passed s:put nl ;
:exit-on-fail (-)
@Flag [ '->_FAILED. s:put nl bye ] -if ;
:match (n-)
eq? @InTestState and !InTestState ;
:try (qq-)
#-1 !InTestState
[ call ] dip call
depth n:-zero? [ @Flag and !Flag ] if
@Flag @InTestState and !Flag
exit-on-fail &Tests v:inc &Total v:inc ;
:summary (-)
@WordsTested n:put '_words_tested s:put nl
@Total n:put '_tests_passed s:put nl ;
~~~
~~~
'dup Testing
[ #1 dup ] [ #1 match #1 match ] try
[ #4 #3 dup ] [ #3 match #3 match #4 match ] try
passed
~~~
~~~
'drop Testing
[ #1 #2 drop ] [ #1 eq? ] try
[ #1 #2 #3 drop ] [ #2 match #1 match ] try
[ #1 #2 drop drop ] [ #1 eq? ] try
passed
~~~
~~~
'swap Testing
[ #1 #2 #3 swap ] [ #2 match #3 match #1 match ] try
passed
~~~
~~~
'call Testing
[ #1 [ ] call #2 ] [ #2 match #1 match ] try
[ #1 [ #3 ] call #2 ] [ #2 match #3 match #1 match ] try
passed
~~~
~~~
'eq? Testing
[ #1 #2 eq? ] [ FALSE match ] try
[ #1 #1 eq? ] [ TRUE match ] try
[ #2 #2 eq? ] [ TRUE match ] try
[ #2 #1 eq? ] [ FALSE match ] try
passed
~~~
~~~
'-eq? Testing
[ #1 #2 -eq? ] [ TRUE match ] try
[ #1 #1 -eq? ] [ FALSE match ] try
[ #2 #2 -eq? ] [ FALSE match ] try
[ #2 #1 -eq? ] [ TRUE match ] try
passed
~~~
~~~
'lt? Testing
[ #1 #2 lt? ] [ TRUE match ] try
[ #3 #2 lt? ] [ FALSE match ] try
[ #2 #2 lt? ] [ FALSE match ] try
passed
~~~
~~~
'gt? Testing
[ #1 #2 gt? ] [ FALSE match ] try
[ #3 #2 gt? ] [ TRUE match ] try
[ #2 #2 gt? ] [ FALSE match ] try
passed
~~~
~~~
'fetch Testing
'A var
[ #100 &A store ] [ &A fetch #100 eq? ] try
[ #200 &A store ] [ &A fetch #200 eq? ] try
[ #300 &A store ] [ &A fetch #300 eq? ] try
passed
~~~
~~~
'store Testing
'A var
[ #100 &A store ] [ &A fetch #100 eq? ] try
[ #200 &A store ] [ &A fetch #200 eq? ] try
[ #300 &A store ] [ &A fetch #300 eq? ] try
passed
~~~
~~~
'+ Testing
[ #1 #2 + ] [ #3 eq? ] try
[ #4 #-2 + ] [ #2 eq? ] try
[ #0 #1 + ] [ #1 eq? ] try
passed
~~~
~~~
'- Testing
[ #2 #1 - ] [ #1 eq? ] try
[ #2 #4 #3 - - ] [ #1 eq? ] try
[ #1 #2 #1 #9 - ] [ #-8 match #2 match #1 match ] try
passed
~~~
~~~
'* Testing
[ #1 #2 * ] [ #2 eq? ] try
[ #2 #3 * ] [ #6 eq? ] try
[ #-1 #10 * ] [ #-10 eq? ] try
[ #-1 #2 * #-1 * ] [ #2 eq? ] try
passed
~~~
~~~
'/mod Testing
[ #5 #2 /mod ] [ #2 match #1 match ] try
[ #-5 #2 /mod ] [ #-2 match #-1 match ] try
[ #-5 #-2 /mod ] [ #2 match #-1 match ] try
[ #5 #-2 /mod ] [ #-2 match #1 match ] try
passed
~~~
~~~
'and Testing
[ #-1 #-1 and ] [ #-1 match ] try
[ #0 #-1 and ] [ #0 match ] try
[ #-1 #0 and ] [ #0 match ] try
[ #0 #0 and ] [ #0 match ] try
passed
~~~
~~~
'or Testing
[ #-1 #-1 or ] [ #-1 match ] try
[ #0 #-1 or ] [ #-1 match ] try
[ #-1 #0 or ] [ #-1 match ] try
[ #0 #0 or ] [ #0 match ] try
passed
~~~
~~~
'xor Testing
[ #-1 #-1 xor ] [ #0 match ] try
[ #0 #-1 xor ] [ #-1 match ] try
[ #-1 #0 xor ] [ #-1 match ] try
[ #0 #0 xor ] [ #0 match ] try
passed
~~~
~~~
'shift Testing
[ #455 #-3 shift ] [ #3640 match ] try
[ #3640 #3 shift ] [ #455 match ] try
passed
~~~
~~~
'push Testing
[ #1 dup push #2 pop ] [ #1 match #2 match #1 match ] try
passed
~~~
~~~
'pop Testing
[ #1 dup push #2 pop ] [ #1 match #2 match #1 match ] try
passed
~~~
~~~
'0; Testing
[ #1 0; #2 0; ] [ #2 eq? swap #1 eq? and ] try
[ #1 0; #0 0; #2 0; ] [ #1 eq? ] try
passed
~~~
~~~
'fetch-next Testing
'A d:create #1 , #2 , #3 ,
[ &A fetch-next ] [ #1 match &A #1 + match ] try
[ &A fetch-next drop fetch-next ] [ #2 match &A #2 + match ] try
passed
~~~
~~~
'store-next Testing
'A d:create #1 , #2 , #3 ,
#9 #10 #11 &A store-next store-next store-next drop
[ &A fetch-next ] [ #11 match &A #1 + match ] try
[ &A fetch-next drop fetch-next ] [ #10 match &A #2 + match ] try
passed
~~~
~~~
's:to-number Testing
[ '123 s:to-number ] [ #123 match ] try
[ '-123 s:to-number ] [ #-123 match ] try
passed
~~~
~~~
's:eq? Testing
[ 'egg 'egg s:eq? ] [ #-1 match ] try
[ 'egg 'shell s:eq? ] [ #0 match ] try
passed
~~~
~~~
's:length Testing
[ 'abc s:length ] [ #3 match ] try
[ 'abcdef s:length ] [ #6 match ] try
passed
~~~
~~~
'choose Testing
[ TRUE [ #1 ] [ #0 ] choose ] [ #1 match ] try
[ FALSE [ #1 ] [ #0 ] choose ] [ #0 match ] try
passed
~~~
~~~
'if Testing
[ #0 TRUE [ #1 ] if ] [ #1 match #0 match ] try
[ #0 FALSE [ #1 ] if ] [ #0 match ] try
passed
~~~
~~~
'-if Testing
[ #0 TRUE [ #1 ] -if ] [ #0 match ] try
[ #0 FALSE [ #1 ] -if ] [ #1 match #0 match ] try
passed
~~~
~~~
'prefix:( Testing
[ #1 (#2 #3 ] [ #3 match #1 match ] try
passed
~~~
~~~
'Compiler Testing
[ @Compiler ] [ #0 match ] try
[ 'Compiler d:lookup d:class fetch ] [ &class:data match ] try
passed
~~~
~~~
'Heap Testing
[ Heap ] [ #3 match ] try
passed
~~~
~~~
', Testing
[ here #0 , here swap - ] [ #1 eq? ] try
[ here #12 , fetch ] [ #12 eq? ] try
here #1 , #2 , #3 ,
[ fetch-next swap fetch-next swap fetch ]
[ #3 eq? swap #2 eq? and swap #1 eq? and ] try
passed
~~~
~~~
's, Testing
[ here 'hello s, ] [ fetch-next $h match
fetch-next $e match
fetch-next $l match
fetch-next $l match
fetch-next $o match
drop ] try
passed
~~~
~~~
'; Testing
[ here &; call here swap - ] [ #1 eq? ] try
[ here &; call fetch ] [ #10 eq? ] try
passed
~~~
~~~
'[ Testing
[ [ ] fetch ] [ #10 match ] try
[ [ ] #2 - fetch ] [ #1793 match ] try
passed
~~~
~~~
'] Testing
[ [ ] fetch ] [ #10 match ] try
[ [ ] #2 - fetch ] [ #1793 match ] try
passed
~~~
~~~
'Dictionary Testing
[ Dictionary ] [ #2 match ] try
[ 'Dictionary d:lookup d:class fetch ] [ &class:data match ] try
passed
~~~
~~~
'd:link Testing
[ #0 d:link ] [ #0 match ] try
passed
~~~
~~~
'd:xt Testing
[ #0 d:xt ] [ #1 match ] try
passed
~~~
~~~
'd:class Testing
[ #0 d:class ] [ #2 match ] try
passed
~~~
~~~
'd:name Testing
[ #0 d:name ] [ #3 match ] try
passed
~~~
~~~
'class:word Testing
passed
~~~
~~~
'class:macro Testing
passed
~~~
~~~
'class:data Testing
passed
~~~
~~~
'd:add-header Testing
passed
~~~
~~~
'prefix:# Testing
[ #1 ] [ #1 match ] try
[ #2 ] [ #2 match ] try
[ #-1234 ] [ #-1234 match ] try
passed
~~~
~~~
'prefix:: Testing
:test #1 #2 ;
[ test ] [ #2 match #1 match ] try
passed
~~~
~~~
'prefix:& Testing
[ &Version ] [ #4 match ] try
passed
~~~
~~~
'prefix:$ Testing
[ #1 $c #3 ] [ #3 match #99 match #1 match ] try
passed
~~~
~~~
'repeat Testing
[ #3 repeat dup n:dec 0; again ] [ #1 match #2 match #3 match ] try
passed
~~~
~~~
'again Testing
[ #3 repeat dup n:dec 0; again ] [ #1 match #2 match #3 match ] try
passed
~~~
~~~
'interpret Testing
[ '#1 interpret ] [ #1 match ] try
[ #1 'n:inc interpret ] [ #2 match ] try
[ #1 #2 'swap interpret ] [ #1 match #2 match ] try
passed
~~~
~~~
'd:lookup Testing
[ 'Compiler d:lookup d:class fetch ] [ &class:data match ] try
passed
~~~
~~~
'class:primitive Testing
passed
~~~
~~~
'Version Testing
[ Version ] [ #4 match ] try
[ &Version ] [ #4 match ] try
passed
~~~
~~~
'i Testing
[ here '........ i ] [ fetch #0 match ] try
[ here 'li...... i ] [ fetch #1 match ] try
[ here 'ha...... i ] [ fetch #26 match ] try
passed
~~~
~~~
'd Testing
[ here #1 d ] [ fetch #1 match ] try
[ here #2 d ] [ fetch #2 match ] try
[ here #3 d ] [ fetch #3 match ] try
passed
~~~
~~~
'r Testing
[ here 'swap r ] [ fetch &swap match ] try
[ here 'drop r ] [ fetch &drop match ] try
[ here 'prefix:: r ] [ fetch &prefix:: match ] try
passed
~~~
~~~
'err:notfound Testing
passed
~~~
~~~
summary
~~~