test/test_list.c

changeset 466
28bc3e10ac28
parent 460
e075009b33b7
child 468
75ae1dccd101
     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;

mercurial