From 21783c62b237713fef473273439fee7118353e11 Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Sun, 12 Apr 2015 21:45:22 -0400 Subject: [PATCH] Added more tests for splay tree --- source/runtime/splaytree.c | 2 +- tests/test_splaytree.c | 43 +++++++++++++++++++++++++++++++++----- 2 files changed, 39 insertions(+), 6 deletions(-) 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); + } } -- 2.55.0