Many minor fixes, changes and first attempt of codecov

Changes on assert.h, foreach.h, test.h and timer.h
Updated benchmarks, examples and tests
Updated tests/Makefile for future
Added list.c test
Added CMC namespace to CONCATC and CONCATH on macro_collections.h
This commit is contained in:
Leonardo committed 2019-06-28 00:52:23 -03:00
1 parent 1edb12a83c
commit 7b349ea426
15 files changed
+1009 -742

No files matched your search

+14 -8
View File
@@ -1,15 +1,21 @@
CFLAGS= -Wno-unused-function -Wno-unused-paramter -Wno-unused-variable -std=c11 -Wall -Wextra
CC = gcc
CFLAGS = -std=c11 -Wall -Wextra
CFLAGS += -Wno-unused-function -Wno-unused-paramter -Wno-unused-variable -Wno-unused-label
CVFLAGS = --coverage -O0
main:
gcc foreach.c -o foreach $(CFLAGS)
$(CC) foreach.c -o foreach $(CFLAGS)
./foreach
gcc iterators.c -o iterators $(CFLAGS)
$(CC) iterators.c -o iterators $(CFLAGS)
./iterators
gcc contains.c -o contains $(CFLAGS)
$(CC) contains.c -o contains $(CFLAGS)
./contains
gcc types.c -o types $(CFLAGS)
$(CC) types.c -o types $(CFLAGS)
./types
gcc -c ./sep/sep.c -o ./sep/sep.o $(CFLAGS)
gcc -c ./sep/main.c -o ./sep/main.o $(CFLAGS)
gcc ./sep/sep.o ./sep/main.o -o ./sep/sep
$(CC) -c ./sep/sep.c -o ./sep/sep.o $(CFLAGS)
$(CC) -c ./sep/main.c -o ./sep/main.o $(CFLAGS)
$(CC) ./sep/sep.o ./sep/main.o -o ./sep/sep
./sep/sep
$(CC) list.c -o list $(CFLAGS) $(CVFLAGS)
./list
gcov ./list.c
+20 -20
View File
@@ -72,45 +72,45 @@ int main(void)
FOR_EACH(d, deque, d, {
sum3 += d_iter_value(&iter);
})
});
FOR_EACH(hm, hmap, hm, {
sum10 += hm_iter_key(&iter);
sum11 += hm_iter_value(&iter);
})
});
FOR_EACH(hs, hset, hs, {
sum9 += hs_iter_value(&iter);
})
});
FOR_EACH(h, heap, h, {
sum5 += h_iter_value(&iter);
})
});
FOR_EACH(ll, linked, ll, {
sum4 += ll_iter_value(&iter);
})
});
FOR_EACH(l, list, l, {
sum0 += l_iter_value(&iter);
})
});
FOR_EACH(q, queue, q, {
sum2 += q_iter_value(&iter);
})
});
FOR_EACH(s, stack, s, {
sum1 += s_iter_value(&iter);
})
});
FOR_EACH(tm, tmap, tm, {
sum7 += tm_iter_key(&iter);
sum8 += tm_iter_value(&iter);
})
});
FOR_EACH(ts, tset, ts, {
sum6 += ts_iter_value(&iter);
})
});
printf("\n-------------------- FOR_EACH --------------------\n");
if (sum3 == 50005000)
@@ -161,45 +161,45 @@ int main(void)
FOR_EACH_REV(d, deque, d, {
sum3 += d_iter_value(&iter);
})
});
FOR_EACH_REV(hm, hmap, hm, {
sum10 += hm_iter_key(&iter);
sum11 += hm_iter_value(&iter);
})
});
FOR_EACH_REV(hs, hset, hs, {
sum9 += hs_iter_value(&iter);
})
});
FOR_EACH_REV(h, heap, h, {
sum5 += h_iter_value(&iter);
})
});
FOR_EACH_REV(ll, linked, ll, {
sum4 += ll_iter_value(&iter);
})
});
FOR_EACH_REV(l, list, l, {
sum0 += l_iter_value(&iter);
})
});
FOR_EACH_REV(q, queue, q, {
sum2 += q_iter_value(&iter);
})
});
FOR_EACH_REV(s, stack, s, {
sum1 += s_iter_value(&iter);
})
});
FOR_EACH_REV(tm, tmap, tm, {
sum7 += tm_iter_key(&iter);
sum8 += tm_iter_value(&iter);
})
});
FOR_EACH_REV(ts, tset, ts, {
sum6 += ts_iter_value(&iter);
})
});
printf("-------------------- FOR_EACH_REV --------------------\n");
if (sum3 == 50005000)
+221
View File
@@ -0,0 +1,221 @@
#include "../src/macro_collections.h"
LIST_GENERATE(l, list, , size_t)
CMC_CREATE_UNIT(list_test, true, {
CMC_CREATE_TEST(new, {
list *l = l_new(1000000);
cmc_assert_not_equals(ptr, NULL, l);
bool passed = l->capacity == 1000000 && l->count == 0 && l->buffer;
cmc_assert_equals(size_t, 1000000, l->capacity);
cmc_assert_equals(size_t, 0, l_count(l));
cmc_assert_not_equals(ptr, NULL, l->buffer);
if (passed)
CMC_TEST_PASS();
else
CMC_TEST_FAIL();
l_free(l);
});
CMC_CREATE_TEST(new [edge_case:capacity = 0], {
list *l = l_new(0);
cmc_assert_equals(ptr, NULL, l);
CMC_TEST_PASS_ELSE_FAIL(l == NULL);
});
CMC_CREATE_TEST(new_from[count item_preservation], {
size_t v[5];
for (size_t i = 0; i < 5; i++)
{
v[i] = i;
}
list *l = l_new_from(v, 5);
cmc_assert_not_equals(ptr, NULL, l);
bool passed = true;
for (size_t i = 0; i < 5; i++)
{
cmc_assert_equals(size_t, i, l_get(l, i));
passed = passed && l_get(l, i) == i;
}
CMC_TEST_PASS_ELSE_FAIL(passed && l_count(l) == 5);
l_free(l);
});
CMC_CREATE_TEST(new_from [edge_case:size = 1], {
size_t a = 10;
size_t *values = &a;
list *l = l_new_from(values, 1);
cmc_assert_not_equals(ptr, NULL, l);
CMC_TEST_PASS_ELSE_FAIL(l_count(l) == 1);
l_free(l);
});
CMC_CREATE_TEST(clear[count capacity], {
list *l = l_new(100);
cmc_assert_not_equals(ptr, NULL, l);
for (size_t i = 0; i < 50; i++)
l_push_back(l, i);
l_clear(l);
CMC_TEST_PASS_ELSE_FAIL(l_count(l) == 0 && l_capacity(l) == 100);
l_free(l);
});
CMC_CREATE_TEST(push_front[count capacity item_preservation grow], {
list *l = l_new(100);
cmc_assert_not_equals(ptr, NULL, l);
for (size_t i = 0; i < 200; i++)
l_push_front(l, i);
bool passed = true;
for (size_t i = 0; i < l_count(l); i++)
{
passed = passed && l_get(l, i) == (l_count(l) - i - 1);
cmc_assert_equals(size_t, l_get(l, i), l_count(l) - i - 1);
}
CMC_TEST_PASS_ELSE_FAIL(passed && l_count(l) == 200);
l_free(l);
});
CMC_CREATE_TEST(push[count capacity item_preservation grow], {
list *l = l_new(100);
cmc_assert_not_equals(ptr, NULL, l);
for (size_t i = 0; i < 200; i++)
l_push(l, i, l_count(l));
bool passed = true;
for (size_t i = 0; i < l_count(l); i++)
{
passed = passed && l_get(l, i) == i;
cmc_assert_equals(size_t, l_get(l, i), i);
}
CMC_TEST_PASS_ELSE_FAIL(passed && l_count(l) == 200);
l_free(l);
});
CMC_CREATE_TEST(push_back[count capacity item_preservation grow], {
list *l = l_new(100);
cmc_assert_not_equals(ptr, NULL, l);
for (size_t i = 0; i < 200; i++)
l_push_back(l, i);
bool passed = true;
for (size_t i = 0; i < l_count(l); i++)
{
passed = passed && l_get(l, i) == i;
cmc_assert_equals(size_t, l_get(l, i), i);
}
CMC_TEST_PASS_ELSE_FAIL(passed && l_count(l) == 200);
l_free(l);
});
CMC_CREATE_TEST(pop_front[count item_preservation], {
list *l = l_new(100);
cmc_assert_not_equals(ptr, NULL, l);
for (size_t i = 0; i < 200; i++)
l_push_back(l, i);
bool passed = l_pop_front(l);
for (size_t i = 0; i < l_count(l); i++)
{
passed = passed && l_get(l, i) == i + 1;
cmc_assert_equals(size_t, l_get(l, i), i + 1);
}
CMC_TEST_PASS_ELSE_FAIL(passed && l_count(l) == 199);
l_free(l);
});
CMC_CREATE_TEST(pop_front [edge_case:count = 1], {
list *l = l_new(100);
cmc_assert_not_equals(ptr, NULL, l);
cmc_assert(l_push_back(l, 10));
cmc_assert(l_pop_front(l));
CMC_TEST_PASS_ELSE_FAIL(l_count(l) == 0);
l_free(l);
});
CMC_CREATE_TEST(pop_front [edge_case:count = 2], {
list *l = l_new(100);
cmc_assert(l_push_back(l, 10));
cmc_assert(l_push_front(l, 10));
CMC_TEST_PASS_ELSE_FAIL(l_pop_front(l) && l_count(l) == 1);
l_free(l);
});
CMC_CREATE_TEST(pop_front[buffer_clear], {
list *l = l_new(100);
cmc_assert(l_push_back(l, 10));
cmc_assert(l_push_front(l, 10));
// Default value is all bytes are 0
bool passed = l_pop_front(l) && l->buffer[1] == 0;
cmc_assert_equals(size_t, 0, l->buffer[1]);
CMC_TEST_PASS_ELSE_FAIL(passed && l_count(l) == 1);
l_free(l);
});
})
int main(void)
{
list_test();
return 0;
}