factor/extra/random-tester/random-tester.factor

46 lines
1.1 KiB
Factor
Raw Normal View History

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 ;