Improve test suite

This commit is contained in:
Patrick Pelissier committed 2024-11-11 22:38:10 +01:00
1 parent 3f09adc507
commit 5bf644ccf0
1 file changed
+55 -1
+55 -1
View File
@@ -11,6 +11,10 @@
#include "m-tuple.h"
#include "m-variant.h"
// TEST WITH DOUBLE
SHARED_PTR_DECL_AS(shared_double, SharedDouble, M_BASIC_OPLIST)
SHARED_PTR_DEF_EXTERN_AS(shared_double, SharedDouble, double, M_BASIC_OPLIST)
// TEST WITH STRING
SHARED_PTR_DECL(shared_string, STRING_OPLIST)
@@ -175,6 +179,19 @@ SHARED_PTR_DEF(string_pool_ts, string_pool_t, M_OPL_string_pool_t() )
DICT_SET_DEF(dict2, int)
SHARED_PTR_DEF(shared_dict2, dict2_t, DICT_SET_OPLIST(dict2))
/* OA dict needs more operators than the default ones to work */
static inline bool int_oor_equal_p(int s, unsigned char n)
{
return s == -n;
}
static inline void int_oor_set(int *s, unsigned char n)
{
*s = -n;
}
#define INT_OA_OPLIST \
M_OPEXTEND(M_BASIC_OPLIST, OOR_EQUAL(int_oor_equal_p), OOR_SET(API_2(int_oor_set)))
DICT_OA_DEF2(dict3, int, INT_OA_OPLIST, int, M_BASIC_OPLIST)
SHARED_PTR_DEF(shared_dict3, dict3_t, DICT_OPLIST(dict3))
// TEST WITH TUPLE
TUPLE_DEF2(point, (x, int), (y, int))
@@ -192,7 +209,10 @@ SHARED_PTR_DEF(shared_dimension, dimension_t)
// TEST WITH DEQUE
DEQUE_DEF(deque1, int)
SHARED_PTR_DEF(shared_deque1, deque1_t, DEQUE_OPLIST(deque1))
// Provide a FULL_P operator
static inline bool deque1_full_p(const deque1_t a) { return deque1_size(a) >= 10; }
#define M_OPL_deque1_t() M_OPEXTEND( DEQUE_OPLIST(deque1, M_BASIC_OPLIST), SUBTYPE(int), FULL_P(deque1_full_p) )
SHARED_PTR_DEF(shared_deque1, deque1_t)
PRIOQUEUE_DEF(prio1, int)
SHARED_PTR_DEF(shared_prio1, prio1_t, PRIOQUEUE_OPLIST(prio1))
@@ -208,11 +228,45 @@ SHARED_PTR_DEF(shared_bptree2, bptree2_t, BPTREE_OPLIST(bptree2))
RBTREE_DEF(rbtree1, int)
SHARED_PTR_DEF(shared_rbtree1, rbtree1_t, RBTREE_OPLIST(rbtree1))
/********************************/
static void conso(void *p)
{
shared_deque1_t *ptr = (shared_deque1_t*) p;
for(int i = 0; i < 1000; i++) {
int j;
shared_deque1_pop(&j, ptr);
assert (j == i);
}
shared_deque1_release(ptr);
}
static void test_thread(void)
{
m_thread_t idx;
shared_deque1_t *ptr = shared_deque1_new();
m_thread_create (idx, conso, shared_deque1_acquire(ptr));
for(int i = 0; i < 1000; i++) {
// shared_deque1 is full if number of stored element is >= 10
shared_deque1_push (ptr, i);
}
shared_deque1_release(ptr);
m_thread_join(idx);
}
static void test_double(void)
{
SharedDouble *d = shared_double_new();
shared_double_reset(d);
shared_double_clear(d);
}
int main(void)
{
test_string();
test_array();
test_array_string();
test_thread();
test_double();
exit(0);
}