# HG changeset patch # User Mike Becker # Date 1758651571 -7200 # Node ID edc34e904fe3ac855e5953525310be0d2c695677 # Parent 9bdd053820b7f5034b9f9d69dfdb7b96a8861c4d add tests for creating iterators with NULL lists or maps diff -r 9bdd053820b7 -r edc34e904fe3 tests/test_hash_map.c --- a/tests/test_hash_map.c Mon Sep 22 19:22:23 2025 +0200 +++ b/tests/test_hash_map.c Tue Sep 23 20:19:31 2025 +0200 @@ -534,6 +534,35 @@ } } +CX_TEST(test_null_map_iterator) { + CxMap *map = NULL; + + CxMapIterator it1 = cxMapIterator(map); + CxMapIterator it2 = cxMapIteratorValues(map); + CxMapIterator it3 = cxMapIteratorKeys(map); + CxMapIterator it4 = cxMapMutIterator(map); + CxMapIterator it5 = cxMapMutIteratorValues(map); + CxMapIterator it6 = cxMapMutIteratorKeys(map); + + CX_TEST_DO { + CX_TEST_ASSERT(!cxIteratorValid(it1)); + CX_TEST_ASSERT(!cxIteratorValid(it2)); + CX_TEST_ASSERT(!cxIteratorValid(it3)); + CX_TEST_ASSERT(!cxIteratorValid(it4)); + CX_TEST_ASSERT(!cxIteratorValid(it5)); + CX_TEST_ASSERT(!cxIteratorValid(it6)); + + 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_foreach(void*, data, it5) c++; + cx_foreach(void*, data, it6) c++; + CX_TEST_ASSERT(c == 0); + } +} + CX_TEST(test_empty_map_no_ops) { CX_TEST_DO { // assertion not possible @@ -817,6 +846,7 @@ cx_test_register(suite, test_empty_map_size); cx_test_register(suite, test_empty_map_get); cx_test_register(suite, test_empty_map_iterator); + cx_test_register(suite, test_null_map_iterator); cx_test_register(suite, test_hash_map_generics); return suite; diff -r 9bdd053820b7 -r edc34e904fe3 tests/test_list.c --- a/tests/test_list.c Mon Sep 22 19:22:23 2025 +0200 +++ b/tests/test_list.c Tue Sep 23 20:19:31 2025 +0200 @@ -957,6 +957,29 @@ } } +CX_TEST(test_null_list_iterator) { + CxList *list = NULL; + + CxIterator it1 = cxListIterator(list); + CxIterator it2 = cxListBackwardsIterator(list); + CxIterator it3 = cxListMutIterator(list); + CxIterator 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; @@ -2407,6 +2430,7 @@ cx_test_register(suite, test_empty_list_size); cx_test_register(suite, test_empty_list_iterator); + cx_test_register(suite, test_null_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);