summaryrefslogtreecommitdiff
path: root/test/test_rbtree.c
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2017-09-04 22:22:27 +0200
committerRichard Braun <rbraun@sceen.net>2017-09-04 22:22:27 +0200
commit089a9ba4b7b0304069420771cde3e1f49ca5602e (patch)
tree7cba0dca60c3dca850b67dbc4f1cefcfbe5c8f7a /test/test_rbtree.c
parentfa9130a58d6c3e0a1bf223d8e29875ef4689f289 (diff)
rbtree: new rbtree_replace_slot function
Diffstat (limited to 'test/test_rbtree.c')
-rw-r--r--test/test_rbtree.c17
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);