summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2016-07-11 18:09:50 +0000
committerDavid Robillard <d@drobilla.net>2016-07-11 18:09:50 +0000
commitcc4c8641bdd2d60864e6a4236539a7013eb00ad7 (patch)
treeb3c86167343c716e5c4f1d82f308826ac97fa3a2
parent59a5d4b884db6cd9b5b98f8aaeb0b153bdc6405a (diff)
downloadzix-cc4c8641bdd2d60864e6a4236539a7013eb00ad7.tar.gz
zix-cc4c8641bdd2d60864e6a4236539a7013eb00ad7.tar.bz2
zix-cc4c8641bdd2d60864e6a4236539a7013eb00ad7.zip
Improve test coverage
git-svn-id: http://svn.drobilla.net/zix/trunk@106 df6676b4-ccc9-40e5-b5d6-7c4628a128e3
-rw-r--r--test/btree_test.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/test/btree_test.c b/test/btree_test.c
index 1936f93..121d424 100644
--- a/test/btree_test.c
+++ b/test/btree_test.c
@@ -73,6 +73,10 @@ ith_elem(int test_num, size_t n_elems, int i)
}
}
+static void destroy(void* ptr)
+{
+}
+
typedef struct {
int test_num;
size_t n_elems;
@@ -174,6 +178,10 @@ stress(int test_num, size_t n_elems)
zix_btree_iter_free(ti);
}
+ if (zix_btree_lower_bound(NULL, (void*)r, &ti) != ZIX_STATUS_BAD_ARG) {
+ return test_fail(t, "Lower bound on NULL tree succeeded\n");
+ }
+
// Find the lower bound of all elements and ensure it's exact
for (size_t i = 0; i < n_elems; ++i) {
r = ith_elem(test_num, n_elems, i);
@@ -314,12 +322,24 @@ stress(int test_num, size_t n_elems)
return test_fail(t, "Tree size %zu != %zu\n", zix_btree_size(t), n_elems);
}
+ // Delete some elements in a random order
+ for (size_t e = 0; e < zix_btree_size(t); e++) {
+ r = ith_elem(test_num, n_elems, rand() % n_elems);
+ uintptr_t removed;
+ ZixStatus rst = zix_btree_remove(t, (void*)r, (void**)&removed, &next);
+ if (rst != ZIX_STATUS_SUCCESS && rst != ZIX_STATUS_NOT_FOUND) {
+ return test_fail(t, "Error deleting %lu\n", (uintptr_t)r);
+ }
+ }
+ zix_btree_iter_free(next);
+ next = NULL;
+
zix_btree_free(t);
// Test lower_bound with wildcard comparator
TestContext ctx = { test_num, n_elems };
- if (!(t = zix_btree_new(wildcard_cmp, &ctx, NULL))) {
+ if (!(t = zix_btree_new(wildcard_cmp, &ctx, destroy))) {
return test_fail(t, "Failed to allocate tree\n");
}
@@ -352,7 +372,7 @@ stress(int test_num, size_t n_elems)
return test_fail(t, "Wildcard lower bound %" PRIdPTR " != %" PRIdPTR "\n",
iter_data, cut);
}
-
+
zix_btree_iter_free(ti);
// Find lower bound of value past end