factor/basis/unrolled-lists/unrolled-lists-tests.factor

130 lines
2.7 KiB
Factor

USING: unrolled-lists tools.test deques kernel sequences
random prettyprint grouping math ;
{ 1 } [ <unrolled-list> 1 over push-front pop-front ] unit-test
{ 1 } [ <unrolled-list> 1 over push-front pop-back ] unit-test
{ 1 } [ <unrolled-list> 1 over push-back pop-front ] unit-test
{ 1 } [ <unrolled-list> 1 over push-back pop-back ] unit-test
{ 1 2 } [
<unrolled-list> 1 over push-back 2 over push-back
[ pop-front ] [ pop-front ] bi
] unit-test
{ 2 1 } [
<unrolled-list> 1 over push-back 2 over push-back
[ pop-back ] [ pop-back ] bi
] unit-test
{ 1 2 3 } [
<unrolled-list>
1 over push-back
2 over push-back
3 over push-back
[ pop-front ] [ pop-front ] [ pop-front ] tri
] unit-test
{ 3 2 1 } [
<unrolled-list>
1 over push-back
2 over push-back
3 over push-back
[ pop-back ] [ pop-back ] [ pop-back ] tri
] unit-test
{ { 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 } } [
<unrolled-list>
32 [ over push-front ] each-integer
32 [ dup pop-back ] replicate
nip
] unit-test
{ { 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 } } [
<unrolled-list>
32 [ over push-front ] each-integer
32 [ dup pop-front ] replicate reverse
nip
] unit-test
{ t } [
<unrolled-list>
1000 [ 1000 random ] replicate
[ [ over push-front ] each ]
[ length [ dup pop-back ] replicate ]
[ ]
tri
=
nip
] unit-test
{ t } [
<unrolled-list>
1000 [ 1000 random ] replicate
[
10 group [
[ [ over push-front ] each ]
[ length [ dup pop-back ] replicate ]
bi
] map concat
] keep
=
nip
] unit-test
{ t } [ <unrolled-list> deque-empty? ] unit-test
{ t } [
<unrolled-list>
1 over push-front
dup pop-front*
deque-empty?
] unit-test
{ t } [
<unrolled-list>
1 over push-back
dup pop-front*
deque-empty?
] unit-test
{ t } [
<unrolled-list>
1 over push-front
dup pop-back*
deque-empty?
] unit-test
{ t } [
<unrolled-list>
1 over push-back
dup pop-back*
deque-empty?
] unit-test
{ t } [
<unrolled-list>
21 over push-front
22 over push-front
25 over push-front
26 over push-front
dup pop-back 21 assert=
28 over push-front
dup pop-back 22 assert=
29 over push-front
dup pop-back 25 assert=
24 over push-front
dup pop-back 26 assert=
23 over push-front
dup pop-back 28 assert=
dup pop-back 29 assert=
dup pop-back 24 assert=
17 over push-front
dup pop-back 23 assert=
27 over push-front
dup pop-back 17 assert=
30 over push-front
dup pop-back 27 assert=
dup pop-back 30 assert=
deque-empty?
] unit-test