summaryrefslogtreecommitdiffstats
path: root/tests/010
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-12-18 17:38:59 -0800
committerKaz Kylheku <kaz@kylheku.com>2021-12-18 17:38:59 -0800
commitc1c205100d246a39c9b92a5d1b2296a59783d7d4 (patch)
treefca7bba1f0198b0de9c2802d8069daf2b4b29782 /tests/010
parent8248110871d18e9ceed422076de5e36bf212e127 (diff)
downloadtxr-c1c205100d246a39c9b92a5d1b2296a59783d7d4.tar.gz
txr-c1c205100d246a39c9b92a5d1b2296a59783d7d4.tar.bz2
txr-c1c205100d246a39c9b92a5d1b2296a59783d7d4.zip
tree: new functions for priority queue operation.
* tree.c (tree_min_node, tree_min, tree_del_min_node, tree_del_min): New functions. (tree_init): tree-min-node, tree-min, tree-del-min-node, tree-del-min: New intrinsics registered. * tree.h (tree_min_node, tree_min, tree_del_min_node, tree_del_min): Declared. * txr.1: Documented. * tests/010/tree.tl: New tests. * stdlib/doc-syms.tl: Updated.
Diffstat (limited to 'tests/010')
-rw-r--r--tests/010/tree.tl30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/010/tree.tl b/tests/010/tree.tl
index 79bab793..56d04fa9 100644
--- a/tests/010/tree.tl
+++ b/tests/010/tree.tl
@@ -226,3 +226,33 @@
(test (tree-count tr) 2)
(tree-insert tr 1 t)
(test (tree-count tr) 3))
+
+(mtest
+ (tree-min-node (tree)) nil
+ (tree-min-node (tree '(1))) #N(1 nil nil)
+ (tree-min-node (tree '(1 2 3))) #N(1 nil nil))
+
+(mtest
+ (tree-min (tree)) nil
+ (tree-min (tree '(1))) 1
+ (tree-min (tree '(1 2 3))) 1)
+
+(let ((tr (tree '(1 2 3 4 5 6 7 8 9 10))))
+ (mtest
+ (tree-count tr) 10
+ (tree-del-min tr) 1
+ (tree-del-min tr) 2
+ (tree-del-min tr) 3
+ (tree-count tr) 7
+ (tree-del-min tr) 4
+ (tree-count tr) 6
+ (tree-del-min tr) 5
+ (tree-del-min tr) 6
+ (tree-del-min tr) 7
+ (tree-del-min tr) 8
+ (tree-count tr) 2
+ (tree-del-min tr) 9
+ (tree-count tr) 1
+ (tree-del-min tr) 10
+ (tree-count tr) 0
+ (tree-del-min tr) nil))