From c686b159391fcf865a297006476dcc69d1895d4d Mon Sep 17 00:00:00 2001 From: Jon Harper Date: Mon, 9 Jan 2017 17:22:20 +0100 Subject: [PATCH] trees, fix delete-at. Add testcase --- extra/trees/trees-tests.factor | 21 ++++++++++++++++++++- extra/trees/trees.factor | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/extra/trees/trees-tests.factor b/extra/trees/trees-tests.factor index 2172f9add0..4660f5738c 100644 --- a/extra/trees/trees-tests.factor +++ b/extra/trees/trees-tests.factor @@ -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 diff --git a/extra/trees/trees.factor b/extra/trees/trees.factor index 8b3b414033..82ac654582 100644 --- a/extra/trees/trees.factor +++ b/extra/trees/trees.factor @@ -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 )