xref: /aosp_15_r20/external/libconfig/tinytest/tinytest.h (revision 2e9d491483b805f09ea864149eadd5680efcc72a)
1*2e9d4914SAndroid Build Coastguard Worker /* ----------------------------------------------------------------------------
2*2e9d4914SAndroid Build Coastguard Worker    tinytest - A tiny C unit-testing library
3*2e9d4914SAndroid Build Coastguard Worker    Copyright (C) 2010-2018  Mark A Lindner
4*2e9d4914SAndroid Build Coastguard Worker 
5*2e9d4914SAndroid Build Coastguard Worker    This file is part of tinytest.
6*2e9d4914SAndroid Build Coastguard Worker 
7*2e9d4914SAndroid Build Coastguard Worker    This library is free software; you can redistribute it and/or
8*2e9d4914SAndroid Build Coastguard Worker    modify it under the terms of the GNU Lesser General Public License
9*2e9d4914SAndroid Build Coastguard Worker    as published by the Free Software Foundation; either version 2.1 of
10*2e9d4914SAndroid Build Coastguard Worker    the License, or (at your option) any later version.
11*2e9d4914SAndroid Build Coastguard Worker 
12*2e9d4914SAndroid Build Coastguard Worker    This library is distributed in the hope that it will be useful, but
13*2e9d4914SAndroid Build Coastguard Worker    WITHOUT ANY WARRANTY; without even the implied warranty of
14*2e9d4914SAndroid Build Coastguard Worker    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15*2e9d4914SAndroid Build Coastguard Worker    Lesser General Public License for more details.
16*2e9d4914SAndroid Build Coastguard Worker 
17*2e9d4914SAndroid Build Coastguard Worker    You should have received a copy of the GNU Library General Public
18*2e9d4914SAndroid Build Coastguard Worker    License along with this library; if not, see
19*2e9d4914SAndroid Build Coastguard Worker    <http://www.gnu.org/licenses/>.
20*2e9d4914SAndroid Build Coastguard Worker    ----------------------------------------------------------------------------
21*2e9d4914SAndroid Build Coastguard Worker */
22*2e9d4914SAndroid Build Coastguard Worker 
23*2e9d4914SAndroid Build Coastguard Worker #ifndef __tinytest_h
24*2e9d4914SAndroid Build Coastguard Worker #define __tinytest_h
25*2e9d4914SAndroid Build Coastguard Worker 
26*2e9d4914SAndroid Build Coastguard Worker #include <setjmp.h>
27*2e9d4914SAndroid Build Coastguard Worker #include <string.h>
28*2e9d4914SAndroid Build Coastguard Worker #include <stdlib.h>
29*2e9d4914SAndroid Build Coastguard Worker 
30*2e9d4914SAndroid Build Coastguard Worker typedef int tt_bool_t;
31*2e9d4914SAndroid Build Coastguard Worker 
32*2e9d4914SAndroid Build Coastguard Worker #define TT_TRUE (1)
33*2e9d4914SAndroid Build Coastguard Worker #define TT_FALSE (0)
34*2e9d4914SAndroid Build Coastguard Worker 
35*2e9d4914SAndroid Build Coastguard Worker typedef struct tt_test_t
36*2e9d4914SAndroid Build Coastguard Worker {
37*2e9d4914SAndroid Build Coastguard Worker   const char *name;
38*2e9d4914SAndroid Build Coastguard Worker   void (*function)(void);
39*2e9d4914SAndroid Build Coastguard Worker   tt_bool_t failed;
40*2e9d4914SAndroid Build Coastguard Worker   struct tt_test_t *next;
41*2e9d4914SAndroid Build Coastguard Worker } tt_test_t;
42*2e9d4914SAndroid Build Coastguard Worker 
43*2e9d4914SAndroid Build Coastguard Worker typedef struct tt_testsuite_t
44*2e9d4914SAndroid Build Coastguard Worker {
45*2e9d4914SAndroid Build Coastguard Worker   const char *name;
46*2e9d4914SAndroid Build Coastguard Worker   tt_test_t *first_test;
47*2e9d4914SAndroid Build Coastguard Worker   tt_test_t *last_test;
48*2e9d4914SAndroid Build Coastguard Worker   tt_test_t *current_test;
49*2e9d4914SAndroid Build Coastguard Worker   int num_tests;
50*2e9d4914SAndroid Build Coastguard Worker   int num_failures;
51*2e9d4914SAndroid Build Coastguard Worker   jmp_buf jump_buf;
52*2e9d4914SAndroid Build Coastguard Worker } tt_testsuite_t;
53*2e9d4914SAndroid Build Coastguard Worker 
54*2e9d4914SAndroid Build Coastguard Worker typedef enum { TT_VAL_INT, TT_VAL_UINT, TT_VAL_INT64, TT_VAL_UINT64,
55*2e9d4914SAndroid Build Coastguard Worker                TT_VAL_DOUBLE, TT_VAL_STR, TT_VAL_PTR } tt_valtype_t;
56*2e9d4914SAndroid Build Coastguard Worker 
57*2e9d4914SAndroid Build Coastguard Worker typedef enum { TT_OP_INT_EQ, TT_OP_INT_NE, TT_OP_INT_LT, TT_OP_INT_LE,
58*2e9d4914SAndroid Build Coastguard Worker                TT_OP_INT_GT, TT_OP_INT_GE, TT_OP_UINT_EQ, TT_OP_UINT_NE,
59*2e9d4914SAndroid Build Coastguard Worker                TT_OP_UINT_LT, TT_OP_UINT_LE, TT_OP_UINT_GT, TT_OP_UINT_GE,
60*2e9d4914SAndroid Build Coastguard Worker                TT_OP_INT64_EQ, TT_OP_INT64_NE, TT_OP_INT64_LT, TT_OP_INT64_LE,
61*2e9d4914SAndroid Build Coastguard Worker                TT_OP_INT64_GT, TT_OP_INT64_GE, TT_OP_UINT64_EQ,
62*2e9d4914SAndroid Build Coastguard Worker                TT_OP_UINT64_NE, TT_OP_UINT64_LT, TT_OP_UINT64_LE,
63*2e9d4914SAndroid Build Coastguard Worker                TT_OP_UINT64_GT, TT_OP_UINT64_GE, TT_OP_DOUBLE_EQ,
64*2e9d4914SAndroid Build Coastguard Worker                TT_OP_DOUBLE_NE, TT_OP_DOUBLE_LT, TT_OP_DOUBLE_LE,
65*2e9d4914SAndroid Build Coastguard Worker                TT_OP_DOUBLE_GT, TT_OP_DOUBLE_GE, TT_OP_STR_EQ, TT_OP_STR_NE,
66*2e9d4914SAndroid Build Coastguard Worker                TT_OP_STR_LT, TT_OP_STR_LE, TT_OP_STR_GT, TT_OP_STR_GE,
67*2e9d4914SAndroid Build Coastguard Worker                TT_OP_PTR_EQ, TT_OP_PTR_NE, TT_OP_TRUE, TT_OP_FALSE,
68*2e9d4914SAndroid Build Coastguard Worker                TT_OP_FILE_EQ, TT_OP_FILE_NE, TT_OP_TXTFILE_EQ,
69*2e9d4914SAndroid Build Coastguard Worker                TT_OP_TXTFILE_NE } tt_op_t;
70*2e9d4914SAndroid Build Coastguard Worker 
71*2e9d4914SAndroid Build Coastguard Worker typedef struct tt_val_t
72*2e9d4914SAndroid Build Coastguard Worker {
73*2e9d4914SAndroid Build Coastguard Worker   tt_valtype_t type;
74*2e9d4914SAndroid Build Coastguard Worker   union {
75*2e9d4914SAndroid Build Coastguard Worker     int int_val;
76*2e9d4914SAndroid Build Coastguard Worker     unsigned int uint_val;
77*2e9d4914SAndroid Build Coastguard Worker     long long int64_val;
78*2e9d4914SAndroid Build Coastguard Worker     unsigned long long uint64_val;
79*2e9d4914SAndroid Build Coastguard Worker     double double_val;
80*2e9d4914SAndroid Build Coastguard Worker     const char *str_val;
81*2e9d4914SAndroid Build Coastguard Worker     const void *ptr_val;
82*2e9d4914SAndroid Build Coastguard Worker   } value;
83*2e9d4914SAndroid Build Coastguard Worker } tt_val_t;
84*2e9d4914SAndroid Build Coastguard Worker 
85*2e9d4914SAndroid Build Coastguard Worker 
86*2e9d4914SAndroid Build Coastguard Worker extern tt_testsuite_t *tt_suite_create(const char *name);
87*2e9d4914SAndroid Build Coastguard Worker 
88*2e9d4914SAndroid Build Coastguard Worker extern void tt_suite_destroy(tt_testsuite_t *suite);
89*2e9d4914SAndroid Build Coastguard Worker 
90*2e9d4914SAndroid Build Coastguard Worker extern void tt_suite_add_test(tt_testsuite_t *suite, const char *name,
91*2e9d4914SAndroid Build Coastguard Worker                               void (*function)(void));
92*2e9d4914SAndroid Build Coastguard Worker 
93*2e9d4914SAndroid Build Coastguard Worker extern void tt_suite_run(tt_testsuite_t *suite);
94*2e9d4914SAndroid Build Coastguard Worker 
95*2e9d4914SAndroid Build Coastguard Worker extern void tt_expect(const char *file, int line, const char *aexpr,
96*2e9d4914SAndroid Build Coastguard Worker                       tt_op_t op, const char *bexpr,
97*2e9d4914SAndroid Build Coastguard Worker                       const tt_val_t a, const tt_val_t b,
98*2e9d4914SAndroid Build Coastguard Worker                       tt_bool_t fatal);
99*2e9d4914SAndroid Build Coastguard Worker 
100*2e9d4914SAndroid Build Coastguard Worker extern void tt_expect_bool(const char *file, int line, const char *expr,
101*2e9d4914SAndroid Build Coastguard Worker                            tt_op_t op, int val, tt_bool_t fatal);
102*2e9d4914SAndroid Build Coastguard Worker 
103*2e9d4914SAndroid Build Coastguard Worker extern void tt_fail(const char *file, int line, const char *message, ...);
104*2e9d4914SAndroid Build Coastguard Worker 
105*2e9d4914SAndroid Build Coastguard Worker extern tt_bool_t tt_file_exists(const char *file);
106*2e9d4914SAndroid Build Coastguard Worker 
107*2e9d4914SAndroid Build Coastguard Worker #ifdef _MSC_VER
108*2e9d4914SAndroid Build Coastguard Worker 
109*2e9d4914SAndroid Build Coastguard Worker extern void tt_test_int(const char *file, int line, const char *aexpr,
110*2e9d4914SAndroid Build Coastguard Worker                         tt_op_t op, const char *bexpr, int a, int b,
111*2e9d4914SAndroid Build Coastguard Worker                         tt_bool_t fatal);
112*2e9d4914SAndroid Build Coastguard Worker 
113*2e9d4914SAndroid Build Coastguard Worker #define TT_TEST_INT_(A, OP, B, F)                               \
114*2e9d4914SAndroid Build Coastguard Worker   tt_test_int(__FILE__, __LINE__, #A, (OP), #B, (A), (B), (F))
115*2e9d4914SAndroid Build Coastguard Worker 
116*2e9d4914SAndroid Build Coastguard Worker #else
117*2e9d4914SAndroid Build Coastguard Worker 
118*2e9d4914SAndroid Build Coastguard Worker #define TT_TEST_INT_(A, OP, B, F)                                       \
119*2e9d4914SAndroid Build Coastguard Worker   tt_expect(__FILE__, __LINE__, #A, (OP), #B,                           \
120*2e9d4914SAndroid Build Coastguard Worker             (tt_val_t){ TT_VAL_INT, .value.int_val = (A) },             \
121*2e9d4914SAndroid Build Coastguard Worker             (tt_val_t){ TT_VAL_INT, .value.int_val = (B) },             \
122*2e9d4914SAndroid Build Coastguard Worker             (F))
123*2e9d4914SAndroid Build Coastguard Worker 
124*2e9d4914SAndroid Build Coastguard Worker #endif
125*2e9d4914SAndroid Build Coastguard Worker 
126*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_INT_EQ(A, B)                          \
127*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT_((A), TT_OP_INT_EQ, (B), TT_FALSE)
128*2e9d4914SAndroid Build Coastguard Worker 
129*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_INT_EQ(A, B)                  \
130*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT_((A), TT_OP_INT_EQ, (B), TT_TRUE)
131*2e9d4914SAndroid Build Coastguard Worker 
132*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_INT_NE(A, B)                          \
133*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT_((A), TT_OP_INT_NE, (B), TT_FALSE)
134*2e9d4914SAndroid Build Coastguard Worker 
135*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_INT_NE(A, B)                  \
136*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT_((A), TT_OP_INT_NE, (B), TT_TRUE)
137*2e9d4914SAndroid Build Coastguard Worker 
138*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_INT_LT(A, B)                  \
139*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT_((A), TT_OP_INT_LT, (B), TT_FALSE)
140*2e9d4914SAndroid Build Coastguard Worker 
141*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_INT_LT(A, B)                  \
142*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT_((A), TT_OP_INT_LT, (B), TT_TRUE)
143*2e9d4914SAndroid Build Coastguard Worker 
144*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_INT_LE(A, B)                  \
145*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT_((A), TT_OP_INT_LE, (B), TT_FALSE)
146*2e9d4914SAndroid Build Coastguard Worker 
147*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_INT_LE(A, B)                  \
148*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT_((A), TT_OP_INT_LE, (B), TT_TRUE)
149*2e9d4914SAndroid Build Coastguard Worker 
150*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_INT_GT(A, B)                  \
151*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT_((A), TT_OP_INT_GT, (B), TT_FALSE)
152*2e9d4914SAndroid Build Coastguard Worker 
153*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_INT_GT(A, B)                  \
154*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT_((A), TT_OP_INT_GT, (B), TT_TRUE)
155*2e9d4914SAndroid Build Coastguard Worker 
156*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_INT_GE(A, B)                  \
157*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT_((A), TT_OP_INT_GE, (B), TT_FALSE)
158*2e9d4914SAndroid Build Coastguard Worker 
159*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_INT_GE(A, B)                  \
160*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT_((A), TT_OP_INT_GE, (B), TT_TRUE)
161*2e9d4914SAndroid Build Coastguard Worker 
162*2e9d4914SAndroid Build Coastguard Worker #ifdef _MSC_VER
163*2e9d4914SAndroid Build Coastguard Worker 
164*2e9d4914SAndroid Build Coastguard Worker extern void tt_test_uint(const char *file, int line, const char *aexpr,
165*2e9d4914SAndroid Build Coastguard Worker                          tt_op_t op, const char *bexpr, unsigned int a,
166*2e9d4914SAndroid Build Coastguard Worker                          unsigned int b, tt_bool_t fatal);
167*2e9d4914SAndroid Build Coastguard Worker 
168*2e9d4914SAndroid Build Coastguard Worker #define TT_TEST_UINT_(A, OP, B, F)                              \
169*2e9d4914SAndroid Build Coastguard Worker   tt_test_uint(__FILE__, __LINE__, #A, (OP), #B, (A), (B), (F))
170*2e9d4914SAndroid Build Coastguard Worker 
171*2e9d4914SAndroid Build Coastguard Worker #else
172*2e9d4914SAndroid Build Coastguard Worker 
173*2e9d4914SAndroid Build Coastguard Worker #define TT_TEST_UINT_(A, OP, B, F)                                      \
174*2e9d4914SAndroid Build Coastguard Worker   tt_expect(__FILE__, __LINE__, #A, OP, #B,                             \
175*2e9d4914SAndroid Build Coastguard Worker             (tt_val_t){ TT_VAL_UINT, .value.uint_val = (A) },           \
176*2e9d4914SAndroid Build Coastguard Worker             (tt_val_t){ TT_VAL_UINT, .value.uint_val = (B) },           \
177*2e9d4914SAndroid Build Coastguard Worker             (F))
178*2e9d4914SAndroid Build Coastguard Worker 
179*2e9d4914SAndroid Build Coastguard Worker #endif
180*2e9d4914SAndroid Build Coastguard Worker 
181*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_UINT_EQ(A, B)                  \
182*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT_((A), TT_OP_UINT_EQ, (B), TT_FALSE)
183*2e9d4914SAndroid Build Coastguard Worker 
184*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_UINT_EQ(A, B)                  \
185*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT_((A), TT_OP_UINT_EQ, (B), TT_TRUE)
186*2e9d4914SAndroid Build Coastguard Worker 
187*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_UINT_NE(A, B)                  \
188*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT_((A), TT_OP_UINT_NE, (B), TT_FALSE)
189*2e9d4914SAndroid Build Coastguard Worker 
190*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_UINT_NE(A, B)                  \
191*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT_((A), TT_OP_UINT_NE, (B), TT_TRUE)
192*2e9d4914SAndroid Build Coastguard Worker 
193*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_UINT_LT(A, B)                  \
194*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT_((A), TT_OP_UINT_LT, (B), TT_FALSE)
195*2e9d4914SAndroid Build Coastguard Worker 
196*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_UINT_LT(A, B)                  \
197*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT_((A), TT_OP_UINT_LT, (B), TT_TRUE)
198*2e9d4914SAndroid Build Coastguard Worker 
199*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_UINT_LE(A, B)                  \
200*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT_((A), TT_OP_UINT_LE, (B), TT_FALSE)
201*2e9d4914SAndroid Build Coastguard Worker 
202*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_UINT_LE(A, B)                  \
203*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT_((A), TT_OP_UINT_LE, (B), TT_TRUE)
204*2e9d4914SAndroid Build Coastguard Worker 
205*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_UINT_GT(A, B)                  \
206*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT_((A), TT_OP_UINT_GT, (B), TT_FALSE)
207*2e9d4914SAndroid Build Coastguard Worker 
208*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_UINT_GT(A, B)                  \
209*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT_((A), TT_OP_UINT_GT, (B), TT_TRUE)
210*2e9d4914SAndroid Build Coastguard Worker 
211*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_UINT_GE(A, B)                  \
212*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT_((A), TT_OP_UINT_GE, (B), TT_FALSE)
213*2e9d4914SAndroid Build Coastguard Worker 
214*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_UINT_GE(A, B)                  \
215*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT_((A), TT_OP_UINT_GE, (B), TT_TRUE)
216*2e9d4914SAndroid Build Coastguard Worker 
217*2e9d4914SAndroid Build Coastguard Worker #ifdef _MSC_VER
218*2e9d4914SAndroid Build Coastguard Worker 
219*2e9d4914SAndroid Build Coastguard Worker extern void tt_test_int64(const char *file, int line, const char *aexpr,
220*2e9d4914SAndroid Build Coastguard Worker                           tt_op_t op, const char *bexpr, long long a,
221*2e9d4914SAndroid Build Coastguard Worker                           long long b, tt_bool_t fatal);
222*2e9d4914SAndroid Build Coastguard Worker 
223*2e9d4914SAndroid Build Coastguard Worker #define TT_TEST_INT64_(A, OP, B, F)                                      \
224*2e9d4914SAndroid Build Coastguard Worker   tt_test_int64(__FILE__, __LINE__, #A, (OP), #B, (A), (B), (F))
225*2e9d4914SAndroid Build Coastguard Worker 
226*2e9d4914SAndroid Build Coastguard Worker #else
227*2e9d4914SAndroid Build Coastguard Worker 
228*2e9d4914SAndroid Build Coastguard Worker #define TT_TEST_INT64_(A, OP, B, F)                                     \
229*2e9d4914SAndroid Build Coastguard Worker   tt_expect(__FILE__, __LINE__, #A, OP, #B,                             \
230*2e9d4914SAndroid Build Coastguard Worker             (tt_val_t){ TT_VAL_INT64, .value.int64_val = (A) },         \
231*2e9d4914SAndroid Build Coastguard Worker             (tt_val_t){ TT_VAL_INT64, .value.int64_val = (B) },         \
232*2e9d4914SAndroid Build Coastguard Worker             (F))
233*2e9d4914SAndroid Build Coastguard Worker 
234*2e9d4914SAndroid Build Coastguard Worker #endif
235*2e9d4914SAndroid Build Coastguard Worker 
236*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_INT64_EQ(A, B)                        \
237*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT64_((A), TT_OP_INT64_EQ, (B), TT_FALSE)
238*2e9d4914SAndroid Build Coastguard Worker 
239*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_INT64_EQ(A, B)                \
240*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT64_((A), TT_OP_INT64_EQ, (B), TT_TRUE)
241*2e9d4914SAndroid Build Coastguard Worker 
242*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_INT64_NE(A, B)                        \
243*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT64_((A), TT_OP_INT64_NE, (B), TT_FALSE)
244*2e9d4914SAndroid Build Coastguard Worker 
245*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_INT64_NE(A, B)                \
246*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT64_((A), TT_OP_INT64_NE, (B), TT_TRUE)
247*2e9d4914SAndroid Build Coastguard Worker 
248*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_INT64_LT(A, B)                        \
249*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT64_((A), TT_OP_INT64_LT, (B), TT_FALSE)
250*2e9d4914SAndroid Build Coastguard Worker 
251*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_INT64_LT(A, B)                \
252*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT64_((A), TT_OP_INT64_LT, (B), TT_TRUE)
253*2e9d4914SAndroid Build Coastguard Worker 
254*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_INT64_LE(A, B)                        \
255*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT64_((A), TT_OP_INT64_LE, (B), TT_FALSE)
256*2e9d4914SAndroid Build Coastguard Worker 
257*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_INT64_LE(A, B)                \
258*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT64_((A), TT_OP_INT64_LE, (B), TT_TRUE)
259*2e9d4914SAndroid Build Coastguard Worker 
260*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_INT64_GT(A, B)                        \
261*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT64_((A), TT_OP_INT64_GT, (B), TT_FALSE)
262*2e9d4914SAndroid Build Coastguard Worker 
263*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_INT64_GT(A, B)                \
264*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT64_((A), TT_OP_INT64_GT, (B), TT_TRUE)
265*2e9d4914SAndroid Build Coastguard Worker 
266*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_INT64_GE(A, B)                        \
267*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT64_((A), TT_OP_INT64_GE, (B), TT_FALSE)
268*2e9d4914SAndroid Build Coastguard Worker 
269*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_INT64_GE(A, B)                \
270*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_INT64_((A), TT_OP_INT64_GE, (B), TT_TRUE)
271*2e9d4914SAndroid Build Coastguard Worker 
272*2e9d4914SAndroid Build Coastguard Worker #ifdef _MSC_VER
273*2e9d4914SAndroid Build Coastguard Worker 
274*2e9d4914SAndroid Build Coastguard Worker extern void tt_test_uint64(const char *file, int line, const char *aexpr,
275*2e9d4914SAndroid Build Coastguard Worker                            tt_op_t op, const char *bexpr,
276*2e9d4914SAndroid Build Coastguard Worker                            unsigned long long a, unsigned long long b,
277*2e9d4914SAndroid Build Coastguard Worker                            tt_bool_t fatal);
278*2e9d4914SAndroid Build Coastguard Worker 
279*2e9d4914SAndroid Build Coastguard Worker #define TT_TEST_UINT64_(A, OP, B, F)                                      \
280*2e9d4914SAndroid Build Coastguard Worker   tt_test_uint64(__FILE__, __LINE__, #A, (OP), #B, (A), (B), (F))
281*2e9d4914SAndroid Build Coastguard Worker 
282*2e9d4914SAndroid Build Coastguard Worker #else
283*2e9d4914SAndroid Build Coastguard Worker 
284*2e9d4914SAndroid Build Coastguard Worker #define TT_TEST_UINT64_(A, OP, B, F)                                    \
285*2e9d4914SAndroid Build Coastguard Worker   tt_expect(__FILE__, __LINE__, #A, OP, #B,                             \
286*2e9d4914SAndroid Build Coastguard Worker             (tt_val_t){ TT_VAL_UINT64, .value.uint64_val = (A) },       \
287*2e9d4914SAndroid Build Coastguard Worker             (tt_val_t){ TT_VAL_UINT64, .value.uint64_val = (B) },       \
288*2e9d4914SAndroid Build Coastguard Worker             (F))
289*2e9d4914SAndroid Build Coastguard Worker 
290*2e9d4914SAndroid Build Coastguard Worker #endif
291*2e9d4914SAndroid Build Coastguard Worker 
292*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_UINT64_EQ(A, B)                        \
293*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT64_((A), TT_OP_UINT64_EQ, (B), TT_FALSE)
294*2e9d4914SAndroid Build Coastguard Worker 
295*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_UINT64_EQ(A, B)                \
296*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT64_((A), TT_OP_UINT64_EQ, (B), TT_TRUE)
297*2e9d4914SAndroid Build Coastguard Worker 
298*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_UINT64_NE(A, B)                        \
299*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT64_((A), TT_OP_UINT64_NE, (B), TT_FALSE)
300*2e9d4914SAndroid Build Coastguard Worker 
301*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_UINT64_NE(A, B)                \
302*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT64_((A), TT_OP_UINT64_NE, (B), TT_TRUE)
303*2e9d4914SAndroid Build Coastguard Worker 
304*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_UINT64_LT(A, B)                        \
305*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT64_((A), TT_OP_UINT64_LT, (B), TT_FALSE)
306*2e9d4914SAndroid Build Coastguard Worker 
307*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_UINT64_LT(A, B)                \
308*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT64_((A), TT_OP_UINT64_LT, (B), TT_TRUE)
309*2e9d4914SAndroid Build Coastguard Worker 
310*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_UINT64_LE(A, B)                        \
311*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT64_((A), TT_OP_UINT64_LE, (B), TT_FALSE)
312*2e9d4914SAndroid Build Coastguard Worker 
313*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_UINT64_LE(A, B)                \
314*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT64_((A), TT_OP_UINT64_LE, (B), TT_TRUE)
315*2e9d4914SAndroid Build Coastguard Worker 
316*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_UINT64_GT(A, B)                        \
317*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT64_((A), TT_OP_UINT64_GT, (B), TT_FALSE)
318*2e9d4914SAndroid Build Coastguard Worker 
319*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_UINT64_GT(A, B)                \
320*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT64_((A), TT_OP_UINT64_GT, (B), TT_TRUE)
321*2e9d4914SAndroid Build Coastguard Worker 
322*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_UINT64_GE(A, B)                        \
323*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT64_((A), TT_OP_UINT64_GE, (B), TT_FALSE)
324*2e9d4914SAndroid Build Coastguard Worker 
325*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_UINT64_GE(A, B)                \
326*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_UINT64_((A), TT_OP_UINT64_GE, (B), TT_TRUE)
327*2e9d4914SAndroid Build Coastguard Worker 
328*2e9d4914SAndroid Build Coastguard Worker #ifdef _MSC_VER
329*2e9d4914SAndroid Build Coastguard Worker 
330*2e9d4914SAndroid Build Coastguard Worker extern void tt_test_double(const char *file, int line, const char *aexpr,
331*2e9d4914SAndroid Build Coastguard Worker                            tt_op_t op, const char *bexpr, double a,
332*2e9d4914SAndroid Build Coastguard Worker                            double b, tt_bool_t fatal);
333*2e9d4914SAndroid Build Coastguard Worker 
334*2e9d4914SAndroid Build Coastguard Worker #define TT_TEST_DOUBLE_(A, OP, B, F)                                    \
335*2e9d4914SAndroid Build Coastguard Worker   tt_test_double(__FILE__, __LINE__, #A, (OP), #B, (A), (B), (F))
336*2e9d4914SAndroid Build Coastguard Worker 
337*2e9d4914SAndroid Build Coastguard Worker #else
338*2e9d4914SAndroid Build Coastguard Worker 
339*2e9d4914SAndroid Build Coastguard Worker #define TT_TEST_DOUBLE_(A, OP, B, F)                                    \
340*2e9d4914SAndroid Build Coastguard Worker   tt_expect(__FILE__, __LINE__, #A, OP, #B,                             \
341*2e9d4914SAndroid Build Coastguard Worker             (tt_val_t){ TT_VAL_DOUBLE, .value.double_val = (A) },       \
342*2e9d4914SAndroid Build Coastguard Worker             (tt_val_t){ TT_VAL_DOUBLE, .value.double_val = (B) },       \
343*2e9d4914SAndroid Build Coastguard Worker             (F))
344*2e9d4914SAndroid Build Coastguard Worker 
345*2e9d4914SAndroid Build Coastguard Worker #endif
346*2e9d4914SAndroid Build Coastguard Worker 
347*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_DOUBLE_EQ(A, B)                       \
348*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_DOUBLE_((A), TT_OP_DOUBLE_EQ, (B), TT_FALSE)
349*2e9d4914SAndroid Build Coastguard Worker 
350*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_DOUBLE_EQ(A, B)                       \
351*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_DOUBLE_((A), TT_OP_DOUBLE_EQ, (B), TT_TRUE)
352*2e9d4914SAndroid Build Coastguard Worker 
353*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_DOUBLE_NE(A, B)                       \
354*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_DOUBLE_((A), TT_OP_DOUBLE_NE, (B), TT_FALSE)
355*2e9d4914SAndroid Build Coastguard Worker 
356*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_DOUBLE_NE(A, B)                       \
357*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_DOUBLE_((A), TT_OP_DOUBLE_NE, (B), TT_TRUE)
358*2e9d4914SAndroid Build Coastguard Worker 
359*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_DOUBLE_LT(A, B)                       \
360*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_DOUBLE_((A), TT_OP_DOUBLE_LT, (B), TT_FALSE)
361*2e9d4914SAndroid Build Coastguard Worker 
362*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_DOUBLE_LT(A, B)                       \
363*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_DOUBLE_((A), TT_OP_DOUBLE_LT, (B), TT_TRUE)
364*2e9d4914SAndroid Build Coastguard Worker 
365*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_DOUBLE_LE(A, B)                       \
366*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_DOUBLE_((A), TT_OP_DOUBLE_LE, (B), TT_FALSE)
367*2e9d4914SAndroid Build Coastguard Worker 
368*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_DOUBLE_LE(A, B)                       \
369*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_DOUBLE_((A), TT_OP_DOUBLE_LE, (B), TT_TRUE)
370*2e9d4914SAndroid Build Coastguard Worker 
371*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_DOUBLE_GT(A, B)                       \
372*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_DOUBLE_((A), TT_OP_DOUBLE_GT, (B), TT_FALSE)
373*2e9d4914SAndroid Build Coastguard Worker 
374*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_DOUBLE_GT(A, B)                       \
375*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_DOUBLE_((A), TT_OP_DOUBLE_GT, (B), TT_TRUE)
376*2e9d4914SAndroid Build Coastguard Worker 
377*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_DOUBLE_GE(A, B)                       \
378*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_DOUBLE_((A), TT_OP_DOUBLE_GE, (B), TT_FALSE)
379*2e9d4914SAndroid Build Coastguard Worker 
380*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_DOUBLE_GE(A, B)                       \
381*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_DOUBLE_((A), TT_OP_DOUBLE_GE, (B), TT_TRUE)
382*2e9d4914SAndroid Build Coastguard Worker 
383*2e9d4914SAndroid Build Coastguard Worker #ifdef _MSC_VER
384*2e9d4914SAndroid Build Coastguard Worker 
385*2e9d4914SAndroid Build Coastguard Worker extern void tt_test_str(const char *file, int line, const char *aexpr,
386*2e9d4914SAndroid Build Coastguard Worker                         tt_op_t op, const char *bexpr, const char *a,
387*2e9d4914SAndroid Build Coastguard Worker                         const char *b, tt_bool_t fatal);
388*2e9d4914SAndroid Build Coastguard Worker 
389*2e9d4914SAndroid Build Coastguard Worker #define TT_TEST_STR_(A, OP, B, F)                               \
390*2e9d4914SAndroid Build Coastguard Worker   tt_test_str(__FILE__, __LINE__, #A, (OP), #B, (A), (B), (F))
391*2e9d4914SAndroid Build Coastguard Worker 
392*2e9d4914SAndroid Build Coastguard Worker #else
393*2e9d4914SAndroid Build Coastguard Worker 
394*2e9d4914SAndroid Build Coastguard Worker #define TT_TEST_STR_(A, OP, B, F)                                       \
395*2e9d4914SAndroid Build Coastguard Worker   tt_expect(__FILE__, __LINE__, #A, OP, #B,                             \
396*2e9d4914SAndroid Build Coastguard Worker             (tt_val_t){ TT_VAL_STR, .value.str_val = (A) },             \
397*2e9d4914SAndroid Build Coastguard Worker             (tt_val_t){ TT_VAL_STR, .value.str_val = (B) },             \
398*2e9d4914SAndroid Build Coastguard Worker             (F))
399*2e9d4914SAndroid Build Coastguard Worker 
400*2e9d4914SAndroid Build Coastguard Worker #endif
401*2e9d4914SAndroid Build Coastguard Worker 
402*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_STR_EQ(A, B)                  \
403*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_STR_EQ, (B), TT_FALSE)
404*2e9d4914SAndroid Build Coastguard Worker 
405*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_STR_EQ(A, B)                  \
406*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_STR_EQ, (B), TT_TRUE)
407*2e9d4914SAndroid Build Coastguard Worker 
408*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_STR_NE(A, B)                  \
409*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_STR_NE, (B), TT_FALSE)
410*2e9d4914SAndroid Build Coastguard Worker 
411*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_STR_NE(A, B)                  \
412*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_STR_NE, (B), TT_TRUE)
413*2e9d4914SAndroid Build Coastguard Worker 
414*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_STR_LT(A, B)                  \
415*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_STR_LT, (B), TT_FALSE)
416*2e9d4914SAndroid Build Coastguard Worker 
417*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_STR_LT(A, B)                  \
418*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_STR_LT, (B), TT_TRUE)
419*2e9d4914SAndroid Build Coastguard Worker 
420*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_STR_LE(A, B)                  \
421*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_STR_LE, (B), TT_FALSE)
422*2e9d4914SAndroid Build Coastguard Worker 
423*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_STR_LE(A, B)                  \
424*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_STR_LE, (B), TT_TRUE)
425*2e9d4914SAndroid Build Coastguard Worker 
426*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_STR_GT(A, B)                  \
427*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_STR_GT, (B), TT_FALSE)
428*2e9d4914SAndroid Build Coastguard Worker 
429*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_STR_GT(A, B)                  \
430*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_STR_GT, (B), TT_TRUE)
431*2e9d4914SAndroid Build Coastguard Worker 
432*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_STR_GE(A, B)                  \
433*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_STR_GE, (B), TT_FALSE)
434*2e9d4914SAndroid Build Coastguard Worker 
435*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_STR_GE(A, B)                  \
436*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_STR_GE, (B), TT_TRUE)
437*2e9d4914SAndroid Build Coastguard Worker 
438*2e9d4914SAndroid Build Coastguard Worker #ifdef _MSC_VER
439*2e9d4914SAndroid Build Coastguard Worker 
440*2e9d4914SAndroid Build Coastguard Worker extern void tt_test_ptr(const char *file, int line, const char *aexpr,
441*2e9d4914SAndroid Build Coastguard Worker                         tt_op_t op, const char *bexpr, const void *a,
442*2e9d4914SAndroid Build Coastguard Worker                         const void *b, tt_bool_t fatal);
443*2e9d4914SAndroid Build Coastguard Worker 
444*2e9d4914SAndroid Build Coastguard Worker #define TT_TEST_PTR_(A, OP, B, F)                               \
445*2e9d4914SAndroid Build Coastguard Worker   tt_test_ptr(__FILE__, __LINE__, #A, (OP), #B, (A), (B), (F))
446*2e9d4914SAndroid Build Coastguard Worker 
447*2e9d4914SAndroid Build Coastguard Worker #else
448*2e9d4914SAndroid Build Coastguard Worker 
449*2e9d4914SAndroid Build Coastguard Worker #define TT_TEST_PTR_(A, OP, B, F)                                       \
450*2e9d4914SAndroid Build Coastguard Worker   tt_expect(__FILE__, __LINE__, #A, OP, #B,                             \
451*2e9d4914SAndroid Build Coastguard Worker             (tt_val_t){ TT_VAL_PTR, .value.ptr_val = (A) },             \
452*2e9d4914SAndroid Build Coastguard Worker             (tt_val_t){ TT_VAL_PTR, .value.ptr_val = (B) },             \
453*2e9d4914SAndroid Build Coastguard Worker             (F))
454*2e9d4914SAndroid Build Coastguard Worker 
455*2e9d4914SAndroid Build Coastguard Worker #endif
456*2e9d4914SAndroid Build Coastguard Worker 
457*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_PTR_EQ(A, B)                  \
458*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_PTR_((A), TT_OP_PTR_EQ, (B), TT_FALSE)
459*2e9d4914SAndroid Build Coastguard Worker 
460*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_PTR_EQ(A, B)                  \
461*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_PTR_((A), TT_OP_PTR_EQ, (B), TT_TRUE)
462*2e9d4914SAndroid Build Coastguard Worker 
463*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_PTR_NE(A, B)                  \
464*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_PTR_((A), TT_OP_PTR_NE, (B), TT_FALSE)
465*2e9d4914SAndroid Build Coastguard Worker 
466*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_PTR_NE(A, B)                  \
467*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_PTR_((A), TT_OP_PTR_NE, (B), TT_TRUE)
468*2e9d4914SAndroid Build Coastguard Worker 
469*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_PTR_NOTNULL(A)                \
470*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_PTR_((A), TT_OP_PTR_NE, NULL, TT_FALSE)
471*2e9d4914SAndroid Build Coastguard Worker 
472*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_PTR_NOTNULL(A)                \
473*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_PTR_((A), TT_OP_PTR_NE, NULL, TT_TRUE)
474*2e9d4914SAndroid Build Coastguard Worker 
475*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_PTR_NULL(A)                   \
476*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_PTR_((A), TT_OP_PTR_EQ, NULL, TT_FALSE)
477*2e9d4914SAndroid Build Coastguard Worker 
478*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_PTR_NULL(A)                   \
479*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_PTR_((A), TT_OP_PTR_EQ, NULL, TT_TRUE)
480*2e9d4914SAndroid Build Coastguard Worker 
481*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_TRUE(A)                                               \
482*2e9d4914SAndroid Build Coastguard Worker   tt_expect_bool(__FILE__, __LINE__, #A, TT_OP_TRUE, (A), TT_FALSE)
483*2e9d4914SAndroid Build Coastguard Worker 
484*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_TRUE(A)                                               \
485*2e9d4914SAndroid Build Coastguard Worker   tt_expect_bool(__FILE__, __LINE__, #A, TT_OP_TRUE, (A), TT_TRUE)
486*2e9d4914SAndroid Build Coastguard Worker 
487*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_FALSE(A)                                              \
488*2e9d4914SAndroid Build Coastguard Worker   tt_expect_bool(__FILE__, __LINE__, #A, TT_OP_FALSE, (A), TT_FALSE)
489*2e9d4914SAndroid Build Coastguard Worker 
490*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_FALSE(A)                                               \
491*2e9d4914SAndroid Build Coastguard Worker   tt_expect_bool(__FILE__, __LINE__, #A, TT_OP_FALSE, (A), TT_TRUE)
492*2e9d4914SAndroid Build Coastguard Worker 
493*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_FILE_EQ(A, B)                         \
494*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_FILE_EQ, (B), TT_FALSE)
495*2e9d4914SAndroid Build Coastguard Worker 
496*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_FILE_EQ(A, B)                         \
497*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_FILE_EQ, (B), TT_TRUE)
498*2e9d4914SAndroid Build Coastguard Worker 
499*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_FILE_NE(A, B)                         \
500*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_FILE_NE, (B), TT_FALSE)
501*2e9d4914SAndroid Build Coastguard Worker 
502*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_FILE_NE(A, B)                         \
503*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_FILE_NE, (B), TT_TRUE)
504*2e9d4914SAndroid Build Coastguard Worker 
505*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_TXTFILE_EQ(A, B)                      \
506*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_TXTFILE_EQ, (B), TT_FALSE)
507*2e9d4914SAndroid Build Coastguard Worker 
508*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_TXTFILE_EQ(A, B)                      \
509*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_TXTFILE_EQ, (B), TT_TRUE)
510*2e9d4914SAndroid Build Coastguard Worker 
511*2e9d4914SAndroid Build Coastguard Worker #define TT_EXPECT_TXTFILE_NE(A, B)                      \
512*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_TXTFILE_NE, (B), TT_FALSE)
513*2e9d4914SAndroid Build Coastguard Worker 
514*2e9d4914SAndroid Build Coastguard Worker #define TT_ASSERT_TXTFILE_NE(A, B)                      \
515*2e9d4914SAndroid Build Coastguard Worker   TT_TEST_STR_((A), TT_OP_TXTFILE_NE, (B), TT_TRUE)
516*2e9d4914SAndroid Build Coastguard Worker 
517*2e9d4914SAndroid Build Coastguard Worker #define TT_FAIL(M, ...)                         \
518*2e9d4914SAndroid Build Coastguard Worker   tt_fail(__FILE__, __LINE__, (M), __VA_ARGS__)
519*2e9d4914SAndroid Build Coastguard Worker 
520*2e9d4914SAndroid Build Coastguard Worker #define TT_SUITE_START(S)                               \
521*2e9d4914SAndroid Build Coastguard Worker   tt_testsuite_t *__suite__ ## S = tt_suite_create(#S)
522*2e9d4914SAndroid Build Coastguard Worker 
523*2e9d4914SAndroid Build Coastguard Worker #define TT_SUITE_TEST(S, F)                     \
524*2e9d4914SAndroid Build Coastguard Worker   tt_suite_add_test(__suite__ ## S, #F, F);
525*2e9d4914SAndroid Build Coastguard Worker 
526*2e9d4914SAndroid Build Coastguard Worker #define TT_TEST(F)                              \
527*2e9d4914SAndroid Build Coastguard Worker   static void F(void)
528*2e9d4914SAndroid Build Coastguard Worker 
529*2e9d4914SAndroid Build Coastguard Worker #define TT_SUITE_END(S)                         \
530*2e9d4914SAndroid Build Coastguard Worker   tt_suite_destroy(__suite__ ## S)
531*2e9d4914SAndroid Build Coastguard Worker 
532*2e9d4914SAndroid Build Coastguard Worker #define TT_SUITE_RUN(S)                         \
533*2e9d4914SAndroid Build Coastguard Worker   tt_suite_run(__suite__ ## S)
534*2e9d4914SAndroid Build Coastguard Worker 
535*2e9d4914SAndroid Build Coastguard Worker #define TT_SUITE_NUM_FAILURES(S)                \
536*2e9d4914SAndroid Build Coastguard Worker   __suite__ ## S->num_failures
537*2e9d4914SAndroid Build Coastguard Worker 
538*2e9d4914SAndroid Build Coastguard Worker #endif // __tinytest_h
539