summaryrefslogtreecommitdiff
path: root/test/test_avltree.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_avltree.c')
-rw-r--r--test/test_avltree.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/test/test_avltree.c b/test/test_avltree.c
index 39afe1f..c6baefb 100644
--- a/test/test_avltree.c
+++ b/test/test_avltree.c
@@ -27,9 +27,10 @@
#include <stdlib.h>
#include <string.h>
+#include "../avltree.h"
+#include "../check.h"
#include "../hash.h"
#include "../macros.h"
-#include "../avltree.h"
#define SIZE 28
@@ -103,7 +104,7 @@ main(int argc, char *argv[])
{
struct avltree tree;
struct avltree_node *node, *tmp;
- struct obj *obj;
+ struct obj *obj, *prev;
avltree_slot_t slot;
int i, id;
@@ -126,6 +127,20 @@ main(int argc, char *argv[])
avltree_insert_slot(&tree, slot, &obj->node);
}
+ id = get_id(0);
+ node = avltree_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 = avltree_replace_slot(&tree, slot, &obj->node);
+ check(node != &obj->node);
+ prev = avltree_entry(node, struct obj, node);
+ free(prev);
+ node = avltree_lookup(&tree, id, obj_cmp_lookup);
+ check(node == &obj->node);
+
printf("\n");
print_tree(&tree);