test/dlist_tests.c

Wed, 27 Feb 2013 09:41:17 +0100

author
Mike Becker <universe@uap-core.de>
date
Wed, 27 Feb 2013 09:41:17 +0100
changeset 88
18823857ce79
parent 71
303dabadff1c
child 89
47f7fdbddb62
permissions
-rw-r--r--

variadic test subroutines

olaf@9 1 /*
universe@27 2 * tests of dlist implementation
olaf@9 3 */
olaf@9 4
universe@27 5 #include "dlist_tests.h"
olaf@9 6
universe@33 7 UCX_TEST_IMPLEMENT(test_ucx_dlist_append) {
universe@71 8 UcxDlist *list = ucx_dlist_append(NULL, (void*)"Hello");
universe@33 9 UCX_TEST_BEGIN
universe@27 10
universe@69 11 UCX_TEST_ASSERT(strncmp((const char*)list->data, "Hello", 5) == 0,
universe@69 12 "failed");
universe@27 13
universe@71 14 list = ucx_dlist_append(list, (void*)" World!");
universe@27 15
universe@69 16 UCX_TEST_ASSERT(strncmp((const char*)list->next->data, " World!", 7) == 0,
universe@69 17 "failed");
universe@40 18 UCX_TEST_ASSERT(list->next->next == NULL, "failed");
universe@33 19 UCX_TEST_END
universe@27 20
universe@27 21 ucx_dlist_free(list);
universe@24 22 }
universe@24 23
universe@33 24 UCX_TEST_IMPLEMENT(test_ucx_dlist_prepend) {
universe@71 25 UcxDlist *list = ucx_dlist_prepend(NULL, (void*)" World!");
universe@33 26 UCX_TEST_BEGIN
universe@33 27
universe@71 28 list = ucx_dlist_prepend(list, (void*)"Hello");
universe@27 29
universe@69 30 UCX_TEST_ASSERT(strncmp((const char*)list->data, "Hello", 5) == 0,
universe@69 31 "failed");
universe@69 32 UCX_TEST_ASSERT(strncmp((const char*)list->next->data, " World!", 7) == 0,
universe@69 33 "failed");
universe@40 34 UCX_TEST_ASSERT(list->next->next == NULL, "failed");
universe@27 35
universe@33 36 UCX_TEST_END
universe@27 37 ucx_dlist_free(list);
universe@18 38 }
universe@18 39
universe@33 40 UCX_TEST_IMPLEMENT(test_ucx_dlist_equals) {
universe@71 41 UcxDlist *list = ucx_dlist_append(NULL, (void*)"Hello");
universe@71 42 list = ucx_dlist_append(list, (void*)" World!");
universe@71 43 UcxDlist *list2 = ucx_dlist_prepend(NULL, (void*)" World!");
universe@71 44 list2 = ucx_dlist_prepend(list2, (void*)"Hello");
universe@71 45 UcxDlist *list3 = ucx_dlist_prepend(NULL, (void*)" Welt!");
universe@71 46 list3 = ucx_dlist_prepend(list3, (void*)"Hallo");
universe@33 47 UCX_TEST_BEGIN
universe@27 48
universe@40 49 UCX_TEST_ASSERT(ucx_dlist_equals(list, list2, cmp_string, NULL), "failed");
universe@40 50 UCX_TEST_ASSERT(!ucx_dlist_equals(list, list3, cmp_string, NULL), "failed");
universe@27 51
universe@33 52 UCX_TEST_END
universe@27 53 ucx_dlist_free(list3);
universe@27 54 ucx_dlist_free(list2);
universe@27 55 ucx_dlist_free(list);
universe@24 56 }
universe@24 57
universe@33 58 UCX_TEST_IMPLEMENT(test_ucx_dlist_concat) {
universe@71 59 UcxDlist *list = ucx_dlist_append(NULL, (void*)"Hello");
universe@71 60 UcxDlist *list2 = ucx_dlist_prepend(NULL, (void*)" World!");
universe@33 61 UCX_TEST_BEGIN
universe@27 62
universe@27 63 list = ucx_dlist_concat(list, list2);
universe@27 64
universe@69 65 UCX_TEST_ASSERT(strncmp((const char*)list->data, "Hello", 5) == 0,
universe@69 66 "failed");
universe@69 67 UCX_TEST_ASSERT(strncmp((const char*)list->next->data, " World!", 7) == 0,
universe@69 68 "failed");
universe@40 69 UCX_TEST_ASSERT(list->next->next == NULL, "failed");
universe@27 70
universe@33 71 UCX_TEST_END
universe@27 72 ucx_dlist_free(list);
olaf@9 73 }
olaf@9 74
universe@33 75 UCX_TEST_IMPLEMENT(test_ucx_dlist_size) {
universe@71 76 UcxDlist *list = ucx_dlist_append(NULL, (void*)"This ");
universe@33 77 UCX_TEST_BEGIN
universe@71 78 list = ucx_dlist_append(list, (void*)"list ");
universe@71 79 list = ucx_dlist_append(list, (void*)"has ");
universe@71 80 list = ucx_dlist_append(list, (void*)"size ");
universe@71 81 list = ucx_dlist_append(list, (void*)"5!");
universe@27 82
universe@27 83 UCX_TEST_ASSERT(ucx_dlist_size(list) == 5, "failed");
universe@27 84
universe@33 85 UCX_TEST_END
universe@27 86 ucx_dlist_free(list);
olaf@9 87 }
olaf@11 88
universe@33 89 UCX_TEST_IMPLEMENT(test_ucx_dlist_first) {
universe@71 90 UcxDlist *list = ucx_dlist_append(NULL, (void*)"Find ");
universe@33 91 UCX_TEST_BEGIN
universe@71 92 list = ucx_dlist_append(list, (void*)"the ");
universe@71 93 list = ucx_dlist_append(list, (void*)"first!");
universe@27 94
universe@69 95 const char* first = (const char*) (ucx_dlist_first(list)->data);
universe@27 96
universe@27 97 UCX_TEST_ASSERT(strncmp(first, "Find ", 5) == 0, "failed");
universe@27 98
universe@33 99 UCX_TEST_END
universe@27 100 ucx_dlist_free(list);
universe@27 101 }
universe@27 102
universe@33 103 UCX_TEST_IMPLEMENT(test_ucx_dlist_last) {
universe@71 104 UcxDlist *list = ucx_dlist_append(NULL, (void*)"Find ");
universe@33 105 UCX_TEST_BEGIN
universe@71 106 list = ucx_dlist_append(list, (void*)"the ");
universe@71 107 list = ucx_dlist_append(list, (void*)"last!");
universe@27 108
universe@69 109 const char* last = (const char*) (ucx_dlist_last(list)->data);
universe@27 110
universe@27 111 UCX_TEST_ASSERT(strncmp(last, "last!", 5) == 0, "failed");
universe@27 112
universe@33 113 UCX_TEST_END
universe@27 114 ucx_dlist_free(list);
universe@27 115 }
universe@27 116
universe@33 117 UCX_TEST_IMPLEMENT(test_ucx_dlist_get) {
universe@71 118 UcxDlist *list = ucx_dlist_append(NULL, (void*)"Find ");
universe@33 119 UCX_TEST_BEGIN
universe@71 120 list = ucx_dlist_append(list, (void*)"the ");
universe@71 121 list = ucx_dlist_append(list, (void*)"mid!");
universe@27 122
universe@69 123 const char* mid = (const char*) (ucx_dlist_get(list, 1)->data);
universe@27 124
universe@27 125 UCX_TEST_ASSERT(strncmp(mid, "the ", 4) == 0, "failed");
universe@27 126
universe@33 127 UCX_TEST_END
universe@27 128 ucx_dlist_free(list);
universe@27 129 }
universe@27 130
universe@33 131 UCX_TEST_IMPLEMENT(test_ucx_dlist_remove) {
universe@71 132 UcxDlist *list = ucx_dlist_append(NULL, (void*)"Hello");
universe@33 133 UCX_TEST_BEGIN
universe@71 134 list = ucx_dlist_append(list, (void*)" fucking");
universe@71 135 list = ucx_dlist_append(list, (void*)" World!");
universe@27 136
universe@27 137 list = ucx_dlist_remove(list, ucx_dlist_get(list, 1));
universe@27 138
universe@69 139 UCX_TEST_ASSERT(strncmp((const char*)list->data, "Hello", 5) == 0,
universe@69 140 "failed");
universe@69 141 UCX_TEST_ASSERT(strncmp((const char*)list->next->data, " World!", 7) == 0,
universe@69 142 "failed");
universe@40 143 UCX_TEST_ASSERT(list->next->next == NULL, "failed");
universe@27 144
universe@33 145 UCX_TEST_END
universe@27 146 ucx_dlist_free(list);
universe@27 147 }
universe@27 148
universe@33 149 UCX_TEST_IMPLEMENT(test_ucx_dlist_clone) {
universe@27 150
universe@27 151 char *hello = (char*)malloc(6);
universe@27 152 char *world = (char*)malloc(8);
universe@27 153
universe@27 154 memcpy(hello, "Hello", 6);
universe@27 155 memcpy(world, " World!", 8);
universe@27 156
universe@27 157 UcxDlist *list = ucx_dlist_append(NULL, hello);
universe@27 158 list = ucx_dlist_append(list, world);
universe@27 159
universe@27 160 UcxDlist *copy = ucx_dlist_clone(list, copy_string, NULL);
universe@33 161 UCX_TEST_BEGIN
universe@27 162
universe@40 163 UCX_TEST_ASSERT(ucx_dlist_equals(list, copy, cmp_string, NULL), "failed");
universe@40 164 UCX_TEST_ASSERT(hello != copy->data, "first element is no copy");
universe@40 165 UCX_TEST_ASSERT(world != copy->next->data, "second element is no copy");
universe@27 166
universe@33 167 UCX_TEST_END
universe@27 168 free(copy->next->data);
universe@27 169 free(copy->data);
universe@27 170
universe@27 171 free(world);
universe@27 172 free(hello);
olaf@30 173 ucx_dlist_free(list);
olaf@30 174 ucx_dlist_free(copy);
universe@27 175 }
universe@35 176
universe@36 177 UCX_TEST_IMPLEMENT(test_ucx_dlist_sort) {
universe@71 178 UcxDlist *list = ucx_dlist_append(NULL, (void*)"this");
universe@71 179 list = ucx_dlist_append(list, (void*)"is");
universe@71 180 list = ucx_dlist_append(list, (void*)"a");
universe@71 181 list = ucx_dlist_append(list, (void*)"test");
universe@71 182 list = ucx_dlist_append(list, (void*)"for");
universe@71 183 list = ucx_dlist_append(list, (void*)"partial");
universe@71 184 list = ucx_dlist_append(list, (void*)"correctness");
universe@35 185
universe@71 186 UcxDlist *expected = ucx_dlist_append(NULL, (void*)"a");
universe@71 187 expected = ucx_dlist_append(expected, (void*)"correctness");
universe@71 188 expected = ucx_dlist_append(expected, (void*)"for");
universe@71 189 expected = ucx_dlist_append(expected, (void*)"is");
universe@71 190 expected = ucx_dlist_append(expected, (void*)"partial");
universe@71 191 expected = ucx_dlist_append(expected, (void*)"test");
universe@71 192 expected = ucx_dlist_append(expected, (void*)"this");
universe@35 193
universe@36 194 list = ucx_dlist_sort(list, cmp_string, NULL);
universe@35 195
universe@35 196 UCX_TEST_BEGIN
universe@35 197 UCX_TEST_ASSERT(
universe@35 198 ucx_dlist_equals(list, expected, cmp_string, NULL), "failed");
universe@35 199 UcxDlist *l = list;
universe@35 200 UCX_TEST_ASSERT(l->prev == NULL, "prev field of first entry is not null");
universe@35 201 while (l->next != NULL) {
universe@35 202 UCX_TEST_ASSERT(l->next->prev == l, "prev pointer corrupted");
universe@35 203 l = l->next;
universe@35 204 }
universe@35 205 UCX_TEST_END
universe@35 206
universe@35 207 ucx_dlist_free(expected);
universe@35 208 ucx_dlist_free(list);
universe@35 209 }

mercurial