]> gitweb.factorcode.org Git - factor.git/blob - basis/unrolled-lists/unrolled-lists-tests.factor
8eadfb9cbfebff667807a7980f124ea31858522a
[factor.git] / basis / unrolled-lists / unrolled-lists-tests.factor
1 USING: unrolled-lists tools.test deques kernel sequences
2 random prettyprint grouping math ;
3 IN: unrolled-lists.tests
4
5 [ 1 ] [ <unrolled-list> 1 over push-front pop-front ] unit-test
6 [ 1 ] [ <unrolled-list> 1 over push-front pop-back ] unit-test
7 [ 1 ] [ <unrolled-list> 1 over push-back pop-front ] unit-test
8 [ 1 ] [ <unrolled-list> 1 over push-back pop-back ] unit-test
9
10 [ 1 2 ] [
11     <unrolled-list> 1 over push-back 2 over push-back
12     [ pop-front ] [ pop-front ] bi
13 ] unit-test
14
15 [ 2 1 ] [
16     <unrolled-list> 1 over push-back 2 over push-back
17     [ pop-back ] [ pop-back ] bi
18 ] unit-test
19
20 [ 1 2 3 ] [
21     <unrolled-list>
22     1 over push-back
23     2 over push-back
24     3 over push-back
25     [ pop-front ] [ pop-front ] [ pop-front ] tri
26 ] unit-test
27
28 [ 3 2 1 ] [
29     <unrolled-list>
30     1 over push-back
31     2 over push-back
32     3 over push-back
33     [ pop-back ] [ pop-back ] [ pop-back ] tri
34 ] unit-test
35
36 [ { 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 } ] [
37     <unrolled-list>
38     32 [ over push-front ] each-integer
39     32 [ dup pop-back ] replicate
40     nip
41 ] unit-test
42
43 [ { 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 } ] [
44     <unrolled-list>
45     32 [ over push-front ] each-integer
46     32 [ dup pop-front ] replicate reverse
47     nip
48 ] unit-test
49
50 [ t ] [
51     <unrolled-list>
52     1000 [ 1000 random ] replicate
53     [ [ over push-front ] each ]
54     [ length [ dup pop-back ] replicate ]
55     [ ]
56     tri
57     =
58     nip
59 ] unit-test
60
61 [ t ] [
62     <unrolled-list>
63     1000 [ 1000 random ] replicate
64     [
65         10 group [
66             [ [ over push-front ] each ]
67             [ length [ dup pop-back ] replicate ]
68             bi 
69         ] map concat
70     ] keep
71     =
72     nip
73 ] unit-test
74
75 [ t ] [ <unrolled-list> deque-empty? ] unit-test
76
77 [ t ] [
78     <unrolled-list>
79     1 over push-front
80     dup pop-front*
81     deque-empty?
82 ] unit-test
83
84 [ t ] [
85     <unrolled-list>
86     1 over push-back
87     dup pop-front*
88     deque-empty?
89 ] unit-test
90
91 [ t ] [
92     <unrolled-list>
93     1 over push-front
94     dup pop-back*
95     deque-empty?
96 ] unit-test
97
98 [ t ] [
99     <unrolled-list>
100     1 over push-back
101     dup pop-back*
102     deque-empty?
103 ] unit-test
104
105 [ t ] [
106     <unrolled-list>
107     21 over push-front
108     22 over push-front
109     25 over push-front
110     26 over push-front
111     dup pop-back 21 assert=
112     28 over push-front
113     dup pop-back 22 assert=
114     29 over push-front
115     dup pop-back 25 assert=
116     24 over push-front
117     dup pop-back 26 assert=
118     23 over push-front
119     dup pop-back 28 assert=
120     dup pop-back 29 assert=
121     dup pop-back 24 assert=
122     17 over push-front
123     dup pop-back 23 assert=
124     27 over push-front
125     dup pop-back 17 assert=
126     30 over push-front
127     dup pop-back 27 assert=
128     dup pop-back 30 assert=
129     deque-empty?
130 ] unit-test