Add test for M_MOVE_DEFAULT
This commit is contained in:
1 parent
82fd4c94db
commit
7fe36f7bd7
1 file changed
+81
-5
+81
-5
@@ -273,15 +273,15 @@ static void test_oplist(void)
|
|||||||
assert (!M_OPLIST_P(func(INIT(init)) a));
|
assert (!M_OPLIST_P(func(INIT(init)) a));
|
||||||
assert (!M_OPLIST_P(func(INIT(init),) a));
|
assert (!M_OPLIST_P(func(INIT(init),) a));
|
||||||
|
|
||||||
#define a (INIT(0), CLEAR(clear))
|
#define aop (INIT(0), CLEAR(clear))
|
||||||
assert (M_TEST_DISABLED_METHOD_P(INIT, a));
|
assert (M_TEST_DISABLED_METHOD_P(INIT, aop));
|
||||||
assert (!M_TEST_DISABLED_METHOD_P(INIT2, a));
|
assert (!M_TEST_DISABLED_METHOD_P(INIT2, aop));
|
||||||
assert (!M_TEST_DISABLED_METHOD_P(CLEAR, a));
|
assert (!M_TEST_DISABLED_METHOD_P(CLEAR, aop));
|
||||||
assert (!M_TEST_DISABLED_METHOD_P(INIT, ()));
|
assert (!M_TEST_DISABLED_METHOD_P(INIT, ()));
|
||||||
|
|
||||||
#define M_OPL_op() (INIT(1), CLEAR(0))
|
#define M_OPL_op() (INIT(1), CLEAR(0))
|
||||||
assert(M_GET_INIT M_GLOBAL_OPLIST(op));
|
assert(M_GET_INIT M_GLOBAL_OPLIST(op));
|
||||||
assert(!M_GET_INIT M_GLOBAL_OPLIST(a));
|
assert(!M_GET_INIT M_GLOBAL_OPLIST(aop));
|
||||||
|
|
||||||
#define MAKE_OPLIST(op) (OPLIST(M_GLOBAL_OPLIST_OR_DEF(op)()))
|
#define MAKE_OPLIST(op) (OPLIST(M_GLOBAL_OPLIST_OR_DEF(op)()))
|
||||||
#define M_OPL_uint() (INIT(0), CLEAR(1))
|
#define M_OPL_uint() (INIT(0), CLEAR(1))
|
||||||
@@ -371,6 +371,81 @@ static void test_parse_standard_c_type(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef int ti[1];
|
||||||
|
typedef struct { int b,c; } ts;
|
||||||
|
|
||||||
|
static void f_ti(ti x)
|
||||||
|
{
|
||||||
|
ti y;
|
||||||
|
M_MOVE_A1_DEFAULT(y,x);
|
||||||
|
assert(y[0] == 9);
|
||||||
|
assert(x[0] == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void f_ts(ts x)
|
||||||
|
{
|
||||||
|
ts y;
|
||||||
|
M_MOVE_DEFAULT(y,x);
|
||||||
|
assert(y.b == 2);
|
||||||
|
assert(y.c == 3);
|
||||||
|
assert(x.b == 0);
|
||||||
|
assert(x.c == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void f_ts2(ts *x)
|
||||||
|
{
|
||||||
|
ts y;
|
||||||
|
M_MOVE_DEFAULT(y,*x);
|
||||||
|
assert(y.b == 2);
|
||||||
|
assert(y.c == 3);
|
||||||
|
assert(x->b == 0);
|
||||||
|
assert(x->c == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_move_default(void)
|
||||||
|
{
|
||||||
|
int o, p;
|
||||||
|
o = 9;
|
||||||
|
M_MOVE_DEFAULT(p, o);
|
||||||
|
assert(p == 9);
|
||||||
|
assert(o == 0);
|
||||||
|
|
||||||
|
double u, k;
|
||||||
|
u = 9.5;
|
||||||
|
M_MOVE_DEFAULT(k, u);
|
||||||
|
assert(k == 9.5);
|
||||||
|
assert(u == 0.0); // NOTE: memset(0) sets an IEEE-754 number to 0.0
|
||||||
|
|
||||||
|
int *ptr = &o, *m;
|
||||||
|
M_MOVE_DEFAULT(m, ptr);
|
||||||
|
assert( ptr == NULL);
|
||||||
|
assert( m == &o);
|
||||||
|
|
||||||
|
ti x, y;
|
||||||
|
x[0] = 9;
|
||||||
|
M_MOVE_A1_DEFAULT(y, x);
|
||||||
|
assert(y[0] == 9);
|
||||||
|
assert(x[0] == 0);
|
||||||
|
|
||||||
|
x[0] = 9;
|
||||||
|
f_ti(x);
|
||||||
|
assert(x[0] == 0);
|
||||||
|
|
||||||
|
ts y2, x2 = { .b = 2, .c = 3};
|
||||||
|
M_MOVE_DEFAULT(y2, x2);
|
||||||
|
assert(y2.b == 2 && y2.c == 3);
|
||||||
|
assert(x2.b == 0 && x2.c == 0);
|
||||||
|
|
||||||
|
x2.b = 2; x2.c = 3;
|
||||||
|
f_ts(x2);
|
||||||
|
assert(x2.b == 2);
|
||||||
|
assert(x2.c == 3);
|
||||||
|
|
||||||
|
f_ts2(&x2);
|
||||||
|
assert(x2.b == 0);
|
||||||
|
assert(x2.c == 0);
|
||||||
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
test_cat();
|
test_cat();
|
||||||
@@ -389,5 +464,6 @@ int main(void)
|
|||||||
test_cast();
|
test_cast();
|
||||||
test_reduce();
|
test_reduce();
|
||||||
test_parse_standard_c_type();
|
test_parse_standard_c_type();
|
||||||
|
test_move_default();
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user