diff -r a2a757d225b4 -r 1274e46b3013 tests/test_list.c --- a/tests/test_list.c Tue Jan 09 00:09:11 2024 +0100 +++ b/tests/test_list.c Tue Jan 09 21:25:08 2024 +0100 @@ -555,6 +555,86 @@ destroy_nodes_test_data(expected); } + +CX_TEST(test_empty_list_size) { + CX_TEST_DO { + CX_TEST_ASSERT(cxEmptyList->size == 0); + CX_TEST_ASSERT(cxListSize(cxEmptyList) == 0); + } +} + +CX_TEST(test_empty_list_iterator) { + CxList *list = cxEmptyList; + + CxIterator it1 = cxListIterator(list); + CxIterator it2 = cxListBackwardsIterator(list); + CxMutIterator it3 = cxListMutIterator(list); + CxMutIterator it4 = cxListMutBackwardsIterator(list); + + CX_TEST_DO { + CX_TEST_ASSERT(!cxIteratorValid(it1)); + CX_TEST_ASSERT(!cxIteratorValid(it2)); + CX_TEST_ASSERT(!cxIteratorValid(it3)); + CX_TEST_ASSERT(!cxIteratorValid(it4)); + + int c = 0; + cx_foreach(void*, data, it1) c++; + cx_foreach(void*, data, it2) c++; + cx_foreach(void*, data, it3) c++; + cx_foreach(void*, data, it4) c++; + CX_TEST_ASSERT(c == 0); + } +} + +CX_TEST(test_empty_list_noops) { + CX_TEST_DO { + CxList copy = *cxEmptyList; + cxListSort(cxEmptyList); + cxListClear(cxEmptyList); + cxListDestroy(cxEmptyList); + CX_TEST_ASSERT(0 == memcmp(©, cxEmptyList, sizeof(CxList))); // NOLINT(*-suspicious-memory-comparison) + } +} + +CX_TEST(test_empty_list_at) { + CX_TEST_DO { + CX_TEST_ASSERT(cxListAt(cxEmptyList, 0) == NULL); + CX_TEST_ASSERT(cxListAt(cxEmptyList, 1) == NULL); + } +} + +CX_TEST(test_empty_list_find) { + int x = 42, y = 1337; + CX_TEST_DO { + CX_TEST_ASSERT(cxListFind(cxEmptyList, &x) < 0); + CX_TEST_ASSERT(cxListFind(cxEmptyList, &y) < 0); + } +} + +CX_TEST(test_empty_list_compare) { + CxList *empty = cxEmptyList; + CxList *ll = cxLinkedListCreateSimple(sizeof(int)); + CxList *al = cxArrayListCreateSimple(sizeof(int), 8); + int x = 5; + CX_TEST_DO { + CX_TEST_ASSERT(0 == cxListCompare(empty, cxEmptyList)); + CX_TEST_ASSERT(0 == cxListCompare(ll, cxEmptyList)); + CX_TEST_ASSERT(0 == cxListCompare(al, cxEmptyList)); + CX_TEST_ASSERT(0 == cxListCompare(cxEmptyList, ll)); + CX_TEST_ASSERT(0 == cxListCompare(cxEmptyList, al)); + + cxListAdd(ll, &x); + cxListAdd(al, &x); + + CX_TEST_ASSERT(0 < cxListCompare(ll, cxEmptyList)); + CX_TEST_ASSERT(0 < cxListCompare(al, cxEmptyList)); + CX_TEST_ASSERT(0 > cxListCompare(cxEmptyList, ll)); + CX_TEST_ASSERT(0 > cxListCompare(cxEmptyList, al)); + } + cxListDestroy(ll); + cxListDestroy(al); +} + CxTestSuite *cx_test_suite_array_list(void) { CxTestSuite *suite = cx_test_suite_new("array_list"); @@ -584,3 +664,15 @@ return suite; } +CxTestSuite *cx_test_suite_empty_list(void) { + CxTestSuite *suite = cx_test_suite_new("empty list dummy"); + + cx_test_register(suite, test_empty_list_size); + cx_test_register(suite, test_empty_list_iterator); + cx_test_register(suite, test_empty_list_noops); + cx_test_register(suite, test_empty_list_at); + cx_test_register(suite, test_empty_list_find); + cx_test_register(suite, test_empty_list_compare); + + return suite; +}