Added flags to queue, sortedlist and stack

This commit is contained in:
Leonardo committed 2020-03-29 19:13:39 -03:00
1 parent 0d665c46d0
commit ee1174d1b5
6 files changed
+296 -13

No files matched your search

+68
View File
@@ -478,4 +478,72 @@ CMC_CREATE_UNIT(queue_test, true, {
q_free(q);
});
CMC_CREATE_TEST(callbacks, {
struct queue *q = q_new_custom(100, q_ftab_val, NULL, callbacks);
cmc_assert_not_equals(ptr, NULL, q);
total_create = 0;
total_read = 0;
total_update = 0;
total_delete = 0;
total_resize = 0;
cmc_assert(q_enqueue(q, 10));
cmc_assert_equals(int32_t, 1, total_create);
cmc_assert(q_dequeue(q));
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert(q_enqueue(q, 10));
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert_equals(size_t, 10, q_peek(q));
cmc_assert_equals(int32_t, 1, total_read);
cmc_assert(q_contains(q, 10));
cmc_assert_equals(int32_t, 2, total_read);
cmc_assert(q_resize(q, 1000));
cmc_assert_equals(int32_t, 1, total_resize);
cmc_assert(q_resize(q, 100));
cmc_assert_equals(int32_t, 2, total_resize);
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert_equals(int32_t, 2, total_read);
cmc_assert_equals(int32_t, 0, total_update);
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert_equals(int32_t, 2, total_resize);
q_customize(q, NULL, NULL);
cmc_assert_equals(ptr, NULL, q->callbacks);
q_clear(q);
cmc_assert(q_enqueue(q, 10));
cmc_assert(q_dequeue(q));
cmc_assert(q_enqueue(q, 10));
cmc_assert_equals(size_t, 10, q_peek(q));
cmc_assert(q_contains(q, 10));
cmc_assert(q_resize(q, 1000));
cmc_assert(q_resize(q, 100));
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert_equals(int32_t, 2, total_read);
cmc_assert_equals(int32_t, 0, total_update);
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert_equals(int32_t, 2, total_resize);
cmc_assert_equals(ptr, NULL, q->callbacks);
q_free(q);
total_create = 0;
total_read = 0;
total_update = 0;
total_delete = 0;
total_resize = 0;
});
});
+79
View File
@@ -235,4 +235,83 @@ CMC_CREATE_UNIT(sortedlist_test, true, {
sl_free(sl);
sl_free(sl2);
});
CMC_CREATE_TEST(callbacks, {
struct sortedlist *sl =
sl_new_custom(100, sl_ftab_val, NULL, callbacks);
cmc_assert_not_equals(ptr, NULL, sl);
total_create = 0;
total_read = 0;
total_update = 0;
total_delete = 0;
total_resize = 0;
cmc_assert(sl_insert(sl, 10));
cmc_assert_equals(int32_t, 1, total_create);
cmc_assert(sl_remove(sl, 0));
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert(sl_insert(sl, 1));
cmc_assert(sl_insert(sl, 0));
cmc_assert_equals(int32_t, 3, total_create);
cmc_assert_equals(size_t, 1, sl_max(sl));
cmc_assert_equals(int32_t, 1, total_read);
cmc_assert_equals(size_t, 0, sl_min(sl));
cmc_assert_equals(int32_t, 2, total_read);
cmc_assert_equals(size_t, 0, sl_get(sl, 0));
cmc_assert_equals(int32_t, 3, total_read);
cmc_assert_equals(size_t, 0, sl_index_of(sl, 0, true));
cmc_assert_equals(int32_t, 4, total_read);
cmc_assert(sl_contains(sl, 1));
cmc_assert_equals(int32_t, 5, total_read);
cmc_assert(sl_resize(sl, 1000));
cmc_assert_equals(int32_t, 1, total_resize);
cmc_assert(sl_resize(sl, 50));
cmc_assert_equals(int32_t, 2, total_resize);
cmc_assert_equals(int32_t, 3, total_create);
cmc_assert_equals(int32_t, 5, total_read);
cmc_assert_equals(int32_t, 0, total_update);
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert_equals(int32_t, 2, total_resize);
sl_customize(sl, NULL, NULL);
sl_clear(sl);
cmc_assert(sl_insert(sl, 10));
cmc_assert(sl_remove(sl, 0));
cmc_assert(sl_insert(sl, 1));
cmc_assert(sl_insert(sl, 0));
cmc_assert_equals(size_t, 1, sl_max(sl));
cmc_assert_equals(size_t, 0, sl_min(sl));
cmc_assert_equals(size_t, 0, sl_get(sl, 0));
cmc_assert_equals(size_t, 0, sl_index_of(sl, 0, true));
cmc_assert(sl_contains(sl, 1));
cmc_assert_equals(int32_t, 3, total_create);
cmc_assert_equals(int32_t, 5, total_read);
cmc_assert_equals(int32_t, 0, total_update);
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert_equals(int32_t, 2, total_resize);
cmc_assert_equals(ptr, NULL, sl->callbacks);
sl_free(sl);
total_create = 0;
total_read = 0;
total_update = 0;
total_delete = 0;
total_resize = 0;
});
});
+66
View File
@@ -671,4 +671,70 @@ CMC_CREATE_UNIT(stack_test, true, {
s_free(s);
});
CMC_CREATE_TEST(callbacks, {
struct stack *s = s_new_custom(100, s_ftab_val, NULL, callbacks);
cmc_assert_not_equals(ptr, NULL, s);
total_create = 0;
total_read = 0;
total_update = 0;
total_delete = 0;
total_resize = 0;
cmc_assert(s_push(s, 10));
cmc_assert_equals(int32_t, 1, total_create);
cmc_assert(s_pop(s));
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert(s_push(s, 1));
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert_equals(size_t, 1, s_top(s));
cmc_assert_equals(int32_t, 1, total_read);
cmc_assert(s_contains(s, 1));
cmc_assert_equals(int32_t, 2, total_read);
cmc_assert(s_resize(s, 1000));
cmc_assert_equals(int32_t, 1, total_resize);
cmc_assert(s_resize(s, 10));
cmc_assert_equals(int32_t, 2, total_resize);
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert_equals(int32_t, 2, total_read);
cmc_assert_equals(int32_t, 0, total_update);
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert_equals(int32_t, 2, total_resize);
s_customize(s, NULL, NULL);
s_clear(s);
cmc_assert(s_push(s, 10));
cmc_assert(s_pop(s));
cmc_assert(s_push(s, 1));
cmc_assert_equals(size_t, 1, s_top(s));
cmc_assert(s_contains(s, 1));
cmc_assert(s_resize(s, 1000));
cmc_assert(s_resize(s, 10));
cmc_assert_equals(int32_t, 2, total_create);
cmc_assert_equals(int32_t, 2, total_read);
cmc_assert_equals(int32_t, 0, total_update);
cmc_assert_equals(int32_t, 1, total_delete);
cmc_assert_equals(int32_t, 2, total_resize);
cmc_assert_equals(ptr, NULL, s->callbacks);
s_free(s);
total_create = 0;
total_read = 0;
total_update = 0;
total_delete = 0;
total_resize = 0;
});
});