]> gitweb.factorcode.org Git - factor.git/blob - basis/generalizations/generalizations-tests.factor
477be4a20fd027c7b16330fd7cdbb44f86e4eb38
[factor.git] / basis / generalizations / generalizations-tests.factor
1 USING: tools.test generalizations kernel math arrays sequences\r
2 ascii fry math.parser io io.streams.string ;\r
3 IN: generalizations.tests\r
4 \r
5 { 1 2 3 4 1 } [ 1 2 3 4 4 npick ] unit-test\r
6 { 1 2 3 4 2 } [ 1 2 3 4 3 npick ] unit-test\r
7 { 1 2 3 4 3 } [ 1 2 3 4 2 npick ] unit-test\r
8 { 1 2 3 4 4 } [ 1 2 3 4 1 npick ] unit-test\r
9 \r
10 [ 1 1 ndup ] must-infer\r
11 { 1 1 } [ 1 1 ndup ] unit-test\r
12 { 1 2 1 2 } [ 1 2 2 ndup ] unit-test\r
13 { 1 2 3 1 2 3 } [ 1 2 3 3 ndup ] unit-test\r
14 { 1 2 3 4 1 2 3 4 } [ 1 2 3 4 4 ndup ] unit-test\r
15 [ 1 2 2 nrot ] must-infer\r
16 { 2 1 } [ 1 2 2 nrot ] unit-test\r
17 { 2 3 1 } [ 1 2 3 3 nrot ] unit-test\r
18 { 2 3 4 1 } [ 1 2 3 4 4 nrot ] unit-test\r
19 [ 1 2 2 -nrot ] must-infer\r
20 { 2 1 } [ 1 2 2 -nrot ] unit-test\r
21 { 3 1 2 } [ 1 2 3 3 -nrot ] unit-test\r
22 { 4 1 2 3 } [ 1 2 3 4 4 -nrot ] unit-test\r
23 [ 1 2 3 4 3 nnip ] must-infer\r
24 { 4 } [ 1 2 3 4 3 nnip ] unit-test\r
25 [ 1 2 3 4 4 ndrop ] must-infer\r
26 { 0 } [ 0 1 2 3 4 4 ndrop ] unit-test\r
27 [ [ 1 ] 5 ndip ] must-infer\r
28 [ 1 2 3 4 ] [ 2 3 4 [ 1 ] 3 ndip ] unit-test\r
29 \r
30 [ 1 2 3 4 5 [ drop drop drop drop drop 2 ] 5 nkeep ] must-infer\r
31 [ 1 2 3 4 5 2 '[ drop drop drop drop drop _ ] 5 nkeep ] must-infer\r
32 { 2 1 2 3 4 5 } [ 1 2 3 4 5 [ drop drop drop drop drop 2 ] 5 nkeep ] unit-test\r
33 { 2 1 2 3 4 5 } [ 1 2 3 4 5 2 '[ drop drop drop drop drop _ ] 5 nkeep ] unit-test\r
34 [ [ 1 2 3 + ] ] [ 1 2 3 [ + ] 3 ncurry ] unit-test\r
35 \r
36 [ "HELLO" ] [ "hello" [ >upper ] 1 napply ] unit-test\r
37 [ { 1 2 } { 2 4 } { 3 8 } { 4 16 } { 5 32 } ] [ 1 2 3 4 5 [ dup 2^ 2array ] 5 napply ] unit-test\r
38 [ [ dup 2^ 2array ] 5 napply ] must-infer\r
39 \r
40 [ { "xyc" "xyd" } ] [ "x" "y" { "c" "d" } [ 3append ] 2 nwith map ] unit-test\r
41 \r
42 [ 1 2 3 4 ] [ { 1 2 3 4 } 4 firstn ] unit-test\r
43 [ { 1 2 3 4 } ] [ 1 2 3 4 { f f f f } [ 4 set-firstn ] keep ] unit-test\r
44 [ 1 2 3 4 { f f f } [ 4 set-firstn ] keep ] must-fail\r
45 [ ] [ { } 0 firstn ] unit-test\r
46 [ "a" ] [ { "a" } 1 firstn ] unit-test\r
47 \r
48 [ [ 1 2 ] ] [ 1 2 2 [ ] nsequence ] unit-test\r
49 \r
50 [ 4 5 1 2 3 ] [ 1 2 3 4 5 2 3 mnswap ] unit-test\r
51 \r
52 [ 1 2 3 4 5 6 ] [ 1 2 3 4 5 6 2 4 mnswap 4 2 mnswap ] unit-test\r
53 \r
54 [ { 1 2 3 4 } ] [ { 1 } { 2 } { 3 } { 4 } 4 nappend ] unit-test\r
55 [ V{ 1 2 3 4 } ] [ { 1 } { 2 } { 3 } { 4 } 4 V{ } nappend-as ] unit-test\r
56 \r
57 [ 4 nappend ] must-infer\r
58 [ 4 { } nappend-as ] must-infer\r
59 \r
60 [ 17 ] [ 3 1 3 3 7 5 nsum ] unit-test\r
61 { 4 1 } [ 4 nsum ] must-infer-as\r
62 \r
63 [ "e1" "o1" "o2" "e2" "o1" "o2" ] [ "e1" "e2" "o1" "o2" 2 nweave ] unit-test\r
64 { 3 5 } [ 2 nweave ] must-infer-as\r
65 \r
66 [ { 0 1 2 } { 3 5 4 } { 7 8 6 } ]\r
67 [ 9 [ ] each-integer { [ 3array ] [ swap 3array ] [ rot 3array ] } 3 nspread ] unit-test\r
68 \r
69 [ 1 2 3 4 1 2 3 ] [ 1 2 3 4 3 nover ] unit-test\r
70 \r
71 [ [ 1 2 3 ] [ 1 2 3 ] ]\r
72 [ 1 2 3 [ ] [ ] 3 nbi-curry ] unit-test\r
73 \r
74 [ 15 3 ] [ 1 2 3 4 5 [ + + + + ] [ - - - - ] 5 nbi ] unit-test\r
75 \r
76 : nover-test ( -- a b c d e f g )\r
77    1 2 3 4 3 nover ;\r
78 \r
79 [ 1 2 3 4 1 2 3 ] [ nover-test ] unit-test\r
80 \r
81 [ '[ number>string _ append ] 4 napply ] must-infer\r
82 \r
83 [ 6 8 10 12 ] [\r
84     1 2 3 4\r
85     5 6 7 8 [ + ] 4 apply-curry 4 spread*\r
86 ] unit-test\r
87 \r
88 [ 6 ] [ 5 [ 1 + ] 1 spread* ] unit-test\r
89 [ 6 ] [ 5 [ 1 + ] 1 cleave* ] unit-test\r
90 [ 6 ] [ 5 [ 1 + ] 1 napply  ] unit-test\r
91 \r
92 [ 6 ] [ 6 0 spread* ] unit-test\r
93 [ 6 ] [ 6 0 cleave* ] unit-test\r
94 [ 6 ] [ 6 [ 1 + ] 0 napply ] unit-test\r
95 \r
96 [ 6 7 8 9 ] [\r
97     1\r
98     5 6 7 8 [ + ] 4 apply-curry 4 cleave*\r
99 ] unit-test\r
100 \r
101 [ 8 3 8 3/2 ] [\r
102     6 5 4 3\r
103     2 [ + ] [ - ] [ * ] [ / ] 4 cleave-curry 4 spread*\r
104 ] unit-test\r
105 \r
106 [ 8 4 0 -3 ] [\r
107     6 5 4  3\r
108     2 1 0 -1 [ + ] [ - ] [ * ] [ / ] 4 spread-curry 4 spread*\r
109 ] unit-test\r
110 \r
111 [ { 1 2 } { 3 4 } { 5 6 } ]\r
112 [ 1 2 3 4 5 6 [ 2array ] 2 3 mnapply ] unit-test\r
113 \r
114 [ { 1 2 3 } { 4 5 6 } ]\r
115 [ 1 2 3 4 5 6 [ 3array ] 3 2 mnapply ] unit-test\r
116 \r
117 [ { 1 2 3 } { 4 5 6 } ]\r
118 [ 1 2 3 4 5 6 [ 3array ] [ 3array ] 3 2 nspread* ] unit-test\r
119 \r
120 [ ]\r
121 [ [ 2array ] 2 0 mnapply ] unit-test\r
122 \r
123 [ ]\r
124 [ 2 0 nspread* ] unit-test\r