--- a/tests/test_kv_list.c Sat Dec 06 15:55:53 2025 +0100 +++ b/tests/test_kv_list.c Sat Dec 06 16:22:19 2025 +0100 @@ -339,6 +339,36 @@ cxListFree(list); } +CX_TEST(test_kv_list_map_put_overwrite) { + CxList *list = cxKvListCreateSimple(CX_STORE_POINTERS); + CxTestingAllocator talloc; + cx_testing_allocator_init(&talloc); + CxAllocator *al = &talloc.base; + int *x, *y; + CX_TEST_DO { + CxMap *map = cxKvListAsMap(list); + cxDefineAdvancedDestructor(map, cxFree, al); + x = cxMalloc(al, sizeof(int)); + y = cxMalloc(al, sizeof(int)); + *x = 13; + *y = 37; + CX_TEST_ASSERT(0 == cxMapPut(map, "xyz", x)); + CX_TEST_ASSERT(cxCollectionSize(map) == 1); + CX_TEST_ASSERT(cxCollectionSize(list) == 1); + CX_TEST_ASSERT(*(int*)cxListAt(list, 0) == 13); + CX_TEST_ASSERT(*(int*)cxMapGet(map, "xyz") == 13); + CX_TEST_ASSERT(0 == cxMapPut(map, "xyz", y)); + CX_TEST_ASSERT(cxCollectionSize(map) == 1); + CX_TEST_ASSERT(cxCollectionSize(list) == 1); + CX_TEST_ASSERT(*(int*)cxListAt(list, 0) == 37); + CX_TEST_ASSERT(*(int*)cxMapGet(map, "xyz") == 37); + cxMapClear(map); + CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); + } + cx_testing_allocator_destroy(&talloc); + cxListFree(list); +} + CX_TEST(test_kv_list_map_remove) { CxList *list = cxKvListCreateSimple(sizeof(int)); int x; @@ -1021,6 +1051,7 @@ cx_test_register(suite, test_kv_list_map_put); cx_test_register(suite, test_kv_list_map_put_ptr); cx_test_register(suite, test_kv_list_map_put_not_hashed); + cx_test_register(suite, test_kv_list_map_put_overwrite); cx_test_register(suite, test_kv_list_map_remove); cx_test_register(suite, test_kv_list_map_remove_and_get); cx_test_register(suite, test_kv_list_set_key);