1*276da39aSCy Schubert /* ========================================== 2*276da39aSCy Schubert Unity Project - A Test Framework for C 3*276da39aSCy Schubert Copyright (c) 2007-14 Mike Karlesky, Mark VanderVoord, Greg Williams 4*276da39aSCy Schubert [Released under MIT License. Please refer to license.txt for details] 5*276da39aSCy Schubert ========================================== */ 6*276da39aSCy Schubert 7*276da39aSCy Schubert #ifndef UNITY_INTERNALS_H 8*276da39aSCy Schubert #define UNITY_INTERNALS_H 9*276da39aSCy Schubert 10*276da39aSCy Schubert #ifdef UNITY_INCLUDE_CONFIG_H 11*276da39aSCy Schubert #include "unity_config.h" 12*276da39aSCy Schubert #endif 13*276da39aSCy Schubert 14*276da39aSCy Schubert #include <setjmp.h> 15*276da39aSCy Schubert 16*276da39aSCy Schubert // Unity Attempts to Auto-Detect Integer Types 17*276da39aSCy Schubert // Attempt 1: UINT_MAX, ULONG_MAX, etc in <stdint.h> 18*276da39aSCy Schubert // Attempt 2: UINT_MAX, ULONG_MAX, etc in <limits.h> 19*276da39aSCy Schubert // Attempt 3: Deduced from sizeof() macros 20*276da39aSCy Schubert #ifndef UNITY_EXCLUDE_STDINT_H 21*276da39aSCy Schubert #include <stdint.h> 22*276da39aSCy Schubert #endif 23*276da39aSCy Schubert 24*276da39aSCy Schubert #ifndef UNITY_EXCLUDE_LIMITS_H 25*276da39aSCy Schubert #include <limits.h> 26*276da39aSCy Schubert #endif 27*276da39aSCy Schubert 28*276da39aSCy Schubert #ifndef UNITY_EXCLUDE_SIZEOF 29*276da39aSCy Schubert #ifndef UINT_MAX 30*276da39aSCy Schubert #define UINT_MAX (sizeof(unsigned int) * 256 - 1) 31*276da39aSCy Schubert #endif 32*276da39aSCy Schubert #ifndef ULONG_MAX 33*276da39aSCy Schubert #define ULONG_MAX (sizeof(unsigned long) * 256 - 1) 34*276da39aSCy Schubert #endif 35*276da39aSCy Schubert #ifndef UINTPTR_MAX 36*276da39aSCy Schubert //apparently this is not a constant expression: (sizeof(unsigned int *) * 256 - 1) so we have to just let this fall through 37*276da39aSCy Schubert #endif 38*276da39aSCy Schubert #endif 39*276da39aSCy Schubert //------------------------------------------------------- 40*276da39aSCy Schubert // Guess Widths If Not Specified 41*276da39aSCy Schubert //------------------------------------------------------- 42*276da39aSCy Schubert 43*276da39aSCy Schubert // Determine the size of an int, if not already specificied. 44*276da39aSCy Schubert // We cannot use sizeof(int), because it is not yet defined 45*276da39aSCy Schubert // at this stage in the trnslation of the C program. 46*276da39aSCy Schubert // Therefore, infer it from UINT_MAX if possible. 47*276da39aSCy Schubert #ifndef UNITY_INT_WIDTH 48*276da39aSCy Schubert #ifdef UINT_MAX 49*276da39aSCy Schubert #if (UINT_MAX == 0xFFFF) 50*276da39aSCy Schubert #define UNITY_INT_WIDTH (16) 51*276da39aSCy Schubert #elif (UINT_MAX == 0xFFFFFFFF) 52*276da39aSCy Schubert #define UNITY_INT_WIDTH (32) 53*276da39aSCy Schubert #elif (UINT_MAX == 0xFFFFFFFFFFFFFFFF) 54*276da39aSCy Schubert #define UNITY_INT_WIDTH (64) 55*276da39aSCy Schubert #endif 56*276da39aSCy Schubert #endif 57*276da39aSCy Schubert #endif 58*276da39aSCy Schubert #ifndef UNITY_INT_WIDTH 59*276da39aSCy Schubert #define UNITY_INT_WIDTH (32) 60*276da39aSCy Schubert #endif 61*276da39aSCy Schubert 62*276da39aSCy Schubert // Determine the size of a long, if not already specified, 63*276da39aSCy Schubert // by following the process used above to define 64*276da39aSCy Schubert // UNITY_INT_WIDTH. 65*276da39aSCy Schubert #ifndef UNITY_LONG_WIDTH 66*276da39aSCy Schubert #ifdef ULONG_MAX 67*276da39aSCy Schubert #if (ULONG_MAX == 0xFFFF) 68*276da39aSCy Schubert #define UNITY_LONG_WIDTH (16) 69*276da39aSCy Schubert #elif (ULONG_MAX == 0xFFFFFFFF) 70*276da39aSCy Schubert #define UNITY_LONG_WIDTH (32) 71*276da39aSCy Schubert #elif (ULONG_MAX == 0xFFFFFFFFFFFFFFFF) 72*276da39aSCy Schubert #define UNITY_LONG_WIDTH (64) 73*276da39aSCy Schubert #endif 74*276da39aSCy Schubert #endif 75*276da39aSCy Schubert #endif 76*276da39aSCy Schubert #ifndef UNITY_LONG_WIDTH 77*276da39aSCy Schubert #define UNITY_LONG_WIDTH (32) 78*276da39aSCy Schubert #endif 79*276da39aSCy Schubert 80*276da39aSCy Schubert // Determine the size of a pointer, if not already specified, 81*276da39aSCy Schubert // by following the process used above to define 82*276da39aSCy Schubert // UNITY_INT_WIDTH. 83*276da39aSCy Schubert #ifndef UNITY_POINTER_WIDTH 84*276da39aSCy Schubert #ifdef UINTPTR_MAX 85*276da39aSCy Schubert #if (UINTPTR_MAX <= 0xFFFF) 86*276da39aSCy Schubert #define UNITY_POINTER_WIDTH (16) 87*276da39aSCy Schubert #elif (UINTPTR_MAX <= 0xFFFFFFFF) 88*276da39aSCy Schubert #define UNITY_POINTER_WIDTH (32) 89*276da39aSCy Schubert #elif (UINTPTR_MAX <= 0xFFFFFFFFFFFFFFFF) 90*276da39aSCy Schubert #define UNITY_POINTER_WIDTH (64) 91*276da39aSCy Schubert #endif 92*276da39aSCy Schubert #endif 93*276da39aSCy Schubert #endif 94*276da39aSCy Schubert #ifndef UNITY_POINTER_WIDTH 95*276da39aSCy Schubert #ifdef INTPTR_MAX 96*276da39aSCy Schubert #if (INTPTR_MAX <= 0x7FFF) 97*276da39aSCy Schubert #define UNITY_POINTER_WIDTH (16) 98*276da39aSCy Schubert #elif (INTPTR_MAX <= 0x7FFFFFFF) 99*276da39aSCy Schubert #define UNITY_POINTER_WIDTH (32) 100*276da39aSCy Schubert #elif (INTPTR_MAX <= 0x7FFFFFFFFFFFFFFF) 101*276da39aSCy Schubert #define UNITY_POINTER_WIDTH (64) 102*276da39aSCy Schubert #endif 103*276da39aSCy Schubert #endif 104*276da39aSCy Schubert #endif 105*276da39aSCy Schubert #ifndef UNITY_POINTER_WIDTH 106*276da39aSCy Schubert #define UNITY_POINTER_WIDTH UNITY_LONG_WIDTH 107*276da39aSCy Schubert #endif 108*276da39aSCy Schubert 109*276da39aSCy Schubert //------------------------------------------------------- 110*276da39aSCy Schubert // Int Support (Define types based on detected sizes) 111*276da39aSCy Schubert //------------------------------------------------------- 112*276da39aSCy Schubert 113*276da39aSCy Schubert #if (UNITY_INT_WIDTH == 32) 114*276da39aSCy Schubert typedef unsigned char _UU8; 115*276da39aSCy Schubert typedef unsigned short _UU16; 116*276da39aSCy Schubert typedef unsigned int _UU32; 117*276da39aSCy Schubert typedef signed char _US8; 118*276da39aSCy Schubert typedef signed short _US16; 119*276da39aSCy Schubert typedef signed int _US32; 120*276da39aSCy Schubert #elif (UNITY_INT_WIDTH == 16) 121*276da39aSCy Schubert typedef unsigned char _UU8; 122*276da39aSCy Schubert typedef unsigned int _UU16; 123*276da39aSCy Schubert typedef unsigned long _UU32; 124*276da39aSCy Schubert typedef signed char _US8; 125*276da39aSCy Schubert typedef signed int _US16; 126*276da39aSCy Schubert typedef signed long _US32; 127*276da39aSCy Schubert #else 128*276da39aSCy Schubert #error Invalid UNITY_INT_WIDTH specified! (16 or 32 are supported) 129*276da39aSCy Schubert #endif 130*276da39aSCy Schubert 131*276da39aSCy Schubert //------------------------------------------------------- 132*276da39aSCy Schubert // 64-bit Support 133*276da39aSCy Schubert //------------------------------------------------------- 134*276da39aSCy Schubert 135*276da39aSCy Schubert #ifndef UNITY_SUPPORT_64 136*276da39aSCy Schubert #if UNITY_LONG_WIDTH > 32 137*276da39aSCy Schubert #define UNITY_SUPPORT_64 138*276da39aSCy Schubert #endif 139*276da39aSCy Schubert #endif 140*276da39aSCy Schubert #ifndef UNITY_SUPPORT_64 141*276da39aSCy Schubert #if UNITY_POINTER_WIDTH > 32 142*276da39aSCy Schubert #define UNITY_SUPPORT_64 143*276da39aSCy Schubert #endif 144*276da39aSCy Schubert #endif 145*276da39aSCy Schubert 146*276da39aSCy Schubert #ifndef UNITY_SUPPORT_64 147*276da39aSCy Schubert 148*276da39aSCy Schubert //No 64-bit Support 149*276da39aSCy Schubert typedef _UU32 _U_UINT; 150*276da39aSCy Schubert typedef _US32 _U_SINT; 151*276da39aSCy Schubert 152*276da39aSCy Schubert #else 153*276da39aSCy Schubert 154*276da39aSCy Schubert //64-bit Support 155*276da39aSCy Schubert #if (UNITY_LONG_WIDTH == 32) 156*276da39aSCy Schubert typedef unsigned long long _UU64; 157*276da39aSCy Schubert typedef signed long long _US64; 158*276da39aSCy Schubert #elif (UNITY_LONG_WIDTH == 64) 159*276da39aSCy Schubert typedef unsigned long _UU64; 160*276da39aSCy Schubert typedef signed long _US64; 161*276da39aSCy Schubert #else 162*276da39aSCy Schubert #error Invalid UNITY_LONG_WIDTH specified! (32 or 64 are supported) 163*276da39aSCy Schubert #endif 164*276da39aSCy Schubert typedef _UU64 _U_UINT; 165*276da39aSCy Schubert typedef _US64 _U_SINT; 166*276da39aSCy Schubert 167*276da39aSCy Schubert #endif 168*276da39aSCy Schubert 169*276da39aSCy Schubert //------------------------------------------------------- 170*276da39aSCy Schubert // Pointer Support 171*276da39aSCy Schubert //------------------------------------------------------- 172*276da39aSCy Schubert 173*276da39aSCy Schubert #if (UNITY_POINTER_WIDTH == 32) 174*276da39aSCy Schubert typedef _UU32 _UP; 175*276da39aSCy Schubert #define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX32 176*276da39aSCy Schubert #elif (UNITY_POINTER_WIDTH == 64) 177*276da39aSCy Schubert typedef _UU64 _UP; 178*276da39aSCy Schubert #define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX64 179*276da39aSCy Schubert #elif (UNITY_POINTER_WIDTH == 16) 180*276da39aSCy Schubert typedef _UU16 _UP; 181*276da39aSCy Schubert #define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX16 182*276da39aSCy Schubert #else 183*276da39aSCy Schubert #error Invalid UNITY_POINTER_WIDTH specified! (16, 32 or 64 are supported) 184*276da39aSCy Schubert #endif 185*276da39aSCy Schubert 186*276da39aSCy Schubert #ifndef UNITY_PTR_ATTRIBUTE 187*276da39aSCy Schubert #define UNITY_PTR_ATTRIBUTE 188*276da39aSCy Schubert #endif 189*276da39aSCy Schubert 190*276da39aSCy Schubert //------------------------------------------------------- 191*276da39aSCy Schubert // Float Support 192*276da39aSCy Schubert //------------------------------------------------------- 193*276da39aSCy Schubert 194*276da39aSCy Schubert #ifdef UNITY_EXCLUDE_FLOAT 195*276da39aSCy Schubert 196*276da39aSCy Schubert //No Floating Point Support 197*276da39aSCy Schubert #undef UNITY_INCLUDE_FLOAT 198*276da39aSCy Schubert #undef UNITY_FLOAT_PRECISION 199*276da39aSCy Schubert #undef UNITY_FLOAT_TYPE 200*276da39aSCy Schubert #undef UNITY_FLOAT_VERBOSE 201*276da39aSCy Schubert 202*276da39aSCy Schubert #else 203*276da39aSCy Schubert 204*276da39aSCy Schubert #ifndef UNITY_INCLUDE_FLOAT 205*276da39aSCy Schubert #define UNITY_INCLUDE_FLOAT 206*276da39aSCy Schubert #endif 207*276da39aSCy Schubert 208*276da39aSCy Schubert //Floating Point Support 209*276da39aSCy Schubert #ifndef UNITY_FLOAT_PRECISION 210*276da39aSCy Schubert #define UNITY_FLOAT_PRECISION (0.00001f) 211*276da39aSCy Schubert #endif 212*276da39aSCy Schubert #ifndef UNITY_FLOAT_TYPE 213*276da39aSCy Schubert #define UNITY_FLOAT_TYPE float 214*276da39aSCy Schubert #endif 215*276da39aSCy Schubert typedef UNITY_FLOAT_TYPE _UF; 216*276da39aSCy Schubert 217*276da39aSCy Schubert #endif 218*276da39aSCy Schubert 219*276da39aSCy Schubert //------------------------------------------------------- 220*276da39aSCy Schubert // Double Float Support 221*276da39aSCy Schubert //------------------------------------------------------- 222*276da39aSCy Schubert 223*276da39aSCy Schubert //unlike FLOAT, we DON'T include by default 224*276da39aSCy Schubert #ifndef UNITY_EXCLUDE_DOUBLE 225*276da39aSCy Schubert #ifndef UNITY_INCLUDE_DOUBLE 226*276da39aSCy Schubert #define UNITY_EXCLUDE_DOUBLE 227*276da39aSCy Schubert #endif 228*276da39aSCy Schubert #endif 229*276da39aSCy Schubert 230*276da39aSCy Schubert #ifdef UNITY_EXCLUDE_DOUBLE 231*276da39aSCy Schubert 232*276da39aSCy Schubert //No Floating Point Support 233*276da39aSCy Schubert #undef UNITY_DOUBLE_PRECISION 234*276da39aSCy Schubert #undef UNITY_DOUBLE_TYPE 235*276da39aSCy Schubert #undef UNITY_DOUBLE_VERBOSE 236*276da39aSCy Schubert 237*276da39aSCy Schubert #ifdef UNITY_INCLUDE_DOUBLE 238*276da39aSCy Schubert #undef UNITY_INCLUDE_DOUBLE 239*276da39aSCy Schubert #endif 240*276da39aSCy Schubert 241*276da39aSCy Schubert #else 242*276da39aSCy Schubert 243*276da39aSCy Schubert //Double Floating Point Support 244*276da39aSCy Schubert #ifndef UNITY_DOUBLE_PRECISION 245*276da39aSCy Schubert #define UNITY_DOUBLE_PRECISION (1e-12f) 246*276da39aSCy Schubert #endif 247*276da39aSCy Schubert #ifndef UNITY_DOUBLE_TYPE 248*276da39aSCy Schubert #define UNITY_DOUBLE_TYPE double 249*276da39aSCy Schubert #endif 250*276da39aSCy Schubert typedef UNITY_DOUBLE_TYPE _UD; 251*276da39aSCy Schubert 252*276da39aSCy Schubert #endif 253*276da39aSCy Schubert 254*276da39aSCy Schubert #ifdef UNITY_DOUBLE_VERBOSE 255*276da39aSCy Schubert #ifndef UNITY_FLOAT_VERBOSE 256*276da39aSCy Schubert #define UNITY_FLOAT_VERBOSE 257*276da39aSCy Schubert #endif 258*276da39aSCy Schubert #endif 259*276da39aSCy Schubert 260*276da39aSCy Schubert //------------------------------------------------------- 261*276da39aSCy Schubert // Output Method: stdout (DEFAULT) 262*276da39aSCy Schubert //------------------------------------------------------- 263*276da39aSCy Schubert #ifndef UNITY_OUTPUT_CHAR 264*276da39aSCy Schubert //Default to using putchar, which is defined in stdio.h 265*276da39aSCy Schubert #include <stdio.h> 266*276da39aSCy Schubert #define UNITY_OUTPUT_CHAR(a) putchar(a) 267*276da39aSCy Schubert #else 268*276da39aSCy Schubert //If defined as something else, make sure we declare it here so it's ready for use 269*276da39aSCy Schubert extern int UNITY_OUTPUT_CHAR(int); 270*276da39aSCy Schubert #endif 271*276da39aSCy Schubert 272*276da39aSCy Schubert #ifndef UNITY_OUTPUT_START 273*276da39aSCy Schubert #define UNITY_OUTPUT_START() 274*276da39aSCy Schubert #endif 275*276da39aSCy Schubert 276*276da39aSCy Schubert #ifndef UNITY_OUTPUT_COMPLETE 277*276da39aSCy Schubert #define UNITY_OUTPUT_COMPLETE() 278*276da39aSCy Schubert #endif 279*276da39aSCy Schubert 280*276da39aSCy Schubert //------------------------------------------------------- 281*276da39aSCy Schubert // Footprint 282*276da39aSCy Schubert //------------------------------------------------------- 283*276da39aSCy Schubert 284*276da39aSCy Schubert #ifndef UNITY_LINE_TYPE 285*276da39aSCy Schubert #define UNITY_LINE_TYPE _U_UINT 286*276da39aSCy Schubert #endif 287*276da39aSCy Schubert 288*276da39aSCy Schubert #ifndef UNITY_COUNTER_TYPE 289*276da39aSCy Schubert #define UNITY_COUNTER_TYPE _U_UINT 290*276da39aSCy Schubert #endif 291*276da39aSCy Schubert 292*276da39aSCy Schubert //------------------------------------------------------- 293*276da39aSCy Schubert // Language Features Available 294*276da39aSCy Schubert //------------------------------------------------------- 295*276da39aSCy Schubert #if !defined(UNITY_WEAK_ATTRIBUTE) && !defined(UNITY_WEAK_PRAGMA) 296*276da39aSCy Schubert # ifdef __GNUC__ // includes clang 297*276da39aSCy Schubert # if !(defined(__WIN32__) && defined(__clang__)) 298*276da39aSCy Schubert # define UNITY_WEAK_ATTRIBUTE __attribute__((weak)) 299*276da39aSCy Schubert # endif 300*276da39aSCy Schubert # endif 301*276da39aSCy Schubert #endif 302*276da39aSCy Schubert 303*276da39aSCy Schubert #ifdef UNITY_NO_WEAK 304*276da39aSCy Schubert # undef UNITY_WEAK_ATTRIBUTE 305*276da39aSCy Schubert # undef UNITY_WEAK_PRAGMA 306*276da39aSCy Schubert #endif 307*276da39aSCy Schubert 308*276da39aSCy Schubert 309*276da39aSCy Schubert //------------------------------------------------------- 310*276da39aSCy Schubert // Internal Structs Needed 311*276da39aSCy Schubert //------------------------------------------------------- 312*276da39aSCy Schubert 313*276da39aSCy Schubert typedef void (*UnityTestFunction)(void); 314*276da39aSCy Schubert 315*276da39aSCy Schubert #define UNITY_DISPLAY_RANGE_INT (0x10) 316*276da39aSCy Schubert #define UNITY_DISPLAY_RANGE_UINT (0x20) 317*276da39aSCy Schubert #define UNITY_DISPLAY_RANGE_HEX (0x40) 318*276da39aSCy Schubert #define UNITY_DISPLAY_RANGE_AUTO (0x80) 319*276da39aSCy Schubert 320*276da39aSCy Schubert typedef enum 321*276da39aSCy Schubert { 322*276da39aSCy Schubert #if (UNITY_INT_WIDTH == 16) 323*276da39aSCy Schubert UNITY_DISPLAY_STYLE_INT = 2 + UNITY_DISPLAY_RANGE_INT + UNITY_DISPLAY_RANGE_AUTO, 324*276da39aSCy Schubert #elif (UNITY_INT_WIDTH == 32) 325*276da39aSCy Schubert UNITY_DISPLAY_STYLE_INT = 4 + UNITY_DISPLAY_RANGE_INT + UNITY_DISPLAY_RANGE_AUTO, 326*276da39aSCy Schubert #elif (UNITY_INT_WIDTH == 64) 327*276da39aSCy Schubert UNITY_DISPLAY_STYLE_INT = 8 + UNITY_DISPLAY_RANGE_INT + UNITY_DISPLAY_RANGE_AUTO, 328*276da39aSCy Schubert #endif 329*276da39aSCy Schubert UNITY_DISPLAY_STYLE_INT8 = 1 + UNITY_DISPLAY_RANGE_INT, 330*276da39aSCy Schubert UNITY_DISPLAY_STYLE_INT16 = 2 + UNITY_DISPLAY_RANGE_INT, 331*276da39aSCy Schubert UNITY_DISPLAY_STYLE_INT32 = 4 + UNITY_DISPLAY_RANGE_INT, 332*276da39aSCy Schubert #ifdef UNITY_SUPPORT_64 333*276da39aSCy Schubert UNITY_DISPLAY_STYLE_INT64 = 8 + UNITY_DISPLAY_RANGE_INT, 334*276da39aSCy Schubert #endif 335*276da39aSCy Schubert 336*276da39aSCy Schubert #if (UNITY_INT_WIDTH == 16) 337*276da39aSCy Schubert UNITY_DISPLAY_STYLE_UINT = 2 + UNITY_DISPLAY_RANGE_UINT + UNITY_DISPLAY_RANGE_AUTO, 338*276da39aSCy Schubert #elif (UNITY_INT_WIDTH == 32) 339*276da39aSCy Schubert UNITY_DISPLAY_STYLE_UINT = 4 + UNITY_DISPLAY_RANGE_UINT + UNITY_DISPLAY_RANGE_AUTO, 340*276da39aSCy Schubert #elif (UNITY_INT_WIDTH == 64) 341*276da39aSCy Schubert UNITY_DISPLAY_STYLE_UINT = 8 + UNITY_DISPLAY_RANGE_UINT + UNITY_DISPLAY_RANGE_AUTO, 342*276da39aSCy Schubert #endif 343*276da39aSCy Schubert UNITY_DISPLAY_STYLE_UINT8 = 1 + UNITY_DISPLAY_RANGE_UINT, 344*276da39aSCy Schubert UNITY_DISPLAY_STYLE_UINT16 = 2 + UNITY_DISPLAY_RANGE_UINT, 345*276da39aSCy Schubert UNITY_DISPLAY_STYLE_UINT32 = 4 + UNITY_DISPLAY_RANGE_UINT, 346*276da39aSCy Schubert #ifdef UNITY_SUPPORT_64 347*276da39aSCy Schubert UNITY_DISPLAY_STYLE_UINT64 = 8 + UNITY_DISPLAY_RANGE_UINT, 348*276da39aSCy Schubert #endif 349*276da39aSCy Schubert UNITY_DISPLAY_STYLE_HEX8 = 1 + UNITY_DISPLAY_RANGE_HEX, 350*276da39aSCy Schubert UNITY_DISPLAY_STYLE_HEX16 = 2 + UNITY_DISPLAY_RANGE_HEX, 351*276da39aSCy Schubert UNITY_DISPLAY_STYLE_HEX32 = 4 + UNITY_DISPLAY_RANGE_HEX, 352*276da39aSCy Schubert #ifdef UNITY_SUPPORT_64 353*276da39aSCy Schubert UNITY_DISPLAY_STYLE_HEX64 = 8 + UNITY_DISPLAY_RANGE_HEX, 354*276da39aSCy Schubert #endif 355*276da39aSCy Schubert UNITY_DISPLAY_STYLE_UNKNOWN 356*276da39aSCy Schubert } UNITY_DISPLAY_STYLE_T; 357*276da39aSCy Schubert 358*276da39aSCy Schubert #ifndef UNITY_EXCLUDE_FLOAT 359*276da39aSCy Schubert typedef enum _UNITY_FLOAT_TRAIT_T 360*276da39aSCy Schubert { 361*276da39aSCy Schubert UNITY_FLOAT_IS_NOT_INF = 0, 362*276da39aSCy Schubert UNITY_FLOAT_IS_INF, 363*276da39aSCy Schubert UNITY_FLOAT_IS_NOT_NEG_INF, 364*276da39aSCy Schubert UNITY_FLOAT_IS_NEG_INF, 365*276da39aSCy Schubert UNITY_FLOAT_IS_NOT_NAN, 366*276da39aSCy Schubert UNITY_FLOAT_IS_NAN, 367*276da39aSCy Schubert UNITY_FLOAT_IS_NOT_DET, 368*276da39aSCy Schubert UNITY_FLOAT_IS_DET, 369*276da39aSCy Schubert } UNITY_FLOAT_TRAIT_T; 370*276da39aSCy Schubert #endif 371*276da39aSCy Schubert 372*276da39aSCy Schubert struct _Unity 373*276da39aSCy Schubert { 374*276da39aSCy Schubert const char* TestFile; 375*276da39aSCy Schubert const char* CurrentTestName; 376*276da39aSCy Schubert UNITY_LINE_TYPE CurrentTestLineNumber; 377*276da39aSCy Schubert UNITY_COUNTER_TYPE NumberOfTests; 378*276da39aSCy Schubert UNITY_COUNTER_TYPE TestFailures; 379*276da39aSCy Schubert UNITY_COUNTER_TYPE TestIgnores; 380*276da39aSCy Schubert UNITY_COUNTER_TYPE CurrentTestFailed; 381*276da39aSCy Schubert UNITY_COUNTER_TYPE CurrentTestIgnored; 382*276da39aSCy Schubert jmp_buf AbortFrame; 383*276da39aSCy Schubert int isExpectingFail; 384*276da39aSCy Schubert UNITY_COUNTER_TYPE TestXFAILS; 385*276da39aSCy Schubert UNITY_COUNTER_TYPE TestPasses; 386*276da39aSCy Schubert UNITY_COUNTER_TYPE TestXPASSES; 387*276da39aSCy Schubert const char* XFAILMessage; 388*276da39aSCy Schubert }; 389*276da39aSCy Schubert 390*276da39aSCy Schubert extern struct _Unity Unity; 391*276da39aSCy Schubert 392*276da39aSCy Schubert //------------------------------------------------------- 393*276da39aSCy Schubert // Test Suite Management 394*276da39aSCy Schubert //------------------------------------------------------- 395*276da39aSCy Schubert 396*276da39aSCy Schubert void UnityBegin(const char* filename); 397*276da39aSCy Schubert int UnityEnd(void); 398*276da39aSCy Schubert void UnityConcludeTest(void); 399*276da39aSCy Schubert void UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int FuncLineNum); 400*276da39aSCy Schubert 401*276da39aSCy Schubert //------------------------------------------------------- 402*276da39aSCy Schubert // Test Output 403*276da39aSCy Schubert //------------------------------------------------------- 404*276da39aSCy Schubert 405*276da39aSCy Schubert void UnityPrint(const char* string); 406*276da39aSCy Schubert void UnityPrintMask(const _U_UINT mask, const _U_UINT number); 407*276da39aSCy Schubert void UnityPrintNumberByStyle(const _U_SINT number, const UNITY_DISPLAY_STYLE_T style); 408*276da39aSCy Schubert void UnityPrintNumber(const _U_SINT number); 409*276da39aSCy Schubert void UnityPrintNumberUnsigned(const _U_UINT number); 410*276da39aSCy Schubert void UnityPrintNumberHex(const _U_UINT number, const char nibbles); 411*276da39aSCy Schubert 412*276da39aSCy Schubert #ifdef UNITY_FLOAT_VERBOSE 413*276da39aSCy Schubert void UnityPrintFloat(const _UF number); 414*276da39aSCy Schubert #endif 415*276da39aSCy Schubert 416*276da39aSCy Schubert //------------------------------------------------------- 417*276da39aSCy Schubert // Test Assertion Fuctions 418*276da39aSCy Schubert //------------------------------------------------------- 419*276da39aSCy Schubert // Use the macros below this section instead of calling 420*276da39aSCy Schubert // these directly. The macros have a consistent naming 421*276da39aSCy Schubert // convention and will pull in file and line information 422*276da39aSCy Schubert // for you. 423*276da39aSCy Schubert 424*276da39aSCy Schubert void UnityAssertEqualNumber(const _U_SINT expected, 425*276da39aSCy Schubert const _U_SINT actual, 426*276da39aSCy Schubert const char* msg, 427*276da39aSCy Schubert const UNITY_LINE_TYPE lineNumber, 428*276da39aSCy Schubert const UNITY_DISPLAY_STYLE_T style); 429*276da39aSCy Schubert 430*276da39aSCy Schubert void UnityAssertEqualIntArray(UNITY_PTR_ATTRIBUTE const void* expected, 431*276da39aSCy Schubert UNITY_PTR_ATTRIBUTE const void* actual, 432*276da39aSCy Schubert const _UU32 num_elements, 433*276da39aSCy Schubert const char* msg, 434*276da39aSCy Schubert const UNITY_LINE_TYPE lineNumber, 435*276da39aSCy Schubert const UNITY_DISPLAY_STYLE_T style); 436*276da39aSCy Schubert 437*276da39aSCy Schubert void UnityAssertBits(const _U_SINT mask, 438*276da39aSCy Schubert const _U_SINT expected, 439*276da39aSCy Schubert const _U_SINT actual, 440*276da39aSCy Schubert const char* msg, 441*276da39aSCy Schubert const UNITY_LINE_TYPE lineNumber); 442*276da39aSCy Schubert 443*276da39aSCy Schubert void UnityAssertEqualString(const char* expected, 444*276da39aSCy Schubert const char* actual, 445*276da39aSCy Schubert const char* msg, 446*276da39aSCy Schubert const UNITY_LINE_TYPE lineNumber); 447*276da39aSCy Schubert 448*276da39aSCy Schubert void UnityAssertEqualStringArray( const char** expected, 449*276da39aSCy Schubert const char** actual, 450*276da39aSCy Schubert const _UU32 num_elements, 451*276da39aSCy Schubert const char* msg, 452*276da39aSCy Schubert const UNITY_LINE_TYPE lineNumber); 453*276da39aSCy Schubert 454*276da39aSCy Schubert void UnityAssertEqualMemory( UNITY_PTR_ATTRIBUTE const void* expected, 455*276da39aSCy Schubert UNITY_PTR_ATTRIBUTE const void* actual, 456*276da39aSCy Schubert const _UU32 length, 457*276da39aSCy Schubert const _UU32 num_elements, 458*276da39aSCy Schubert const char* msg, 459*276da39aSCy Schubert const UNITY_LINE_TYPE lineNumber); 460*276da39aSCy Schubert 461*276da39aSCy Schubert void UnityAssertNumbersWithin(const _U_SINT delta, 462*276da39aSCy Schubert const _U_SINT expected, 463*276da39aSCy Schubert const _U_SINT actual, 464*276da39aSCy Schubert const char* msg, 465*276da39aSCy Schubert const UNITY_LINE_TYPE lineNumber, 466*276da39aSCy Schubert const UNITY_DISPLAY_STYLE_T style); 467*276da39aSCy Schubert 468*276da39aSCy Schubert void UnityFail(const char* message, const UNITY_LINE_TYPE line); 469*276da39aSCy Schubert 470*276da39aSCy Schubert void UnityIgnore(const char* message, const UNITY_LINE_TYPE line); 471*276da39aSCy Schubert 472*276da39aSCy Schubert #ifndef UNITY_EXCLUDE_FLOAT 473*276da39aSCy Schubert void UnityAssertFloatsWithin(const _UF delta, 474*276da39aSCy Schubert const _UF expected, 475*276da39aSCy Schubert const _UF actual, 476*276da39aSCy Schubert const char* msg, 477*276da39aSCy Schubert const UNITY_LINE_TYPE lineNumber); 478*276da39aSCy Schubert 479*276da39aSCy Schubert void UnityAssertEqualFloatArray(UNITY_PTR_ATTRIBUTE const _UF* expected, 480*276da39aSCy Schubert UNITY_PTR_ATTRIBUTE const _UF* actual, 481*276da39aSCy Schubert const _UU32 num_elements, 482*276da39aSCy Schubert const char* msg, 483*276da39aSCy Schubert const UNITY_LINE_TYPE lineNumber); 484*276da39aSCy Schubert 485*276da39aSCy Schubert void UnityAssertFloatSpecial(const _UF actual, 486*276da39aSCy Schubert const char* msg, 487*276da39aSCy Schubert const UNITY_LINE_TYPE lineNumber, 488*276da39aSCy Schubert const UNITY_FLOAT_TRAIT_T style); 489*276da39aSCy Schubert #endif 490*276da39aSCy Schubert 491*276da39aSCy Schubert #ifndef UNITY_EXCLUDE_DOUBLE 492*276da39aSCy Schubert void UnityAssertDoublesWithin(const _UD delta, 493*276da39aSCy Schubert const _UD expected, 494*276da39aSCy Schubert const _UD actual, 495*276da39aSCy Schubert const char* msg, 496*276da39aSCy Schubert const UNITY_LINE_TYPE lineNumber); 497*276da39aSCy Schubert 498*276da39aSCy Schubert void UnityAssertEqualDoubleArray(UNITY_PTR_ATTRIBUTE const _UD* expected, 499*276da39aSCy Schubert UNITY_PTR_ATTRIBUTE const _UD* actual, 500*276da39aSCy Schubert const _UU32 num_elements, 501*276da39aSCy Schubert const char* msg, 502*276da39aSCy Schubert const UNITY_LINE_TYPE lineNumber); 503*276da39aSCy Schubert 504*276da39aSCy Schubert void UnityAssertDoubleSpecial(const _UD actual, 505*276da39aSCy Schubert const char* msg, 506*276da39aSCy Schubert const UNITY_LINE_TYPE lineNumber, 507*276da39aSCy Schubert const UNITY_FLOAT_TRAIT_T style); 508*276da39aSCy Schubert #endif 509*276da39aSCy Schubert 510*276da39aSCy Schubert //------------------------------------------------------- 511*276da39aSCy Schubert // Error Strings We Might Need 512*276da39aSCy Schubert //------------------------------------------------------- 513*276da39aSCy Schubert 514*276da39aSCy Schubert extern const char UnityStrErrFloat[]; 515*276da39aSCy Schubert extern const char UnityStrErrDouble[]; 516*276da39aSCy Schubert extern const char UnityStrErr64[]; 517*276da39aSCy Schubert 518*276da39aSCy Schubert //------------------------------------------------------- 519*276da39aSCy Schubert // Test Running Macros 520*276da39aSCy Schubert //------------------------------------------------------- 521*276da39aSCy Schubert 522*276da39aSCy Schubert #define TEST_PROTECT() (setjmp(Unity.AbortFrame) == 0) 523*276da39aSCy Schubert 524*276da39aSCy Schubert #define TEST_ABORT() {longjmp(Unity.AbortFrame, 1);} 525*276da39aSCy Schubert 526*276da39aSCy Schubert //This tricky series of macros gives us an optional line argument to treat it as RUN_TEST(func, num=__LINE__) 527*276da39aSCy Schubert #ifndef RUN_TEST 528*276da39aSCy Schubert #ifdef __STDC_VERSION__ 529*276da39aSCy Schubert #if __STDC_VERSION__ >= 199901L 530*276da39aSCy Schubert #define RUN_TEST(...) UnityDefaultTestRun(RUN_TEST_FIRST(__VA_ARGS__), RUN_TEST_SECOND(__VA_ARGS__)) 531*276da39aSCy Schubert #define RUN_TEST_FIRST(...) RUN_TEST_FIRST_HELPER(__VA_ARGS__, throwaway) 532*276da39aSCy Schubert #define RUN_TEST_FIRST_HELPER(first,...) first, #first 533*276da39aSCy Schubert #define RUN_TEST_SECOND(...) RUN_TEST_SECOND_HELPER(__VA_ARGS__, __LINE__, throwaway) 534*276da39aSCy Schubert #define RUN_TEST_SECOND_HELPER(first,second,...) second 535*276da39aSCy Schubert #endif 536*276da39aSCy Schubert #endif 537*276da39aSCy Schubert #endif 538*276da39aSCy Schubert 539*276da39aSCy Schubert //If we can't do the tricky version, we'll just have to require them to always include the line number 540*276da39aSCy Schubert #ifndef RUN_TEST 541*276da39aSCy Schubert #ifdef CMOCK 542*276da39aSCy Schubert #define RUN_TEST(func, num) UnityDefaultTestRun(func, #func, num) 543*276da39aSCy Schubert #else 544*276da39aSCy Schubert #define RUN_TEST(func) UnityDefaultTestRun(func, #func, __LINE__) 545*276da39aSCy Schubert #endif 546*276da39aSCy Schubert #endif 547*276da39aSCy Schubert 548*276da39aSCy Schubert #define TEST_LINE_NUM (Unity.CurrentTestLineNumber) 549*276da39aSCy Schubert #define TEST_IS_IGNORED (Unity.CurrentTestIgnored) 550*276da39aSCy Schubert #define UNITY_NEW_TEST(a) \ 551*276da39aSCy Schubert Unity.CurrentTestName = a; \ 552*276da39aSCy Schubert Unity.CurrentTestLineNumber = (UNITY_LINE_TYPE)(__LINE__); \ 553*276da39aSCy Schubert Unity.NumberOfTests++; 554*276da39aSCy Schubert 555*276da39aSCy Schubert #ifndef UNITY_BEGIN 556*276da39aSCy Schubert #define UNITY_BEGIN() UnityBegin(__FILE__) 557*276da39aSCy Schubert #endif 558*276da39aSCy Schubert 559*276da39aSCy Schubert #ifndef UNITY_END 560*276da39aSCy Schubert #define UNITY_END() UnityEnd() 561*276da39aSCy Schubert #endif 562*276da39aSCy Schubert 563*276da39aSCy Schubert //------------------------------------------------------- 564*276da39aSCy Schubert // Basic Fail and Ignore 565*276da39aSCy Schubert //------------------------------------------------------- 566*276da39aSCy Schubert 567*276da39aSCy Schubert #define UNITY_TEST_FAIL(line, message) UnityFail( (message), (UNITY_LINE_TYPE)line); 568*276da39aSCy Schubert #define UNITY_TEST_IGNORE(line, message) UnityIgnore( (message), (UNITY_LINE_TYPE)line); 569*276da39aSCy Schubert 570*276da39aSCy Schubert //------------------------------------------------------- 571*276da39aSCy Schubert // Test Asserts 572*276da39aSCy Schubert //------------------------------------------------------- 573*276da39aSCy Schubert 574*276da39aSCy Schubert #define UNITY_TEST_ASSERT(condition, line, message) if (condition) {} else {UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, message);} 575*276da39aSCy Schubert #define UNITY_TEST_ASSERT_NULL(pointer, line, message) UNITY_TEST_ASSERT(((pointer) == NULL), (UNITY_LINE_TYPE)line, message) 576*276da39aSCy Schubert #define UNITY_TEST_ASSERT_NOT_NULL(pointer, line, message) UNITY_TEST_ASSERT(((pointer) != NULL), (UNITY_LINE_TYPE)line, message) 577*276da39aSCy Schubert 578*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_INT(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(expected), (_U_SINT)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT) 579*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_INT8(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_US8 )(expected), (_U_SINT)(_US8 )(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT8) 580*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_INT16(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_US16)(expected), (_U_SINT)(_US16)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT16) 581*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_INT32(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_US32)(expected), (_U_SINT)(_US32)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT32) 582*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_UINT(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(expected), (_U_SINT)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT) 583*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_UINT8(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_UU8 )(expected), (_U_SINT)(_UU8 )(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT8) 584*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_UINT16(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_UU16)(expected), (_U_SINT)(_UU16)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT16) 585*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_UINT32(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_UU32)(expected), (_U_SINT)(_UU32)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT32) 586*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_HEX8(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_US8 )(expected), (_U_SINT)(_US8 )(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX8) 587*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_HEX16(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_US16)(expected), (_U_SINT)(_US16)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX16) 588*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_HEX32(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_US32)(expected), (_U_SINT)(_US32)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX32) 589*276da39aSCy Schubert #define UNITY_TEST_ASSERT_BITS(mask, expected, actual, line, message) UnityAssertBits((_U_SINT)(mask), (_U_SINT)(expected), (_U_SINT)(actual), (message), (UNITY_LINE_TYPE)line) 590*276da39aSCy Schubert 591*276da39aSCy Schubert #define UNITY_TEST_ASSERT_INT_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(delta), (_U_SINT)(expected), (_U_SINT)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT) 592*276da39aSCy Schubert #define UNITY_TEST_ASSERT_INT8_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(_US8 )(delta), (_U_SINT)(_US8 )(expected), (_U_SINT)(_US8 )(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT8) 593*276da39aSCy Schubert #define UNITY_TEST_ASSERT_INT16_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(_US16)(delta), (_U_SINT)(_US16)(expected), (_U_SINT)(_US16)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT16) 594*276da39aSCy Schubert #define UNITY_TEST_ASSERT_INT32_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(_US32)(delta), (_U_SINT)(_US32)(expected), (_U_SINT)(_US32)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT32) 595*276da39aSCy Schubert #define UNITY_TEST_ASSERT_UINT_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(delta), (_U_SINT)(expected), (_U_SINT)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT) 596*276da39aSCy Schubert #define UNITY_TEST_ASSERT_UINT8_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(_U_UINT)(_UU8 )(delta), (_U_SINT)(_U_UINT)(_UU8 )(expected), (_U_SINT)(_U_UINT)(_UU8 )(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT8) 597*276da39aSCy Schubert #define UNITY_TEST_ASSERT_UINT16_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(_U_UINT)(_UU16)(delta), (_U_SINT)(_U_UINT)(_UU16)(expected), (_U_SINT)(_U_UINT)(_UU16)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT16) 598*276da39aSCy Schubert #define UNITY_TEST_ASSERT_UINT32_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(_U_UINT)(_UU32)(delta), (_U_SINT)(_U_UINT)(_UU32)(expected), (_U_SINT)(_U_UINT)(_UU32)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT32) 599*276da39aSCy Schubert #define UNITY_TEST_ASSERT_HEX8_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(_U_UINT)(_UU8 )(delta), (_U_SINT)(_U_UINT)(_UU8 )(expected), (_U_SINT)(_U_UINT)(_UU8 )(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX8) 600*276da39aSCy Schubert #define UNITY_TEST_ASSERT_HEX16_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(_U_UINT)(_UU16)(delta), (_U_SINT)(_U_UINT)(_UU16)(expected), (_U_SINT)(_U_UINT)(_UU16)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX16) 601*276da39aSCy Schubert #define UNITY_TEST_ASSERT_HEX32_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(_U_UINT)(_UU32)(delta), (_U_SINT)(_U_UINT)(_UU32)(expected), (_U_SINT)(_U_UINT)(_UU32)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX32) 602*276da39aSCy Schubert 603*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_PTR(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_UP)(expected), (_U_SINT)(_UP)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_POINTER) 604*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_STRING(expected, actual, line, message) UnityAssertEqualString((const char*)(expected), (const char*)(actual), (message), (UNITY_LINE_TYPE)line) 605*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_MEMORY(expected, actual, len, line, message) UnityAssertEqualMemory((UNITY_PTR_ATTRIBUTE void*)(expected), (UNITY_PTR_ATTRIBUTE void*)(actual), (_UU32)(len), 1, (message), (UNITY_LINE_TYPE)line) 606*276da39aSCy Schubert 607*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_PTR_ATTRIBUTE const void*)(expected), (UNITY_PTR_ATTRIBUTE const void*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT) 608*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_INT8_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_PTR_ATTRIBUTE const void*)(expected), (UNITY_PTR_ATTRIBUTE const void*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT8) 609*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_INT16_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_PTR_ATTRIBUTE const void*)(expected), (UNITY_PTR_ATTRIBUTE const void*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT16) 610*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_INT32_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_PTR_ATTRIBUTE const void*)(expected), (UNITY_PTR_ATTRIBUTE const void*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT32) 611*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_PTR_ATTRIBUTE const void*)(expected), (UNITY_PTR_ATTRIBUTE const void*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT) 612*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_UINT8_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_PTR_ATTRIBUTE const void*)(expected), (UNITY_PTR_ATTRIBUTE const void*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT8) 613*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_PTR_ATTRIBUTE const void*)(expected), (UNITY_PTR_ATTRIBUTE const void*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT16) 614*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_UINT32_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_PTR_ATTRIBUTE const void*)(expected), (UNITY_PTR_ATTRIBUTE const void*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT32) 615*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_PTR_ATTRIBUTE const void*)(expected), (UNITY_PTR_ATTRIBUTE const void*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX8) 616*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_HEX16_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_PTR_ATTRIBUTE const void*)(expected), (UNITY_PTR_ATTRIBUTE const void*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX16) 617*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_PTR_ATTRIBUTE const void*)(expected), (UNITY_PTR_ATTRIBUTE const void*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX32) 618*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_PTR_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_PTR_ATTRIBUTE const void*)(_UP*)(expected), (const void*)(_UP*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_POINTER) 619*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_STRING_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualStringArray((const char**)(expected), (const char**)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line) 620*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY(expected, actual, len, num_elements, line, message) UnityAssertEqualMemory((UNITY_PTR_ATTRIBUTE void*)(expected), (UNITY_PTR_ATTRIBUTE void*)(actual), (_UU32)(len), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line) 621*276da39aSCy Schubert 622*276da39aSCy Schubert #ifdef UNITY_SUPPORT_64 623*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_INT64(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(expected), (_U_SINT)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT64) 624*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_UINT64(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(expected), (_U_SINT)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT64) 625*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_HEX64(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(expected), (_U_SINT)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX64) 626*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_PTR_ATTRIBUTE const _U_SINT*)(expected), (UNITY_PTR_ATTRIBUTE const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT64) 627*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_PTR_ATTRIBUTE const _U_SINT*)(expected), (UNITY_PTR_ATTRIBUTE const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT64) 628*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_PTR_ATTRIBUTE const _U_SINT*)(expected), (UNITY_PTR_ATTRIBUTE const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX64) 629*276da39aSCy Schubert #define UNITY_TEST_ASSERT_INT64_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(delta), (_U_SINT)(expected), (_U_SINT)(actual), NULL, (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT64) 630*276da39aSCy Schubert #define UNITY_TEST_ASSERT_UINT64_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(delta), (_U_SINT)(expected), (_U_SINT)(actual), NULL, (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT64) 631*276da39aSCy Schubert #define UNITY_TEST_ASSERT_HEX64_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(delta), (_U_SINT)(expected), (_U_SINT)(actual), NULL, (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX64) 632*276da39aSCy Schubert #else 633*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_INT64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 634*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_UINT64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 635*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_HEX64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 636*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 637*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 638*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 639*276da39aSCy Schubert #define UNITY_TEST_ASSERT_INT64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 640*276da39aSCy Schubert #define UNITY_TEST_ASSERT_UINT64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 641*276da39aSCy Schubert #define UNITY_TEST_ASSERT_HEX64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 642*276da39aSCy Schubert #endif 643*276da39aSCy Schubert 644*276da39aSCy Schubert #ifdef UNITY_EXCLUDE_FLOAT 645*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 646*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_FLOAT(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 647*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 648*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 649*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 650*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 651*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 652*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 653*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 654*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 655*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 656*276da39aSCy Schubert #else 657*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, line, message) UnityAssertFloatsWithin((_UF)(delta), (_UF)(expected), (_UF)(actual), (message), (UNITY_LINE_TYPE)line) 658*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_FLOAT(expected, actual, line, message) UNITY_TEST_ASSERT_FLOAT_WITHIN((_UF)(expected) * (_UF)UNITY_FLOAT_PRECISION, (_UF)expected, (_UF)actual, (UNITY_LINE_TYPE)line, message) 659*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualFloatArray((_UF*)(expected), (_UF*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line) 660*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_INF) 661*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NEG_INF) 662*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NAN) 663*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_DET) 664*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_INF) 665*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NEG_INF(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_NEG_INF) 666*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_NAN) 667*276da39aSCy Schubert #define UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_DET) 668*276da39aSCy Schubert #endif 669*276da39aSCy Schubert 670*276da39aSCy Schubert #ifdef UNITY_EXCLUDE_DOUBLE 671*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 672*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_DOUBLE(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 673*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 674*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 675*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 676*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 677*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 678*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 679*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 680*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 681*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 682*276da39aSCy Schubert #else 683*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, line, message) UnityAssertDoublesWithin((_UD)(delta), (_UD)(expected), (_UD)(actual), (message), (UNITY_LINE_TYPE)line) 684*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_DOUBLE(expected, actual, line, message) UNITY_TEST_ASSERT_DOUBLE_WITHIN((_UD)(expected) * (_UD)UNITY_DOUBLE_PRECISION, (_UD)expected, (_UD)actual, (UNITY_LINE_TYPE)line, message) 685*276da39aSCy Schubert #define UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualDoubleArray((_UD*)(expected), (_UD*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line) 686*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_INF) 687*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NEG_INF) 688*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NAN) 689*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_DET) 690*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_INF) 691*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_NEG_INF) 692*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_NAN) 693*276da39aSCy Schubert #define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_DET) 694*276da39aSCy Schubert #endif 695*276da39aSCy Schubert 696*276da39aSCy Schubert //End of UNITY_INTERNALS_H 697*276da39aSCy Schubert #endif 698*276da39aSCy Schubert 699*276da39aSCy Schubert //#define TEST_EXPECT_FAIL() Unity.isExpectingFail = 1; 700*276da39aSCy Schubert //#define TEST_EXPECT_FAIL_MESSAGE(message) Unity.isExpectingFail = 1; Unity.XFAILMessage = message; //PROBLEM : does this work on all compilers? 701*276da39aSCy Schubert 702*276da39aSCy Schubert #define TEST_EXPECT_FAIL() UnityExpectFail(); 703*276da39aSCy Schubert #define TEST_EXPECT_FAIL_MESSAGE(message) UnityExpectFailMessage( (message) ); 704