1 USING: alien.c-types assocs kernel make math namespaces
2 sequences specialized-arrays tools.test ;
4 SPECIALIZED-ARRAY: double
7 { t } [ H{ } dup assoc-subset? ] unit-test
8 { f } [ H{ { 1 3 } } H{ } assoc-subset? ] unit-test
9 { t } [ H{ } H{ { 1 3 } } assoc-subset? ] unit-test
10 { t } [ H{ { 1 3 } } H{ { 1 3 } } assoc-subset? ] unit-test
11 { f } [ H{ { 1 3 } } H{ { 1 "hey" } } assoc-subset? ] unit-test
12 { f } [ H{ { 1 f } } H{ } assoc-subset? ] unit-test
13 { t } [ H{ { 1 f } } H{ { 1 f } } assoc-subset? ] unit-test
15 ! Test some combinators
24 } [ * 2 + , ] assoc-each
28 { t } [ H{ } [ 2drop f ] assoc-all? ] unit-test
29 { t } [ H{ { 1 1 } } [ = ] assoc-all? ] unit-test
30 { f } [ H{ { 1 2 } } [ = ] assoc-all? ] unit-test
31 { t } [ H{ { 1 1 } { 2 2 } } [ = ] assoc-all? ] unit-test
32 { f } [ H{ { 1 2 } { 2 2 } } [ = ] assoc-all? ] unit-test
34 { H{ } } [ H{ { t f } { f t } } [ 2drop f ] assoc-filter ] unit-test
35 { H{ } } [ H{ { t f } { f t } } clone dup [ 2drop f ] assoc-filter! drop ] unit-test
36 { H{ } } [ H{ { t f } { f t } } clone [ 2drop f ] assoc-filter! ] unit-test
38 { H{ { 3 4 } { 4 5 } { 6 7 } } } [
39 H{ { 1 2 } { 2 3 } { 3 4 } { 4 5 } { 6 7 } }
40 [ drop 3 >= ] assoc-filter
43 { H{ { 3 4 } { 4 5 } { 6 7 } } } [
44 H{ { 1 2 } { 2 3 } { 3 4 } { 4 5 } { 6 7 } } clone
45 [ drop 3 >= ] assoc-filter!
48 { H{ { 3 4 } { 4 5 } { 6 7 } } } [
49 H{ { 1 2 } { 2 3 } { 3 4 } { 4 5 } { 6 7 } } clone dup
50 [ drop 3 >= ] assoc-filter! drop
53 { H{ { 1 2 } { 2 3 } } } [
54 H{ { 1 2 } { 2 3 } { 3 4 } { 4 5 } { 6 7 } }
55 [ drop 3 >= ] assoc-reject
58 { H{ { 1 2 } { 2 3 } } } [
59 H{ { 1 2 } { 2 3 } { 3 4 } { 4 5 } { 6 7 } } clone
60 [ drop 3 >= ] assoc-reject!
73 H{ } clone "cache-test" set
75 { 4 } [ 1 "cache-test" get [ 3 + ] cache ] unit-test
76 { 5 } [ 2 "cache-test" get [ 3 + ] cache ] unit-test
77 { 4 } [ 1 "cache-test" get [ 3 + ] cache ] unit-test
78 { 5 } [ 2 "cache-test" get [ 3 + ] cache ] unit-test
81 H{ { "factor" "rocks" } { 3 4 } }
83 H{ { "factor" "rocks" } { "dup" "sq" } { 3 4 } }
84 H{ { "factor" "rocks" } { 1 2 } { 2 3 } { 3 4 } }
89 H{ { 1 2 } { 2 3 } { 6 5 } }
91 H{ { 2 4 } { 6 5 } } H{ { 1 2 } { 2 3 } }
96 H{ { 1 2 } { 2 3 } { 6 5 } }
98 H{ { 2 4 } { 6 5 } } clone dup H{ { 1 2 } { 2 3 } }
103 H{ { 1 2 } { 2 3 } { 6 5 } }
105 H{ { 2 4 } { 6 5 } } clone H{ { 1 2 } { 2 3 } }
109 { H{ { 1 2 } { 2 3 } } t } [
110 f H{ { 1 2 } { 2 3 } } [ assoc-union ] 2keep swap assoc-union dupd =
116 H{ { 1 f } } H{ { 1 f } } assoc-intersect
122 H{ { 1 2 } { 3 4 } } H{ { 1 3 } } assoc-diff
128 H{ { 1 2 } { 3 4 } } clone dup H{ { 1 3 } } assoc-diff! drop
134 H{ { 1 2 } { 3 4 } } clone H{ { 1 3 } } assoc-diff!
137 { H{ { "hi" 2 } { 3 4 } } }
138 [ "hi" 1 H{ { 1 2 } { 3 4 } } clone [ rename-at ] keep ]
141 { H{ { 1 2 } { 3 4 } } }
142 [ "hi" 5 H{ { 1 2 } { 3 4 } } clone [ rename-at ] keep ]
146 H{ { 1.0 1.0 } { 2.0 2.0 } }
148 double-array{ 1.0 2.0 } [ dup ] H{ } map>assoc
152 { { 1.0 1.0 } { 2.0 2.0 } }
154 double-array{ 1.0 2.0 } [ dup ] { } map>assoc
162 2dup [ , f ] cache drop
171 { "fries" "onion rings" }
174 { "bangers" "fries" } H{
177 { "fries" "onion rings" }
178 { "nachos" "cheese" }
182 { H{ { "b" [ 2 ] } { "d" [ 4 ] } } H{ { "a" [ 1 ] } { "c" [ 3 ] } } } [
188 } [ nip first even? ] assoc-partition
191 { 1 f } [ 1 H{ } ?at ] unit-test
192 { 2 t } [ 1 H{ { 1 2 } } ?at ] unit-test
194 { f } [ 1 2 H{ { 2 1 } } maybe-set-at ] unit-test
195 { t } [ 1 3 H{ { 2 1 } } clone maybe-set-at ] unit-test
196 { t } [ 3 2 H{ { 2 1 } } clone maybe-set-at ] unit-test
198 { H{ { 1 2 } { 2 3 } } } [
208 H{ { 1 2 } { 2 4 } { 5 6 } }
214 { f } [ "a" { } assoc-stack ] unit-test
215 { 1 } [ "a" { H{ { "a" 1 } } H{ { "b" 2 } } } assoc-stack ] unit-test
216 { 2 } [ "b" { H{ { "a" 1 } } H{ { "b" 2 } } } assoc-stack ] unit-test
217 { f } [ "c" { H{ { "a" 1 } } H{ { "b" 2 } } } assoc-stack ] unit-test
223 { { 1 f } { f 2 } } sift-keys
251 { { 1 f } { f 2 } } sift-values
256 { { 1 4 } { 2 5 } { 3 6 } }
257 } [ { 1 2 3 } { 4 5 6 } zip ] unit-test
260 { { 1 4 } { 2 5 } { 3 6 } }
261 } [ V{ 1 2 3 } { 4 5 6 } zip ] unit-test
264 { { 1 4 } { 2 5 } { 3 6 } }
265 } [ { 1 2 3 } { 4 5 6 } { } zip-as ] unit-test
268 { { 1 4 } { 2 5 } { 3 6 } }
269 } [ B{ 1 2 3 } { 4 5 6 } { } zip-as ] unit-test
272 V{ { 1 4 } { 2 5 } { 3 6 } }
273 } [ { 1 2 3 } { 4 5 6 } V{ } zip-as ] unit-test
276 V{ { 1 4 } { 2 5 } { 3 6 } }
277 } [ BV{ 1 2 3 } BV{ 4 5 6 } V{ } zip-as ] unit-test
279 { { { 1 3 } { 2 4 } }
280 } [ { 1 2 } { 3 4 } { } zip-as ] unit-test
284 } [ { 1 2 } { 3 4 } V{ } zip-as ] unit-test
288 } [ { 1 2 } { 3 4 } H{ } zip-as ] unit-test
290 ! zip-index, zip-index-as
292 { { 11 0 } { 22 1 } { 33 2 } }
293 } [ { 11 22 33 } zip-index ] unit-test
296 { { 11 0 } { 22 1 } { 33 2 } }
297 } [ V{ 11 22 33 } zip-index ] unit-test
300 { { 11 0 } { 22 1 } { 33 2 } }
301 } [ { 11 22 33 } { } zip-index-as ] unit-test
304 { { 11 0 } { 22 1 } { 33 2 } }
305 } [ V{ 11 22 33 } { } zip-index-as ] unit-test
308 V{ { 11 0 } { 22 1 } { 33 2 } }
309 } [ { 11 22 33 } V{ } zip-index-as ] unit-test