Tue, 09 Jan 2024 21:25:08 +0100
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(©, 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(),