Improve test coverage

This commit is contained in:
Patrick Pelissier committed 2023-04-04 00:48:03 +02:00
1 parent ff778528f8
commit 100c0f22fe
2 files changed
+35 -5

No files matched your search

+27 -4
View File
@@ -32,10 +32,18 @@ typedef struct test_s {
ILIST_INTERFACE (ilist_free, struct test_s);
} test_t;
static inline int test_cmp(const test_t *i1, const test_t *i2)
{
return i1->n < i2->n ? -1 : i1->n > i2->n;
}
static inline bool test_equal_p(const test_t *i1, const test_t *i2)
{
return i1->n == i2->n;
}
#include "coverage.h"
START_COVERAGE
ILIST_DEF(ilist_tname, test_t, M_POD_OPLIST)
ILIST_DEF(ilist_tname, test_t, M_OPEXTEND(M_POD_OPLIST, CMP(API_6(test_cmp)), EQUAL(API_6(test_equal_p))))
END_COVERAGE
ILIST_DEF(ilist_free, test_t, (DEL(free)))
@@ -88,6 +96,7 @@ static void test(void)
assert (ilist_tname_end_p(it2));
assert (ilist_tname_last_p(it2));
assert (!ilist_tname_it_equal_p(it1, it2));
assert (ilist_tname_it_equal_p(it1, it1));
for(ilist_tname_it_set(it2, it1) ; !ilist_tname_end_p(it2) ; ilist_tname_previous(it2)) {
const test_t *item = ilist_tname_cref(it2);
n--;
@@ -117,7 +126,9 @@ static void test(void)
for M_EACH(item, list, ILIST_OPLIST(ilist_tname)) {
(void)item;
assert(false);
if (M_UNLIKELY_NOMEM(1)) {
assert(false);
}
}
ilist_tname_push_back (list, &x3);
@@ -142,7 +153,7 @@ static void test(void)
ilist_tname_clear(list);
}
#define NUM 10
#define NUM 100
static void test2(void)
{
test_t x[NUM];
@@ -155,6 +166,7 @@ static void test2(void)
assert (ilist_tname_size(list1) == NUM);
assert (ilist_tname_size(list2) == 0);
assert (ilist_tname_equal_p(list1, list2) == false);
assert (ilist_tname_equal_p(list1, list1) == true);
ilist_tname_it_t it;
ilist_tname_it (it, list1);
for(int i = 0; i < NUM; i++) {
@@ -193,7 +205,6 @@ static void test2(void)
assert (n == item->n);
}
assert (n == 0);
}
M_LET(list1, list2, ILIST_OPLIST(ilist_tname)) {
for(int i = 0; i < NUM; i++)
@@ -204,6 +215,7 @@ static void test2(void)
for(int i = NUM/2; i < NUM; i++) {
ilist_tname_push_back(list2, &x[i]);
}
assert (ilist_tname_equal_p(list1, list2) == false);
ilist_tname_splice(list1, list2);
assert (ilist_tname_size(list1) == NUM);
assert (ilist_tname_size(list2) == 0);
@@ -224,6 +236,17 @@ static void test2(void)
}
assert (n == NUM);
}
M_LET(list1, list2, ILIST_OPLIST(ilist_tname)) {
for(int i = 0; i < NUM/2; i++) {
x[i].n = i;
x[i+NUM/2].n = i;
}
for(int i = 0; i < NUM/2; i++) {
ilist_tname_push_back(list1, &x[i]);
ilist_tname_push_back(list2, &x[i+NUM/2]);
}
assert (ilist_tname_equal_p(list1, list2) == true);
}
}
static void test_free(void)
+8 -1
View File
@@ -34,10 +34,16 @@ typedef struct ishared_s {
int data[100];
} ishared_t[1];
static bool ishared_init_sleep = false;
static void ishared_init_data(struct ishared_s *x)
{
for(int i = 0 ; i < 100; i++)
x->data[i] = i * i;
if (ishared_init_sleep) {
// Slow down init
m_thread_sleep(100);
}
}
static void ishared_test(struct ishared_s *x)
@@ -94,7 +100,6 @@ static struct ishared_s g_var = {
static void test_static(void)
{
ishared2_t p1, p2;
p1 = ishared2_init_once(NULL);
assert(p1 == NULL);
p1 = ishared2_init_once(&g_var);
@@ -129,12 +134,14 @@ static void test_shared(void)
{
m_thread_t id[MAX_THREAD];
ishared_init_sleep = true;
for(int i = 0; i < MAX_THREAD; i++) {
m_thread_create(id[i], func, (void*) (intptr_t) i);
}
for(int i = 0; i < MAX_THREAD; i++) {
m_thread_join(id[i]);
}
ishared_init_sleep = false;
}
int main(void)