static void test_hashmap_copy(void) { Hashmap *m, *copy; char *val1, *val2, *val3, *val4, *r; val1 = strdup("val1"); assert_se(val1); val2 = strdup("val2"); assert_se(val2); val3 = strdup("val3"); assert_se(val3); val4 = strdup("val4"); assert_se(val4); m = hashmap_new(&string_hash_ops); hashmap_put(m, "key 1", val1); hashmap_put(m, "key 2", val2); hashmap_put(m, "key 3", val3); hashmap_put(m, "key 4", val4); copy = hashmap_copy(m); r = hashmap_get(copy, "key 1"); assert_se(streq(r, "val1")); r = hashmap_get(copy, "key 2"); assert_se(streq(r, "val2")); r = hashmap_get(copy, "key 3"); assert_se(streq(r, "val3")); r = hashmap_get(copy, "key 4"); assert_se(streq(r, "val4")); hashmap_free_free(copy); hashmap_free(m); }
Set* set_copy(Set *s) { return MAKE_SET(hashmap_copy(MAKE_HASHMAP(s))); }