]> gitweb.factorcode.org Git - factor.git/blob - basis/compiler/tree/propagation/recursive/recursive-tests.factor
ui.listener: document that ~/.factor-history persists input history
[factor.git] / basis / compiler / tree / propagation / recursive / recursive-tests.factor
1 USING: accessors compiler.tree compiler.tree.builder
2 compiler.tree.optimizer compiler.tree.propagation.info
3 compiler.tree.propagation.recursive kernel kernel.private layouts
4 literals math math.intervals sequences sequences.private tools.test ;
5 IN: compiler.tree.propagation.recursive.tests
6
7 ! counter-class
8 {
9     array-capacity
10     fixnum
11     integer
12     array-capacity
13 } [
14     0 100 [a,b] fixnum counter-class
15     -100 100 [a,b] fixnum counter-class
16     0 100 [a,b] integer counter-class
17     0 10 [a,b] array-capacity counter-class
18 ] unit-test
19
20 ! generalize-counter-interval
21 { T{ interval f { 0 t } { 1/0. t } } } [
22     T{ interval f { 1 t } { 1 t } }
23     T{ interval f { 0 t } { 0 t } }
24     integer generalize-counter-interval
25 ] unit-test
26
27 { T{ interval f { 0 t } { $[ max-array-capacity ] t } } } [
28     T{ interval f { 1 t } { 1 t } }
29     T{ interval f { 0 t } { 0 t } }
30     fixnum generalize-counter-interval
31 ] unit-test
32
33 { T{ interval f { -1/0. t } { 10 t } } } [
34     T{ interval f { -1 t } { -1 t } }
35     T{ interval f { 10 t } { 10 t } }
36     integer generalize-counter-interval
37 ] unit-test
38
39 { T{ interval f { $[ most-negative-fixnum ] t } { 10 t } } } [
40     T{ interval f { -1 t } { -1 t } }
41     T{ interval f { 10 t } { 10 t } }
42     fixnum generalize-counter-interval
43 ] unit-test
44
45 { t } [
46     T{ interval f { -268435456 t } { 268435455 t } }
47     T{ interval f { 1 t } { 268435455 t } }
48     over
49     integer generalize-counter-interval =
50 ] unit-test
51
52 { t } [
53     T{ interval f { -268435456 t } { 268435455 t } }
54     T{ interval f { 1 t } { 268435455 t } }
55     over
56     fixnum generalize-counter-interval =
57 ] unit-test
58
59 { full-interval } [
60     T{ interval f { -5 t } { 3 t } }
61     T{ interval f { 2 t } { 11 t } }
62     integer generalize-counter-interval
63 ] unit-test
64
65 { $[ fixnum-interval ] } [
66     T{ interval f { -5 t } { 3 t } }
67     T{ interval f { 2 t } { 11 t } }
68     fixnum generalize-counter-interval
69 ] unit-test
70
71 ! node-output-infos
72 : integer-loop ( a -- b )
73     { integer } declare [ dup 0 > ] [ 1 - ] while ;
74 {
75     V{
76         T{ value-info-state
77            { class integer }
78            { interval
79              T{ interval { from { 1 t } } { to { 1/0. t } } }
80            }
81         }
82     }
83 } [
84     \ integer-loop build-tree optimize-tree
85     [ #if? ] filter second children>> first first recursive-phi-infos
86 ] unit-test