2009-03-04 17:02:21 -05:00
|
|
|
! Copyright (c) 2005 Mackenzie Straight.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2017-02-07 18:14:20 -05:00
|
|
|
USING: assocs fry grouping kernel math random sequences sets
|
2014-12-11 23:33:18 -05:00
|
|
|
tools.test trees.splay ;
|
2009-03-04 17:02:21 -05:00
|
|
|
IN: trees.splay.tests
|
|
|
|
|
|
|
|
: randomize-numeric-splay-tree ( splay-tree -- )
|
2017-06-01 17:59:35 -04:00
|
|
|
100 <iota> [ drop 100 random of drop ] with each ;
|
2009-03-04 17:02:21 -05:00
|
|
|
|
|
|
|
: make-numeric-splay-tree ( n -- splay-tree )
|
2017-06-01 17:59:35 -04:00
|
|
|
<iota> <splay> [ '[ dup _ set-at ] each ] keep ;
|
2009-03-04 17:02:21 -05:00
|
|
|
|
2014-12-11 23:33:18 -05:00
|
|
|
{ t } [
|
2009-03-04 17:02:21 -05:00
|
|
|
100 make-numeric-splay-tree dup randomize-numeric-splay-tree
|
2014-12-11 23:33:18 -05:00
|
|
|
[ drop ] { } assoc>map [ < ] monotonic?
|
2009-03-04 17:02:21 -05:00
|
|
|
] unit-test
|
|
|
|
|
2014-12-11 23:33:18 -05:00
|
|
|
{ 10 } [ 10 make-numeric-splay-tree keys length ] unit-test
|
|
|
|
{ 10 } [ 10 make-numeric-splay-tree values length ] unit-test
|
2009-03-04 17:02:21 -05:00
|
|
|
|
2014-12-11 23:33:18 -05:00
|
|
|
{ f } [ <splay> f 4 pick set-at 4 of ] unit-test
|
2009-03-04 17:02:21 -05:00
|
|
|
|
|
|
|
! Ensure that f can be a value
|
2014-12-11 23:33:18 -05:00
|
|
|
{ t } [ <splay> f 4 pick set-at 4 swap key? ] unit-test
|
2009-03-04 17:02:21 -05:00
|
|
|
|
|
|
|
{
|
2014-12-11 23:33:18 -05:00
|
|
|
{ { 1 "a" } { 2 "b" } { 3 "c" } { 4 "d" } { 5 "e" } { 6 "f" } }
|
|
|
|
} [
|
|
|
|
{
|
|
|
|
{ 4 "d" } { 5 "e" } { 6 "f" }
|
|
|
|
{ 1 "a" } { 2 "b" } { 3 "c" }
|
|
|
|
} >splay >alist
|
2009-03-04 17:02:21 -05:00
|
|
|
] unit-test
|
2011-10-14 20:52:24 -04:00
|
|
|
|
2014-12-11 23:33:18 -05:00
|
|
|
{ 0 } [
|
2017-06-01 17:59:35 -04:00
|
|
|
100 <iota> [ dup zip >splay ] keep
|
2011-10-14 20:52:24 -04:00
|
|
|
[ over delete-at ] each assoc-size
|
|
|
|
] unit-test
|
2017-01-06 11:34:07 -05:00
|
|
|
|
|
|
|
: test-tree ( -- tree )
|
|
|
|
SPLAY{
|
|
|
|
{ 7 "seven" }
|
|
|
|
{ 9 "nine" }
|
|
|
|
{ 4 "four" }
|
|
|
|
{ 4 "replaced four" }
|
|
|
|
{ 7 "replaced seven" }
|
|
|
|
} clone ;
|
|
|
|
|
|
|
|
! test assoc-size
|
|
|
|
{ 3 } [ test-tree assoc-size ] unit-test
|
|
|
|
{ 2 } [ test-tree 9 over delete-at assoc-size ] unit-test
|
2017-01-25 13:26:22 -05:00
|
|
|
|
|
|
|
! Test that converting trees doesn't give linked lists
|
|
|
|
{
|
|
|
|
SPLAY{ { 1 1 } { 3 3 } { 2 2 } }
|
|
|
|
} [ SPLAY{ { 1 1 } { 3 3 } { 2 2 } } >splay ] unit-test
|