Added flags to linkedlist and renamed some functions

This commit is contained in:
Leonardo committed 2020-03-05 13:49:36 -03:00
1 parent 8bd297f4a3
commit 157aea6055
2 files changed
+287 -38

No files matched your search

+173
View File
@@ -83,4 +83,177 @@ CMC_CREATE_UNIT(linkedlist_test, true, {
ll_free(ll);
});
CMC_CREATE_TEST(flags, {
struct linkedlist *ll = ll_new(ll_ftab_val);
cmc_assert_not_equals(ptr, NULL, ll);
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
// clear
ll->flag = cmc_flags.ERROR;
ll_clear(ll);
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
// customize
ll->flag = cmc_flags.ERROR;
ll_customize(ll, NULL, NULL);
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
// push_front
ll->flag = cmc_flags.ERROR;
cmc_assert(ll_push_front(ll, 10));
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
// push_at
ll->flag = cmc_flags.ERROR;
cmc_assert(ll_push_at(ll, 10, 1));
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
cmc_assert(!ll_push_at(ll, 10, 300));
cmc_assert_equals(int32_t, cmc_flags.OUT_OF_RANGE, ll_flag(ll));
// push_back
ll->flag = cmc_flags.ERROR;
cmc_assert(ll_push_back(ll, 10));
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
ll_clear(ll);
// pop_front
ll->flag = cmc_flags.ERROR;
cmc_assert(!ll_pop_front(ll));
cmc_assert_equals(int32_t, cmc_flags.EMPTY, ll_flag(ll));
cmc_assert(ll_push_back(ll, 10));
cmc_assert(ll_pop_front(ll));
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
// pop_at
cmc_assert(!ll_pop_at(ll, 0));
cmc_assert_equals(int32_t, cmc_flags.EMPTY, ll_flag(ll));
cmc_assert(ll_push_front(ll, 10));
cmc_assert(!ll_pop_at(ll, 1));
cmc_assert_equals(int32_t, cmc_flags.OUT_OF_RANGE, ll_flag(ll));
cmc_assert(ll_pop_at(ll, 0));
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
// pop_back
ll->flag = cmc_flags.ERROR;
cmc_assert(!ll_pop_front(ll));
cmc_assert_equals(int32_t, cmc_flags.EMPTY, ll_flag(ll));
cmc_assert(ll_push_back(ll, 10));
cmc_assert(ll_pop_front(ll));
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
ll_clear(ll);
// front
ll_front(ll);
cmc_assert_equals(int32_t, cmc_flags.EMPTY, ll_flag(ll));
cmc_assert(ll_push_front(ll, 10));
ll->flag = cmc_flags.ERROR;
ll_front(ll);
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
ll_clear(ll);
// back
ll_back(ll);
cmc_assert_equals(int32_t, cmc_flags.EMPTY, ll_flag(ll));
cmc_assert(ll_push_front(ll, 10));
ll->flag = cmc_flags.ERROR;
ll_back(ll);
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
ll_clear(ll);
// get get_ref
ll_get(ll, 0);
cmc_assert_equals(int32_t, cmc_flags.EMPTY, ll_flag(ll));
ll->flag = cmc_flags.ERROR;
ll_get_ref(ll, 0);
cmc_assert_equals(int32_t, cmc_flags.EMPTY, ll_flag(ll));
cmc_assert(ll_push_at(ll, 10, 0));
ll->flag = cmc_flags.ERROR;
ll_get(ll, 0);
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
ll_get(ll, 1);
cmc_assert_equals(int32_t, cmc_flags.OUT_OF_RANGE, ll_flag(ll));
ll_get_ref(ll, 0);
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
ll_get_ref(ll, 1);
cmc_assert_equals(int32_t, cmc_flags.OUT_OF_RANGE, ll_flag(ll));
// contains
cmc_assert(ll_contains(ll, 10));
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
// copy_of
ll->flag = cmc_flags.ERROR;
struct linkedlist *ll2 = ll_copy_of(ll);
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll2));
// equals
ll->flag = cmc_flags.ERROR;
ll2->flag = cmc_flags.ERROR;
cmc_assert(ll_equals(ll, ll2));
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll2));
ll_clear(ll);
// get_node
struct linkedlist_node *n = ll_get_node(ll, 0);
cmc_assert_equals(int32_t, cmc_flags.EMPTY, ll_flag(ll));
cmc_assert(ll_push_at(ll, 10, 0));
n = ll_get_node(ll, 0);
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
n = ll_get_node(ll, 1);
cmc_assert_equals(int32_t, cmc_flags.OUT_OF_RANGE, ll_flag(ll));
// functions relative to node
ll_clear(ll);
cmc_assert(ll_push_front(ll, 10));
n = ll_get_node(ll, 0);
cmc_assert_not_equals(ptr, NULL, n);
// add_next
ll->flag = cmc_flags.ERROR;
cmc_assert(ll_add_next(ll, n, 11));
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
// add_prev
ll->flag = cmc_flags.ERROR;
cmc_assert(ll_add_prev(ll, n, 9));
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
// del_next
n = ll_next_node(n);
cmc_assert(!ll_del_next(ll, n));
cmc_assert_equals(int32_t, cmc_flags.INVALID, ll_flag(ll));
n = ll_prev_node(n);
cmc_assert(ll_del_next(ll, n));
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
// del_prev
n = ll_prev_node(n);
cmc_assert(!ll_del_prev(ll, n));
cmc_assert_equals(int32_t, cmc_flags.INVALID, ll_flag(ll));
n = ll_next_node(n);
cmc_assert(ll_del_prev(ll, n));
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
// del_curr
ll->flag = cmc_flags.ERROR;
cmc_assert(ll_del_curr(ll, n));
cmc_assert_equals(int32_t, cmc_flags.OK, ll_flag(ll));
ll_free(ll);
ll_free(ll2);
});
});