1.1 --- a/test/test_list.c Tue Oct 05 12:25:23 2021 +0200 1.2 +++ b/test/test_list.c Tue Oct 05 13:03:45 2021 +0200 1.3 @@ -158,19 +158,7 @@ 1.4 CU_ASSERT_EQUAL(list->itemsize, sizeof(int)) 1.5 CU_ASSERT_PTR_EQUAL(list->cmpfunc, cmp_int) 1.6 1.7 - // assume this structure for a linked list 1.8 - struct ll_check { 1.9 - cx_list_s base; 1.10 - void *begin; 1.11 - void *end; 1.12 - }; 1.13 - 1.14 - struct ll_check *actual = (struct ll_check *) list; 1.15 - CU_ASSERT_PTR_NULL(actual->begin) 1.16 - CU_ASSERT_PTR_NULL(actual->end) 1.17 - 1.18 cxLinkedListDestroy(list); 1.19 - 1.20 CU_ASSERT_TRUE(cxTestingAllocatorVerify()) 1.21 } 1.22 1.23 @@ -190,9 +178,9 @@ 1.24 CU_ASSERT_EQUAL(list->size, 3) 1.25 CU_ASSERT_TRUE(list->capacity >= list->size) 1.26 1.27 - CU_ASSERT_EQUAL(*(int*)cxListAt(list, 0), 5) 1.28 - CU_ASSERT_EQUAL(*(int*)cxListAt(list, 1), 47) 1.29 - CU_ASSERT_EQUAL(*(int*)cxListAt(list, 2), 13) 1.30 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 0), 5) 1.31 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 1), 47) 1.32 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 2), 13) 1.33 1.34 cxLinkedListDestroy(list); 1.35 CU_ASSERT_TRUE(cxTestingAllocatorVerify()) 1.36 @@ -208,11 +196,11 @@ 1.37 1.38 data = 5; 1.39 CU_ASSERT_EQUAL(cxListAdd(list, &data), 0) 1.40 - CU_ASSERT_EQUAL(*(int*)cxListLast(list), 5) 1.41 + CU_ASSERT_EQUAL(*(int *) cxListLast(list), 5) 1.42 1.43 data = 47; 1.44 CU_ASSERT_EQUAL(cxListAdd(list, &data), 0) 1.45 - CU_ASSERT_EQUAL(*(int*)cxListLast(list), 47) 1.46 + CU_ASSERT_EQUAL(*(int *) cxListLast(list), 47) 1.47 1.48 cxLinkedListDestroy(list); 1.49 CU_ASSERT_TRUE(cxTestingAllocatorVerify()) 1.50 @@ -241,10 +229,10 @@ 1.51 CU_ASSERT_EQUAL(list->size, 4) 1.52 CU_ASSERT_TRUE(list->capacity >= list->size) 1.53 1.54 - CU_ASSERT_EQUAL(*(int*)cxListAt(list, 0), 47) 1.55 - CU_ASSERT_EQUAL(*(int*)cxListAt(list, 1), 13) 1.56 - CU_ASSERT_EQUAL(*(int*)cxListAt(list, 2), 5) 1.57 - CU_ASSERT_EQUAL(*(int*)cxListAt(list, 3), 42) 1.58 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 0), 47) 1.59 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 1), 13) 1.60 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 2), 5) 1.61 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 3), 42) 1.62 1.63 cxLinkedListDestroy(list); 1.64 CU_ASSERT_TRUE(cxTestingAllocatorVerify()) 1.65 @@ -273,20 +261,20 @@ 1.66 CU_ASSERT_EQUAL(cxListRemove(list, 2), 0) 1.67 CU_ASSERT_EQUAL(list->size, 3) 1.68 CU_ASSERT_TRUE(list->capacity >= list->size) 1.69 - CU_ASSERT_EQUAL(*(int*)cxListAt(list, 0), 5) 1.70 - CU_ASSERT_EQUAL(*(int*)cxListAt(list, 1), 47) 1.71 - CU_ASSERT_EQUAL(*(int*)cxListAt(list, 2), 13) 1.72 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 0), 5) 1.73 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 1), 47) 1.74 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 2), 13) 1.75 1.76 CU_ASSERT_EQUAL(cxListRemove(list, 0), 0) 1.77 CU_ASSERT_EQUAL(list->size, 2) 1.78 CU_ASSERT_TRUE(list->capacity >= list->size) 1.79 - CU_ASSERT_EQUAL(*(int*)cxListAt(list, 0), 47) 1.80 - CU_ASSERT_EQUAL(*(int*)cxListAt(list, 1), 13) 1.81 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 0), 47) 1.82 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 1), 13) 1.83 1.84 CU_ASSERT_EQUAL(cxListRemove(list, 1), 0) 1.85 CU_ASSERT_EQUAL(list->size, 1) 1.86 CU_ASSERT_TRUE(list->capacity >= list->size) 1.87 - CU_ASSERT_EQUAL(*(int*)cxListAt(list, 0), 47) 1.88 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 0), 47) 1.89 1.90 CU_ASSERT_EQUAL(cxListRemove(list, 0), 0) 1.91 CU_ASSERT_EQUAL(list->size, 0) 1.92 @@ -329,6 +317,171 @@ 1.93 CU_ASSERT_TRUE(cxTestingAllocatorVerify()) 1.94 } 1.95 1.96 +void test_hl_ptr_linked_list_create(void) { 1.97 + cxTestingAllocatorReset(); 1.98 + 1.99 + CxList list = cxPointerLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int); 1.100 + 1.101 + CU_ASSERT_EQUAL(list->size, 0) 1.102 + CU_ASSERT_EQUAL(list->capacity, (size_t) -1) 1.103 + CU_ASSERT_PTR_EQUAL(list->allocator, cxTestingAllocator) 1.104 + CU_ASSERT_EQUAL(list->itemsize, sizeof(void *)) 1.105 + CU_ASSERT_PTR_EQUAL(list->cmpfunc, cmp_int) 1.106 + 1.107 + cxLinkedListDestroy(list); 1.108 + CU_ASSERT_TRUE(cxTestingAllocatorVerify()) 1.109 +} 1.110 + 1.111 +void test_hl_ptr_linked_list_add(void) { 1.112 + cxTestingAllocatorReset(); 1.113 + 1.114 + CxList list = cxPointerLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int); 1.115 + 1.116 + int a = 5, b = 47, c = 13; 1.117 + 1.118 + CU_ASSERT_EQUAL(cxListAdd(list, &a), 0) 1.119 + CU_ASSERT_EQUAL(cxListAdd(list, &b), 0) 1.120 + CU_ASSERT_EQUAL(cxListAdd(list, &c), 0) 1.121 + 1.122 + CU_ASSERT_EQUAL(list->size, 3) 1.123 + CU_ASSERT_TRUE(list->capacity >= list->size) 1.124 + 1.125 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 0), 5) 1.126 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 1), 47) 1.127 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 2), 13) 1.128 + 1.129 + a = 9; 1.130 + b = 10; 1.131 + c = 11; 1.132 + 1.133 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 0), 9) 1.134 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 1), 10) 1.135 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 2), 11) 1.136 + 1.137 + cxLinkedListDestroy(list); 1.138 + CU_ASSERT_TRUE(cxTestingAllocatorVerify()) 1.139 +} 1.140 + 1.141 +void test_hl_ptr_linked_list_last(void) { 1.142 + cxTestingAllocatorReset(); 1.143 + 1.144 + CxList list = cxPointerLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int); 1.145 + CU_ASSERT_PTR_NULL(cxListLast(list)) 1.146 + 1.147 + int a = 5, b = 47; 1.148 + 1.149 + CU_ASSERT_EQUAL(cxListAdd(list, &a), 0) 1.150 + CU_ASSERT_EQUAL(*(int *) cxListLast(list), 5) 1.151 + CU_ASSERT_EQUAL(cxListAdd(list, &b), 0) 1.152 + CU_ASSERT_EQUAL(*(int *) cxListLast(list), 47) 1.153 + 1.154 + cxLinkedListDestroy(list); 1.155 + CU_ASSERT_TRUE(cxTestingAllocatorVerify()) 1.156 +} 1.157 + 1.158 +void test_hl_ptr_linked_list_insert(void) { 1.159 + cxTestingAllocatorReset(); 1.160 + 1.161 + CxList list = cxPointerLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int); 1.162 + 1.163 + int a = 5, b = 47, c = 13, d = 42; 1.164 + 1.165 + CU_ASSERT_NOT_EQUAL(cxListInsert(list, 1, &a), 0) 1.166 + CU_ASSERT_EQUAL(list->size, 0) 1.167 + CU_ASSERT_EQUAL(cxListInsert(list, 0, &a), 0) 1.168 + CU_ASSERT_EQUAL(list->size, 1) 1.169 + CU_ASSERT_EQUAL(cxListInsert(list, 0, &b), 0) 1.170 + CU_ASSERT_EQUAL(list->size, 2) 1.171 + CU_ASSERT_EQUAL(cxListInsert(list, 1, &c), 0) 1.172 + CU_ASSERT_EQUAL(list->size, 3) 1.173 + CU_ASSERT_EQUAL(cxListInsert(list, 3, &d), 0) 1.174 + 1.175 + CU_ASSERT_EQUAL(list->size, 4) 1.176 + CU_ASSERT_TRUE(list->capacity >= list->size) 1.177 + 1.178 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 0), 47) 1.179 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 1), 13) 1.180 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 2), 5) 1.181 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 3), 42) 1.182 + 1.183 + cxLinkedListDestroy(list); 1.184 + CU_ASSERT_TRUE(cxTestingAllocatorVerify()) 1.185 +} 1.186 + 1.187 +void test_hl_ptr_linked_list_remove(void) { 1.188 + cxTestingAllocatorReset(); 1.189 + 1.190 + int a = 5, b = 47, c = 42, d = 13; 1.191 + CxList list = cxPointerLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int); 1.192 + 1.193 + cxListAdd(list, &a); 1.194 + cxListAdd(list, &b); 1.195 + cxListAdd(list, &c); 1.196 + cxListAdd(list, &d); 1.197 + 1.198 + CU_ASSERT_EQUAL(list->size, 4) 1.199 + CU_ASSERT_TRUE(list->capacity >= list->size) 1.200 + 1.201 + CU_ASSERT_NOT_EQUAL(cxListRemove(list, 4), 0) 1.202 + 1.203 + CU_ASSERT_EQUAL(cxListRemove(list, 2), 0) 1.204 + CU_ASSERT_EQUAL(list->size, 3) 1.205 + CU_ASSERT_TRUE(list->capacity >= list->size) 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 + 1.210 + CU_ASSERT_EQUAL(cxListRemove(list, 0), 0) 1.211 + CU_ASSERT_EQUAL(list->size, 2) 1.212 + CU_ASSERT_TRUE(list->capacity >= list->size) 1.213 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 0), 47) 1.214 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 1), 13) 1.215 + 1.216 + CU_ASSERT_EQUAL(cxListRemove(list, 1), 0) 1.217 + CU_ASSERT_EQUAL(list->size, 1) 1.218 + CU_ASSERT_TRUE(list->capacity >= list->size) 1.219 + CU_ASSERT_EQUAL(*(int *) cxListAt(list, 0), 47) 1.220 + 1.221 + CU_ASSERT_EQUAL(cxListRemove(list, 0), 0) 1.222 + CU_ASSERT_EQUAL(list->size, 0) 1.223 + CU_ASSERT_TRUE(list->capacity >= list->size) 1.224 + 1.225 + CU_ASSERT_NOT_EQUAL(cxListRemove(list, 0), 0) 1.226 + 1.227 + cxLinkedListDestroy(list); 1.228 + CU_ASSERT_TRUE(cxTestingAllocatorVerify()) 1.229 +} 1.230 + 1.231 +void test_hl_ptr_linked_list_find(void) { 1.232 + cxTestingAllocatorReset(); 1.233 + 1.234 + int a = 5, b = 47, c = 13, criteria; 1.235 + CxList list = cxPointerLinkedListCreate(cxTestingAllocator, (CxListComparator) cmp_int); 1.236 + 1.237 + cxListAdd(list, &a); 1.238 + cxListAdd(list, &b); 1.239 + cxListAdd(list, &c); 1.240 + 1.241 + CU_ASSERT_EQUAL(list->size, 3) 1.242 + CU_ASSERT_TRUE(list->capacity >= list->size) 1.243 + 1.244 + criteria = 5; 1.245 + CU_ASSERT_EQUAL(cxListFind(list, &criteria), 0) 1.246 + criteria = 47; 1.247 + CU_ASSERT_EQUAL(cxListFind(list, &criteria), 1) 1.248 + criteria = 13; 1.249 + CU_ASSERT_EQUAL(cxListFind(list, &criteria), 2) 1.250 + criteria = 9000; 1.251 + CU_ASSERT_EQUAL(cxListFind(list, &criteria), 3) 1.252 + criteria = -5; 1.253 + CU_ASSERT_EQUAL(cxListFind(list, &criteria), 3) 1.254 + b = -5; 1.255 + CU_ASSERT_EQUAL(cxListFind(list, &criteria), 1) 1.256 + 1.257 + cxLinkedListDestroy(list); 1.258 + CU_ASSERT_TRUE(cxTestingAllocatorVerify()) 1.259 +} 1.260 + 1.261 int main() { 1.262 CU_pSuite suite = NULL; 1.263 1.264 @@ -351,6 +504,15 @@ 1.265 cu_add_test(suite, test_hl_linked_list_remove); 1.266 cu_add_test(suite, test_hl_linked_list_find); 1.267 1.268 + suite = CU_add_suite("high level pointer linked list", NULL, NULL); 1.269 + 1.270 + cu_add_test(suite, test_hl_ptr_linked_list_create); 1.271 + cu_add_test(suite, test_hl_ptr_linked_list_add); 1.272 + cu_add_test(suite, test_hl_ptr_linked_list_last); 1.273 + cu_add_test(suite, test_hl_ptr_linked_list_insert); 1.274 + cu_add_test(suite, test_hl_ptr_linked_list_remove); 1.275 + cu_add_test(suite, test_hl_ptr_linked_list_find); 1.276 + 1.277 CU_basic_set_mode(UCX_CU_BRM); 1.278 1.279 int exitcode;