]> gitweb.factorcode.org Git - factor.git/blob - basis/tools/test/fuzz/fuzz-tests.factor
2d8c67f4f2a581550e63b7e5f3d366f20f13425d
[factor.git] / basis / tools / test / fuzz / fuzz-tests.factor
1 ! (c)2011 Joe Groff bsd license
2 USING: accessors fry kernel macros math namespaces sequences
3 source-files.errors tools.test tools.test.fuzz
4 tools.test.fuzz.private tools.test.private ;
5 IN: tools.test.fuzz.tests
6
7 SYMBOL: generator-stack
8 : with-generator-stack ( seq quot -- )
9     [ reverse V{ } like generator-stack ] dip with-variable ; inline
10 : generate-from-stack ( -- n )
11     generator-stack get pop ;
12
13 6 fuzz-test-trials [
14
15     [ { } ] [
16         { -4 -2 0 2 4 6 } [
17             [ generate-from-stack ] [ even? ] fuzz-test-failures
18         ] with-generator-stack
19     ] unit-test
20
21     [ { { -1 } { 1 } { 5 } } ] [
22         { -4 -1 1 2 5 6 } [
23             [ generate-from-stack ] [ even? ] fuzz-test-failures
24         ] with-generator-stack
25     ] unit-test
26
27     { -4 -2 0 2 4 6 } [
28         [ generate-from-stack ] [ even? ] fuzz-test
29     ] with-generator-stack
30
31     {
32         1
33         T{ fuzz-test-failure
34             { failures { { -1 } { 1 } { 5 } } }
35             { predicate [ even? ] }
36             { trials 6 }
37         }
38     } [
39         [
40             { -4 -2 0 2 4 6 } [
41                 [ generate-from-stack ] [ even? ] fuzz-test
42             ] with-generator-stack
43             { -4 -1 1 2 5 6 } [
44                 [ generate-from-stack ] [ even? ] fuzz-test
45             ] with-generator-stack
46         ] fake-unit-test
47         [ length ] [ first error>> ] bi
48     ] unit-test
49
50 ] with-variable
51
52 notify-error-observers