]> gitweb.factorcode.org Git - factor.git/blob - core/hash-sets/hash-sets-tests.factor
46dc06849fb1dfc5d6f3fa965df50333566e06a1
[factor.git] / core / hash-sets / hash-sets-tests.factor
1 ! Copyright (C) 2010 Daniel Ehrenberg
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors fry hash-sets kernel math prettyprint sequences
4 sets sorting tools.test ;
5
6 { { 1 2 3 } } [ HS{ 1 2 3 } members natural-sort ] unit-test
7
8 { "HS{ 1 2 3 4 }" } [ HS{ 1 2 3 4 } unparse ] unit-test
9
10 { t } [ 1 HS{ 0 1 2 } in? ] unit-test
11 { f } [ 3 HS{ 0 1 2 } in? ] unit-test
12 { HS{ 1 2 3 } } [ 3 HS{ 1 2 } clone [ adjoin ] keep ] unit-test
13 { HS{ 1 2 } } [ 2 HS{ 1 2 } clone [ adjoin ] keep ] unit-test
14 { HS{ 1 2 3 } } [ 4 HS{ 1 2 3 } clone [ delete ] keep ] unit-test
15 { HS{ 1 2 } } [ 3 HS{ 1 2 3 } clone [ delete ] keep ] unit-test
16 { HS{ 1 2 } } [ HS{ 1 2 } fast-set ] unit-test
17 { { 1 2 } } [ HS{ 1 2 } members natural-sort ] unit-test
18
19 { HS{ 1 2 3 4 } } [ HS{ 1 2 3 } HS{ 2 3 4 } union ] unit-test
20 { HS{ 2 3 } } [ HS{ 1 2 3 } HS{ 2 3 4 } intersect ] unit-test
21 { t } [ HS{ 1 2 3 } HS{ 2 3 4 } intersects? ] unit-test
22 { f } [ HS{ 1 } HS{ 2 3 4 } intersects? ] unit-test
23 { f } [ HS{ 1 } HS{ 2 3 4 } subset? ] unit-test
24 { f } [ HS{ 1 2 3 } HS{ 2 3 4 } subset? ] unit-test
25 { t } [ HS{ 2 3 } HS{ 2 3 4 } subset? ] unit-test
26 { t } [ HS{ } HS{ 2 3 4 } subset? ] unit-test
27 { HS{ 1 } } [ HS{ 1 2 3 } HS{ 2 3 4 } diff ] unit-test
28 { t } [ HS{ 1 2 3 } HS{ 2 1 3 } set= ] unit-test
29 { t } [ HS{ 1 2 3 } HS{ 2 1 3 } = ] unit-test
30 { f } [ HS{ 2 3 } HS{ 2 1 3 } set= ] unit-test
31 { f } [ HS{ 1 2 3 } HS{ 2 3 } set= ] unit-test
32
33 { HS{ 1 2 } HS{ 1 2 3 } } [ HS{ 1 2 } clone dup clone [ 3 swap adjoin ] keep ] unit-test
34
35 { t } [ HS{ } null? ] unit-test
36 { f } [ HS{ 1 } null? ] unit-test
37
38 { { } } [ { 1 2 3 } duplicates ] unit-test
39 { f } [ { 1 2 3 } >hash-set duplicates ] unit-test
40 { { 1 } } [ { 1 2 1 } duplicates ] unit-test
41
42 { HS{ HS{ { 2 1 } { 1 2 } } } } [
43     HS{ } clone
44     HS{ { 1 2 } { 2 1 } } over adjoin
45     HS{ { 2 1 } { 1 2 } } over adjoin
46 ] unit-test
47
48 ! make sure growth and capacity use same load-factor
49 { t } [
50     100 iota
51     [ [ <hash-set> ] map ]
52     [ [ HS{ } clone [ '[ _ adjoin ] each-integer ] keep ] map ] bi
53     [ [ array>> length ] bi@ = ] 2all?
54 ] unit-test
55
56 ! non-integer capacity not allowed
57 [ 0.75 <hash-set> ] must-fail