feat(tree): add tree iterator
All checks were successful
ci/woodpecker/pr/lint Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/test-mem Pipeline was successful

This commit is contained in:
Jef Roosens 2023-02-02 14:10:35 +01:00
parent ef5037f941
commit a6ed89d8cd
Signed by: Jef Roosens
GPG key ID: B75D4F293C7052DB
7 changed files with 123 additions and 10 deletions

View file

@ -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);
}