4 #define T_(op1, op2, va, vb, vc) a = va; b = vb; c = vc; \
5 fprintf(stderr, "Test: (%d %s %d) %s (%d %s %d) -> ", a, #op1, c, #op2, b, #op1, c);\
6 fprintf(stderr, "%d\n", ((a op1 c) op2 (b op1 c)));
8 #define T(op1, op2) T_(op1, op2, rand(), rand(), rand()) T_(op1, op2, rand(), rand(), 42)
10 #define TU_(op1, op2, va, vb) a = va; b = vb; \
11 fprintf(stderr, "Test: (%s %d) %s (%s %d) -> ", #op1, a, #op2, #op1, b); \
12 fprintf(stderr, "%d\n", ((op1 a) op2 (op1 b)));
14 #define TU(op1, op2) TU_(op1, op2, rand(), rand())
16 #define TT(op) T(&,op); T(|,op); T(^,op); T(&&,op); T(||,op); T(*,op); T(/,op); T(%,op); T(+,op); T(-,op); TU(-,op); TU(!,op);
18 #define TS(op) T(&,op); T(|,op); T(^,op); T(&&,op); T(||,op); T(*,op); T(+,op); T(-,op); TU(-,op);