diff -r 68b75c091028 -r 55b13f583356 tests/test_hash_map.c --- a/tests/test_hash_map.c Sun Dec 14 16:21:09 2025 +0100 +++ b/tests/test_hash_map.c Sun Dec 14 17:30:17 2025 +0100 @@ -116,7 +116,7 @@ CxAllocator *allocator = &talloc.base; CX_TEST_DO { CxMap *map = cxHashMapCreate(allocator, CX_STORE_POINTERS, 4); - cxDefineAdvancedDestructor(map, cxFree, allocator); + cxSetAdvancedDestructor(map, cxFree, allocator); char *val1 = cxMalloc(allocator, 8); strcpy(val1, "val 1"); @@ -290,7 +290,7 @@ } CX_TEST(test_hash_map_integer_keys) { - CxMap *map = cxHashMapCreateSimple(sizeof(cxstring)); + CxMap *map = cxHashMapCreate(NULL, sizeof(cxstring), 0); CX_TEST_DO { cxstring s1 = cx_str("hello"); cxstring s2 = cx_str("world"); @@ -537,8 +537,8 @@ } CX_TEST(test_hash_map_clone) { - CxMap *dst = cxHashMapCreateSimple(sizeof(int)); - CxMap *src = cxHashMapCreateSimple(sizeof(int)); + CxMap *dst = cxHashMapCreate(NULL, sizeof(int), 0); + CxMap *src = cxHashMapCreate(NULL, sizeof(int), 0); const char *exist_keys[] = {"k1", "k2", "k3"}; int exists[] = {1, 3, 4}; const char *source_keys[] = {"k4", "k2", "k5"}; @@ -566,8 +566,8 @@ } CX_TEST(test_hash_map_clone_alloc_fail) { - CxMap *dst = cxHashMapCreateSimple(sizeof(int)); - CxMap *src = cxHashMapCreateSimple(sizeof(int)); + CxMap *dst = cxHashMapCreate(NULL, sizeof(int), 0); + CxMap *src = cxHashMapCreate(NULL, sizeof(int), 0); const char *exist_keys[] = {"k1", "k2", "k3"}; int exists[] = {1, 3, 4}; const char *source_keys[] = {"k4", "k2", "k5"}; @@ -602,9 +602,9 @@ CxTestingAllocator talloc; cx_testing_allocator_init(&talloc); CxAllocator *allocator = &talloc.base; - CxMap *dst = cxHashMapCreateSimple(CX_STORE_POINTERS); - cxDefineAdvancedDestructor(dst, cxFree, allocator); - CxMap *src = cxHashMapCreateSimple(CX_STORE_POINTERS); + CxMap *dst = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); + cxSetAdvancedDestructor(dst, cxFree, allocator); + CxMap *src = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); const char *exist_keys[] = {"k1", "k2", "k3"}; int exists[] = {1, 3, 4}; const char *source_keys[] = {"k4", "k2", "k5"}; @@ -638,10 +638,10 @@ } CX_TEST(test_hash_map_difference) { - CxMap *dst = cxHashMapCreateSimple(sizeof(int)); + CxMap *dst = cxHashMapCreate(NULL, sizeof(int), 0); - CxMap *s1 = cxHashMapCreateSimple(CX_STORE_POINTERS); - CxMap *s2 = cxHashMapCreateSimple(CX_STORE_POINTERS); + CxMap *s1 = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); + CxMap *s2 = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); const char *s1_keys[] = {"k1", "k2", "k3"}; int s1_values[] = {1, 3, 4}; const char *s2_keys[] = {"k4", "k2", "k5"}; @@ -664,10 +664,10 @@ } CX_TEST(test_hash_map_difference_alloc_fail) { - CxMap *dst = cxHashMapCreateSimple(sizeof(int)); + CxMap *dst = cxHashMapCreate(NULL, sizeof(int), 0); - CxMap *s1 = cxHashMapCreateSimple(CX_STORE_POINTERS); - CxMap *s2 = cxHashMapCreateSimple(CX_STORE_POINTERS); + CxMap *s1 = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); + CxMap *s2 = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); const char *s1_keys[] = {"k1", "k2", "k3"}; int s1_values[] = {1, 3, 4}; const char *s2_keys[] = {"k4", "k2", "k5"}; @@ -694,9 +694,10 @@ } CX_TEST(test_hash_map_list_difference) { - CxMap *dst = cxHashMapCreateSimple(sizeof(int)); - CxMap *src = cxHashMapCreateSimple(sizeof(int)); - CxList *keys = cxArrayListCreate(NULL, cx_hash_key_cmp, sizeof(CxHashKey), 4); + CxMap *dst = cxHashMapCreate(NULL, sizeof(int), 0); + CxMap *src = cxHashMapCreate(NULL, sizeof(int), 0); + CxList *keys = cxArrayListCreate(NULL, sizeof(CxHashKey), 4); + cxSetCompareFunc(keys, cx_hash_key_cmp); const char *src_keys[] = {"k1", "k2", "k3"}; int src_values[] = {1, 3, 4}; @@ -722,9 +723,10 @@ } CX_TEST(test_hash_map_list_difference_alloc_fail) { - CxMap *dst = cxHashMapCreateSimple(sizeof(int)); - CxMap *src = cxHashMapCreateSimple(sizeof(int)); - CxList *keys = cxArrayListCreate(NULL, cx_hash_key_cmp, sizeof(CxHashKey), 4); + CxMap *dst = cxHashMapCreate(NULL, sizeof(int), 0); + CxMap *src = cxHashMapCreate(NULL, sizeof(int), 0); + CxList *keys = cxArrayListCreate(NULL, sizeof(CxHashKey), 4); + cxSetCompareFunc(keys, cx_hash_key_cmp); const char *src_keys[] = {"k1", "k2", "k3"}; int src_values[] = {1, 3, 4}; @@ -754,11 +756,11 @@ } CX_TEST(test_hash_map_difference_non_empty_target) { - CxMap *dst = cxHashMapCreateSimple(CX_STORE_POINTERS); - cxDefineAdvancedDestructor(dst, cxFree, (void*) cxDefaultAllocator); + CxMap *dst = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); + cxSetAdvancedDestructor(dst, cxFree, (void*) cxDefaultAllocator); - CxMap *s1 = cxHashMapCreateSimple(sizeof(int)); - CxMap *s2 = cxHashMapCreateSimple(sizeof(int)); + CxMap *s1 = cxHashMapCreate(NULL, sizeof(int), 0); + CxMap *s2 = cxHashMapCreate(NULL, sizeof(int), 0); const char *s1_keys[] = {"k1", "k2", "k3"}; int s1_values[] = {1, 3, 4}; const char *s2_keys[] = {"k4", "k2", "k5"}; @@ -788,10 +790,11 @@ } CX_TEST(test_hash_map_list_difference_non_empty_target) { - CxMap *dst = cxHashMapCreateSimple(CX_STORE_POINTERS); - cxDefineAdvancedDestructor(dst, cxFree, (void*) cxDefaultAllocator); - CxMap *src = cxHashMapCreateSimple(sizeof(int)); - CxList *keys = cxArrayListCreate(NULL, cx_hash_key_cmp, sizeof(CxHashKey), 4); + CxMap *dst = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); + cxSetAdvancedDestructor(dst, cxFree, (void*) cxDefaultAllocator); + CxMap *src = cxHashMapCreate(NULL, sizeof(int), 0); + CxList *keys = cxArrayListCreate(NULL, sizeof(CxHashKey), 4); + cxSetCompareFunc(keys, cx_hash_key_cmp); const char *src_keys[] = {"k1", "k2", "k3"}; int src_values[] = {1, 3, 4}; @@ -827,11 +830,11 @@ CxTestingAllocator talloc; cx_testing_allocator_init(&talloc); CxAllocator *allocator = &talloc.base; - CxMap *dst = cxHashMapCreateSimple(CX_STORE_POINTERS); - cxDefineAdvancedDestructor(dst, cxFree, allocator); + CxMap *dst = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); + cxSetAdvancedDestructor(dst, cxFree, allocator); - CxMap *s1 = cxHashMapCreateSimple(CX_STORE_POINTERS); - CxMap *s2 = cxHashMapCreateSimple(CX_STORE_POINTERS); + CxMap *s1 = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); + CxMap *s2 = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); const char *s1_keys[] = {"k1", "k2", "k3"}; int s1_values[] = {1, 3, 4}; const char *s2_keys[] = {"k4", "k2", "k5"}; @@ -858,10 +861,10 @@ } CX_TEST(test_hash_map_intersection) { - CxMap *dst = cxHashMapCreateSimple(sizeof(int)); + CxMap *dst = cxHashMapCreate(NULL, sizeof(int), 0); - CxMap *s1 = cxHashMapCreateSimple(CX_STORE_POINTERS); - CxMap *s2 = cxHashMapCreateSimple(CX_STORE_POINTERS); + CxMap *s1 = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); + CxMap *s2 = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); const char *s1_keys[] = {"k1", "k2", "k3", "k4"}; int s1_values[] = {1, 3, 4, 6}; const char *s2_keys[] = {"k4", "k5", "k2", "k6"}; @@ -883,10 +886,10 @@ } CX_TEST(test_hash_map_intersection_alloc_fail) { - CxMap *dst = cxHashMapCreateSimple(sizeof(int)); + CxMap *dst = cxHashMapCreate(NULL, sizeof(int), 0); - CxMap *s1 = cxHashMapCreateSimple(CX_STORE_POINTERS); - CxMap *s2 = cxHashMapCreateSimple(CX_STORE_POINTERS); + CxMap *s1 = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); + CxMap *s2 = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); const char *s1_keys[] = {"k1", "k2", "k3", "k4"}; int s1_values[] = {1, 3, 4, 6}; const char *s2_keys[] = {"k4", "k5", "k2", "k6"}; @@ -912,9 +915,10 @@ } CX_TEST(test_hash_map_list_intersection) { - CxMap *dst = cxHashMapCreateSimple(sizeof(int)); - CxMap *src = cxHashMapCreateSimple(sizeof(int)); - CxList *keys = cxArrayListCreate(NULL, cx_hash_key_cmp, sizeof(CxHashKey), 4); + CxMap *dst = cxHashMapCreate(NULL, sizeof(int), 0); + CxMap *src = cxHashMapCreate(NULL, sizeof(int), 0); + CxList *keys = cxArrayListCreate(NULL, sizeof(CxHashKey), 4); + cxSetCompareFunc(keys, cx_hash_key_cmp); const char *src_keys[] = {"k1", "k2", "k3", "k4"}; int src_values[] = {1, 3, 4, 6}; @@ -939,9 +943,10 @@ } CX_TEST(test_hash_map_list_intersection_alloc_fail) { - CxMap *dst = cxHashMapCreateSimple(sizeof(int)); - CxMap *src = cxHashMapCreateSimple(sizeof(int)); - CxList *keys = cxArrayListCreate(NULL, cx_hash_key_cmp, sizeof(CxHashKey), 4); + CxMap *dst = cxHashMapCreate(NULL, sizeof(int), 0); + CxMap *src = cxHashMapCreate(NULL, sizeof(int), 0); + CxList *keys = cxArrayListCreate(NULL, sizeof(CxHashKey), 4); + cxSetCompareFunc(keys, cx_hash_key_cmp); const char *src_keys[] = {"k1", "k2", "k3", "k4"}; int src_values[] = {1, 3, 4, 6}; @@ -970,11 +975,11 @@ } CX_TEST(test_hash_map_intersection_non_empty_target) { - CxMap *dst = cxHashMapCreateSimple(CX_STORE_POINTERS); - cxDefineAdvancedDestructor(dst, cxFree, (void*) cxDefaultAllocator); + CxMap *dst = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); + cxSetAdvancedDestructor(dst, cxFree, (void*) cxDefaultAllocator); - CxMap *s1 = cxHashMapCreateSimple(sizeof(int)); - CxMap *s2 = cxHashMapCreateSimple(sizeof(int)); + CxMap *s1 = cxHashMapCreate(NULL, sizeof(int), 0); + CxMap *s2 = cxHashMapCreate(NULL, sizeof(int), 0); const char *s1_keys[] = {"k1", "k2", "k3", "k4"}; int s1_values[] = {1, 3, 4, 6}; const char *s2_keys[] = {"k4", "k5", "k2", "k6"}; @@ -1003,10 +1008,11 @@ } CX_TEST(test_hash_map_list_intersection_non_empty_target) { - CxMap *dst = cxHashMapCreateSimple(CX_STORE_POINTERS); - cxDefineAdvancedDestructor(dst, cxFree, (void*) cxDefaultAllocator); - CxMap *src = cxHashMapCreateSimple(sizeof(int)); - CxList *keys = cxArrayListCreate(NULL, cx_hash_key_cmp, sizeof(CxHashKey), 4); + CxMap *dst = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); + cxSetAdvancedDestructor(dst, cxFree, (void*) cxDefaultAllocator); + CxMap *src = cxHashMapCreate(NULL, sizeof(int), 0); + CxList *keys = cxArrayListCreate(NULL, sizeof(CxHashKey), 4); + cxSetCompareFunc(keys, cx_hash_key_cmp); const char *src_keys[] = {"k1", "k2", "k3", "k4"}; int src_values[] = {1, 3, 4, 6}; @@ -1042,11 +1048,11 @@ CxTestingAllocator talloc; cx_testing_allocator_init(&talloc); CxAllocator *allocator = &talloc.base; - CxMap *dst = cxHashMapCreateSimple(CX_STORE_POINTERS); - cxDefineAdvancedDestructor(dst, cxFree, allocator); + CxMap *dst = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); + cxSetAdvancedDestructor(dst, cxFree, allocator); - CxMap *s1 = cxHashMapCreateSimple(CX_STORE_POINTERS); - CxMap *s2 = cxHashMapCreateSimple(CX_STORE_POINTERS); + CxMap *s1 = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); + CxMap *s2 = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); const char *s1_keys[] = {"k1", "k2", "k3", "k4"}; int s1_values[] = {1, 3, 4, 6}; const char *s2_keys[] = {"k4", "k5", "k2", "k6"}; @@ -1070,8 +1076,8 @@ } CX_TEST(test_hash_map_union) { - CxMap *s1 = cxHashMapCreateSimple(sizeof(int)); - CxMap *s2 = cxHashMapCreateSimple(sizeof(int)); + CxMap *s1 = cxHashMapCreate(NULL, sizeof(int), 0); + CxMap *s2 = cxHashMapCreate(NULL, sizeof(int), 0); const char *s1_keys[] = {"k1", "k2", "k3", "k4"}; int s1_values[] = {1, 3, 4, 6}; const char *s2_keys[] = {"k4", "k5", "k2", "k6"}; @@ -1099,11 +1105,11 @@ CxTestingAllocator talloc; cx_testing_allocator_init(&talloc); CxAllocator *allocator = &talloc.base; - CxMap *dst = cxHashMapCreateSimple(CX_STORE_POINTERS); - cxDefineAdvancedDestructor(dst, cxFree, allocator); + CxMap *dst = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); + cxSetAdvancedDestructor(dst, cxFree, allocator); - CxMap *s1 = cxHashMapCreateSimple(sizeof(int)); - CxMap *s2 = cxHashMapCreateSimple(sizeof(int)); + CxMap *s1 = cxHashMapCreate(NULL, sizeof(int), 0); + CxMap *s2 = cxHashMapCreate(NULL, sizeof(int), 0); const char *s1_keys[] = {"k1", "k2", "k3", "k4"}; int s1_values[] = {1, 3, 4, 6}; const char *s2_keys[] = {"k4", "k5", "k2", "k6"}; @@ -1132,8 +1138,8 @@ } CX_TEST(test_hash_map_union_alloc_fail) { - CxMap *s1 = cxHashMapCreateSimple(sizeof(int)); - CxMap *s2 = cxHashMapCreateSimple(sizeof(int)); + CxMap *s1 = cxHashMapCreate(NULL, sizeof(int), 0); + CxMap *s2 = cxHashMapCreate(NULL, sizeof(int), 0); const char *s1_keys[] = {"k1", "k2", "k3", "k4"}; int s1_values[] = {1, 3, 4, 6}; const char *s2_keys[] = {"k4", "k5", "k2", "k6"}; @@ -1163,26 +1169,26 @@ CX_TEST(test_hash_map_simple_clones) { int v = 47; // the value does not matter in this test - CxMap *a = cxHashMapCreateSimple(sizeof(int)); + CxMap *a = cxHashMapCreate(NULL, sizeof(int), 0); cxMapPut(a, "k1", &v); cxMapPut(a, "k2", &v); cxMapPut(a, "k3", &v); cxMapPut(a, "k4", &v); - CxMap *b = cxHashMapCreateSimple(sizeof(int)); + CxMap *b = cxHashMapCreate(NULL, sizeof(int), 0); cxMapPut(b, "k0", &v); cxMapPut(b, "k2", &v); cxMapPut(b, "k5", &v); - CxMap *c = cxHashMapCreateSimple(sizeof(int)); + CxMap *c = cxHashMapCreate(NULL, sizeof(int), 0); cxMapPut(c, "k3", &v); cxMapPut(c, "k4", &v); cxMapPut(c, "k5", &v); CxHashKey k; - CxList *kl1 = cxArrayListCreateSimple(sizeof(CxHashKey), 4); - cxCollectionCompareFunc(kl1, cx_hash_key_cmp); + CxList *kl1 = cxArrayListCreate(NULL, sizeof(CxHashKey), 4); + cxSetCompareFunc(kl1, cx_hash_key_cmp); k = CX_HASH_KEY("k0"); cxListAdd(kl1, &k); k = CX_HASH_KEY("k2"); @@ -1190,8 +1196,8 @@ k = CX_HASH_KEY("k5"); cxListAdd(kl1, &k); - CxList *kl2 = cxArrayListCreateSimple(sizeof(CxHashKey), 4); - cxCollectionCompareFunc(kl2, cx_hash_key_cmp); + CxList *kl2 = cxArrayListCreate(NULL, sizeof(CxHashKey), 4); + cxSetCompareFunc(kl2, cx_hash_key_cmp); k = CX_HASH_KEY("k3"); cxListAdd(kl2, &k); k = CX_HASH_KEY("k4"); @@ -1199,8 +1205,8 @@ k = CX_HASH_KEY("k5"); cxListAdd(kl2, &k); - CxMap *d1 = cxHashMapCreateSimple(sizeof(int)); - CxMap *d2 = cxHashMapCreateSimple(sizeof(int)); + CxMap *d1 = cxHashMapCreate(NULL, sizeof(int), 0); + CxMap *d2 = cxHashMapCreate(NULL, sizeof(int), 0); CX_TEST_DO { CX_TEST_ASSERT(0 == cxMapCloneShallow(d1, a)); @@ -1264,8 +1270,8 @@ } CX_TEST(test_hash_map_compare) { - CxMap *map1 = cxHashMapCreateSimple(sizeof(int)); - CxMap *map2 = cxHashMapCreateSimple(CX_STORE_POINTERS); + CxMap *map1 = cxHashMapCreate(NULL, sizeof(int), 0); + CxMap *map2 = cxHashMapCreate(NULL, CX_STORE_POINTERS, 0); // TODO: fix specification of compare function once #622 is realized map1->collection.cmpfunc = cx_cmp_int; map2->collection.cmpfunc = cx_cmp_int;