added ucx_avl_remove tests

Mon, 18 May 2015 19:52:03 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Mon, 18 May 2015 19:52:03 +0200
changeset 200
e3aad99d2d80
parent 199
e25dc68336ec
child 201
45810f5b7b84

added ucx_avl_remove tests

test/avl_tests.c file | annotate | diff | comparison | revisions
test/avl_tests.h file | annotate | diff | comparison | revisions
test/main.c file | annotate | diff | comparison | revisions
     1.1 --- a/test/avl_tests.c	Mon May 18 19:49:03 2015 +0200
     1.2 +++ b/test/avl_tests.c	Mon May 18 19:52:03 2015 +0200
     1.3 @@ -142,3 +142,69 @@
     1.4      ucx_avl_free(tree4);
     1.5      ucx_avl_free(tree5);
     1.6  }
     1.7 +
     1.8 +UCX_TEST(test_ucx_avl_remove) {
     1.9 +    UcxAVLTree *tree1 = ucx_avl_new(ucx_ptrcmp);
    1.10 +    UcxAVLTree *tree2 = ucx_avl_new(ucx_ptrcmp);
    1.11 +    UcxAVLTree *tree3 = ucx_avl_new(ucx_ptrcmp);
    1.12 +    UcxAVLTree *tree4 = ucx_avl_new(ucx_ptrcmp);
    1.13 +    
    1.14 +    char *data1 = (char*)"data1";
    1.15 +    char *data2 = (char*)"data2";
    1.16 +    char *data3 = (char*)"data3";
    1.17 +    
    1.18 +    UCX_TEST_BEGIN
    1.19 +    ucx_avl_put(tree1, 2, (char*)data2);
    1.20 +    ucx_avl_put(tree1, 1, (char*)data1);
    1.21 +    ucx_avl_put(tree1, 3, (char*)data3);
    1.22 +    void *val = ucx_avl_remove(tree1, 3);
    1.23 +    
    1.24 +    UCX_TEST_ASSERT(check_tree(tree1->root), "check_tree failed (tree1)");
    1.25 +    UCX_TEST_ASSERT(val == data3, "wrong return value (tree1)");
    1.26 +    UCX_TEST_ASSERT(ucx_avl_get(tree1, 3) == NULL, "value not removed (tree1)");
    1.27 +    
    1.28 +    for(int i=0;i<20;i++) {
    1.29 +        if(i==10) {
    1.30 +            ucx_avl_put(tree2, i, data3);
    1.31 +        } else if(i==15) {
    1.32 +            ucx_avl_put(tree2, i, data2);
    1.33 +        } else {
    1.34 +            ucx_avl_put(tree2, i, data1);
    1.35 +        }
    1.36 +    }
    1.37 +    
    1.38 +    UCX_TEST_ASSERT(
    1.39 +            ucx_avl_remove(tree2, 10) == data3,
    1.40 +            "wrong return value for key: 10 (tree2)");
    1.41 +    UCX_TEST_ASSERT(check_tree(tree2->root), "check_tree failed (tree2)");
    1.42 +    
    1.43 +    UCX_TEST_ASSERT(
    1.44 +            ucx_avl_remove(tree2, 15) == data2,
    1.45 +            "wrong return value for key: 15 (tree2)");
    1.46 +    UCX_TEST_ASSERT(check_tree(tree2->root), "check_tree failed (tree2)");
    1.47 +    
    1.48 +    for(int i=0;i<20;i++) {
    1.49 +        ucx_avl_remove(tree2, i);
    1.50 +        UCX_TEST_ASSERT(check_tree(tree2->root), "check_tree failed (tree2)");
    1.51 +    }
    1.52 +    
    1.53 +    for(int i=0;i<100000;i++) {
    1.54 +        ucx_avl_put(tree3, i, data1);
    1.55 +    }
    1.56 +    for(int i=100000-1;i>=0;i--) {
    1.57 +        ucx_avl_remove(tree3, i);
    1.58 +    }
    1.59 +    UCX_TEST_ASSERT(tree3->root == NULL, "root not NULL (tree3)");
    1.60 +    UCX_TEST_ASSERT(check_tree(tree3->root), "check_tree failed (tree3)");
    1.61 +    
    1.62 +    ucx_avl_put(tree4, 1, data1);
    1.63 +    ucx_avl_remove(tree4, 1);
    1.64 +    UCX_TEST_ASSERT(check_tree(tree4->root), "check_tree failed (tree4)");
    1.65 +    UCX_TEST_ASSERT(tree4->root == NULL, "root not NULL (tree4)");
    1.66 +    UCX_TEST_END
    1.67 +    
    1.68 +    ucx_avl_free(tree1);
    1.69 +    ucx_avl_free(tree2);
    1.70 +    ucx_avl_free(tree3);
    1.71 +    ucx_avl_free(tree4);
    1.72 +}
     2.1 --- a/test/avl_tests.h	Mon May 18 19:49:03 2015 +0200
     2.2 +++ b/test/avl_tests.h	Mon May 18 19:52:03 2015 +0200
     2.3 @@ -37,6 +37,7 @@
     2.4  #endif
     2.5  
     2.6  UCX_TEST(test_ucx_avl_put);
     2.7 +UCX_TEST(test_ucx_avl_remove);
     2.8  
     2.9  #ifdef	__cplusplus
    2.10  }
     3.1 --- a/test/main.c	Mon May 18 19:49:03 2015 +0200
     3.2 +++ b/test/main.c	Mon May 18 19:52:03 2015 +0200
     3.3 @@ -221,6 +221,7 @@
     3.4          
     3.5          /* AVL Tests */
     3.6          ucx_test_register(suite, test_ucx_avl_put);
     3.7 +        ucx_test_register(suite, test_ucx_avl_remove);
     3.8  
     3.9          ucx_test_run(suite, stdout);
    3.10          fflush(stdout);

mercurial