]> git.proxmox.com Git - libgit2.git/blame - tests-clar/clar.h
...and add Clar raw
[libgit2.git] / tests-clar / clar.h
CommitLineData
2e6f06a8
VM
1#ifndef __CLAR_TEST_H__
2#define __CLAR_TEST_H__
3
4#include <stdlib.h>
5
6int clar_test(int argc, char *argv[]);
7
8void cl_set_cleanup(void (*cleanup)(void *), void *opaque);
9void cl_fs_cleanup(void);
10
11#ifdef CLAR_FIXTURE_PATH
12const char *cl_fixture(const char *fixture_name);
13void cl_fixture_sandbox(const char *fixture_name);
14void 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
59void 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
67void clar__assert_equal_s(const char *,const char *,const char *,int,const char *,int);
68void clar__assert_equal_i(int,int,const char *,int,const char *,int);
69
70#endif