From cc4c8641bdd2d60864e6a4236539a7013eb00ad7 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 11 Jul 2016 18:09:50 +0000 Subject: Improve test coverage git-svn-id: http://svn.drobilla.net/zix/trunk@106 df6676b4-ccc9-40e5-b5d6-7c4628a128e3 --- test/btree_test.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'test/btree_test.c') 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 -- cgit v1.2.1