Added callbacks to deque, hashmap and hashset, and fixed some other missing things

This commit is contained in:
Leonardo committed 2020-03-19 17:58:56 -03:00
1 parent 062c03091c
commit cf5ceb9c48
8 files changed
+1209 -925

No files matched your search

+1
View File
@@ -483,6 +483,7 @@ CMC_CREATE_UNIT(bidimap_test, true, {
cmc_assert_equals(int32_t, cmc_flags.OK, bm_flag(map));
// copy_of
map->flag = cmc_flags.ERROR;
struct bidimap *map2 = bm_copy_of(map);
cmc_assert_equals(int32_t, cmc_flags.OK, bm_flag(map2));
+38 -1
View File
@@ -718,7 +718,6 @@ CMC_CREATE_UNIT(deque_test, true, {
// copy_of
d->flag = cmc_flags.ERROR;
struct deque *d2 = d_copy_of(d);
cmc_assert_equals(int32_t, cmc_flags.OK, d_flag(d));
cmc_assert_equals(int32_t, cmc_flags.OK, d_flag(d2));
@@ -738,4 +737,42 @@ CMC_CREATE_UNIT(deque_test, true, {
d_free(d);
d_free(d2);
});
CMC_CREATE_TEST(callbacks, {
struct deque *d = d_new_custom(100, d_ftab_val, NULL, callbacks);
total_create = 0;
total_read = 0;
total_update = 0;
total_delete = 0;
total_resize = 0;
cmc_assert(d_push_front(d, 10));
cmc_assert_equals(int32_t, 1, total_create);
cmc_assert(d_push_back(d, 10));
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert(d_pop_front(d));
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert(d_pop_back(d));
cmc_assert_equals(int32_t, 2, total_delete);
cmc_assert(d_push_front(d, 10));
cmc_assert(d_push_front(d, 5));
cmc_assert_equals(int32_t, 4, total_create);
cmc_assert_equals(size_t, 5, d_front(d));
cmc_assert_equals(int32_t, 1, total_read);
cmc_assert_equals(size_t, 10, d_back(d));
cmc_assert_equals(int32_t, 2, total_read);
cmc_assert(d_contains(d, 10));
cmc_assert(!d_contains(d, 1));
cmc_assert_equals(int32_t, 4, total_read);
d_free(d);
});
});
+39
View File
@@ -602,4 +602,43 @@ CMC_CREATE_UNIT(hashmap_test, true, {
hm_free(map);
hm_free(map2);
});
CMC_CREATE_TEST(callbacks, {
struct hashmap *map = hm_new_custom(100, 0.6, hm_ftab_key, hm_ftab_val, NULL, callbacks);
total_create = 0;
total_read = 0;
total_update = 0;
total_delete = 0;
total_resize = 0;
cmc_assert(hm_insert(map, 1, 2));
cmc_assert_equals(int32_t, 1, total_create);
cmc_assert(hm_update(map, 1, 10, NULL));
cmc_assert_equals(int32_t, 1, total_update);
cmc_assert(hm_remove(map, 1, NULL));
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert(hm_insert(map, 1, 2));
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert(hm_max(map, NULL, NULL));
cmc_assert_equals(int32_t, 1, total_read);
cmc_assert(hm_min(map, NULL, NULL));
cmc_assert_equals(int32_t, 2, total_read);
cmc_assert_equals(size_t, 2, hm_get(map, 1));
cmc_assert_equals(int32_t, 3, total_read);
cmc_assert_not_equals(ptr, NULL, hm_get_ref(map, 1));
cmc_assert_equals(int32_t, 4, total_read);
cmc_assert(hm_contains(map, 1));
cmc_assert_equals(int32_t, 5, total_read);
hm_free(map);
});
});
+31
View File
@@ -458,6 +458,7 @@ CMC_CREATE_UNIT(hashset_test, true, {
cmc_assert_equals(int32_t, cmc_flags.OK, hs_flag(set));
// copy
set->flag = cmc_flags.ERROR;\
struct hashset *set2 = hs_copy_of(set);
cmc_assert_equals(int32_t, cmc_flags.OK, hs_flag(set));
@@ -480,4 +481,34 @@ CMC_CREATE_UNIT(hashset_test, true, {
hs_free(set);
hs_free(set2);
});
CMC_CREATE_TEST(callbacks, {
struct hashset *set = hs_new_custom(100, 0.6, hs_ftab_val, NULL, callbacks);
total_create = 0;
total_read = 0;
total_update = 0;
total_delete = 0;
total_resize = 0;
cmc_assert(hs_insert(set, 1));
cmc_assert_equals(int32_t, 1, total_create);
cmc_assert(hs_remove(set, 1));
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert(hs_insert(set, 1));
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert(hs_max(set, NULL));
cmc_assert_equals(int32_t, 1, total_read);
cmc_assert(hs_min(set, NULL));
cmc_assert_equals(int32_t, 2, total_read);
cmc_assert(hs_contains(set, 1));
cmc_assert_equals(int32_t, 3, total_read);
hs_free(set);
});
});