test/dlist_tests.c

changeset 27
22644e2572bc
parent 24
e04822101291
child 30
23bb65cbf7a4
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/test/dlist_tests.c	Sat Feb 18 18:36:30 2012 +0100
     1.3 @@ -0,0 +1,167 @@
     1.4 +/*
     1.5 + * tests of dlist implementation
     1.6 + */
     1.7 +
     1.8 +#include "dlist_tests.h"
     1.9 +
    1.10 +UCX_TEST_BEGIN(test_ucx_dlist_append) {
    1.11 +    UcxDlist *list = ucx_dlist_append(NULL, "Hello");
    1.12 +    
    1.13 +    UCX_TEST_ASSERT(strncmp(list->data, "Hello", 5) == 0, "failed")
    1.14 +    
    1.15 +    list = ucx_dlist_append(list, " World!");
    1.16 +    
    1.17 +    UCX_TEST_ASSERT(strncmp(list->next->data, " World!", 7) == 0, "failed")
    1.18 +    UCX_TEST_ASSERT(list->next->next == NULL, "failed")
    1.19 +    
    1.20 +    ucx_dlist_free(list);
    1.21 +    
    1.22 +    UCX_TEST_END
    1.23 +}
    1.24 +
    1.25 +UCX_TEST_BEGIN(test_ucx_dlist_prepend) {
    1.26 +    UcxDlist *list = ucx_dlist_prepend(NULL, " World!");
    1.27 +    list = ucx_dlist_prepend(list, "Hello");
    1.28 +    
    1.29 +    UCX_TEST_ASSERT(strncmp(list->data, "Hello", 5) == 0, "failed")
    1.30 +    UCX_TEST_ASSERT(strncmp(list->next->data, " World!", 7) == 0, "failed")
    1.31 +    UCX_TEST_ASSERT(list->next->next == NULL, "failed")
    1.32 +    
    1.33 +    ucx_dlist_free(list);
    1.34 +    
    1.35 +    UCX_TEST_END
    1.36 +}
    1.37 +
    1.38 +UCX_TEST_BEGIN(test_ucx_dlist_equals) {
    1.39 +    UcxDlist *list = ucx_dlist_append(NULL, "Hello");
    1.40 +    list = ucx_dlist_append(list, " World!");
    1.41 +    UcxDlist *list2 = ucx_dlist_prepend(NULL, " World!");
    1.42 +    list2 = ucx_dlist_prepend(list2, "Hello");
    1.43 +    UcxDlist *list3 = ucx_dlist_prepend(NULL, " Welt!");
    1.44 +    list3 = ucx_dlist_prepend(list3, "Hallo");
    1.45 +    
    1.46 +    UCX_TEST_ASSERT(ucx_dlist_equals(list, list2, cmp_string, NULL), "failed")
    1.47 +    UCX_TEST_ASSERT(!ucx_dlist_equals(list, list3, cmp_string, NULL), "failed")
    1.48 +    
    1.49 +    ucx_dlist_free(list3);
    1.50 +    ucx_dlist_free(list2);
    1.51 +    ucx_dlist_free(list);
    1.52 +    
    1.53 +    UCX_TEST_END
    1.54 +}
    1.55 +
    1.56 +UCX_TEST_BEGIN(test_ucx_dlist_concat) {
    1.57 +    UcxDlist *list = ucx_dlist_append(NULL, "Hello");
    1.58 +    UcxDlist *list2 = ucx_dlist_prepend(NULL, " World!");
    1.59 +    
    1.60 +    list = ucx_dlist_concat(list, list2);
    1.61 +    
    1.62 +    UCX_TEST_ASSERT(strncmp(list->data, "Hello", 5) == 0, "failed")
    1.63 +    UCX_TEST_ASSERT(strncmp(list->next->data, " World!", 7) == 0, "failed")
    1.64 +    UCX_TEST_ASSERT(list->next->next == NULL, "failed")
    1.65 +    
    1.66 +    ucx_dlist_free(list2);
    1.67 +    ucx_dlist_free(list);
    1.68 +    
    1.69 +    UCX_TEST_END
    1.70 +}
    1.71 +
    1.72 +UCX_TEST_BEGIN(test_ucx_dlist_size) {
    1.73 +    UcxDlist *list = ucx_dlist_append(NULL, "This ");
    1.74 +    list = ucx_dlist_append(list, "list ");
    1.75 +    list = ucx_dlist_append(list, "has ");
    1.76 +    list = ucx_dlist_append(list, "size ");
    1.77 +    list = ucx_dlist_append(list, "5!");
    1.78 +    
    1.79 +    UCX_TEST_ASSERT(ucx_dlist_size(list) == 5, "failed");
    1.80 +    
    1.81 +    ucx_dlist_free(list);
    1.82 +    
    1.83 +    UCX_TEST_END
    1.84 +}
    1.85 +
    1.86 +UCX_TEST_BEGIN(test_ucx_dlist_first) {
    1.87 +    UcxDlist *list = ucx_dlist_append(NULL, "Find ");
    1.88 +    list = ucx_dlist_append(list, "the ");
    1.89 +    list = ucx_dlist_append(list, "first!");
    1.90 +    
    1.91 +    char* first = (char*) (ucx_dlist_first(list)->data);
    1.92 +    
    1.93 +    UCX_TEST_ASSERT(strncmp(first, "Find ", 5) == 0, "failed");
    1.94 +    
    1.95 +    ucx_dlist_free(list);
    1.96 +    
    1.97 +    UCX_TEST_END
    1.98 +}
    1.99 +
   1.100 +UCX_TEST_BEGIN(test_ucx_dlist_last) {
   1.101 +    UcxDlist *list = ucx_dlist_append(NULL, "Find ");
   1.102 +    list = ucx_dlist_append(list, "the ");
   1.103 +    list = ucx_dlist_append(list, "last!");
   1.104 +    
   1.105 +    char* last = (char*) (ucx_dlist_last(list)->data);
   1.106 +    
   1.107 +    UCX_TEST_ASSERT(strncmp(last, "last!", 5) == 0, "failed");
   1.108 +    
   1.109 +    ucx_dlist_free(list);
   1.110 +    
   1.111 +    UCX_TEST_END
   1.112 +}
   1.113 +
   1.114 +UCX_TEST_BEGIN(test_ucx_dlist_get) {
   1.115 +    UcxDlist *list = ucx_dlist_append(NULL, "Find ");
   1.116 +    list = ucx_dlist_append(list, "the ");
   1.117 +    list = ucx_dlist_append(list, "mid!");
   1.118 +    
   1.119 +    char* mid = (char*) (ucx_dlist_get(list, 1)->data);
   1.120 +    
   1.121 +    UCX_TEST_ASSERT(strncmp(mid, "the ", 4) == 0, "failed");
   1.122 +    
   1.123 +    ucx_dlist_free(list);
   1.124 +    
   1.125 +    UCX_TEST_END
   1.126 +}
   1.127 +
   1.128 +UCX_TEST_BEGIN(test_ucx_dlist_remove) {
   1.129 +    UcxDlist *list = ucx_dlist_append(NULL, "Hello");
   1.130 +    list = ucx_dlist_append(list, " fucking");
   1.131 +    list = ucx_dlist_append(list, " World!");
   1.132 +    
   1.133 +    list = ucx_dlist_remove(list, ucx_dlist_get(list, 1));
   1.134 +    
   1.135 +    UCX_TEST_ASSERT(strncmp(list->data, "Hello", 5) == 0, "failed")
   1.136 +    UCX_TEST_ASSERT(strncmp(list->next->data, " World!", 7) == 0, "failed")
   1.137 +    UCX_TEST_ASSERT(list->next->next == NULL, "failed")
   1.138 +    
   1.139 +    ucx_dlist_free(list);
   1.140 +    
   1.141 +    UCX_TEST_END
   1.142 +}
   1.143 +
   1.144 +UCX_TEST_BEGIN(test_ucx_dlist_clone) {
   1.145 +   
   1.146 +    char *hello = (char*)malloc(6);
   1.147 +    char *world = (char*)malloc(8);
   1.148 +    
   1.149 +    memcpy(hello, "Hello", 6);
   1.150 +    memcpy(world, " World!", 8);
   1.151 +    
   1.152 +    UcxDlist *list = ucx_dlist_append(NULL, hello);
   1.153 +    list = ucx_dlist_append(list, world);
   1.154 +    
   1.155 +    UcxDlist *copy = ucx_dlist_clone(list, copy_string, NULL);
   1.156 +
   1.157 +    UCX_TEST_ASSERT(ucx_dlist_equals(list, copy, cmp_string, NULL), "failed")
   1.158 +    UCX_TEST_ASSERT(hello != copy->data, "first element is no copy")
   1.159 +    UCX_TEST_ASSERT(world != copy->next->data, "second element is no copy")
   1.160 +
   1.161 +    free(copy->next->data);
   1.162 +    free(copy->data);
   1.163 +
   1.164 +    free(world);
   1.165 +    free(hello);
   1.166 +    free(list);
   1.167 +    free(copy);
   1.168 +    
   1.169 +    UCX_TEST_END
   1.170 +}

mercurial