]> git.mdlowis.com Git - archive/atc.git/commitdiff
Fixed busted tests
authorMichael D. Lowis <mike@mdlowis.com>
Tue, 14 Apr 2015 03:03:49 +0000 (23:03 -0400)
committerMichael D. Lowis <mike@mdlowis.com>
Tue, 14 Apr 2015 03:03:49 +0000 (23:03 -0400)
source/runtime/splaytree.c
tests/test_splaytree.c

index d69b7820810cb0f2929d8bb63d9083063aacec17..1770cb9667bfbe0f039f6fc5bc75b817eae2ad3c 100644 (file)
@@ -5,6 +5,9 @@
 #include "splaytree.h"
 #include <stdlib.h>
 #include <string.h>
+#include <stdio.h>
+
+extern void print_tree(node_t* tree);
 
 #ifdef NDEBUG
 static
@@ -49,38 +52,37 @@ static void splay(splaytree_t* tree, uintptr_t key) {
     node_t* subleft  = &subroots;
     node_t* subright = &subroots;
     node_t* root     = tree->root;
-    if (NULL != root) {
-        while (1) {
-            int cmp = tree->compare(key, root->value);
-            if (cmp < 0) {
+
+    while (1) {
+        int cmp = tree->compare(key, root->value);
+        if (cmp < 0) {
+            if (NULL == root->left) break;
+            if (tree->compare(key, root->left->value) < 0) {
+                root = rotate(root, RIGHT);
                 if (NULL == root->left) break;
-                if (tree->compare(key, root->left->value) < 0) {
-                    root = rotate(root, RIGHT);
-                    if (NULL == root->left) break;
-                }
-                subright->left = root;
-                subright = root;
-                root = root->left;
-            } else if (cmp > 0) {
+            }
+            subright->left = root;
+            subright = root;
+            root = root->left;
+        } else if (cmp > 0) {
+            if (NULL == root->right) break;
+            if (tree->compare(key, root->right->value) > 0) {
+                root = rotate(root, LEFT);
                 if (NULL == root->right) break;
-                if (tree->compare(key, root->right->value) < 0) {
-                    root = rotate(root, LEFT);
-                    if (NULL == root->right) break;
-                }
-                subleft->right = root;
-                subleft = root;
-                root = root->right;
-            } else {
-                break;
             }
+            subleft->right = root;
+            subleft = root;
+            root = root->right;
+        } else {
+            break;
         }
     }
 
     /* assemble */
     subleft->right = root->left;
     subright->left = root->right;
-    root->left  = subroots.right;
-    root->right = subroots.left;
+    root->left     = subroots.right;
+    root->right    = subroots.left;
 
     /* Set the root */
     tree->root = root;
index 06cdfd5460620ccabe11aee45f1786268f089189..ad0bd1b871ff1bdb5fca5a764940a4fd8056a3b7 100644 (file)
@@ -134,11 +134,8 @@ TEST_SUITE(SplayTree) {
     {
         splaytree_t* tree = splaytree_create((del_fn_t)del_int, (cmp_fn_t)cmp_int);
         tree->root = node(42, NULL, node(44, node(43, NULL, NULL), NULL));
-        print_tree(tree->root);
         void* value = splaytree_lookup(tree, 43);
-        print_tree(tree->root);
         CHECK((void*)43 == value);
-        print_tree(tree->root);
         splaytree_destroy(tree);
     }
 
@@ -146,11 +143,8 @@ TEST_SUITE(SplayTree) {
     {
         splaytree_t* tree = splaytree_create((del_fn_t)del_int, (cmp_fn_t)cmp_int);
         tree->root = node(44, node(42, NULL, node(43, NULL, NULL)), NULL);
-        print_tree(tree->root);
         void* value = splaytree_lookup(tree, 43);
-        print_tree(tree->root);
         CHECK((void*)43 == value);
-        print_tree(tree->root);
         splaytree_destroy(tree);
     }
 
@@ -159,11 +153,8 @@ TEST_SUITE(SplayTree) {
     {
         splaytree_t* tree = splaytree_create((del_fn_t)del_int, (cmp_fn_t)cmp_int);
         tree->root = node(42, NULL, node(43, NULL, node(45, node(44, NULL, NULL), NULL)));
-        print_tree(tree->root);
         void* value = splaytree_lookup(tree, 44);
-        print_tree(tree->root);
         CHECK((void*)44 == value);
-        print_tree(tree->root);
         splaytree_destroy(tree);
     }
 
@@ -171,11 +162,8 @@ TEST_SUITE(SplayTree) {
     {
         splaytree_t* tree = splaytree_create((del_fn_t)del_int, (cmp_fn_t)cmp_int);
         tree->root = node(42, node(41, node(39, NULL, node(40, NULL, NULL)), NULL), NULL);
-        print_tree(tree->root);
         void* value = splaytree_lookup(tree, 40);
-        print_tree(tree->root);
         CHECK((void*)40 == value);
-        print_tree(tree->root);
         splaytree_destroy(tree);
     }