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