migrate cxEmptyList tests - relates to #342

Tue, 09 Jan 2024 21:25:08 +0100

author
Mike Becker <universe@uap-core.de>
date
Tue, 09 Jan 2024 21:25:08 +0100
changeset 800
1274e46b3013
parent 799
a2a757d225b4
child 801
04aa3913c0e3

migrate cxEmptyList tests - relates to #342

tests/test_list.c file | annotate | diff | comparison | revisions
tests/test_list.cpp file | annotate | diff | comparison | revisions
tests/ucxtest.c file | annotate | diff | comparison | revisions
     1.1 --- a/tests/test_list.c	Tue Jan 09 00:09:11 2024 +0100
     1.2 +++ b/tests/test_list.c	Tue Jan 09 21:25:08 2024 +0100
     1.3 @@ -555,6 +555,86 @@
     1.4      destroy_nodes_test_data(expected);
     1.5  }
     1.6  
     1.7 +
     1.8 +CX_TEST(test_empty_list_size) {
     1.9 +    CX_TEST_DO {
    1.10 +        CX_TEST_ASSERT(cxEmptyList->size == 0);
    1.11 +        CX_TEST_ASSERT(cxListSize(cxEmptyList) == 0);
    1.12 +    }
    1.13 +}
    1.14 +
    1.15 +CX_TEST(test_empty_list_iterator) {
    1.16 +    CxList *list = cxEmptyList;
    1.17 +
    1.18 +    CxIterator it1 = cxListIterator(list);
    1.19 +    CxIterator it2 = cxListBackwardsIterator(list);
    1.20 +    CxMutIterator it3 = cxListMutIterator(list);
    1.21 +    CxMutIterator it4 = cxListMutBackwardsIterator(list);
    1.22 +
    1.23 +    CX_TEST_DO {
    1.24 +        CX_TEST_ASSERT(!cxIteratorValid(it1));
    1.25 +        CX_TEST_ASSERT(!cxIteratorValid(it2));
    1.26 +        CX_TEST_ASSERT(!cxIteratorValid(it3));
    1.27 +        CX_TEST_ASSERT(!cxIteratorValid(it4));
    1.28 +
    1.29 +        int c = 0;
    1.30 +        cx_foreach(void*, data, it1) c++;
    1.31 +        cx_foreach(void*, data, it2) c++;
    1.32 +        cx_foreach(void*, data, it3) c++;
    1.33 +        cx_foreach(void*, data, it4) c++;
    1.34 +        CX_TEST_ASSERT(c == 0);
    1.35 +    }
    1.36 +}
    1.37 +
    1.38 +CX_TEST(test_empty_list_noops) {
    1.39 +    CX_TEST_DO {
    1.40 +        CxList copy = *cxEmptyList;
    1.41 +        cxListSort(cxEmptyList);
    1.42 +        cxListClear(cxEmptyList);
    1.43 +        cxListDestroy(cxEmptyList);
    1.44 +        CX_TEST_ASSERT(0 == memcmp(&copy, cxEmptyList, sizeof(CxList))); // NOLINT(*-suspicious-memory-comparison)
    1.45 +    }
    1.46 +}
    1.47 +
    1.48 +CX_TEST(test_empty_list_at) {
    1.49 +    CX_TEST_DO {
    1.50 +        CX_TEST_ASSERT(cxListAt(cxEmptyList, 0) == NULL);
    1.51 +        CX_TEST_ASSERT(cxListAt(cxEmptyList, 1) == NULL);
    1.52 +    }
    1.53 +}
    1.54 +
    1.55 +CX_TEST(test_empty_list_find) {
    1.56 +    int x = 42, y = 1337;
    1.57 +    CX_TEST_DO {
    1.58 +        CX_TEST_ASSERT(cxListFind(cxEmptyList, &x) < 0);
    1.59 +        CX_TEST_ASSERT(cxListFind(cxEmptyList, &y) < 0);
    1.60 +    }
    1.61 +}
    1.62 +
    1.63 +CX_TEST(test_empty_list_compare) {
    1.64 +    CxList *empty = cxEmptyList;
    1.65 +    CxList *ll = cxLinkedListCreateSimple(sizeof(int));
    1.66 +    CxList *al = cxArrayListCreateSimple(sizeof(int), 8);
    1.67 +    int x = 5;
    1.68 +    CX_TEST_DO {
    1.69 +        CX_TEST_ASSERT(0 == cxListCompare(empty, cxEmptyList));
    1.70 +        CX_TEST_ASSERT(0 == cxListCompare(ll, cxEmptyList));
    1.71 +        CX_TEST_ASSERT(0 == cxListCompare(al, cxEmptyList));
    1.72 +        CX_TEST_ASSERT(0 == cxListCompare(cxEmptyList, ll));
    1.73 +        CX_TEST_ASSERT(0 == cxListCompare(cxEmptyList, al));
    1.74 +
    1.75 +        cxListAdd(ll, &x);
    1.76 +        cxListAdd(al, &x);
    1.77 +
    1.78 +        CX_TEST_ASSERT(0 < cxListCompare(ll, cxEmptyList));
    1.79 +        CX_TEST_ASSERT(0 < cxListCompare(al, cxEmptyList));
    1.80 +        CX_TEST_ASSERT(0 > cxListCompare(cxEmptyList, ll));
    1.81 +        CX_TEST_ASSERT(0 > cxListCompare(cxEmptyList, al));
    1.82 +    }
    1.83 +    cxListDestroy(ll);
    1.84 +    cxListDestroy(al);
    1.85 +}
    1.86 +
    1.87  CxTestSuite *cx_test_suite_array_list(void) {
    1.88      CxTestSuite *suite = cx_test_suite_new("array_list");
    1.89  
    1.90 @@ -584,3 +664,15 @@
    1.91      return suite;
    1.92  }
    1.93  
    1.94 +CxTestSuite *cx_test_suite_empty_list(void) {
    1.95 +    CxTestSuite *suite = cx_test_suite_new("empty list dummy");
    1.96 +
    1.97 +    cx_test_register(suite, test_empty_list_size);
    1.98 +    cx_test_register(suite, test_empty_list_iterator);
    1.99 +    cx_test_register(suite, test_empty_list_noops);
   1.100 +    cx_test_register(suite, test_empty_list_at);
   1.101 +    cx_test_register(suite, test_empty_list_find);
   1.102 +    cx_test_register(suite, test_empty_list_compare);
   1.103 +
   1.104 +    return suite;
   1.105 +}
     2.1 --- a/tests/test_list.cpp	Tue Jan 09 00:09:11 2024 +0100
     2.2 +++ b/tests/test_list.cpp	Tue Jan 09 21:25:08 2024 +0100
     2.3 @@ -481,93 +481,6 @@
     2.4  class PointerArrayList : public HighLevelTest {
     2.5  };
     2.6  
     2.7 -TEST_F(PointerLinkedList, cxListStorePointers) {
     2.8 -    auto list = autofree(cxLinkedListCreate(&testingAllocator, cx_cmp_int, 47));
     2.9 -    CX_TEST_ASSERT(!cxListIsStoringPointers(list));
    2.10 -    cxListStorePointers(list);
    2.11 -    EXPECT_EQ(list->item_size, sizeof(void *));
    2.12 -    CX_TEST_ASSERT(list->cl != NULL);
    2.13 -    CX_TEST_ASSERT(list->climpl != NULL);
    2.14 -    CX_TEST_ASSERT(cxListIsStoringPointers(list));
    2.15 -    cxListStoreObjects(list);
    2.16 -    CX_TEST_ASSERT(list->cl != NULL);
    2.17 -    EXPECT_EQ(list->climpl, NULL);
    2.18 -    CX_TEST_ASSERT(!cxListIsStoringPointers(list));
    2.19 -}
    2.20 -
    2.21 -TEST_F(LinkedList, cxLinkedListCreate) {
    2.22 -    CxList *list = autofree(cxLinkedListCreate(&testingAllocator, cx_cmp_int, sizeof(int)));
    2.23 -    ASSERT_NE(list, NULL);
    2.24 -    EXPECT_EQ(list->item_size, sizeof(int));
    2.25 -    EXPECT_EQ(list->simple_destructor, NULL);
    2.26 -    EXPECT_EQ(list->advanced_destructor, NULL);
    2.27 -    EXPECT_EQ(list->destructor_data, NULL);
    2.28 -    EXPECT_EQ(cxListSize(list), 0);
    2.29 -    EXPECT_EQ(list->allocator, &testingAllocator);
    2.30 -    EXPECT_EQ(list->cmpfunc, cx_cmp_int);
    2.31 -    CX_TEST_ASSERT(!cxListIsStoringPointers(list));
    2.32 -}
    2.33 -
    2.34 -TEST_F(LinkedList, cxLinkedListCreateSimple) {
    2.35 -    CxList *list = autofree(cxLinkedListCreateSimple(sizeof(int)));
    2.36 -    ASSERT_NE(list, NULL);
    2.37 -    EXPECT_EQ(list->item_size, sizeof(int));
    2.38 -    EXPECT_EQ(list->cmpfunc, NULL);
    2.39 -    EXPECT_EQ(list->allocator, cxDefaultAllocator);
    2.40 -    EXPECT_EQ(list->simple_destructor, NULL);
    2.41 -    EXPECT_EQ(list->advanced_destructor, NULL);
    2.42 -    EXPECT_EQ(list->destructor_data, NULL);
    2.43 -    EXPECT_EQ(cxListSize(list), 0);
    2.44 -    CX_TEST_ASSERT(!cxListIsStoringPointers(list));
    2.45 -}
    2.46 -
    2.47 -TEST_F(PointerLinkedList, cxLinkedListCreateSimpleForPointers) {
    2.48 -    CxList *list = autofree(cxLinkedListCreateSimple(CX_STORE_POINTERS));
    2.49 -    ASSERT_NE(list, NULL);
    2.50 -    EXPECT_EQ(list->item_size, sizeof(void *));
    2.51 -    EXPECT_EQ(list->cmpfunc, cx_cmp_ptr);
    2.52 -    EXPECT_EQ(list->allocator, cxDefaultAllocator);
    2.53 -    EXPECT_EQ(list->simple_destructor, NULL);
    2.54 -    EXPECT_EQ(list->advanced_destructor, NULL);
    2.55 -    EXPECT_EQ(list->destructor_data, NULL);
    2.56 -    EXPECT_EQ(cxListSize(list), 0);
    2.57 -    CX_TEST_ASSERT(cxListIsStoringPointers(list));
    2.58 -}
    2.59 -
    2.60 -TEST_F(ArrayList, cxArrayListCreate) {
    2.61 -    CxList *list = autofree(cxArrayListCreate(&testingAllocator, cx_cmp_int, sizeof(int), 8));
    2.62 -    ASSERT_NE(list, NULL);
    2.63 -    EXPECT_EQ(list->item_size, sizeof(int));
    2.64 -    EXPECT_EQ(list->simple_destructor, NULL);
    2.65 -    EXPECT_EQ(list->advanced_destructor, NULL);
    2.66 -    EXPECT_EQ(list->destructor_data, NULL);
    2.67 -    EXPECT_EQ(cxListSize(list), 0);
    2.68 -    EXPECT_EQ(list->allocator, &testingAllocator);
    2.69 -    EXPECT_EQ(list->cmpfunc, cx_cmp_int);
    2.70 -    CX_TEST_ASSERT(!cxListIsStoringPointers(list));
    2.71 -}
    2.72 -
    2.73 -TEST_F(ArrayList, cxArrayListCreateSimple) {
    2.74 -    CxList *list = autofree(cxArrayListCreateSimple(sizeof(int), 8));
    2.75 -    ASSERT_NE(list, NULL);
    2.76 -    EXPECT_EQ(list->cmpfunc, NULL);
    2.77 -    EXPECT_EQ(list->allocator, cxDefaultAllocator);
    2.78 -    EXPECT_EQ(list->item_size, sizeof(int));
    2.79 -    EXPECT_EQ(list->simple_destructor, NULL);
    2.80 -    EXPECT_EQ(list->advanced_destructor, NULL);
    2.81 -    EXPECT_EQ(list->destructor_data, NULL);
    2.82 -    EXPECT_EQ(cxListSize(list), 0);
    2.83 -    CX_TEST_ASSERT(!cxListIsStoringPointers(list));
    2.84 -}
    2.85 -
    2.86 -TEST_F(PointerArrayList, cxArrayListCreateSimpleForPointers) {
    2.87 -    CxList *list = autofree(cxArrayListCreateSimple(CX_STORE_POINTERS, 8));
    2.88 -    ASSERT_NE(list, NULL);
    2.89 -    EXPECT_EQ(list->cmpfunc, cx_cmp_ptr);
    2.90 -    EXPECT_EQ(list->allocator, cxDefaultAllocator);
    2.91 -    EXPECT_EQ(list->item_size, sizeof(void *));
    2.92 -    CX_TEST_ASSERT(cxListIsStoringPointers(list));
    2.93 -}
    2.94  
    2.95  TEST_F(LinkedList, cxListAdd) {
    2.96      auto list = autofree(cxLinkedListCreate(&testingAllocator, cx_cmp_int, sizeof(int)));
    2.97 @@ -935,6 +848,94 @@
    2.98      verifyAdvancedDestructor(pointerArrayListFromTestData());
    2.99  }
   2.100  
   2.101 +TEST_F(PointerLinkedList, cxListStorePointers) {
   2.102 +    auto list = autofree(cxLinkedListCreate(&testingAllocator, cx_cmp_int, 47));
   2.103 +    CX_TEST_ASSERT(!cxListIsStoringPointers(list));
   2.104 +    cxListStorePointers(list);
   2.105 +    EXPECT_EQ(list->item_size, sizeof(void *));
   2.106 +    CX_TEST_ASSERT(list->cl != NULL);
   2.107 +    CX_TEST_ASSERT(list->climpl != NULL);
   2.108 +    CX_TEST_ASSERT(cxListIsStoringPointers(list));
   2.109 +    cxListStoreObjects(list);
   2.110 +    CX_TEST_ASSERT(list->cl != NULL);
   2.111 +    EXPECT_EQ(list->climpl, NULL);
   2.112 +    CX_TEST_ASSERT(!cxListIsStoringPointers(list));
   2.113 +}
   2.114 +
   2.115 +TEST_F(LinkedList, cxLinkedListCreate) {
   2.116 +    CxList *list = autofree(cxLinkedListCreate(&testingAllocator, cx_cmp_int, sizeof(int)));
   2.117 +    ASSERT_NE(list, NULL);
   2.118 +    EXPECT_EQ(list->item_size, sizeof(int));
   2.119 +    EXPECT_EQ(list->simple_destructor, NULL);
   2.120 +    EXPECT_EQ(list->advanced_destructor, NULL);
   2.121 +    EXPECT_EQ(list->destructor_data, NULL);
   2.122 +    EXPECT_EQ(cxListSize(list), 0);
   2.123 +    EXPECT_EQ(list->allocator, &testingAllocator);
   2.124 +    EXPECT_EQ(list->cmpfunc, cx_cmp_int);
   2.125 +    CX_TEST_ASSERT(!cxListIsStoringPointers(list));
   2.126 +}
   2.127 +
   2.128 +TEST_F(LinkedList, cxLinkedListCreateSimple) {
   2.129 +    CxList *list = autofree(cxLinkedListCreateSimple(sizeof(int)));
   2.130 +    ASSERT_NE(list, NULL);
   2.131 +    EXPECT_EQ(list->item_size, sizeof(int));
   2.132 +    EXPECT_EQ(list->cmpfunc, NULL);
   2.133 +    EXPECT_EQ(list->allocator, cxDefaultAllocator);
   2.134 +    EXPECT_EQ(list->simple_destructor, NULL);
   2.135 +    EXPECT_EQ(list->advanced_destructor, NULL);
   2.136 +    EXPECT_EQ(list->destructor_data, NULL);
   2.137 +    EXPECT_EQ(cxListSize(list), 0);
   2.138 +    CX_TEST_ASSERT(!cxListIsStoringPointers(list));
   2.139 +}
   2.140 +
   2.141 +TEST_F(PointerLinkedList, cxLinkedListCreateSimpleForPointers) {
   2.142 +    CxList *list = autofree(cxLinkedListCreateSimple(CX_STORE_POINTERS));
   2.143 +    ASSERT_NE(list, NULL);
   2.144 +    EXPECT_EQ(list->item_size, sizeof(void *));
   2.145 +    EXPECT_EQ(list->cmpfunc, cx_cmp_ptr);
   2.146 +    EXPECT_EQ(list->allocator, cxDefaultAllocator);
   2.147 +    EXPECT_EQ(list->simple_destructor, NULL);
   2.148 +    EXPECT_EQ(list->advanced_destructor, NULL);
   2.149 +    EXPECT_EQ(list->destructor_data, NULL);
   2.150 +    EXPECT_EQ(cxListSize(list), 0);
   2.151 +    CX_TEST_ASSERT(cxListIsStoringPointers(list));
   2.152 +}
   2.153 +
   2.154 +TEST_F(ArrayList, cxArrayListCreate) {
   2.155 +    CxList *list = autofree(cxArrayListCreate(&testingAllocator, cx_cmp_int, sizeof(int), 8));
   2.156 +    ASSERT_NE(list, NULL);
   2.157 +    EXPECT_EQ(list->item_size, sizeof(int));
   2.158 +    EXPECT_EQ(list->simple_destructor, NULL);
   2.159 +    EXPECT_EQ(list->advanced_destructor, NULL);
   2.160 +    EXPECT_EQ(list->destructor_data, NULL);
   2.161 +    EXPECT_EQ(cxListSize(list), 0);
   2.162 +    EXPECT_EQ(list->allocator, &testingAllocator);
   2.163 +    EXPECT_EQ(list->cmpfunc, cx_cmp_int);
   2.164 +    CX_TEST_ASSERT(!cxListIsStoringPointers(list));
   2.165 +}
   2.166 +
   2.167 +TEST_F(ArrayList, cxArrayListCreateSimple) {
   2.168 +    CxList *list = autofree(cxArrayListCreateSimple(sizeof(int), 8));
   2.169 +    ASSERT_NE(list, NULL);
   2.170 +    EXPECT_EQ(list->cmpfunc, NULL);
   2.171 +    EXPECT_EQ(list->allocator, cxDefaultAllocator);
   2.172 +    EXPECT_EQ(list->item_size, sizeof(int));
   2.173 +    EXPECT_EQ(list->simple_destructor, NULL);
   2.174 +    EXPECT_EQ(list->advanced_destructor, NULL);
   2.175 +    EXPECT_EQ(list->destructor_data, NULL);
   2.176 +    EXPECT_EQ(cxListSize(list), 0);
   2.177 +    CX_TEST_ASSERT(!cxListIsStoringPointers(list));
   2.178 +}
   2.179 +
   2.180 +TEST_F(PointerArrayList, cxArrayListCreateSimpleForPointers) {
   2.181 +    CxList *list = autofree(cxArrayListCreateSimple(CX_STORE_POINTERS, 8));
   2.182 +    ASSERT_NE(list, NULL);
   2.183 +    EXPECT_EQ(list->cmpfunc, cx_cmp_ptr);
   2.184 +    EXPECT_EQ(list->allocator, cxDefaultAllocator);
   2.185 +    EXPECT_EQ(list->item_size, sizeof(void *));
   2.186 +    CX_TEST_ASSERT(cxListIsStoringPointers(list));
   2.187 +}
   2.188 +
   2.189  TEST_F(PointerLinkedList, DestroyNoDestructor) {
   2.190      void *item = cxMalloc(&testingAllocator, sizeof(int));
   2.191      auto list = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS);
   2.192 @@ -997,80 +998,3 @@
   2.193      CX_TEST_ASSERT(testingAllocator.verify());
   2.194  }
   2.195  
   2.196 -TEST(EmptyList, Size) {
   2.197 -    auto list = cxEmptyList;
   2.198 -
   2.199 -    EXPECT_EQ(list->size, 0);
   2.200 -    EXPECT_EQ(cxListSize(list), 0);
   2.201 -}
   2.202 -
   2.203 -TEST(EmptyList, Iterator) {
   2.204 -    auto list = cxEmptyList;
   2.205 -
   2.206 -    auto it1 = cxListIterator(list);
   2.207 -    auto it2 = cxListBackwardsIterator(list);
   2.208 -    auto it3 = cxListMutIterator(list);
   2.209 -    auto it4 = cxListMutBackwardsIterator(list);
   2.210 -
   2.211 -    CX_TEST_ASSERT(!cxIteratorValid(it1));
   2.212 -    CX_TEST_ASSERT(!cxIteratorValid(it2));
   2.213 -    CX_TEST_ASSERT(!cxIteratorValid(it3));
   2.214 -    CX_TEST_ASSERT(!cxIteratorValid(it4));
   2.215 -
   2.216 -    int c = 0;
   2.217 -    cx_foreach(void*, data, it1) c++;
   2.218 -    cx_foreach(void*, data, it2) c++;
   2.219 -    cx_foreach(void*, data, it3) c++;
   2.220 -    cx_foreach(void*, data, it4) c++;
   2.221 -    EXPECT_EQ(c, 0);
   2.222 -}
   2.223 -
   2.224 -TEST(EmptyList, NoOps) {
   2.225 -    auto list = cxEmptyList;
   2.226 -
   2.227 -    ASSERT_NO_FATAL_FAILURE(cxListSort(list));
   2.228 -    ASSERT_NO_FATAL_FAILURE(cxListClear(list));
   2.229 -    ASSERT_NO_FATAL_FAILURE(cxListDestroy(list));
   2.230 -}
   2.231 -
   2.232 -TEST(EmptyList, At) {
   2.233 -    auto list = cxEmptyList;
   2.234 -
   2.235 -    EXPECT_EQ(cxListAt(list, 0), NULL);
   2.236 -    EXPECT_EQ(cxListAt(list, 1), NULL);
   2.237 -}
   2.238 -
   2.239 -TEST(EmptyList, Find) {
   2.240 -    auto list = cxEmptyList;
   2.241 -
   2.242 -    int x = 42, y = 1337;
   2.243 -
   2.244 -    EXPECT_LT(cxListFind(list, &x), 0);
   2.245 -    EXPECT_LT(cxListFind(list, &y), 0);
   2.246 -}
   2.247 -
   2.248 -TEST(EmptyList, Compare) {
   2.249 -    auto empty = cxEmptyList;
   2.250 -
   2.251 -    auto ll = cxLinkedListCreateSimple(sizeof(int));
   2.252 -    auto al = cxArrayListCreateSimple(sizeof(int), 8);
   2.253 -
   2.254 -    int x = 5;
   2.255 -
   2.256 -    EXPECT_EQ(cxListCompare(empty, cxEmptyList), 0);
   2.257 -    EXPECT_EQ(cxListCompare(ll, cxEmptyList), 0);
   2.258 -    EXPECT_EQ(cxListCompare(al, cxEmptyList), 0);
   2.259 -    EXPECT_EQ(cxListCompare(cxEmptyList, ll), 0);
   2.260 -    EXPECT_EQ(cxListCompare(cxEmptyList, al), 0);
   2.261 -
   2.262 -    cxListAdd(ll, &x);
   2.263 -    cxListAdd(al, &x);
   2.264 -
   2.265 -    EXPECT_GT(cxListCompare(ll, cxEmptyList), 0);
   2.266 -    EXPECT_GT(cxListCompare(al, cxEmptyList), 0);
   2.267 -    EXPECT_LT(cxListCompare(cxEmptyList, ll), 0);
   2.268 -    EXPECT_LT(cxListCompare(cxEmptyList, al), 0);
   2.269 -
   2.270 -    cxListDestroy(ll);
   2.271 -    cxListDestroy(al);
   2.272 -}
     3.1 --- a/tests/ucxtest.c	Tue Jan 09 00:09:11 2024 +0100
     3.2 +++ b/tests/ucxtest.c	Tue Jan 09 21:25:08 2024 +0100
     3.3 @@ -36,6 +36,7 @@
     3.4  CxTestSuite *cx_test_suite_string(void);
     3.5  CxTestSuite *cx_test_suite_buffer(void);
     3.6  CxTestSuite *cx_test_suite_printf(void);
     3.7 +CxTestSuite *cx_test_suite_empty_list(void);
     3.8  CxTestSuite *cx_test_suite_array_list(void);
     3.9  CxTestSuite *cx_test_suite_linked_list(void);
    3.10  CxTestSuite *cx_test_suite_mempool(void);
    3.11 @@ -58,6 +59,7 @@
    3.12              cx_test_suite_string(),
    3.13              cx_test_suite_buffer(),
    3.14              cx_test_suite_printf(),
    3.15 +            cx_test_suite_empty_list(),
    3.16              cx_test_suite_array_list(),
    3.17              cx_test_suite_linked_list(),
    3.18              cx_test_suite_mempool(),

mercurial