trees, fix delete-at. Add testcase

char-rename
Jon Harper 2017-01-09 17:22:20 +01:00 committed by John Benediktsson
parent 2ca301ec5e
commit c686b15939
2 changed files with 21 additions and 2 deletions

View File

@ -1,4 +1,5 @@
USING: trees assocs tools.test kernel sequences ;
USING: accessors assocs kernel namespaces random tools.test
trees trees.private ;
IN: trees.tests
: test-tree ( -- tree )
@ -55,3 +56,21 @@ IN: trees.tests
! test assoc-size
{ 3 } [ test-tree assoc-size ] unit-test
{ 2 } [ test-tree 9 over delete-at assoc-size ] unit-test
TUPLE: constant-random pattern ;
M: constant-random random-32* pattern>> ;
{ T{ tree
{ root
T{ node
{ key 2 }
{ value 2 }
{ left T{ node { key 0 } { value 0 } } }
{ right T{ node { key 3 } { value 3 } } }
}
} { count 3 } }
} [
TREE{ { 1 1 } { 3 3 } { 2 2 } { 0 0 } } clone
T{ constant-random f 0xffffffff } random-generator [
1 over delete-at
] with-variable
] unit-test

View File

@ -148,7 +148,7 @@ DEFER: delete-node
dup node-link [
[ nip ] dip (prune-extremity)
] [
[ delete-node ] [ set-node-link ] bi
[ delete-node swap set-node-link ] keep
] if* ;
: prune-extremity ( node -- new-extremity )