factor/basis/persistent/vectors/vectors-tests.factor

75 lines
1.7 KiB
Factor
Raw Normal View History

2008-06-06 02:53:47 -04:00
IN: persistent-vectors.tests
2008-08-06 02:06:14 -04:00
USING: accessors tools.test persistent.vectors
persistent.sequences sequences kernel arrays random namespaces
vectors math math.order ;
2008-06-06 02:53:47 -04:00
{ 0 } [ PV{ } length ] unit-test
2008-06-06 02:53:47 -04:00
{ 1 } [ 3 PV{ } ppush length ] unit-test
2008-06-06 02:53:47 -04:00
{ 3 } [ 3 PV{ } ppush first ] unit-test
2008-06-06 02:53:47 -04:00
{ PV{ 3 1 3 3 7 } } [
2008-07-06 07:09:21 -04:00
PV{ } { 3 1 3 3 7 } [ swap ppush ] each
2008-06-06 02:53:47 -04:00
] unit-test
{ { 3 1 3 3 7 } } [
2008-07-06 07:09:21 -04:00
PV{ } { 3 1 3 3 7 } [ swap ppush ] each >array
2008-06-06 02:53:47 -04:00
] unit-test
{ 100 1060 2000 10000 100000 1000000 } [
2010-01-14 10:10:13 -05:00
[ t ] swap [ iota dup >persistent-vector sequence= ] curry unit-test
2008-06-06 02:53:47 -04:00
] each
{ } [ 10000 [ 16 random-bits ] PV{ } replicate-as "1" set ] unit-test
{ } [ "1" get >vector "2" set ] unit-test
2008-06-06 02:53:47 -04:00
{ t } [
2010-01-14 10:10:13 -05:00
3000 iota [
2008-06-06 02:53:47 -04:00
drop
16 random-bits 10000 random
2008-06-06 02:53:47 -04:00
[ "1" [ new-nth ] change ]
[ "2" [ new-nth ] change ] 2bi
"1" get "2" get sequence=
] all?
] unit-test
[ PV{ } ppop ] [ empty-error? ] must-fail-with
{ t } [ PV{ 3 } ppop empty? ] unit-test
2008-06-06 02:53:47 -04:00
{ PV{ 3 7 } } [ PV{ 3 7 6 } ppop ] unit-test
2008-06-06 02:53:47 -04:00
{ PV{ 3 7 6 5 } } [ 5 PV{ 3 7 6 } ppush ] unit-test
2008-06-06 02:53:47 -04:00
{ } [ PV{ } "1" set ] unit-test
{ } [ V{ } clone "2" set ] unit-test
2008-06-06 02:53:47 -04:00
2008-06-18 20:46:37 -04:00
: push/pop-test ( vec -- vec' ) 3 swap ppush 3 swap ppush ppop ;
{ } [ PV{ } 10000 [ push/pop-test ] times drop ] unit-test
2008-06-18 20:46:37 -04:00
{ PV{ } } [
2008-07-06 07:09:21 -04:00
PV{ }
10000 [ 1 swap ppush ] times
10000 [ ppop ] times
] unit-test
{ t } [
2010-01-14 10:10:13 -05:00
10000 iota >persistent-vector 752 [ ppop ] times dup length iota sequence=
2008-07-06 07:09:21 -04:00
] unit-test
{ t } [
2010-01-14 10:10:13 -05:00
100 iota [
2008-06-06 02:53:47 -04:00
drop
100 random [
2008-06-06 02:53:47 -04:00
16 random-bits [ "1" [ ppush ] change ] [ "2" get push ] bi
] times
100 random "1" get length min [
2008-06-06 02:53:47 -04:00
"1" [ ppop ] change
"2" get pop*
] times
"1" get "2" get sequence=
] all?
] unit-test