Tue, 23 Sep 2025 20:31:50 +0200
kv-list: completes test coverage
relates to #461
tests/test_kv_list.c | file | annotate | diff | comparison | revisions |
--- a/tests/test_kv_list.c Tue Sep 23 20:19:31 2025 +0200 +++ b/tests/test_kv_list.c Tue Sep 23 20:31:50 2025 +0200 @@ -420,6 +420,22 @@ CX_TEST_ASSERT(cxMapGet(map, "xyz") == NULL); CX_TEST_ASSERT(cxListSize(list) == 0); + + // now check with a non-prehashed key + x = 85; + cxListAdd(list, &x); + CxHashKey key = {}; + key.data = "abc"; + key.len = 3; + CX_TEST_ASSERT(0 == cxKvListSetKey(list, 0, key)); + y = cxMapGet(map, "abc"); + CX_TEST_ASSERT(y != NULL); + CX_TEST_ASSERT(*y == 85); + + CX_TEST_ASSERT(0 == cxMapRemove(map, "abc")); + CX_TEST_ASSERT(cxMapGet(map, "abc") == NULL); + + CX_TEST_ASSERT(cxListSize(list) == 0); } cxListFree(list); } @@ -517,6 +533,9 @@ CX_TEST_ASSERT(y != NULL); CX_TEST_ASSERT(*y == 1337); + // idempotence + CX_TEST_ASSERT(0 == cxKvListRemoveKey(list, 1)); + // index out of bounds: CX_TEST_ASSERT(0 != cxKvListRemoveKey(list, 3)); } @@ -869,6 +888,27 @@ cxMapFree(map); } +CX_TEST(test_kv_list_map_iterator_no_keys) { + CxMap *map = cxKvListCreateAsMapSimple(sizeof(int)); + CX_TEST_DO { + CxList *list = cxKvListAsList(map); + int x; + x = 815; + cxListAdd(list, &x); + x = 8016; + cxListAdd(list, &x); + x = 80017; + cxMapPut(map, "xyz", &x); + cxKvListRemoveKey(list, 2); + + // only contains items without keys + CxMapIterator it = cxMapIterator(map); + CX_TEST_ASSERT(it.elem_count == 0); + CX_TEST_ASSERT(!cxIteratorValid(it)); + } + cxMapFree(map); +} + CX_TEST(test_kv_list_map_iterator_remove) { CxMap *map = cxKvListCreateAsMapSimple(CX_STORE_POINTERS); int x, y, z; @@ -970,6 +1010,7 @@ cx_test_register(suite, test_kv_list_map_clear_destr_in_map); cx_test_register(suite, test_kv_list_destr_ptr); cx_test_register(suite, test_kv_list_map_iterator); + cx_test_register(suite, test_kv_list_map_iterator_no_keys); cx_test_register(suite, test_kv_list_map_iterator_remove); cx_test_register(suite, test_kv_list_list_iterator_remove);