Added callbacks to linkedlist and list

This commit is contained in:
Leonardo committed 2020-03-20 15:18:12 -03:00
1 parent 5b8f64b421
commit 701a24f47c
4 files changed
+225 -8

No files matched your search

+48
View File
@@ -256,4 +256,52 @@ CMC_CREATE_UNIT(linkedlist_test, true, {
ll_free(ll);
ll_free(ll2);
});
CMC_CREATE_TEST(callbacks, {
struct linkedlist *ll = ll_new_custom(ll_ftab_val, NULL, callbacks);
total_create = 0;
total_read = 0;
total_update = 0;
total_delete = 0;
total_resize = 0;
cmc_assert(ll_push_front(ll, 10));
cmc_assert_equals(int32_t, 1, total_create);
cmc_assert(ll_push_back(ll, 10));
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert(ll_push_at(ll, 10, 1));
cmc_assert_equals(int32_t, 3, total_create);
cmc_assert(ll_pop_at(ll, 1));
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert(ll_pop_front(ll));
cmc_assert_equals(int32_t, 2, total_delete);
cmc_assert(ll_pop_back(ll));
cmc_assert_equals(int32_t, 3, total_delete);
cmc_assert(ll_push_back(ll, 10));
cmc_assert_equals(int32_t, 4, total_create);
cmc_assert_equals(size_t, 10, ll_front(ll));
cmc_assert_equals(int32_t, 1, total_read);
cmc_assert_equals(size_t, 10, ll_back(ll));
cmc_assert_equals(int32_t, 2, total_read);
cmc_assert_equals(size_t, 10, ll_get(ll, 0));
cmc_assert_equals(int32_t, 3, total_read);
cmc_assert_not_equals(ptr, NULL, ll_get_ref(ll, 0));
cmc_assert_equals(int32_t, 4, total_read);
cmc_assert(ll_contains(ll, 10));
cmc_assert_equals(int32_t, 5, total_read);
ll_free(ll);
});
});
+64
View File
@@ -496,4 +496,68 @@ CMC_CREATE_UNIT(list_test, true, {
l_free(l2);
l_free(l3);
});
CMC_CREATE_TEST(callbacks, {
struct list *l = l_new_custom(100, l_ftab_val, NULL, callbacks);
total_create = 0;
total_read = 0;
total_update = 0;
total_delete = 0;
total_resize = 0;
cmc_assert(l_push_front(l, 10));
cmc_assert_equals(int32_t, 1, total_create);
cmc_assert(l_push_back(l, 10));
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert(l_push_at(l, 10, 1));
cmc_assert_equals(int32_t, 3, total_create);
cmc_assert(l_pop_at(l, 1));
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert(l_pop_front(l));
cmc_assert_equals(int32_t, 2, total_delete);
cmc_assert(l_pop_back(l));
cmc_assert_equals(int32_t, 3, total_delete);
cmc_assert(l_push_back(l, 10));
cmc_assert_equals(int32_t, 4, total_create);
cmc_assert_equals(size_t, 10, l_front(l));
cmc_assert_equals(int32_t, 1, total_read);
cmc_assert_equals(size_t, 10, l_back(l));
cmc_assert_equals(int32_t, 2, total_read);
cmc_assert_equals(size_t, 10, l_get(l, 0));
cmc_assert_equals(int32_t, 3, total_read);
cmc_assert_not_equals(ptr, NULL, l_get_ref(l, 0));
cmc_assert_equals(int32_t, 4, total_read);
cmc_assert(l_contains(l, 10));
cmc_assert_equals(int32_t, 5, total_read);
cmc_assert(l_seq_push_front(l, (size_t[]) {7, 8, 9}, 3));
cmc_assert_equals(int32_t, 5, total_create);
cmc_assert(l_seq_push_back(l, (size_t[]) {14, 15, 16}, 3));
cmc_assert_equals(int32_t, 6, total_create);
cmc_assert(l_seq_push_at(l, (size_t[]) {11, 12, 13}, 3, 4));
cmc_assert_equals(int32_t, 7, total_create);
cmc_assert(l_seq_pop_at(l, 1, 4));
cmc_assert_equals(int32_t, 4, total_delete);
struct list *l2 = l_seq_sublist(l, 0, 4);
cmc_assert_equals(int32_t, 5, total_delete);
l_free(l);
l_free(l2);
});
})