forked from vieter-v/libvieter
feat(tree): add tree iterator
This commit is contained in:
parent
ef5037f941
commit
a6ed89d8cd
7 changed files with 123 additions and 10 deletions
|
|
@ -16,19 +16,30 @@ void test_insert() {
|
|||
vieter_tree *tree = vieter_tree_init();
|
||||
|
||||
for (uint64_t i = 0; i < 250; i++) {
|
||||
TEST_CHECK(vieter_tree_insert(tree, i, NULL) == vieter_tree_ok);
|
||||
TEST_CHECK(vieter_tree_insert(tree, i, (void *)i) == vieter_tree_ok);
|
||||
TEST_SIZE(tree, i + 1);
|
||||
TEST_CHECK(vieter_tree_validate(tree));
|
||||
}
|
||||
|
||||
void *out;
|
||||
vieter_tree_iterator *iter = vieter_tree_iterator_from(tree);
|
||||
|
||||
void *out = NULL;
|
||||
|
||||
for (uint64_t i = 0; i < 250; i++) {
|
||||
TEST_CHECK(vieter_tree_search(&out, tree, i) == vieter_tree_ok);
|
||||
TEST_CHECK(out == (void *)i);
|
||||
TEST_CHECK(vieter_tree_insert(tree, i, NULL) == vieter_tree_already_present);
|
||||
TEST_CHECK(vieter_tree_search(&out, tree, i) == vieter_tree_ok);
|
||||
|
||||
out = NULL;
|
||||
|
||||
TEST_CHECK(vieter_tree_iterator_next(&out, iter) == vieter_tree_ok);
|
||||
TEST_CHECK(out == (void *)i);
|
||||
}
|
||||
|
||||
TEST_CHECK(vieter_tree_iterator_next(&out, iter) == vieter_tree_iterator_done);
|
||||
|
||||
vieter_tree_iterator_free(&iter);
|
||||
vieter_tree_free(tree);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue