summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-09-28 21:29:15 +0000
committerDavid Robillard <d@drobilla.net>2011-09-28 21:29:15 +0000
commit7aba1b9c1a40ce84b2f9a42988697b7ebd464ee0 (patch)
tree46097d48348d8600d175735527680eed489a143c /test
parent038314368968b7955d9a9b82b95cf51b983e2ccc (diff)
downloadzix-7aba1b9c1a40ce84b2f9a42988697b7ebd464ee0.tar.gz
zix-7aba1b9c1a40ce84b2f9a42988697b7ebd464ee0.tar.bz2
zix-7aba1b9c1a40ce84b2f9a42988697b7ebd464ee0.zip
Add destructor parameter and zix_tree_size
git-svn-id: http://svn.drobilla.net/zix/trunk@41 df6676b4-ccc9-40e5-b5d6-7c4628a128e3
Diffstat (limited to 'test')
-rw-r--r--test/tree_bench.c2
-rw-r--r--test/tree_test.c37
2 files changed, 37 insertions, 2 deletions
diff --git a/test/tree_bench.c b/test/tree_bench.c
index d0e2611..ff6bd5e 100644
--- a/test/tree_bench.c
+++ b/test/tree_bench.c
@@ -62,7 +62,7 @@ bench_zix_tree(size_t n_elems,
intptr_t r;
ZixTreeIter* ti;
- ZixTree* t = zix_tree_new(true, int_cmp, NULL);
+ ZixTree* t = zix_tree_new(true, int_cmp, NULL, NULL);
srand(seed);
diff --git a/test/tree_test.c b/test/tree_test.c
index 943dca7..b89d5a8 100644
--- a/test/tree_test.c
+++ b/test/tree_test.c
@@ -60,7 +60,7 @@ stress(int test_num, size_t n_elems)
intptr_t r;
ZixTreeIter* ti;
- ZixTree* t = zix_tree_new(true, int_cmp, NULL);
+ ZixTree* t = zix_tree_new(true, int_cmp, NULL, NULL);
srand(seed);
@@ -79,6 +79,12 @@ stress(int test_num, size_t n_elems)
}
}
+ // Ensure tree size is correct
+ if (zix_tree_size(t) != n_elems) {
+ fprintf(stderr, "Tree size %zu != %zu\n", zix_tree_size(t), n_elems);
+ return test_fail();
+ }
+
srand(seed);
// Search for all elements
@@ -146,6 +152,35 @@ stress(int test_num, size_t n_elems)
}
}
+ // Ensure the tree is empty
+ if (zix_tree_size(t) != 0) {
+ fprintf(stderr, "Tree size %zu != 0\n", zix_tree_size(t));
+ return test_fail();
+ }
+
+ srand(seed);
+
+ // Insert n_elems elements again (to test non-empty destruction)
+ for (size_t i = 0; i < n_elems; ++i) {
+ r = ith_elem(test_num, n_elems, i);
+ int status = zix_tree_insert(t, (void*)r, &ti);
+ if (status) {
+ fprintf(stderr, "Insert failed\n");
+ return test_fail();
+ }
+ if ((intptr_t)zix_tree_get(ti) != r) {
+ fprintf(stderr, "Data corrupt (saw %" PRIdPTR ", expected %zu)\n",
+ (intptr_t)zix_tree_get(ti), r);
+ return test_fail();
+ }
+ }
+
+ // Ensure tree size is correct
+ if (zix_tree_size(t) != n_elems) {
+ fprintf(stderr, "Tree size %zu != %zu\n", zix_tree_size(t), n_elems);
+ return test_fail();
+ }
+
zix_tree_free(t);
return EXIT_SUCCESS;