From 7aba1b9c1a40ce84b2f9a42988697b7ebd464ee0 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 28 Sep 2011 21:29:15 +0000 Subject: Add destructor parameter and zix_tree_size git-svn-id: http://svn.drobilla.net/zix/trunk@41 df6676b4-ccc9-40e5-b5d6-7c4628a128e3 --- test/tree_bench.c | 2 +- test/tree_test.c | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) (limited to 'test') 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; -- cgit v1.2.1