Tue, 28 Dec 2021 18:05:14 +0100
simplifies some linked list tests
test/test_list.c | file | annotate | diff | comparison | revisions |
1.1 --- a/test/test_list.c Tue Dec 28 17:49:52 2021 +0100 1.2 +++ b/test/test_list.c Tue Dec 28 18:05:14 2021 +0100 1.3 @@ -30,7 +30,7 @@ 1.4 #include "test_config.h" 1.5 #include "util_allocator.h" 1.6 1.7 -int cmp_int( 1.8 +int cmp_int_impl( 1.9 int const *l, 1.10 int const *r 1.11 ) { 1.12 @@ -38,6 +38,8 @@ 1.13 return left == right ? 0 : (left < right ? -1 : 1); 1.14 } 1.15 1.16 +#define cmp_int ((CxListComparator) cmp_int_impl) 1.17 + 1.18 struct node { 1.19 struct node *next; 1.20 struct node *prev; 1.21 @@ -132,22 +134,22 @@ 1.22 1.23 s = 2; 1.24 CU_ASSERT_EQUAL(cx_linked_list_find(list, loc_next, loc_data, 1.25 - false, (CxListComparator) cmp_int, &s), 0) 1.26 + false, cmp_int, &s), 0) 1.27 s = 4; 1.28 CU_ASSERT_EQUAL(cx_linked_list_find(list, loc_next, loc_data, 1.29 - false, (CxListComparator) cmp_int, &s), 1) 1.30 + false, cmp_int, &s), 1) 1.31 s = 6; 1.32 CU_ASSERT_EQUAL(cx_linked_list_find(list, loc_next, loc_data, 1.33 - false, (CxListComparator) cmp_int, &s), 2) 1.34 + false, cmp_int, &s), 2) 1.35 s = 8; 1.36 CU_ASSERT_EQUAL(cx_linked_list_find(list, loc_next, loc_data, 1.37 - false, (CxListComparator) cmp_int, &s), 3) 1.38 + false, cmp_int, &s), 3) 1.39 s = 10; 1.40 CU_ASSERT_EQUAL(cx_linked_list_find(list, loc_next, loc_data, 1.41 - false, (CxListComparator) cmp_int, &s), 4) 1.42 + false, cmp_int, &s), 4) 1.43 s = -2; 1.44 CU_ASSERT_EQUAL(cx_linked_list_find(list, loc_next, loc_data, 1.45 - false, (CxListComparator) cmp_int, &s), 4) 1.46 + false, cmp_int, &s), 4) 1.47 } 1.48 1.49 void test_linked_list_compare(void) { 1.50 @@ -160,19 +162,19 @@ 1.51 void *lc = create_test_data(4, c); 1.52 1.53 CU_ASSERT_TRUE(0 < cx_linked_list_compare(la, lb, loc_next, loc_data, 1.54 - false, (CxListComparator) cmp_int) 1.55 + false, cmp_int) 1.56 ) 1.57 CU_ASSERT_TRUE(0 > cx_linked_list_compare(lb, la, loc_next, loc_data, 1.58 - false, (CxListComparator) cmp_int) 1.59 + false, cmp_int) 1.60 ) 1.61 CU_ASSERT_TRUE(0 < cx_linked_list_compare(lc, la, loc_next, loc_data, 1.62 - false, (CxListComparator) cmp_int) 1.63 + false, cmp_int) 1.64 ) 1.65 CU_ASSERT_TRUE(0 > cx_linked_list_compare(la, lc, loc_next, loc_data, 1.66 - false, (CxListComparator) cmp_int) 1.67 + false, cmp_int) 1.68 ) 1.69 CU_ASSERT_TRUE(0 == cx_linked_list_compare(la, la, loc_next, loc_data, 1.70 - false, (CxListComparator) cmp_int) 1.71 + false, cmp_int) 1.72 ) 1.73 1.74 destroy_test_data(la); 1.75 @@ -512,7 +514,7 @@ 1.76 void *end = cx_linked_list_last(begin, loc_next); 1.77 1.78 cx_linked_list_sort(&begin, &end, loc_prev, loc_next, loc_data, 1.79 - false, (CxListComparator) cmp_int); 1.80 + false, cmp_int); 1.81 1.82 struct node *check = begin; 1.83 struct node *check_last = NULL; 1.84 @@ -549,7 +551,7 @@ 1.85 CU_ASSERT_PTR_EQUAL(end, list) 1.86 CU_ASSERT_PTR_EQUAL(begin, cx_linked_list_first(end, loc_prev)) 1.87 CU_ASSERT_TRUE(0 == cx_linked_list_compare(begin, expected, loc_next, loc_data, 1.88 - 0, (CxListComparator) cmp_int)) 1.89 + 0, cmp_int)) 1.90 1.91 destroy_test_data(begin); 1.92 destroy_test_data(expected); 1.93 @@ -558,7 +560,7 @@ 1.94 void test_hl_linked_list_create(void) { 1.95 cxTestingAllocatorReset(); 1.96 1.97 - CxList list = cxLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int, sizeof(int)); 1.98 + CxList list = cxLinkedListCreate(cxTestingAllocator, cmp_int, sizeof(int)); 1.99 1.100 CU_ASSERT_EQUAL(list->size, 0) 1.101 CU_ASSERT_EQUAL(list->capacity, (size_t) -1) 1.102 @@ -575,10 +577,10 @@ 1.103 1.104 int data[] = {2, 4, 5, 7, 10, 15}; 1.105 1.106 - CxList expected = cxLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int, sizeof(int)); 1.107 + CxList expected = cxLinkedListCreate(cxTestingAllocator, cmp_int, sizeof(int)); 1.108 for (int i = 0; i < 5; i++) cxListAdd(expected, &data[i]); 1.109 1.110 - CxList list = cxLinkedListFromArray(cxTestingAllocator, (CxListComparator) cmp_int, sizeof(int), 5, data); 1.111 + CxList list = cxLinkedListFromArray(cxTestingAllocator, cmp_int, sizeof(int), 5, data); 1.112 1.113 CU_ASSERT_TRUE(0 == cxListCompare(list, expected)) 1.114 1.115 @@ -591,7 +593,7 @@ 1.116 cxTestingAllocatorReset(); 1.117 1.118 int data; 1.119 - CxList list = cxLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int, sizeof(int)); 1.120 + CxList list = cxLinkedListCreate(cxTestingAllocator, cmp_int, sizeof(int)); 1.121 1.122 data = 5; 1.123 CU_ASSERT_EQUAL(cxListAdd(list, &data), 0) 1.124 @@ -603,11 +605,12 @@ 1.125 CU_ASSERT_EQUAL(list->size, 3) 1.126 CU_ASSERT_TRUE(list->capacity >= list->size) 1.127 1.128 - CU_ASSERT_EQUAL(*(int *) cxListAt(list, 0), 5) 1.129 - CU_ASSERT_EQUAL(*(int *) cxListAt(list, 1), 47) 1.130 - CU_ASSERT_EQUAL(*(int *) cxListAt(list, 2), 13) 1.131 + int exp[] = {5, 47, 13}; 1.132 + CxList expected = cxLinkedListFromArray(cxTestingAllocator, cmp_int, sizeof(int), 3, exp); 1.133 + CU_ASSERT_TRUE(0 == cxListCompare(list, expected)) 1.134 1.135 cxLinkedListDestroy(list); 1.136 + cxLinkedListDestroy(expected); 1.137 CU_ASSERT_TRUE(cxTestingAllocatorVerify()) 1.138 } 1.139 1.140 @@ -615,7 +618,7 @@ 1.141 cxTestingAllocatorReset(); 1.142 1.143 int data; 1.144 - CxList list = cxLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int, sizeof(int)); 1.145 + CxList list = cxLinkedListCreate(cxTestingAllocator, cmp_int, sizeof(int)); 1.146 1.147 data = 5; 1.148 CU_ASSERT_NOT_EQUAL(cxListInsert(list, 1, &data), 0) 1.149 @@ -634,29 +637,21 @@ 1.150 CU_ASSERT_EQUAL(list->size, 4) 1.151 CU_ASSERT_TRUE(list->capacity >= list->size) 1.152 1.153 - CU_ASSERT_EQUAL(*(int *) cxListAt(list, 0), 47) 1.154 - CU_ASSERT_EQUAL(*(int *) cxListAt(list, 1), 13) 1.155 - CU_ASSERT_EQUAL(*(int *) cxListAt(list, 2), 5) 1.156 - CU_ASSERT_EQUAL(*(int *) cxListAt(list, 3), 42) 1.157 + int exp[] = {47, 13, 5, 42}; 1.158 + CxList expected = cxLinkedListFromArray(cxTestingAllocator, cmp_int, sizeof(int), 4, exp); 1.159 + CU_ASSERT_TRUE(0 == cxListCompare(list, expected)) 1.160 1.161 cxLinkedListDestroy(list); 1.162 + cxLinkedListDestroy(expected); 1.163 CU_ASSERT_TRUE(cxTestingAllocatorVerify()) 1.164 } 1.165 1.166 void test_hl_linked_list_remove(void) { 1.167 cxTestingAllocatorReset(); 1.168 1.169 - int data; 1.170 - CxList list = cxLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int, sizeof(int)); 1.171 - 1.172 - data = 5; 1.173 - cxListAdd(list, &data); 1.174 - data = 47; 1.175 - cxListAdd(list, &data); 1.176 - data = 42; 1.177 - cxListAdd(list, &data); 1.178 - data = 13; 1.179 - cxListAdd(list, &data); 1.180 + int data[] = {5, 47, 42, 13}; 1.181 + CxList list = cxLinkedListFromArray(cxTestingAllocator, cmp_int, 1.182 + sizeof(int), 4, data); 1.183 1.184 CU_ASSERT_EQUAL(list->size, 4) 1.185 CU_ASSERT_TRUE(list->capacity >= list->size) 1.186 @@ -694,19 +689,13 @@ 1.187 void test_hl_linked_list_at(void) { 1.188 cxTestingAllocatorReset(); 1.189 1.190 - CxList list = cxLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int, sizeof(int)); 1.191 + int data[] = {5, 47, 13}; 1.192 + CxList list = cxLinkedListFromArray(cxTestingAllocator, cmp_int, 1.193 + sizeof(int), 3, data); 1.194 1.195 - int data; 1.196 - data = 5; 1.197 - cxListAdd(list, &data); 1.198 - data = 47; 1.199 - cxListAdd(list, &data); 1.200 - data = 13; 1.201 - cxListAdd(list, &data); 1.202 - 1.203 - CU_ASSERT_EQUAL(*(int*)cxListAt(list, 0), 5) 1.204 - CU_ASSERT_EQUAL(*(int*)cxListAt(list, 1), 47) 1.205 - CU_ASSERT_EQUAL(*(int*)cxListAt(list, 2), 13) 1.206 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 0), 5) 1.207 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 1), 47) 1.208 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 2), 13) 1.209 CU_ASSERT_PTR_NULL(cxListAt(list, 3)) 1.210 1.211 cxLinkedListDestroy(list); 1.212 @@ -716,19 +705,14 @@ 1.213 void test_hl_linked_list_find(void) { 1.214 cxTestingAllocatorReset(); 1.215 1.216 - int data, criteria; 1.217 - CxList list = cxLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int, sizeof(int)); 1.218 - 1.219 - data = 5; 1.220 - cxListAdd(list, &data); 1.221 - data = 47; 1.222 - cxListAdd(list, &data); 1.223 - data = 13; 1.224 - cxListAdd(list, &data); 1.225 - 1.226 + int data[] = {5, 47, 13}; 1.227 + CxList list = cxLinkedListFromArray(cxTestingAllocator, cmp_int, 1.228 + sizeof(int), 3, data); 1.229 CU_ASSERT_EQUAL(list->size, 3) 1.230 CU_ASSERT_TRUE(list->capacity >= list->size) 1.231 1.232 + int criteria; 1.233 + 1.234 criteria = 5; 1.235 CU_ASSERT_EQUAL(cxListFind(list, &criteria), 0) 1.236 criteria = 47; 1.237 @@ -764,26 +748,21 @@ 1.238 1.239 cxTestingAllocatorReset(); 1.240 1.241 - CxList list = cxLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int, sizeof(int)); 1.242 - 1.243 - for (int i = 0; i < 100; i++) { 1.244 - cxListAdd(list, &scrambled[i]); 1.245 - } 1.246 + CxList list = cxLinkedListFromArray(cxTestingAllocator, cmp_int, sizeof(int), 100, scrambled); 1.247 + CxList exp = cxLinkedListFromArray(cxTestingAllocator, cmp_int, sizeof(int), 100, expected); 1.248 1.249 cxListSort(list); 1.250 - 1.251 - for (int i = 0; i < 100; i++) { 1.252 - CU_ASSERT_EQUAL(*(int *) cxListAt(list, i), expected[i]) 1.253 - } 1.254 + CU_ASSERT_TRUE(0 == cxListCompare(list, exp)) 1.255 1.256 cxLinkedListDestroy(list); 1.257 + cxLinkedListDestroy(exp); 1.258 CU_ASSERT_TRUE(cxTestingAllocatorVerify()) 1.259 } 1.260 1.261 void test_hl_ptr_linked_list_create(void) { 1.262 cxTestingAllocatorReset(); 1.263 1.264 - CxList list = cxPointerLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int); 1.265 + CxList list = cxPointerLinkedListCreate(cxTestingAllocator, cmp_int); 1.266 1.267 CU_ASSERT_EQUAL(list->size, 0) 1.268 CU_ASSERT_EQUAL(list->capacity, (size_t) -1) 1.269 @@ -798,7 +777,7 @@ 1.270 void test_hl_ptr_linked_list_add(void) { 1.271 cxTestingAllocatorReset(); 1.272 1.273 - CxList list = cxPointerLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int); 1.274 + CxList list = cxPointerLinkedListCreate(cxTestingAllocator, cmp_int); 1.275 1.276 int a = 5, b = 47, c = 13; 1.277 1.278 @@ -828,7 +807,7 @@ 1.279 void test_hl_ptr_linked_list_insert(void) { 1.280 cxTestingAllocatorReset(); 1.281 1.282 - CxList list = cxPointerLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int); 1.283 + CxList list = cxPointerLinkedListCreate(cxTestingAllocator, cmp_int); 1.284 1.285 int a = 5, b = 47, c = 13, d = 42; 1.286 1.287 @@ -858,7 +837,7 @@ 1.288 cxTestingAllocatorReset(); 1.289 1.290 int a = 5, b = 47, c = 42, d = 13; 1.291 - CxList list = cxPointerLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int); 1.292 + CxList list = cxPointerLinkedListCreate(cxTestingAllocator, cmp_int); 1.293 1.294 cxListAdd(list, &a); 1.295 cxListAdd(list, &b); 1.296 @@ -901,7 +880,7 @@ 1.297 void test_hl_ptr_linked_list_at(void) { 1.298 cxTestingAllocatorReset(); 1.299 1.300 - CxList list = cxPointerLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int); 1.301 + CxList list = cxPointerLinkedListCreate(cxTestingAllocator, cmp_int); 1.302 1.303 int a = 5, b = 47, c = 13; 1.304 cxListAdd(list, &a); 1.305 @@ -921,7 +900,7 @@ 1.306 cxTestingAllocatorReset(); 1.307 1.308 int a = 5, b = 47, c = 13, criteria; 1.309 - CxList list = cxPointerLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int); 1.310 + CxList list = cxPointerLinkedListCreate(cxTestingAllocator, cmp_int); 1.311 1.312 cxListAdd(list, &a); 1.313 cxListAdd(list, &b); 1.314 @@ -967,7 +946,7 @@ 1.315 1.316 cxTestingAllocatorReset(); 1.317 1.318 - CxList list = cxPointerLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int); 1.319 + CxList list = cxPointerLinkedListCreate(cxTestingAllocator, cmp_int); 1.320 1.321 for (int i = 0; i < 100; i++) { 1.322 cxListAdd(list, &scrambled[i]);