summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-09-28 19:57:19 +0000
committerDavid Robillard <d@drobilla.net>2011-09-28 19:57:19 +0000
commit038314368968b7955d9a9b82b95cf51b983e2ccc (patch)
tree262984de4f4bed601fd679386324365aa5484251 /test
parent0e3ef580b5d265ee59d50d35053e989b8c4277c2 (diff)
downloadzix-038314368968b7955d9a9b82b95cf51b983e2ccc.tar.gz
zix-038314368968b7955d9a9b82b95cf51b983e2ccc.tar.bz2
zix-038314368968b7955d9a9b82b95cf51b983e2ccc.zip
More glib like interface for ZixTree.
Move ZixTree debug stuff to tree_debug.h. Support reverse iteration over ZixTree. git-svn-id: http://svn.drobilla.net/zix/trunk@40 df6676b4-ccc9-40e5-b5d6-7c4628a128e3
Diffstat (limited to 'test')
-rw-r--r--test/tree_bench.c11
-rw-r--r--test/tree_test.c36
2 files changed, 33 insertions, 14 deletions
diff --git a/test/tree_bench.c b/test/tree_bench.c
index 84d31a8..d0e2611 100644
--- a/test/tree_bench.c
+++ b/test/tree_bench.c
@@ -60,7 +60,7 @@ bench_zix_tree(size_t n_elems,
FILE* insert_dat, FILE* search_dat, FILE* iter_dat, FILE* del_dat)
{
intptr_t r;
- ZixTreeIter ti;
+ ZixTreeIter* ti;
ZixTree* t = zix_tree_new(true, int_cmp, NULL);
@@ -86,7 +86,7 @@ bench_zix_tree(size_t n_elems,
if (zix_tree_find(t, (void*)r, &ti)) {
return test_fail("Failed to find %zu\n", r);
}
- if ((intptr_t)zix_tree_get_data(ti) != r) {
+ if ((intptr_t)zix_tree_get(ti) != r) {
return test_fail("Failed to get %zu\n", r);
}
}
@@ -96,10 +96,10 @@ bench_zix_tree(size_t n_elems,
// Iterate over all elements
struct timespec iter_start = bench_start();
- for (ZixTreeIter iter = zix_tree_begin(t);
+ for (ZixTreeIter* iter = zix_tree_begin(t);
!zix_tree_iter_is_end(iter);
iter = zix_tree_iter_next(iter)) {
- zix_tree_get_data(iter);
+ zix_tree_get(iter);
}
fprintf(iter_dat, "\t%lf", bench_end(&iter_start));
@@ -109,7 +109,8 @@ bench_zix_tree(size_t n_elems,
struct timespec del_start = bench_start();
for (size_t i = 0; i < n_elems; i++) {
r = rand();
- ZixTreeIter item;
+ ZixTreeIter*
+ item;
if (zix_tree_find(t, (void*)r, &item)) {
return test_fail("Failed to find %zu to delete\n", r);
}
diff --git a/test/tree_test.c b/test/tree_test.c
index c352fc0..943dca7 100644
--- a/test/tree_test.c
+++ b/test/tree_test.c
@@ -57,8 +57,8 @@ test_fail()
static int
stress(int test_num, size_t n_elems)
{
- intptr_t r;
- ZixTreeIter ti;
+ intptr_t r;
+ ZixTreeIter* ti;
ZixTree* t = zix_tree_new(true, int_cmp, NULL);
@@ -72,9 +72,9 @@ stress(int test_num, size_t n_elems)
fprintf(stderr, "Insert failed\n");
return test_fail();
}
- if ((intptr_t)zix_tree_get_data(ti) != r) {
+ if ((intptr_t)zix_tree_get(ti) != r) {
fprintf(stderr, "Data corrupt (saw %" PRIdPTR ", expected %zu)\n",
- (intptr_t)zix_tree_get_data(ti), r);
+ (intptr_t)zix_tree_get(ti), r);
return test_fail();
}
}
@@ -88,9 +88,9 @@ stress(int test_num, size_t n_elems)
fprintf(stderr, "Find failed\n");
return test_fail();
}
- if ((intptr_t)zix_tree_get_data(ti) != r) {
+ if ((intptr_t)zix_tree_get(ti) != r) {
fprintf(stderr, "Data corrupt (saw %" PRIdPTR ", expected %zu)\n",
- (intptr_t)zix_tree_get_data(ti), r);
+ (intptr_t)zix_tree_get(ti), r);
return test_fail();
}
}
@@ -100,11 +100,11 @@ stress(int test_num, size_t n_elems)
// Iterate over all elements
size_t i = 0;
intptr_t last = -1;
- for (ZixTreeIter iter = zix_tree_begin(t);
+ for (ZixTreeIter* iter = zix_tree_begin(t);
!zix_tree_iter_is_end(iter);
iter = zix_tree_iter_next(iter), ++i) {
r = ith_elem(test_num, n_elems, i);
- const intptr_t iter_data = (intptr_t)zix_tree_get_data(iter);
+ const intptr_t iter_data = (intptr_t)zix_tree_get(iter);
if (iter_data < last) {
fprintf(stderr, "Iter corrupt (%" PRIdPTR " < %zu)\n",
iter_data, last);
@@ -115,10 +115,28 @@ stress(int test_num, size_t n_elems)
srand(seed);
+ // Iterate over all elements backwards
+ i = 0;
+ last = INTPTR_MAX;
+ for (ZixTreeIter* iter = zix_tree_rbegin(t);
+ !zix_tree_iter_is_rend(iter);
+ iter = zix_tree_iter_prev(iter), ++i) {
+ r = ith_elem(test_num, n_elems, i);
+ const intptr_t iter_data = (intptr_t)zix_tree_get(iter);
+ if (iter_data > last) {
+ fprintf(stderr, "Iter corrupt (%" PRIdPTR " < %zu)\n",
+ iter_data, last);
+ return test_fail();
+ }
+ last = iter_data;
+ }
+
+ srand(seed);
+
// Delete all elements
for (size_t i = 0; i < n_elems; i++) {
r = ith_elem(test_num, n_elems, i);
- ZixTreeIter item;
+ ZixTreeIter* item;
if (zix_tree_find(t, (void*)r, &item) != ZIX_STATUS_SUCCESS) {
fprintf(stderr, "Failed to find item to remove\n");
return test_fail();