--- a/tests/test_kv_list.c Wed Sep 17 22:45:00 2025 +0200 +++ b/tests/test_kv_list.c Thu Sep 18 00:36:42 2025 +0200 @@ -386,6 +386,59 @@ cxListFree(list); } +CX_TEST(test_kv_list_insert_with_key) { + CxList *list = cxKvListCreateSimple(sizeof(int)); + int x; + CX_TEST_DO { + x = 47; + cxKvListAdd(list, "xyz", &x); + x = 11; + cxKvListAdd(list, "abc", &x); + x = 1337; + cxKvListInsert(list, 1, "efg", &x); + + CX_TEST_ASSERT(cxListSize(list) == 3); + CX_TEST_ASSERT(*(int*)cxListAt(list, 0) == 47); + CX_TEST_ASSERT(*(int*)cxListAt(list, 1) == 1337); + CX_TEST_ASSERT(*(int*)cxListAt(list, 2) == 11); + + CxMap *map = cxKvListAsMap(list); + CX_TEST_ASSERT(cxMapSize(map) == 3); + CX_TEST_ASSERT(*(int*)cxMapGet(map, "xyz") == 47); + CX_TEST_ASSERT(*(int*)cxMapGet(map, "abc") == 11); + CX_TEST_ASSERT(*(int*)cxMapGet(map, "efg") == 1337); + } + cxListFree(list); +} + +CX_TEST(test_kv_list_insert_ptr_with_key) { + CxList *list = cxKvListCreateSimple(CX_STORE_POINTERS); + int x, y, z; + CX_TEST_DO { + x = 15; + cxKvListAdd(list, "xyz", &x); + y = 16; + cxKvListAdd(list, "abc", &y); + z = 17; + cxKvListInsert(list, 1, "efg", &z); + x = 47; + y = 11; + z = 1337; + + CX_TEST_ASSERT(cxListSize(list) == 3); + CX_TEST_ASSERT(*(int*)cxListAt(list, 0) == 47); + CX_TEST_ASSERT(*(int*)cxListAt(list, 1) == 1337); + CX_TEST_ASSERT(*(int*)cxListAt(list, 2) == 11); + + CxMap *map = cxKvListAsMap(list); + CX_TEST_ASSERT(cxMapSize(map) == 3); + CX_TEST_ASSERT(*(int*)cxMapGet(map, "xyz") == 47); + CX_TEST_ASSERT(*(int*)cxMapGet(map, "abc") == 11); + CX_TEST_ASSERT(*(int*)cxMapGet(map, "efg") == 1337); + } + cxListFree(list); +} + CX_TEST(test_kv_list_insert_array_and_set_keys) { CxList *list = cxKvListCreateSimple(sizeof(int)); CX_TEST_DO { @@ -570,6 +623,8 @@ cx_test_register(suite, test_kv_list_map_remove); cx_test_register(suite, test_kv_list_set_key); cx_test_register(suite, test_kv_list_remove_key); + cx_test_register(suite, test_kv_list_insert_with_key); + cx_test_register(suite, test_kv_list_insert_ptr_with_key); cx_test_register(suite, test_kv_list_insert_array_and_set_keys); cx_test_register(suite, test_kv_list_list_remove_destr_in_list); cx_test_register(suite, test_kv_list_list_remove_destr_in_map);