From: Michael D. Lowis Date: Mon, 13 Apr 2015 01:45:22 +0000 (-0400) Subject: Added more tests for splay tree X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=21783c62b237713fef473273439fee7118353e11;p=archive%2Fatc.git Added more tests for splay tree --- diff --git a/source/runtime/splaytree.c b/source/runtime/splaytree.c index b3611b4..924f43e 100644 --- a/source/runtime/splaytree.c +++ b/source/runtime/splaytree.c @@ -153,6 +153,6 @@ void* splaytree_delete(splaytree_t* tree, uintptr_t key) destroy_node(tree, deadite); } } - return NULL; + return value; } diff --git a/tests/test_splaytree.c b/tests/test_splaytree.c index d8dc239..67721fa 100644 --- a/tests/test_splaytree.c +++ b/tests/test_splaytree.c @@ -31,6 +31,17 @@ TEST_SUITE(SplayTree) { splaytree_destroy(tree); } + TEST(Verify_Insert_will_insert_does_nothing_if_item_already_present) + { + splaytree_t* tree = splaytree_create((del_fn_t)del_int, (cmp_fn_t)cmp_int); + splaytree_insert(tree, 42, (void*)42); + splaytree_insert(tree, 42, (void*)42); + CHECK((void*)42 == tree->root->value); + CHECK(NULL == tree->root->left); + CHECK(NULL == tree->root->right); + splaytree_destroy(tree); + } + TEST(Verify_Insert_will_insert_to_the_left_of_root_when_less_than) { splaytree_t* tree = splaytree_create((del_fn_t)del_int, (cmp_fn_t)cmp_int); @@ -61,6 +72,21 @@ TEST_SUITE(SplayTree) { splaytree_destroy(tree); } + TEST(Verify_Lookup_will_return_null_if_tree_is_empty) + { + splaytree_t* tree = splaytree_create((del_fn_t)del_int, (cmp_fn_t)cmp_int); + CHECK(NULL == splaytree_lookup(tree, 43)); + splaytree_destroy(tree); + } + + TEST(Verify_Lookup_will_return_null_if_value_is_not_present) + { + splaytree_t* tree = splaytree_create((del_fn_t)del_int, (cmp_fn_t)cmp_int); + splaytree_insert(tree, 42, (void*)42); + CHECK(NULL == splaytree_lookup(tree, 43)); + splaytree_destroy(tree); + } + TEST(Verify_Lookup_will_find_the_item_left_of_root_when_less_than) { splaytree_t* tree = splaytree_create((del_fn_t)del_int, (cmp_fn_t)cmp_int); @@ -85,7 +111,7 @@ TEST_SUITE(SplayTree) { { splaytree_t* tree = splaytree_create((del_fn_t)del_int, (cmp_fn_t)cmp_int); splaytree_insert(tree, 42, (void*)42); - splaytree_delete(tree, 42); + CHECK((void*)42 == splaytree_delete(tree, 42)); CHECK(tree->root == NULL); splaytree_destroy(tree); } @@ -95,7 +121,7 @@ TEST_SUITE(SplayTree) { splaytree_t* tree = splaytree_create((del_fn_t)del_int, (cmp_fn_t)cmp_int); splaytree_insert(tree, 42, (void*)42); splaytree_insert(tree, 43, (void*)43); - splaytree_delete(tree, 42); + CHECK((void*)42 == splaytree_delete(tree, 42)); CHECK(tree->root != NULL); CHECK(tree->root->value == (void*)43); splaytree_destroy(tree); @@ -106,7 +132,7 @@ TEST_SUITE(SplayTree) { splaytree_t* tree = splaytree_create((del_fn_t)del_int, (cmp_fn_t)cmp_int); splaytree_insert(tree, 42, (void*)42); splaytree_insert(tree, 43, (void*)43); - splaytree_delete(tree, 43); + CHECK((void*)43 == splaytree_delete(tree, 43)); CHECK(tree->root != NULL); CHECK(tree->root->value == (void*)42); splaytree_destroy(tree); @@ -118,7 +144,7 @@ TEST_SUITE(SplayTree) { splaytree_insert(tree, 41, (void*)41); splaytree_insert(tree, 42, (void*)42); splaytree_insert(tree, 43, (void*)43); - splaytree_delete(tree, 41); + CHECK((void*)41 == splaytree_delete(tree, 41)); CHECK(tree->root != NULL); CHECK(tree->root->value == (void*)42); splaytree_destroy(tree); @@ -132,7 +158,7 @@ TEST_SUITE(SplayTree) { splaytree_insert(tree, 43, (void*)43); splaytree_insert(tree, 44, (void*)44); splaytree_insert(tree, 42, (void*)42); - splaytree_delete(tree, 42); + CHECK((void*)42 == splaytree_delete(tree, 42)); CHECK(tree->root != NULL); CHECK(tree->root->value == (void*)41); CHECK(tree->root->left != NULL); @@ -146,4 +172,11 @@ TEST_SUITE(SplayTree) { CHECK(tree->root->right->left == NULL); splaytree_destroy(tree); } + + TEST(Verify_Delete_should_do_nothing_when_tree_empty) + { + splaytree_t* tree = splaytree_create((del_fn_t)del_int, (cmp_fn_t)cmp_int); + CHECK(NULL == splaytree_delete(tree, 42)); + splaytree_destroy(tree); + } }