1 #ifndef __COMMON_TEST_BASIC_H
2 #define __COMMON_TEST_BASIC_H
27 int total_countings[3];
32 #define fmt_passed "[\x1b[32;49mPASS\x1b[0m]"
33 #define fmt_failed "[\x1b[31;49mFAIL\x1b[0m]"
34 #define fmt_skiped "[\x1b[33;49mSKIP\x1b[0m]"
36 #define active_context \
37 ({ extern struct test_context* __test_ctx; __test_ctx; })
39 #define _expect(expr, act, exp, type_fmt) \
41 if(should_skip_test()) { \
42 printf(" @%s:%03d ....... ", __FILE__, __LINE__); \
43 printf(fmt_skiped "\n"); \
44 active_context->stats.skipped++; \
48 int failed = !(expr); \
50 printf(" @%s:%03d ....... ", __FILE__, __LINE__); \
51 printf(fmt_failed " (expect: " type_fmt ", got: " type_fmt ")\n",\
54 active_context->stats.countings[failed]++; \
57 #define new_aspect(expr, exp, act, typefmt) expr, exp, act, typefmt
59 #define expect(aspect) _expect(aspect)
61 #define expect_int(a, b) \
62 _expect(a == b, a, b, "%d")
64 #define expect_uint(a, b) \
65 _expect(a == b, a, b, "%u")
67 #define expect_long(a, b) \
68 _expect(a == b, a, b, "%ld")
70 #define expect_ulong(a, b) \
71 _expect(a == b, a, b, "%lu")
73 #define expect_str(str_a, str_b) \
74 _expect(!strcmp(str_a, str_b), str_a, str_b, "'%s'")
76 #define expect_notnull(ptr) \
77 _expect(ptr != NULL, "null", "not null", "<%s>")
79 #define expect_null(ptr) \
80 _expect(ptr == NULL, "not null", "null", "<%s>")
82 #define expect_true(val) \
83 _expect(val, "false", "true", "<%s>")
85 #define expect_false(val) \
86 _expect(!val, "true", "false", "<%s>")
88 #define testcase(name, body) \
89 do { begin_testcase(name); body; end_testcase(); } while(0)
92 begin_testcase(const char* name);
98 run_test(int argc, const char* argv[]);
103 return active_context->stats.failed;
106 #endif /* __COMMON_TEST_BASIC_H */