From 089a9ba4b7b0304069420771cde3e1f49ca5602e Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Mon, 4 Sep 2017 22:22:27 +0200 Subject: rbtree: new rbtree_replace_slot function --- test/test_rbtree.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'test/test_rbtree.c') diff --git a/test/test_rbtree.c b/test/test_rbtree.c index 328e1f7..6c7d903 100644 --- a/test/test_rbtree.c +++ b/test/test_rbtree.c @@ -27,6 +27,7 @@ #include #include +#include "../check.h" #include "../hash.h" #include "../macros.h" #include "../rbtree.h" @@ -88,7 +89,7 @@ main(int argc, char *argv[]) { struct rbtree tree; struct rbtree_node *node, *tmp; - struct obj *obj; + struct obj *obj, *prev; rbtree_slot_t slot; int i, id; @@ -111,6 +112,20 @@ main(int argc, char *argv[]) rbtree_insert_slot(&tree, slot, &obj->node); } + id = get_id(0); + node = rbtree_lookup_slot(&tree, id, obj_cmp_lookup, slot); + check(node); + obj = malloc(sizeof(*obj)); + check(obj); + obj->id = id; + printf("replacing: %d ", obj->id); + node = rbtree_replace_slot(&tree, slot, &obj->node); + check(node != &obj->node); + prev = rbtree_entry(node, struct obj, node); + free(prev); + node = rbtree_lookup(&tree, id, obj_cmp_lookup); + check(node == &obj->node); + printf("\n"); print_tree(&tree); -- cgit v1.2.3