1290001Sglebius/* ========================================== 2290001Sglebius Unity Project - A Test Framework for C 3290001Sglebius Copyright (c) 2007-14 Mike Karlesky, Mark VanderVoord, Greg Williams 4290001Sglebius [Released under MIT License. Please refer to license.txt for details] 5290001Sglebius========================================== */ 6290001Sglebius 7290001Sglebius#ifndef UNITY_INTERNALS_H 8290001Sglebius#define UNITY_INTERNALS_H 9290001Sglebius 10290001Sglebius#ifdef UNITY_INCLUDE_CONFIG_H 11290001Sglebius#include "unity_config.h" 12290001Sglebius#endif 13290001Sglebius 14290001Sglebius#include <setjmp.h> 15290001Sglebius 16290001Sglebius// Unity Attempts to Auto-Detect Integer Types 17290001Sglebius// Attempt 1: UINT_MAX, ULONG_MAX, etc in <stdint.h> 18290001Sglebius// Attempt 2: UINT_MAX, ULONG_MAX, etc in <limits.h> 19290001Sglebius// Attempt 3: Deduced from sizeof() macros 20290001Sglebius#ifndef UNITY_EXCLUDE_STDINT_H 21290001Sglebius#include <stdint.h> 22290001Sglebius#endif 23290001Sglebius 24290001Sglebius#ifndef UNITY_EXCLUDE_LIMITS_H 25290001Sglebius#include <limits.h> 26290001Sglebius#endif 27290001Sglebius 28290001Sglebius#ifndef UNITY_EXCLUDE_SIZEOF 29290001Sglebius#ifndef UINT_MAX 30290001Sglebius#define UINT_MAX (sizeof(unsigned int) * 256 - 1) 31290001Sglebius#endif 32290001Sglebius#ifndef ULONG_MAX 33290001Sglebius#define ULONG_MAX (sizeof(unsigned long) * 256 - 1) 34290001Sglebius#endif 35290001Sglebius#ifndef UINTPTR_MAX 36290001Sglebius//apparently this is not a constant expression: (sizeof(unsigned int *) * 256 - 1) so we have to just let this fall through 37290001Sglebius#endif 38290001Sglebius#endif 39290001Sglebius//------------------------------------------------------- 40290001Sglebius// Guess Widths If Not Specified 41290001Sglebius//------------------------------------------------------- 42290001Sglebius 43290001Sglebius// Determine the size of an int, if not already specificied. 44290001Sglebius// We cannot use sizeof(int), because it is not yet defined 45290001Sglebius// at this stage in the trnslation of the C program. 46290001Sglebius// Therefore, infer it from UINT_MAX if possible. 47290001Sglebius#ifndef UNITY_INT_WIDTH 48290001Sglebius #ifdef UINT_MAX 49290001Sglebius #if (UINT_MAX == 0xFFFF) 50290001Sglebius #define UNITY_INT_WIDTH (16) 51290001Sglebius #elif (UINT_MAX == 0xFFFFFFFF) 52290001Sglebius #define UNITY_INT_WIDTH (32) 53290001Sglebius #elif (UINT_MAX == 0xFFFFFFFFFFFFFFFF) 54290001Sglebius #define UNITY_INT_WIDTH (64) 55290001Sglebius #endif 56290001Sglebius #endif 57290001Sglebius#endif 58290001Sglebius#ifndef UNITY_INT_WIDTH 59290001Sglebius #define UNITY_INT_WIDTH (32) 60290001Sglebius#endif 61290001Sglebius 62290001Sglebius// Determine the size of a long, if not already specified, 63290001Sglebius// by following the process used above to define 64290001Sglebius// UNITY_INT_WIDTH. 65290001Sglebius#ifndef UNITY_LONG_WIDTH 66290001Sglebius #ifdef ULONG_MAX 67290001Sglebius #if (ULONG_MAX == 0xFFFF) 68290001Sglebius #define UNITY_LONG_WIDTH (16) 69290001Sglebius #elif (ULONG_MAX == 0xFFFFFFFF) 70290001Sglebius #define UNITY_LONG_WIDTH (32) 71290001Sglebius #elif (ULONG_MAX == 0xFFFFFFFFFFFFFFFF) 72290001Sglebius #define UNITY_LONG_WIDTH (64) 73290001Sglebius #endif 74290001Sglebius #endif 75290001Sglebius#endif 76290001Sglebius#ifndef UNITY_LONG_WIDTH 77290001Sglebius #define UNITY_LONG_WIDTH (32) 78290001Sglebius#endif 79290001Sglebius 80290001Sglebius// Determine the size of a pointer, if not already specified, 81290001Sglebius// by following the process used above to define 82290001Sglebius// UNITY_INT_WIDTH. 83290001Sglebius#ifndef UNITY_POINTER_WIDTH 84290001Sglebius #ifdef UINTPTR_MAX 85290001Sglebius #if (UINTPTR_MAX+0 <= 0xFFFF) 86290001Sglebius #define UNITY_POINTER_WIDTH (16) 87290001Sglebius #elif (UINTPTR_MAX+0 <= 0xFFFFFFFF) 88290001Sglebius #define UNITY_POINTER_WIDTH (32) 89290001Sglebius #elif (UINTPTR_MAX+0 <= 0xFFFFFFFFFFFFFFFF) 90290001Sglebius #define UNITY_POINTER_WIDTH (64) 91290001Sglebius #endif 92290001Sglebius #endif 93290001Sglebius#endif 94290001Sglebius#ifndef UNITY_POINTER_WIDTH 95290001Sglebius #ifdef INTPTR_MAX 96290001Sglebius #if (INTPTR_MAX+0 <= 0x7FFF) 97290001Sglebius #define UNITY_POINTER_WIDTH (16) 98290001Sglebius #elif (INTPTR_MAX+0 <= 0x7FFFFFFF) 99290001Sglebius #define UNITY_POINTER_WIDTH (32) 100290001Sglebius #elif (INTPTR_MAX+0 <= 0x7FFFFFFFFFFFFFFF) 101290001Sglebius #define UNITY_POINTER_WIDTH (64) 102290001Sglebius #endif 103290001Sglebius #endif 104290001Sglebius#endif 105290001Sglebius#ifndef UNITY_POINTER_WIDTH 106290001Sglebius #define UNITY_POINTER_WIDTH UNITY_LONG_WIDTH 107290001Sglebius#endif 108290001Sglebius 109290001Sglebius//------------------------------------------------------- 110290001Sglebius// Int Support (Define types based on detected sizes) 111290001Sglebius//------------------------------------------------------- 112290001Sglebius 113290001Sglebius#if (UNITY_INT_WIDTH == 32) 114290001Sglebius typedef unsigned char _UU8; 115290001Sglebius typedef unsigned short _UU16; 116290001Sglebius typedef unsigned int _UU32; 117290001Sglebius typedef signed char _US8; 118290001Sglebius typedef signed short _US16; 119290001Sglebius typedef signed int _US32; 120290001Sglebius#elif (UNITY_INT_WIDTH == 16) 121290001Sglebius typedef unsigned char _UU8; 122290001Sglebius typedef unsigned int _UU16; 123290001Sglebius typedef unsigned long _UU32; 124290001Sglebius typedef signed char _US8; 125290001Sglebius typedef signed int _US16; 126290001Sglebius typedef signed long _US32; 127290001Sglebius#else 128290001Sglebius #error Invalid UNITY_INT_WIDTH specified! (16 or 32 are supported) 129290001Sglebius#endif 130290001Sglebius 131290001Sglebius//------------------------------------------------------- 132290001Sglebius// 64-bit Support 133290001Sglebius//------------------------------------------------------- 134290001Sglebius 135290001Sglebius#ifndef UNITY_SUPPORT_64 136290001Sglebius#if UNITY_LONG_WIDTH > 32 137290001Sglebius#define UNITY_SUPPORT_64 138290001Sglebius#endif 139290001Sglebius#endif 140290001Sglebius#ifndef UNITY_SUPPORT_64 141290001Sglebius#if UNITY_POINTER_WIDTH > 32 142290001Sglebius#define UNITY_SUPPORT_64 143290001Sglebius#endif 144290001Sglebius#endif 145290001Sglebius 146290001Sglebius#ifndef UNITY_SUPPORT_64 147290001Sglebius 148290001Sglebius//No 64-bit Support 149290001Sglebiustypedef _UU32 _U_UINT; 150290001Sglebiustypedef _US32 _U_SINT; 151290001Sglebius 152290001Sglebius#else 153290001Sglebius 154290001Sglebius//64-bit Support 155290001Sglebius#if (UNITY_LONG_WIDTH == 32) 156290001Sglebius typedef unsigned long long _UU64; 157290001Sglebius typedef signed long long _US64; 158290001Sglebius#elif (UNITY_LONG_WIDTH == 64) 159290001Sglebius typedef unsigned long _UU64; 160290001Sglebius typedef signed long _US64; 161290001Sglebius#else 162290001Sglebius #error Invalid UNITY_LONG_WIDTH specified! (32 or 64 are supported) 163290001Sglebius#endif 164290001Sglebiustypedef _UU64 _U_UINT; 165290001Sglebiustypedef _US64 _U_SINT; 166290001Sglebius 167290001Sglebius#endif 168290001Sglebius 169290001Sglebius//------------------------------------------------------- 170290001Sglebius// Pointer Support 171290001Sglebius//------------------------------------------------------- 172290001Sglebius 173290001Sglebius#if (UNITY_POINTER_WIDTH == 32) 174290001Sglebius typedef _UU32 _UP; 175290001Sglebius#define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX32 176290001Sglebius#elif (UNITY_POINTER_WIDTH == 64) 177290001Sglebius typedef _UU64 _UP; 178290001Sglebius#define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX64 179290001Sglebius#elif (UNITY_POINTER_WIDTH == 16) 180290001Sglebius typedef _UU16 _UP; 181290001Sglebius#define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX16 182290001Sglebius#else 183290001Sglebius #error Invalid UNITY_POINTER_WIDTH specified! (16, 32 or 64 are supported) 184290001Sglebius#endif 185290001Sglebius 186290001Sglebius#ifndef UNITY_PTR_ATTRIBUTE 187290001Sglebius #define UNITY_PTR_ATTRIBUTE 188290001Sglebius#endif 189290001Sglebius 190290001Sglebius//------------------------------------------------------- 191290001Sglebius// Float Support 192290001Sglebius//------------------------------------------------------- 193290001Sglebius 194290001Sglebius#ifdef UNITY_EXCLUDE_FLOAT 195290001Sglebius 196290001Sglebius//No Floating Point Support 197290001Sglebius#undef UNITY_INCLUDE_FLOAT 198290001Sglebius#undef UNITY_FLOAT_PRECISION 199290001Sglebius#undef UNITY_FLOAT_TYPE 200290001Sglebius#undef UNITY_FLOAT_VERBOSE 201290001Sglebius 202290001Sglebius#else 203290001Sglebius 204290001Sglebius#ifndef UNITY_INCLUDE_FLOAT 205290001Sglebius#define UNITY_INCLUDE_FLOAT 206290001Sglebius#endif 207290001Sglebius 208290001Sglebius//Floating Point Support 209290001Sglebius#ifndef UNITY_FLOAT_PRECISION 210290001Sglebius#define UNITY_FLOAT_PRECISION (0.00001f) 211290001Sglebius#endif 212290001Sglebius#ifndef UNITY_FLOAT_TYPE 213290001Sglebius#define UNITY_FLOAT_TYPE float 214290001Sglebius#endif 215290001Sglebiustypedef UNITY_FLOAT_TYPE _UF; 216290001Sglebius 217290001Sglebius#endif 218290001Sglebius 219290001Sglebius//------------------------------------------------------- 220290001Sglebius// Double Float Support 221290001Sglebius//------------------------------------------------------- 222290001Sglebius 223290001Sglebius//unlike FLOAT, we DON'T include by default 224290001Sglebius#ifndef UNITY_EXCLUDE_DOUBLE 225290001Sglebius#ifndef UNITY_INCLUDE_DOUBLE 226290001Sglebius#define UNITY_EXCLUDE_DOUBLE 227290001Sglebius#endif 228290001Sglebius#endif 229290001Sglebius 230290001Sglebius#ifdef UNITY_EXCLUDE_DOUBLE 231290001Sglebius 232290001Sglebius//No Floating Point Support 233290001Sglebius#undef UNITY_DOUBLE_PRECISION 234290001Sglebius#undef UNITY_DOUBLE_TYPE 235290001Sglebius#undef UNITY_DOUBLE_VERBOSE 236290001Sglebius 237290001Sglebius#ifdef UNITY_INCLUDE_DOUBLE 238290001Sglebius#undef UNITY_INCLUDE_DOUBLE 239290001Sglebius#endif 240290001Sglebius 241290001Sglebius#else 242290001Sglebius 243290001Sglebius//Double Floating Point Support 244290001Sglebius#ifndef UNITY_DOUBLE_PRECISION 245290001Sglebius#define UNITY_DOUBLE_PRECISION (1e-12f) 246290001Sglebius#endif 247290001Sglebius#ifndef UNITY_DOUBLE_TYPE 248290001Sglebius#define UNITY_DOUBLE_TYPE double 249290001Sglebius#endif 250290001Sglebiustypedef UNITY_DOUBLE_TYPE _UD; 251290001Sglebius 252290001Sglebius#endif 253290001Sglebius 254290001Sglebius#ifdef UNITY_DOUBLE_VERBOSE 255290001Sglebius#ifndef UNITY_FLOAT_VERBOSE 256290001Sglebius#define UNITY_FLOAT_VERBOSE 257290001Sglebius#endif 258290001Sglebius#endif 259290001Sglebius 260290001Sglebius//------------------------------------------------------- 261290001Sglebius// Output Method: stdout (DEFAULT) 262290001Sglebius//------------------------------------------------------- 263290001Sglebius#ifndef UNITY_OUTPUT_CHAR 264290001Sglebius//Default to using putchar, which is defined in stdio.h 265290001Sglebius#include <stdio.h> 266290001Sglebius#define UNITY_OUTPUT_CHAR(a) putchar(a) 267290001Sglebius#else 268290001Sglebius//If defined as something else, make sure we declare it here so it's ready for use 269290001Sglebiusextern int UNITY_OUTPUT_CHAR(int); 270290001Sglebius#endif 271290001Sglebius 272290001Sglebius#ifndef UNITY_OUTPUT_START 273290001Sglebius#define UNITY_OUTPUT_START() 274290001Sglebius#endif 275290001Sglebius 276290001Sglebius#ifndef UNITY_OUTPUT_COMPLETE 277290001Sglebius#define UNITY_OUTPUT_COMPLETE() 278290001Sglebius#endif 279290001Sglebius 280290001Sglebius//------------------------------------------------------- 281290001Sglebius// Footprint 282290001Sglebius//------------------------------------------------------- 283290001Sglebius 284290001Sglebius#ifndef UNITY_LINE_TYPE 285290001Sglebius#define UNITY_LINE_TYPE _U_UINT 286290001Sglebius#endif 287290001Sglebius 288290001Sglebius#ifndef UNITY_COUNTER_TYPE 289290001Sglebius#define UNITY_COUNTER_TYPE _U_UINT 290290001Sglebius#endif 291290001Sglebius 292290001Sglebius//------------------------------------------------------- 293290001Sglebius// Language Features Available 294290001Sglebius//------------------------------------------------------- 295290001Sglebius#if !defined(UNITY_WEAK_ATTRIBUTE) && !defined(UNITY_WEAK_PRAGMA) 296290001Sglebius# ifdef __GNUC__ // includes clang 297290001Sglebius# if !(defined(__WIN32__) && defined(__clang__)) 298290001Sglebius# define UNITY_WEAK_ATTRIBUTE __attribute__((weak)) 299290001Sglebius# endif 300290001Sglebius# endif 301290001Sglebius#endif 302290001Sglebius 303290001Sglebius#ifdef UNITY_NO_WEAK 304290001Sglebius# undef UNITY_WEAK_ATTRIBUTE 305290001Sglebius# undef UNITY_WEAK_PRAGMA 306290001Sglebius#endif 307290001Sglebius 308293896Sglebius#if !defined(UNITY_NORETURN_ATTRIBUTE) 309293896Sglebius# ifdef __GNUC__ // includes clang 310293896Sglebius# if !(defined(__WIN32__) && defined(__clang__)) 311293896Sglebius# define UNITY_NORETURN_ATTRIBUTE __attribute__((noreturn)) 312293896Sglebius# endif 313293896Sglebius# endif 314293896Sglebius#endif 315290001Sglebius 316293896Sglebius#ifndef UNITY_NORETURN_ATTRIBUTE 317293896Sglebius# define UNITY_NORETURN_ATTRIBUTE 318293896Sglebius#endif 319293896Sglebius 320293896Sglebius 321290001Sglebius//------------------------------------------------------- 322290001Sglebius// Internal Structs Needed 323290001Sglebius//------------------------------------------------------- 324290001Sglebius 325290001Sglebiustypedef void (*UnityTestFunction)(void); 326290001Sglebius 327290001Sglebius#define UNITY_DISPLAY_RANGE_INT (0x10) 328290001Sglebius#define UNITY_DISPLAY_RANGE_UINT (0x20) 329290001Sglebius#define UNITY_DISPLAY_RANGE_HEX (0x40) 330290001Sglebius#define UNITY_DISPLAY_RANGE_AUTO (0x80) 331290001Sglebius 332290001Sglebiustypedef enum 333290001Sglebius{ 334290001Sglebius#if (UNITY_INT_WIDTH == 16) 335290001Sglebius UNITY_DISPLAY_STYLE_INT = 2 + UNITY_DISPLAY_RANGE_INT + UNITY_DISPLAY_RANGE_AUTO, 336290001Sglebius#elif (UNITY_INT_WIDTH == 32) 337290001Sglebius UNITY_DISPLAY_STYLE_INT = 4 + UNITY_DISPLAY_RANGE_INT + UNITY_DISPLAY_RANGE_AUTO, 338290001Sglebius#elif (UNITY_INT_WIDTH == 64) 339290001Sglebius UNITY_DISPLAY_STYLE_INT = 8 + UNITY_DISPLAY_RANGE_INT + UNITY_DISPLAY_RANGE_AUTO, 340290001Sglebius#endif 341290001Sglebius UNITY_DISPLAY_STYLE_INT8 = 1 + UNITY_DISPLAY_RANGE_INT, 342290001Sglebius UNITY_DISPLAY_STYLE_INT16 = 2 + UNITY_DISPLAY_RANGE_INT, 343290001Sglebius UNITY_DISPLAY_STYLE_INT32 = 4 + UNITY_DISPLAY_RANGE_INT, 344290001Sglebius#ifdef UNITY_SUPPORT_64 345290001Sglebius UNITY_DISPLAY_STYLE_INT64 = 8 + UNITY_DISPLAY_RANGE_INT, 346290001Sglebius#endif 347290001Sglebius 348290001Sglebius#if (UNITY_INT_WIDTH == 16) 349290001Sglebius UNITY_DISPLAY_STYLE_UINT = 2 + UNITY_DISPLAY_RANGE_UINT + UNITY_DISPLAY_RANGE_AUTO, 350290001Sglebius#elif (UNITY_INT_WIDTH == 32) 351290001Sglebius UNITY_DISPLAY_STYLE_UINT = 4 + UNITY_DISPLAY_RANGE_UINT + UNITY_DISPLAY_RANGE_AUTO, 352290001Sglebius#elif (UNITY_INT_WIDTH == 64) 353290001Sglebius UNITY_DISPLAY_STYLE_UINT = 8 + UNITY_DISPLAY_RANGE_UINT + UNITY_DISPLAY_RANGE_AUTO, 354290001Sglebius#endif 355290001Sglebius UNITY_DISPLAY_STYLE_UINT8 = 1 + UNITY_DISPLAY_RANGE_UINT, 356290001Sglebius UNITY_DISPLAY_STYLE_UINT16 = 2 + UNITY_DISPLAY_RANGE_UINT, 357290001Sglebius UNITY_DISPLAY_STYLE_UINT32 = 4 + UNITY_DISPLAY_RANGE_UINT, 358290001Sglebius#ifdef UNITY_SUPPORT_64 359290001Sglebius UNITY_DISPLAY_STYLE_UINT64 = 8 + UNITY_DISPLAY_RANGE_UINT, 360290001Sglebius#endif 361290001Sglebius UNITY_DISPLAY_STYLE_HEX8 = 1 + UNITY_DISPLAY_RANGE_HEX, 362290001Sglebius UNITY_DISPLAY_STYLE_HEX16 = 2 + UNITY_DISPLAY_RANGE_HEX, 363290001Sglebius UNITY_DISPLAY_STYLE_HEX32 = 4 + UNITY_DISPLAY_RANGE_HEX, 364290001Sglebius#ifdef UNITY_SUPPORT_64 365290001Sglebius UNITY_DISPLAY_STYLE_HEX64 = 8 + UNITY_DISPLAY_RANGE_HEX, 366290001Sglebius#endif 367290001Sglebius UNITY_DISPLAY_STYLE_UNKNOWN 368290001Sglebius} UNITY_DISPLAY_STYLE_T; 369290001Sglebius 370290001Sglebius#ifndef UNITY_EXCLUDE_FLOAT 371290001Sglebiustypedef enum _UNITY_FLOAT_TRAIT_T 372290001Sglebius{ 373290001Sglebius UNITY_FLOAT_IS_NOT_INF = 0, 374290001Sglebius UNITY_FLOAT_IS_INF, 375290001Sglebius UNITY_FLOAT_IS_NOT_NEG_INF, 376290001Sglebius UNITY_FLOAT_IS_NEG_INF, 377290001Sglebius UNITY_FLOAT_IS_NOT_NAN, 378290001Sglebius UNITY_FLOAT_IS_NAN, 379290001Sglebius UNITY_FLOAT_IS_NOT_DET, 380290001Sglebius UNITY_FLOAT_IS_DET, 381290001Sglebius} UNITY_FLOAT_TRAIT_T; 382290001Sglebius#endif 383290001Sglebius 384290001Sglebiusstruct _Unity 385290001Sglebius{ 386290001Sglebius const char* TestFile; 387290001Sglebius const char* CurrentTestName; 388290001Sglebius UNITY_LINE_TYPE CurrentTestLineNumber; 389290001Sglebius UNITY_COUNTER_TYPE NumberOfTests; 390290001Sglebius UNITY_COUNTER_TYPE TestFailures; 391290001Sglebius UNITY_COUNTER_TYPE TestIgnores; 392290001Sglebius UNITY_COUNTER_TYPE CurrentTestFailed; 393290001Sglebius UNITY_COUNTER_TYPE CurrentTestIgnored; 394290001Sglebius jmp_buf AbortFrame; 395290001Sglebius int isExpectingFail; 396290001Sglebius UNITY_COUNTER_TYPE TestXFAILS; 397290001Sglebius UNITY_COUNTER_TYPE TestPasses; 398290001Sglebius UNITY_COUNTER_TYPE TestXPASSES; 399290001Sglebius const char* XFAILMessage; 400290001Sglebius}; 401290001Sglebius 402290001Sglebiusextern struct _Unity Unity; 403290001Sglebius 404290001Sglebius//------------------------------------------------------- 405290001Sglebius// Test Suite Management 406290001Sglebius//------------------------------------------------------- 407290001Sglebius 408290001Sglebiusvoid UnityBegin(const char* filename); 409290001Sglebiusint UnityEnd(void); 410290001Sglebiusvoid UnityConcludeTest(void); 411290001Sglebiusvoid UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int FuncLineNum); 412290001Sglebius 413290001Sglebius//------------------------------------------------------- 414290001Sglebius// Test Output 415290001Sglebius//------------------------------------------------------- 416290001Sglebius 417290001Sglebiusvoid UnityPrint(const char* string); 418290001Sglebiusvoid UnityPrintMask(const _U_UINT mask, const _U_UINT number); 419290001Sglebiusvoid UnityPrintNumberByStyle(const _U_SINT number, const UNITY_DISPLAY_STYLE_T style); 420290001Sglebiusvoid UnityPrintNumber(const _U_SINT number); 421290001Sglebiusvoid UnityPrintNumberUnsigned(const _U_UINT number); 422290001Sglebiusvoid UnityPrintNumberHex(const _U_UINT number, const char nibbles); 423290001Sglebius 424290001Sglebius#ifdef UNITY_FLOAT_VERBOSE 425290001Sglebiusvoid UnityPrintFloat(const _UF number); 426290001Sglebius#endif 427290001Sglebius 428290001Sglebius//------------------------------------------------------- 429290001Sglebius// Test Assertion Fuctions 430290001Sglebius//------------------------------------------------------- 431290001Sglebius// Use the macros below this section instead of calling 432290001Sglebius// these directly. The macros have a consistent naming 433290001Sglebius// convention and will pull in file and line information 434290001Sglebius// for you. 435290001Sglebius 436290001Sglebiusvoid UnityAssertEqualNumber(const _U_SINT expected, 437290001Sglebius const _U_SINT actual, 438290001Sglebius const char* msg, 439290001Sglebius const UNITY_LINE_TYPE lineNumber, 440290001Sglebius const UNITY_DISPLAY_STYLE_T style); 441290001Sglebius 442290001Sglebiusvoid UnityAssertEqualIntArray(UNITY_PTR_ATTRIBUTE const void* expected, 443290001Sglebius UNITY_PTR_ATTRIBUTE const void* actual, 444290001Sglebius const _UU32 num_elements, 445290001Sglebius const char* msg, 446290001Sglebius const UNITY_LINE_TYPE lineNumber, 447290001Sglebius const UNITY_DISPLAY_STYLE_T style); 448290001Sglebius 449290001Sglebiusvoid UnityAssertBits(const _U_SINT mask, 450290001Sglebius const _U_SINT expected, 451290001Sglebius const _U_SINT actual, 452290001Sglebius const char* msg, 453290001Sglebius const UNITY_LINE_TYPE lineNumber); 454290001Sglebius 455290001Sglebiusvoid UnityAssertEqualString(const char* expected, 456290001Sglebius const char* actual, 457290001Sglebius const char* msg, 458290001Sglebius const UNITY_LINE_TYPE lineNumber); 459290001Sglebius 460290001Sglebiusvoid UnityAssertEqualStringArray( const char** expected, 461290001Sglebius const char** actual, 462290001Sglebius const _UU32 num_elements, 463290001Sglebius const char* msg, 464290001Sglebius const UNITY_LINE_TYPE lineNumber); 465290001Sglebius 466290001Sglebiusvoid UnityAssertEqualMemory( UNITY_PTR_ATTRIBUTE const void* expected, 467290001Sglebius UNITY_PTR_ATTRIBUTE const void* actual, 468290001Sglebius const _UU32 length, 469290001Sglebius const _UU32 num_elements, 470290001Sglebius const char* msg, 471290001Sglebius const UNITY_LINE_TYPE lineNumber); 472290001Sglebius 473290001Sglebiusvoid UnityAssertNumbersWithin(const _U_SINT delta, 474290001Sglebius const _U_SINT expected, 475290001Sglebius const _U_SINT actual, 476290001Sglebius const char* msg, 477290001Sglebius const UNITY_LINE_TYPE lineNumber, 478290001Sglebius const UNITY_DISPLAY_STYLE_T style); 479290001Sglebius 480293896Sglebiusvoid UnityFail(const char* message, const UNITY_LINE_TYPE line) UNITY_NORETURN_ATTRIBUTE; 481290001Sglebius 482290001Sglebiusvoid UnityIgnore(const char* message, const UNITY_LINE_TYPE line); 483290001Sglebius 484290001Sglebius#ifndef UNITY_EXCLUDE_FLOAT 485290001Sglebiusvoid UnityAssertFloatsWithin(const _UF delta, 486290001Sglebius const _UF expected, 487290001Sglebius const _UF actual, 488290001Sglebius const char* msg, 489290001Sglebius const UNITY_LINE_TYPE lineNumber); 490290001Sglebius 491290001Sglebiusvoid UnityAssertEqualFloatArray(UNITY_PTR_ATTRIBUTE const _UF* expected, 492290001Sglebius UNITY_PTR_ATTRIBUTE const _UF* actual, 493290001Sglebius const _UU32 num_elements, 494290001Sglebius const char* msg, 495290001Sglebius const UNITY_LINE_TYPE lineNumber); 496290001Sglebius 497290001Sglebiusvoid UnityAssertFloatSpecial(const _UF actual, 498290001Sglebius const char* msg, 499290001Sglebius const UNITY_LINE_TYPE lineNumber, 500290001Sglebius const UNITY_FLOAT_TRAIT_T style); 501290001Sglebius#endif 502290001Sglebius 503290001Sglebius#ifndef UNITY_EXCLUDE_DOUBLE 504290001Sglebiusvoid UnityAssertDoublesWithin(const _UD delta, 505290001Sglebius const _UD expected, 506290001Sglebius const _UD actual, 507290001Sglebius const char* msg, 508290001Sglebius const UNITY_LINE_TYPE lineNumber); 509290001Sglebius 510290001Sglebiusvoid UnityAssertEqualDoubleArray(UNITY_PTR_ATTRIBUTE const _UD* expected, 511290001Sglebius UNITY_PTR_ATTRIBUTE const _UD* actual, 512290001Sglebius const _UU32 num_elements, 513290001Sglebius const char* msg, 514290001Sglebius const UNITY_LINE_TYPE lineNumber); 515290001Sglebius 516290001Sglebiusvoid UnityAssertDoubleSpecial(const _UD actual, 517290001Sglebius const char* msg, 518290001Sglebius const UNITY_LINE_TYPE lineNumber, 519290001Sglebius const UNITY_FLOAT_TRAIT_T style); 520290001Sglebius#endif 521290001Sglebius 522290001Sglebius//------------------------------------------------------- 523290001Sglebius// Error Strings We Might Need 524290001Sglebius//------------------------------------------------------- 525290001Sglebius 526290001Sglebiusextern const char UnityStrErrFloat[]; 527290001Sglebiusextern const char UnityStrErrDouble[]; 528290001Sglebiusextern const char UnityStrErr64[]; 529290001Sglebius 530290001Sglebius//------------------------------------------------------- 531290001Sglebius// Test Running Macros 532290001Sglebius//------------------------------------------------------- 533290001Sglebius 534290001Sglebius#define TEST_PROTECT() (setjmp(Unity.AbortFrame) == 0) 535290001Sglebius 536290001Sglebius#define TEST_ABORT() {longjmp(Unity.AbortFrame, 1);} 537290001Sglebius 538290001Sglebius//This tricky series of macros gives us an optional line argument to treat it as RUN_TEST(func, num=__LINE__) 539290001Sglebius#ifndef RUN_TEST 540290001Sglebius#ifdef __STDC_VERSION__ 541290001Sglebius#if __STDC_VERSION__ >= 199901L 542290001Sglebius#define RUN_TEST(...) UnityDefaultTestRun(RUN_TEST_FIRST(__VA_ARGS__), RUN_TEST_SECOND(__VA_ARGS__)) 543290001Sglebius#define RUN_TEST_FIRST(...) RUN_TEST_FIRST_HELPER(__VA_ARGS__, throwaway) 544290001Sglebius#define RUN_TEST_FIRST_HELPER(first,...) first, #first 545290001Sglebius#define RUN_TEST_SECOND(...) RUN_TEST_SECOND_HELPER(__VA_ARGS__, __LINE__, throwaway) 546290001Sglebius#define RUN_TEST_SECOND_HELPER(first,second,...) second 547290001Sglebius#endif 548290001Sglebius#endif 549290001Sglebius#endif 550290001Sglebius 551290001Sglebius//If we can't do the tricky version, we'll just have to require them to always include the line number 552290001Sglebius#ifndef RUN_TEST 553290001Sglebius#ifdef CMOCK 554290001Sglebius#define RUN_TEST(func, num) UnityDefaultTestRun(func, #func, num) 555290001Sglebius#else 556290001Sglebius#define RUN_TEST(func) UnityDefaultTestRun(func, #func, __LINE__) 557290001Sglebius#endif 558290001Sglebius#endif 559290001Sglebius 560290001Sglebius#define TEST_LINE_NUM (Unity.CurrentTestLineNumber) 561290001Sglebius#define TEST_IS_IGNORED (Unity.CurrentTestIgnored) 562290001Sglebius#define UNITY_NEW_TEST(a) \ 563290001Sglebius Unity.CurrentTestName = a; \ 564290001Sglebius Unity.CurrentTestLineNumber = (UNITY_LINE_TYPE)(__LINE__); \ 565290001Sglebius Unity.NumberOfTests++; 566290001Sglebius 567290001Sglebius#ifndef UNITY_BEGIN 568290001Sglebius#define UNITY_BEGIN() UnityBegin(__FILE__) 569290001Sglebius#endif 570290001Sglebius 571290001Sglebius#ifndef UNITY_END 572290001Sglebius#define UNITY_END() UnityEnd() 573290001Sglebius#endif 574290001Sglebius 575290001Sglebius//------------------------------------------------------- 576290001Sglebius// Basic Fail and Ignore 577290001Sglebius//------------------------------------------------------- 578290001Sglebius 579290001Sglebius#define UNITY_TEST_FAIL(line, message) UnityFail( (message), (UNITY_LINE_TYPE)line); 580290001Sglebius#define UNITY_TEST_IGNORE(line, message) UnityIgnore( (message), (UNITY_LINE_TYPE)line); 581290001Sglebius 582290001Sglebius//------------------------------------------------------- 583290001Sglebius// Test Asserts 584290001Sglebius//------------------------------------------------------- 585290001Sglebius 586290001Sglebius#define UNITY_TEST_ASSERT(condition, line, message) if (condition) {} else {UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, message);} 587290001Sglebius#define UNITY_TEST_ASSERT_NULL(pointer, line, message) UNITY_TEST_ASSERT(((pointer) == NULL), (UNITY_LINE_TYPE)line, message) 588290001Sglebius#define UNITY_TEST_ASSERT_NOT_NULL(pointer, line, message) UNITY_TEST_ASSERT(((pointer) != NULL), (UNITY_LINE_TYPE)line, message) 589290001Sglebius 590290001Sglebius#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) 591290001Sglebius#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) 592290001Sglebius#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) 593290001Sglebius#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) 594290001Sglebius#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) 595290001Sglebius#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) 596290001Sglebius#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) 597290001Sglebius#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) 598290001Sglebius#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) 599290001Sglebius#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) 600290001Sglebius#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) 601290001Sglebius#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) 602290001Sglebius 603290001Sglebius#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) 604290001Sglebius#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) 605290001Sglebius#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) 606290001Sglebius#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) 607290001Sglebius#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) 608290001Sglebius#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) 609290001Sglebius#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) 610290001Sglebius#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) 611290001Sglebius#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) 612290001Sglebius#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) 613290001Sglebius#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) 614290001Sglebius 615290001Sglebius#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) 616290001Sglebius#define UNITY_TEST_ASSERT_EQUAL_STRING(expected, actual, line, message) UnityAssertEqualString((const char*)(expected), (const char*)(actual), (message), (UNITY_LINE_TYPE)line) 617294905Sdelphij#define UNITY_TEST_ASSERT_EQUAL_MEMORY(expected, actual, len, line, message) UnityAssertEqualMemory((UNITY_PTR_ATTRIBUTE const void*)(expected), (UNITY_PTR_ATTRIBUTE const void*)(actual), (_UU32)(len), 1, (message), (UNITY_LINE_TYPE)line) 618290001Sglebius 619290001Sglebius#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) 620290001Sglebius#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) 621290001Sglebius#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) 622290001Sglebius#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) 623290001Sglebius#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) 624290001Sglebius#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) 625290001Sglebius#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) 626290001Sglebius#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) 627290001Sglebius#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) 628290001Sglebius#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) 629290001Sglebius#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) 630290001Sglebius#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) 631290001Sglebius#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) 632290001Sglebius#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) 633290001Sglebius 634290001Sglebius#ifdef UNITY_SUPPORT_64 635290001Sglebius#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) 636290001Sglebius#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) 637290001Sglebius#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) 638290001Sglebius#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) 639290001Sglebius#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) 640290001Sglebius#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) 641290001Sglebius#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) 642290001Sglebius#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) 643290001Sglebius#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) 644290001Sglebius#else 645290001Sglebius#define UNITY_TEST_ASSERT_EQUAL_INT64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 646290001Sglebius#define UNITY_TEST_ASSERT_EQUAL_UINT64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 647290001Sglebius#define UNITY_TEST_ASSERT_EQUAL_HEX64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 648290001Sglebius#define UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 649290001Sglebius#define UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 650290001Sglebius#define UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 651290001Sglebius#define UNITY_TEST_ASSERT_INT64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 652290001Sglebius#define UNITY_TEST_ASSERT_UINT64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 653290001Sglebius#define UNITY_TEST_ASSERT_HEX64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 654290001Sglebius#endif 655290001Sglebius 656290001Sglebius#ifdef UNITY_EXCLUDE_FLOAT 657290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 658290001Sglebius#define UNITY_TEST_ASSERT_EQUAL_FLOAT(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 659290001Sglebius#define UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 660290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 661290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 662290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 663290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 664290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 665290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 666290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 667290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 668290001Sglebius#else 669290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, line, message) UnityAssertFloatsWithin((_UF)(delta), (_UF)(expected), (_UF)(actual), (message), (UNITY_LINE_TYPE)line) 670290001Sglebius#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) 671290001Sglebius#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) 672290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_INF) 673290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NEG_INF) 674290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NAN) 675290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_DET) 676290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_INF) 677290001Sglebius#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) 678290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_NAN) 679290001Sglebius#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_DET) 680290001Sglebius#endif 681290001Sglebius 682290001Sglebius#ifdef UNITY_EXCLUDE_DOUBLE 683290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 684290001Sglebius#define UNITY_TEST_ASSERT_EQUAL_DOUBLE(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 685290001Sglebius#define UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 686290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 687290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 688290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 689290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 690290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 691290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 692290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 693290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 694290001Sglebius#else 695290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, line, message) UnityAssertDoublesWithin((_UD)(delta), (_UD)(expected), (_UD)(actual), (message), (UNITY_LINE_TYPE)line) 696290001Sglebius#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) 697290001Sglebius#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) 698290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_INF) 699290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NEG_INF) 700290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NAN) 701290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_DET) 702290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_INF) 703290001Sglebius#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) 704290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_NAN) 705290001Sglebius#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_DET) 706290001Sglebius#endif 707290001Sglebius 708290001Sglebius//End of UNITY_INTERNALS_H 709290001Sglebius#endif 710290001Sglebius 711290001Sglebius//#define TEST_EXPECT_FAIL() Unity.isExpectingFail = 1; 712290001Sglebius//#define TEST_EXPECT_FAIL_MESSAGE(message) Unity.isExpectingFail = 1; Unity.XFAILMessage = message; //PROBLEM : does this work on all compilers? 713290001Sglebius 714290001Sglebius#define TEST_EXPECT_FAIL() UnityExpectFail(); 715290001Sglebius#define TEST_EXPECT_FAIL_MESSAGE(message) UnityExpectFailMessage( (message) ); 716