Adding functions table to linkedlist and list and some minor fixes from previous commit

This commit is contained in:
Leonardo committed 2020-02-06 17:13:24 -03:00
1 parent 64c3a99922
commit 683decfa64
6 files changed
+233 -160

No files matched your search

+20 -12
View File
@@ -7,20 +7,28 @@
CMC_GENERATE_LINKEDLIST(ll, linkedlist, size_t)
struct linkedlist_ftab_val *ll_ftab_val =
&(struct linkedlist_ftab_val){ .cmp = cmp,
.cpy = copy,
.str = str,
.free = custom_free,
.hash = hash,
.pri = pri };
CMC_CREATE_UNIT(linkedlist_test, true, {
CMC_CREATE_TEST(new, {
struct linkedlist *ll = ll_new();
struct linkedlist *ll = ll_new(ll_ftab_val);
cmc_assert_not_equals(ptr, NULL, ll);
cmc_assert_equals(size_t, 0, ll_count(ll));
cmc_assert_equals(ptr, NULL, ll->head);
cmc_assert_equals(ptr, NULL, ll->tail);
ll_free(ll, NULL);
ll_free(ll);
});
CMC_CREATE_TEST(clear[count capacity], {
struct linkedlist *ll = ll_new();
struct linkedlist *ll = ll_new(ll_ftab_val);
cmc_assert_not_equals(ptr, NULL, ll);
@@ -29,27 +37,27 @@ CMC_CREATE_UNIT(linkedlist_test, true, {
cmc_assert_equals(size_t, 50, ll_count(ll));
ll_clear(ll, NULL);
ll_clear(ll);
cmc_assert_equals(size_t, 0, ll_count(ll));
ll_free(ll, NULL);
ll_free(ll);
});
CMC_CREATE_TEST(clear[count = 0], {
struct linkedlist *ll = ll_new();
struct linkedlist *ll = ll_new(ll_ftab_val);
cmc_assert_not_equals(ptr, NULL, ll);
ll_clear(ll, NULL);
ll_clear(ll);
cmc_assert_equals(size_t, 0, ll_count(ll));
ll_free(ll, NULL);
ll_free(ll);
});
CMC_CREATE_TEST(push_front[count], {
struct linkedlist *ll = ll_new();
struct linkedlist *ll = ll_new(ll_ftab_val);
cmc_assert_not_equals(ptr, NULL, ll);
@@ -59,11 +67,11 @@ CMC_CREATE_UNIT(linkedlist_test, true, {
cmc_assert_not_equals(ptr, NULL, ll->tail);
cmc_assert_equals(size_t, 1, ll_count(ll));
ll_free(ll, NULL);
ll_free(ll);
});
CMC_CREATE_TEST(push_front[item preservation], {
struct linkedlist *ll = ll_new();
struct linkedlist *ll = ll_new(ll_ftab_val);
cmc_assert_not_equals(ptr, NULL, ll);
@@ -73,6 +81,6 @@ CMC_CREATE_UNIT(linkedlist_test, true, {
for (size_t i = 0; i < ll_count(ll); i++)
cmc_assert_equals(size_t, ll_get(ll, i), ll_count(ll) - i - 1);
ll_free(ll, NULL);
ll_free(ll);
});
});
+54 -47
View File
@@ -7,32 +7,39 @@
CMC_GENERATE_LIST(l, list, size_t)
struct list_ftab_val *l_ftab_val = &(struct list_ftab_val){ .cmp = cmp,
.cpy = copy,
.str = str,
.free = custom_free,
.hash = hash,
.pri = pri };
CMC_CREATE_UNIT(list_test, true, {
CMC_CREATE_TEST(new, {
struct list *l = l_new(1000000);
struct list *l = l_new(1000000, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
cmc_assert_not_equals(ptr, NULL, l->buffer);
cmc_assert_equals(size_t, 1000000, l_capacity(l));
cmc_assert_equals(size_t, 0, l_count(l));
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(new[capacity = 0], {
struct list *l = l_new(0);
struct list *l = l_new(0, l_ftab_val);
cmc_assert_equals(ptr, NULL, l);
});
CMC_CREATE_TEST(new[capacity = UINT64_MAX], {
struct list *l = l_new(UINT64_MAX);
struct list *l = l_new(UINT64_MAX, l_ftab_val);
cmc_assert_equals(ptr, NULL, l);
});
CMC_CREATE_TEST(clear[count capacity], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
@@ -41,16 +48,16 @@ CMC_CREATE_UNIT(list_test, true, {
cmc_assert_equals(size_t, 50, l_count(l));
l_clear(l, NULL);
l_clear(l);
cmc_assert_equals(size_t, 0, l_count(l));
cmc_assert_equals(size_t, 100, l_capacity(l));
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(buffer_growth[capacity = 1], {
struct list *l = l_new(1);
struct list *l = l_new(1, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
@@ -62,11 +69,11 @@ CMC_CREATE_UNIT(list_test, true, {
for (size_t i = 0; i < 100; i++)
cmc_assert_equals(size_t, i, l_get(l, i));
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(push_front[count], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
@@ -75,11 +82,11 @@ CMC_CREATE_UNIT(list_test, true, {
cmc_assert_equals(size_t, 250, l_count(l));
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(push_front[capacity], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
@@ -88,11 +95,11 @@ CMC_CREATE_UNIT(list_test, true, {
cmc_assert_lesser_equals(size_t, l_capacity(l), l_count(l));
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(push_front[item preservation], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
@@ -102,11 +109,11 @@ CMC_CREATE_UNIT(list_test, true, {
for (size_t i = 0; i < l_count(l); i++)
cmc_assert_equals(size_t, l_get(l, i), l_count(l) - i - 1);
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(push_at[count], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
@@ -118,11 +125,11 @@ CMC_CREATE_UNIT(list_test, true, {
cmc_assert_equals(size_t, 250, l_count(l));
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(push_at[capacity], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
@@ -134,11 +141,11 @@ CMC_CREATE_UNIT(list_test, true, {
cmc_assert_lesser_equals(size_t, l_capacity(l), l_count(l));
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(push_at[item preservation], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
@@ -151,11 +158,11 @@ CMC_CREATE_UNIT(list_test, true, {
for (size_t i = 0; i < l_count(l); i++)
cmc_assert_equals(size_t, l_get(l, i), i);
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(push_back[count], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
@@ -164,11 +171,11 @@ CMC_CREATE_UNIT(list_test, true, {
cmc_assert_equals(size_t, 250, l_count(l));
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(push_back[capacity], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
@@ -177,11 +184,11 @@ CMC_CREATE_UNIT(list_test, true, {
cmc_assert_lesser_equals(size_t, l_capacity(l), l_count(l));
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(push_back[item preservation], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
@@ -191,11 +198,11 @@ CMC_CREATE_UNIT(list_test, true, {
for (size_t i = 0; i < l_count(l); i++)
cmc_assert_equals(size_t, l_get(l, i), i);
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(pop_front[count], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
@@ -204,11 +211,11 @@ CMC_CREATE_UNIT(list_test, true, {
cmc_assert(l_pop_front(l));
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(pop_front[item preservation], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
@@ -220,30 +227,30 @@ CMC_CREATE_UNIT(list_test, true, {
for (size_t i = 0; i < l_count(l); i++)
cmc_assert_equals(size_t, l_get(l, i), i + 1);
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(pop_front[count = 0], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
cmc_assert(!l_pop_front(l));
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(pop_front[count = 1], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
cmc_assert(l_push_back(l, 10));
cmc_assert(l_pop_front(l));
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(pop_front[buffer_clear], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
cmc_assert(l_push_back(l, 1));
@@ -253,20 +260,20 @@ CMC_CREATE_UNIT(list_test, true, {
cmc_assert_equals(size_t, 0, l->buffer[1]);
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(pop_at[count = 0], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
cmc_assert(!l_pop_at(l, 1));
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(pop_at[count = 1], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
cmc_assert(l_push_back(l, 1));
@@ -274,11 +281,11 @@ CMC_CREATE_UNIT(list_test, true, {
cmc_assert_equals(size_t, 0, l->buffer[0]);
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(pop_at[buffer_clear], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
cmc_assert(l_push_back(l, 1));
@@ -286,25 +293,25 @@ CMC_CREATE_UNIT(list_test, true, {
cmc_assert(l_push_back(l, 3));
cmc_assert(l_pop_at(l, 1));
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(pop_back[count = 0], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
cmc_assert(!l_pop_back(l));
l_free(l, NULL);
l_free(l);
});
CMC_CREATE_TEST(pop_back[count = 1], {
struct list *l = l_new(100);
struct list *l = l_new(100, l_ftab_val);
cmc_assert_not_equals(ptr, NULL, l);
cmc_assert(l_push_back(l, 10));
cmc_assert(l_pop_back(l));
l_free(l, NULL);
l_free(l);
});
})