QuickIO  0.2
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
check_compat.h
Go to the documentation of this file.
1 
7 #pragma once
8 
9 #if CHECK_MAJOR_VERSION == 0 && CHECK_MINOR_VERSION == 9 && CHECK_MICRO_VERSION < 10
10 
11 #include <check.h>
12 
13 #undef _ck_assert_int
14 #undef ck_assert_int_eq
15 #undef ck_assert_int_ne
16 #undef ck_assert_int_lt
17 #undef ck_assert_int_le
18 #undef ck_assert_int_gt
19 #undef ck_assert_int_ge
20 
21 #undef _ck_assert_uint
22 #undef ck_assert_uint_eq
23 #undef ck_assert_uint_ne
24 #undef ck_assert_uint_lt
25 #undef ck_assert_uint_le
26 #undef ck_assert_uint_gt
27 #undef ck_assert_uint_ge
28 
29 #undef _ck_assert_str
30 #undef ck_assert_str_eq
31 #undef ck_assert_str_ne
32 #undef ck_assert_str_lt
33 #undef ck_assert_str_le
34 #undef ck_assert_str_gt
35 #undef ck_assert_str_ge
36 
37 #undef _ck_assert_ptr
38 #undef ck_assert_ptr_eq
39 #undef ck_assert_ptr_ne
40 
41 #define _ck_assert_int(X, OP, Y) do { \
42  intmax_t _ck_x = (X); \
43  intmax_t _ck_y = (Y); \
44  ck_assert_msg(_ck_x OP _ck_y, "Assertion '"#X#OP#Y"' failed: "#X"==%jd, "#Y"==%jd", _ck_x, _ck_y); \
45 } while (0)
46 #define ck_assert_int_eq(X, Y) _ck_assert_int(X, ==, Y)
47 #define ck_assert_int_ne(X, Y) _ck_assert_int(X, !=, Y)
48 #define ck_assert_int_lt(X, Y) _ck_assert_int(X, <, Y)
49 #define ck_assert_int_le(X, Y) _ck_assert_int(X, <=, Y)
50 #define ck_assert_int_gt(X, Y) _ck_assert_int(X, >, Y)
51 #define ck_assert_int_ge(X, Y) _ck_assert_int(X, >=, Y)
52 
53 #define _ck_assert_uint(X, OP, Y) do { \
54  uintmax_t _ck_x = (X); \
55  uintmax_t _ck_y = (Y); \
56  ck_assert_msg(_ck_x OP _ck_y, "Assertion '"#X#OP#Y"' failed: "#X"==%ju, "#Y"==%ju", _ck_x, _ck_y); \
57 } while (0)
58 #define ck_assert_uint_eq(X, Y) _ck_assert_uint(X, ==, Y)
59 #define ck_assert_uint_ne(X, Y) _ck_assert_uint(X, !=, Y)
60 #define ck_assert_uint_lt(X, Y) _ck_assert_uint(X, <, Y)
61 #define ck_assert_uint_le(X, Y) _ck_assert_uint(X, <=, Y)
62 #define ck_assert_uint_gt(X, Y) _ck_assert_uint(X, >, Y)
63 #define ck_assert_uint_ge(X, Y) _ck_assert_uint(X, >=, Y)
64 
65 #define _ck_assert_str(X, OP, Y) do { \
66  const char* _ck_x = (X); \
67  const char* _ck_y = (Y); \
68  ck_assert_msg(0 OP strcmp(_ck_y, _ck_x), \
69  "Assertion '"#X#OP#Y"' failed: "#X"==\"%s\", "#Y"==\"%s\"", _ck_x, _ck_y); \
70 } while (0)
71 #define ck_assert_str_eq(X, Y) _ck_assert_str(X, ==, Y)
72 #define ck_assert_str_ne(X, Y) _ck_assert_str(X, !=, Y)
73 #define ck_assert_str_lt(X, Y) _ck_assert_str(X, <, Y)
74 #define ck_assert_str_le(X, Y) _ck_assert_str(X, <=, Y)
75 #define ck_assert_str_gt(X, Y) _ck_assert_str(X, >, Y)
76 #define ck_assert_str_ge(X, Y) _ck_assert_str(X, >=, Y)
77 
78 #define _ck_assert_ptr(X, OP, Y) do { \
79  void* _ck_x = (X); \
80  void* _ck_y = (Y); \
81  ck_assert_msg(_ck_x OP _ck_y, "Assertion '"#X#OP#Y"' failed: "#X"==%p, "#Y"==%p", _ck_x, _ck_y); \
82 } while (0)
83 #define ck_assert_ptr_eq(X, Y) _ck_assert_ptr(X, ==, Y)
84 #define ck_assert_ptr_ne(X, Y) _ck_assert_ptr(X, !=, Y)
85 
86 #endif