]> git.mdlowis.com Git - archive/atc.git/commitdiff
Added more tests for splay tree
authorMichael D. Lowis <mike@mdlowis.com>
Mon, 13 Apr 2015 01:45:22 +0000 (21:45 -0400)
committerMichael D. Lowis <mike@mdlowis.com>
Mon, 13 Apr 2015 01:45:22 +0000 (21:45 -0400)
source/runtime/splaytree.c
tests/test_splaytree.c

index b3611b483fa4049044e6c9e1ba18970cb9496331..924f43ead570215930d9c8810e449e009b3f138b 100644 (file)
@@ -153,6 +153,6 @@ void* splaytree_delete(splaytree_t* tree, uintptr_t key)
             destroy_node(tree, deadite);
         }
     }
-    return NULL;
+    return value;
 }
 
index d8dc2391c040b64918515842f331ded1478cf1de..67721fae1be2c278d9bc298cd62d47a61f0e0b40 100644 (file)
@@ -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);
+    }
 }