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