diff options
author | Richard Braun <rbraun@sceen.net> | 2017-09-04 22:22:27 +0200 |
---|---|---|
committer | Richard Braun <rbraun@sceen.net> | 2017-09-04 22:22:27 +0200 |
commit | 089a9ba4b7b0304069420771cde3e1f49ca5602e (patch) | |
tree | 7cba0dca60c3dca850b67dbc4f1cefcfbe5c8f7a /test/test_rbtree.c | |
parent | fa9130a58d6c3e0a1bf223d8e29875ef4689f289 (diff) |
rbtree: new rbtree_replace_slot function
Diffstat (limited to 'test/test_rbtree.c')
-rw-r--r-- | test/test_rbtree.c | 17 |
1 files changed, 16 insertions, 1 deletions
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 <stdlib.h> #include <string.h> +#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); |