]>
Commit | Line | Data |
---|---|---|
2e6f06a8 VM |
1 | #ifndef __CLAR_TEST_H__ |
2 | #define __CLAR_TEST_H__ | |
3 | ||
4 | #include <stdlib.h> | |
5 | ||
6 | int clar_test(int argc, char *argv[]); | |
7 | ||
8 | void cl_set_cleanup(void (*cleanup)(void *), void *opaque); | |
9 | void cl_fs_cleanup(void); | |
10 | ||
11 | #ifdef CLAR_FIXTURE_PATH | |
12 | const char *cl_fixture(const char *fixture_name); | |
13 | void cl_fixture_sandbox(const char *fixture_name); | |
14 | void cl_fixture_cleanup(const char *fixture_name); | |
15 | #endif | |
16 | ||
17 | /** | |
18 | * Assertion macros with explicit error message | |
19 | */ | |
20 | #define cl_must_pass_(expr, desc) clar__assert((expr) >= 0, __FILE__, __LINE__, "Function call failed: " #expr, desc, 1) | |
21 | #define cl_must_fail_(expr, desc) clar__assert((expr) < 0, __FILE__, __LINE__, "Expected function call to fail: " #expr, desc, 1) | |
22 | #define cl_assert_(expr, desc) clar__assert((expr) != 0, __FILE__, __LINE__, "Expression is not true: " #expr, desc, 1) | |
23 | ||
24 | /** | |
25 | * Check macros with explicit error message | |
26 | */ | |
27 | #define cl_check_pass_(expr, desc) clar__assert((expr) >= 0, __FILE__, __LINE__, "Function call failed: " #expr, desc, 0) | |
28 | #define cl_check_fail_(expr, desc) clar__assert((expr) < 0, __FILE__, __LINE__, "Expected function call to fail: " #expr, desc, 0) | |
29 | #define cl_check_(expr, desc) clar__assert((expr) != 0, __FILE__, __LINE__, "Expression is not true: " #expr, desc, 0) | |
30 | ||
31 | /** | |
32 | * Assertion macros with no error message | |
33 | */ | |
34 | #define cl_must_pass(expr) cl_must_pass_(expr, NULL) | |
35 | #define cl_must_fail(expr) cl_must_fail_(expr, NULL) | |
36 | #define cl_assert(expr) cl_assert_(expr, NULL) | |
37 | ||
38 | /** | |
39 | * Check macros with no error message | |
40 | */ | |
41 | #define cl_check_pass(expr) cl_check_pass_(expr, NULL) | |
42 | #define cl_check_fail(expr) cl_check_fail_(expr, NULL) | |
43 | #define cl_check(expr) cl_check_(expr, NULL) | |
44 | ||
45 | /** | |
46 | * Forced failure/warning | |
47 | */ | |
48 | #define cl_fail(desc) clar__assert(0, __FILE__, __LINE__, "Test failed.", desc, 1) | |
49 | #define cl_warning(desc) clar__assert(0, __FILE__, __LINE__, "Warning during test execution:", desc, 0) | |
50 | ||
51 | /** | |
52 | * Typed assertion macros | |
53 | */ | |
54 | #define cl_assert_equal_s(s1,s2) clar__assert_equal_s((s1),(s2),__FILE__,__LINE__,"String mismatch: " #s1 " != " #s2, 1) | |
55 | #define cl_assert_equal_i(i1,i2) clar__assert_equal_i((i1),(i2),__FILE__,__LINE__,#i1 " != " #i2, 1) | |
56 | #define cl_assert_equal_b(b1,b2) clar__assert_equal_i(!!(b1),!!(b2),__FILE__,__LINE__,#b1 " != " #b2, 1) | |
57 | #define cl_assert_equal_p(p1,p2) cl_assert((p1) == (p2)) | |
58 | ||
59 | void clar__assert( | |
60 | int condition, | |
61 | const char *file, | |
62 | int line, | |
63 | const char *error, | |
64 | const char *description, | |
65 | int should_abort); | |
66 | ||
67 | void clar__assert_equal_s(const char *,const char *,const char *,int,const char *,int); | |
68 | void clar__assert_equal_i(int,int,const char *,int,const char *,int); | |
69 | ||
70 | #endif |