add tests for creating iterators with NULL lists or maps

Tue, 23 Sep 2025 20:19:31 +0200

author
Mike Becker <universe@uap-core.de>
date
Tue, 23 Sep 2025 20:19:31 +0200
changeset 1388
edc34e904fe3
parent 1387
9bdd053820b7
child 1389
bbdc4aee8534

add tests for creating iterators with NULL lists or maps

tests/test_hash_map.c file | annotate | diff | comparison | revisions
tests/test_list.c file | annotate | diff | comparison | revisions
--- 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;
--- 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);

mercurial