Improve test suite
This commit is contained in:
1 parent
3f09adc507
commit
5bf644ccf0
1 file changed
+55
-1
@@ -11,6 +11,10 @@
|
|||||||
#include "m-tuple.h"
|
#include "m-tuple.h"
|
||||||
#include "m-variant.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
|
// TEST WITH STRING
|
||||||
|
|
||||||
SHARED_PTR_DECL(shared_string, STRING_OPLIST)
|
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)
|
DICT_SET_DEF(dict2, int)
|
||||||
SHARED_PTR_DEF(shared_dict2, dict2_t, DICT_SET_OPLIST(dict2))
|
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
|
// TEST WITH TUPLE
|
||||||
TUPLE_DEF2(point, (x, int), (y, int))
|
TUPLE_DEF2(point, (x, int), (y, int))
|
||||||
@@ -192,7 +209,10 @@ SHARED_PTR_DEF(shared_dimension, dimension_t)
|
|||||||
|
|
||||||
// TEST WITH DEQUE
|
// TEST WITH DEQUE
|
||||||
DEQUE_DEF(deque1, int)
|
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)
|
PRIOQUEUE_DEF(prio1, int)
|
||||||
SHARED_PTR_DEF(shared_prio1, prio1_t, PRIOQUEUE_OPLIST(prio1))
|
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)
|
RBTREE_DEF(rbtree1, int)
|
||||||
SHARED_PTR_DEF(shared_rbtree1, rbtree1_t, RBTREE_OPLIST(rbtree1))
|
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)
|
int main(void)
|
||||||
{
|
{
|
||||||
test_string();
|
test_string();
|
||||||
test_array();
|
test_array();
|
||||||
test_array_string();
|
test_array_string();
|
||||||
|
test_thread();
|
||||||
|
test_double();
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user