2007-12-04 00:56:30 -05:00
|
|
|
USING: compiler continuations io kernel math namespaces
|
|
|
|
prettyprint quotations random sequences vectors ;
|
|
|
|
USING: random-tester.databank random-tester.safe-words ;
|
|
|
|
IN: random-tester
|
|
|
|
|
|
|
|
SYMBOL: errored
|
|
|
|
SYMBOL: before
|
|
|
|
SYMBOL: after
|
|
|
|
SYMBOL: quot
|
|
|
|
TUPLE: random-tester-error ;
|
|
|
|
|
|
|
|
: setup-test ( #data #code -- data... quot )
|
|
|
|
#! Variable stack effect
|
|
|
|
>r [ databank random ] times r>
|
|
|
|
[ drop \ safe-words get random ] map >quotation ;
|
|
|
|
|
|
|
|
: test-compiler ! ( data... quot -- ... )
|
|
|
|
errored off
|
|
|
|
dup quot set
|
2008-02-06 20:23:39 -05:00
|
|
|
datastack 1 head* before set
|
|
|
|
[ call ] [ drop ] recover
|
|
|
|
datastack after set
|
2007-12-04 00:56:30 -05:00
|
|
|
clear
|
|
|
|
before get [ ] each
|
2008-01-13 00:49:36 -05:00
|
|
|
quot get [ compile-call ] [ errored on ] recover ;
|
2007-12-04 00:56:30 -05:00
|
|
|
|
|
|
|
: do-test ! ( data... quot -- )
|
|
|
|
.s flush test-compiler
|
|
|
|
errored get [
|
|
|
|
datastack after get 2dup = [
|
|
|
|
2drop
|
|
|
|
] [
|
|
|
|
[ . ] each
|
|
|
|
"--" print
|
|
|
|
[ . ] each
|
|
|
|
quot get .
|
|
|
|
random-tester-error construct-empty throw
|
|
|
|
] if
|
|
|
|
] unless clear ;
|
|
|
|
|
|
|
|
: random-test1 ( #data #code -- )
|
|
|
|
setup-test do-test ;
|
|
|
|
|
|
|
|
: random-test2 ( -- )
|
|
|
|
3 2 setup-test do-test ;
|