Added callbacks to treemap and treeset

This commit is contained in:
Leonardo committed 2020-03-31 15:41:27 -03:00
1 parent ee1174d1b5
commit 4c16cae56d
4 files changed
+191 -8

No files matched your search

+75
View File
@@ -139,4 +139,79 @@ CMC_CREATE_UNIT(treemap_test, true, {
tm_free(map);
tm_free(map2);
});
CMC_CREATE_TEST(callbacks, {
struct treemap *map =
tm_new_custom(tm_ftab_key, tm_ftab_val, NULL, callbacks);
cmc_assert_not_equals(ptr, NULL, map);
total_create = 0;
total_read = 0;
total_update = 0;
total_delete = 0;
total_resize = 0;
cmc_assert(tm_insert(map, 1, 10));
cmc_assert_equals(int32_t, 1, total_create);
cmc_assert(tm_update(map, 1, 2, NULL));
cmc_assert_equals(int32_t, 1, total_update);
cmc_assert(tm_remove(map, 1, NULL));
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert(tm_insert(map, 1, 2));
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert(tm_max(map, NULL, NULL));
cmc_assert_equals(int32_t, 1, total_read);
cmc_assert(tm_min(map, NULL, NULL));
cmc_assert_equals(int32_t, 2, total_read);
cmc_assert_equals(size_t, 2, tm_get(map, 1));
cmc_assert_equals(int32_t, 3, total_read);
cmc_assert_not_equals(ptr, NULL, tm_get_ref(map, 1));
cmc_assert_equals(int32_t, 4, total_read);
cmc_assert(tm_contains(map, 1));
cmc_assert_equals(int32_t, 5, total_read);
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert_equals(int32_t, 5, total_read);
cmc_assert_equals(int32_t, 1, total_update);
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert_equals(int32_t, 0, total_resize);
tm_customize(map, NULL, NULL);
tm_clear(map);
cmc_assert(tm_insert(map, 1, 10));
cmc_assert(tm_update(map, 1, 2, NULL));
cmc_assert(tm_remove(map, 1, NULL));
cmc_assert(tm_insert(map, 1, 2));
cmc_assert(tm_max(map, NULL, NULL));
cmc_assert(tm_min(map, NULL, NULL));
cmc_assert_equals(size_t, 2, tm_get(map, 1));
cmc_assert_not_equals(ptr, NULL, tm_get_ref(map, 1));
cmc_assert(tm_contains(map, 1));
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert_equals(int32_t, 5, total_read);
cmc_assert_equals(int32_t, 1, total_update);
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert_equals(int32_t, 0, total_resize);
cmc_assert_equals(ptr, NULL, map->callbacks);
total_create = 0;
total_read = 0;
total_update = 0;
total_delete = 0;
total_resize = 0;
tm_free(map);
});
});
+62
View File
@@ -102,4 +102,66 @@ CMC_CREATE_UNIT(treeset_test, true, {
ts_free(set);
ts_free(set2);
});
CMC_CREATE_TEST(callbacks, {
struct treeset *set = ts_new_custom(ts_ftab_val, NULL, callbacks);
cmc_assert_not_equals(ptr, NULL, set);
total_create = 0;
total_read = 0;
total_update = 0;
total_delete = 0;
total_resize = 0;
cmc_assert(ts_insert(set, 10));
cmc_assert_equals(int32_t, 1, total_create);
cmc_assert(ts_remove(set, 10));
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert(ts_insert(set, 1));
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert(ts_max(set, NULL));
cmc_assert_equals(int32_t, 1, total_read);
cmc_assert(ts_min(set, NULL));
cmc_assert_equals(int32_t, 2, total_read);
cmc_assert(ts_contains(set, 1));
cmc_assert_equals(int32_t, 3, total_read);
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert_equals(int32_t, 3, total_read);
cmc_assert_equals(int32_t, 0, total_update);
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert_equals(int32_t, 0, total_resize);
ts_customize(set, NULL, NULL);
ts_clear(set);
cmc_assert(ts_insert(set, 10));
cmc_assert(ts_remove(set, 10));
cmc_assert(ts_insert(set, 1));
cmc_assert(ts_max(set, NULL));
cmc_assert(ts_min(set, NULL));
cmc_assert(ts_contains(set, 1));
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert_equals(int32_t, 3, total_read);
cmc_assert_equals(int32_t, 0, total_update);
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert_equals(int32_t, 0, total_resize);
cmc_assert_equals(ptr, NULL, set->callbacks);
total_create = 0;
total_read = 0;
total_update = 0;
total_delete = 0;
total_resize = 0;
ts_free(set);
});
});