1284990Scy/* ========================================== 2284990Scy Unity Project - A Test Framework for C 3284990Scy Copyright (c) 2007-14 Mike Karlesky, Mark VanderVoord, Greg Williams 4284990Scy [Released under MIT License. Please refer to license.txt for details] 5284990Scy========================================== */ 6284990Scy 7284990Scy#ifndef UNITY_INTERNALS_H 8284990Scy#define UNITY_INTERNALS_H 9284990Scy 10284990Scy#ifdef UNITY_INCLUDE_CONFIG_H 11284990Scy#include "unity_config.h" 12284990Scy#endif 13284990Scy 14284990Scy#include <setjmp.h> 15284990Scy 16284990Scy// Unity Attempts to Auto-Detect Integer Types 17284990Scy// Attempt 1: UINT_MAX, ULONG_MAX, etc in <stdint.h> 18284990Scy// Attempt 2: UINT_MAX, ULONG_MAX, etc in <limits.h> 19284990Scy// Attempt 3: Deduced from sizeof() macros 20284990Scy#ifndef UNITY_EXCLUDE_STDINT_H 21284990Scy#include <stdint.h> 22284990Scy#endif 23284990Scy 24284990Scy#ifndef UNITY_EXCLUDE_LIMITS_H 25284990Scy#include <limits.h> 26284990Scy#endif 27284990Scy 28284990Scy#ifndef UNITY_EXCLUDE_SIZEOF 29284990Scy#ifndef UINT_MAX 30284990Scy#define UINT_MAX (sizeof(unsigned int) * 256 - 1) 31284990Scy#endif 32284990Scy#ifndef ULONG_MAX 33284990Scy#define ULONG_MAX (sizeof(unsigned long) * 256 - 1) 34284990Scy#endif 35284990Scy#ifndef UINTPTR_MAX 36284990Scy//apparently this is not a constant expression: (sizeof(unsigned int *) * 256 - 1) so we have to just let this fall through 37284990Scy#endif 38284990Scy#endif 39284990Scy//------------------------------------------------------- 40284990Scy// Guess Widths If Not Specified 41284990Scy//------------------------------------------------------- 42284990Scy 43284990Scy// Determine the size of an int, if not already specificied. 44284990Scy// We cannot use sizeof(int), because it is not yet defined 45284990Scy// at this stage in the trnslation of the C program. 46284990Scy// Therefore, infer it from UINT_MAX if possible. 47284990Scy#ifndef UNITY_INT_WIDTH 48284990Scy #ifdef UINT_MAX 49284990Scy #if (UINT_MAX == 0xFFFF) 50284990Scy #define UNITY_INT_WIDTH (16) 51284990Scy #elif (UINT_MAX == 0xFFFFFFFF) 52284990Scy #define UNITY_INT_WIDTH (32) 53284990Scy #elif (UINT_MAX == 0xFFFFFFFFFFFFFFFF) 54284990Scy #define UNITY_INT_WIDTH (64) 55284990Scy #endif 56284990Scy #endif 57284990Scy#endif 58284990Scy#ifndef UNITY_INT_WIDTH 59284990Scy #define UNITY_INT_WIDTH (32) 60284990Scy#endif 61284990Scy 62284990Scy// Determine the size of a long, if not already specified, 63284990Scy// by following the process used above to define 64284990Scy// UNITY_INT_WIDTH. 65284990Scy#ifndef UNITY_LONG_WIDTH 66284990Scy #ifdef ULONG_MAX 67284990Scy #if (ULONG_MAX == 0xFFFF) 68284990Scy #define UNITY_LONG_WIDTH (16) 69284990Scy #elif (ULONG_MAX == 0xFFFFFFFF) 70284990Scy #define UNITY_LONG_WIDTH (32) 71284990Scy #elif (ULONG_MAX == 0xFFFFFFFFFFFFFFFF) 72284990Scy #define UNITY_LONG_WIDTH (64) 73284990Scy #endif 74284990Scy #endif 75284990Scy#endif 76284990Scy#ifndef UNITY_LONG_WIDTH 77284990Scy #define UNITY_LONG_WIDTH (32) 78284990Scy#endif 79284990Scy 80284990Scy// Determine the size of a pointer, if not already specified, 81284990Scy// by following the process used above to define 82284990Scy// UNITY_INT_WIDTH. 83284990Scy#ifndef UNITY_POINTER_WIDTH 84284990Scy #ifdef UINTPTR_MAX 85289764Sglebius #if (UINTPTR_MAX+0 <= 0xFFFF) 86284990Scy #define UNITY_POINTER_WIDTH (16) 87289764Sglebius #elif (UINTPTR_MAX+0 <= 0xFFFFFFFF) 88284990Scy #define UNITY_POINTER_WIDTH (32) 89289764Sglebius #elif (UINTPTR_MAX+0 <= 0xFFFFFFFFFFFFFFFF) 90284990Scy #define UNITY_POINTER_WIDTH (64) 91284990Scy #endif 92284990Scy #endif 93284990Scy#endif 94284990Scy#ifndef UNITY_POINTER_WIDTH 95284990Scy #ifdef INTPTR_MAX 96289764Sglebius #if (INTPTR_MAX+0 <= 0x7FFF) 97284990Scy #define UNITY_POINTER_WIDTH (16) 98289764Sglebius #elif (INTPTR_MAX+0 <= 0x7FFFFFFF) 99284990Scy #define UNITY_POINTER_WIDTH (32) 100289764Sglebius #elif (INTPTR_MAX+0 <= 0x7FFFFFFFFFFFFFFF) 101284990Scy #define UNITY_POINTER_WIDTH (64) 102284990Scy #endif 103284990Scy #endif 104284990Scy#endif 105284990Scy#ifndef UNITY_POINTER_WIDTH 106284990Scy #define UNITY_POINTER_WIDTH UNITY_LONG_WIDTH 107284990Scy#endif 108284990Scy 109284990Scy//------------------------------------------------------- 110284990Scy// Int Support (Define types based on detected sizes) 111284990Scy//------------------------------------------------------- 112284990Scy 113284990Scy#if (UNITY_INT_WIDTH == 32) 114284990Scy typedef unsigned char _UU8; 115284990Scy typedef unsigned short _UU16; 116284990Scy typedef unsigned int _UU32; 117284990Scy typedef signed char _US8; 118284990Scy typedef signed short _US16; 119284990Scy typedef signed int _US32; 120284990Scy#elif (UNITY_INT_WIDTH == 16) 121284990Scy typedef unsigned char _UU8; 122284990Scy typedef unsigned int _UU16; 123284990Scy typedef unsigned long _UU32; 124284990Scy typedef signed char _US8; 125284990Scy typedef signed int _US16; 126284990Scy typedef signed long _US32; 127284990Scy#else 128284990Scy #error Invalid UNITY_INT_WIDTH specified! (16 or 32 are supported) 129284990Scy#endif 130284990Scy 131284990Scy//------------------------------------------------------- 132284990Scy// 64-bit Support 133284990Scy//------------------------------------------------------- 134284990Scy 135284990Scy#ifndef UNITY_SUPPORT_64 136284990Scy#if UNITY_LONG_WIDTH > 32 137284990Scy#define UNITY_SUPPORT_64 138284990Scy#endif 139284990Scy#endif 140284990Scy#ifndef UNITY_SUPPORT_64 141284990Scy#if UNITY_POINTER_WIDTH > 32 142284990Scy#define UNITY_SUPPORT_64 143284990Scy#endif 144284990Scy#endif 145284990Scy 146284990Scy#ifndef UNITY_SUPPORT_64 147284990Scy 148284990Scy//No 64-bit Support 149284990Scytypedef _UU32 _U_UINT; 150284990Scytypedef _US32 _U_SINT; 151284990Scy 152284990Scy#else 153284990Scy 154284990Scy//64-bit Support 155284990Scy#if (UNITY_LONG_WIDTH == 32) 156284990Scy typedef unsigned long long _UU64; 157284990Scy typedef signed long long _US64; 158284990Scy#elif (UNITY_LONG_WIDTH == 64) 159284990Scy typedef unsigned long _UU64; 160284990Scy typedef signed long _US64; 161284990Scy#else 162284990Scy #error Invalid UNITY_LONG_WIDTH specified! (32 or 64 are supported) 163284990Scy#endif 164284990Scytypedef _UU64 _U_UINT; 165284990Scytypedef _US64 _U_SINT; 166284990Scy 167284990Scy#endif 168284990Scy 169284990Scy//------------------------------------------------------- 170284990Scy// Pointer Support 171284990Scy//------------------------------------------------------- 172284990Scy 173284990Scy#if (UNITY_POINTER_WIDTH == 32) 174284990Scy typedef _UU32 _UP; 175284990Scy#define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX32 176284990Scy#elif (UNITY_POINTER_WIDTH == 64) 177284990Scy typedef _UU64 _UP; 178284990Scy#define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX64 179284990Scy#elif (UNITY_POINTER_WIDTH == 16) 180284990Scy typedef _UU16 _UP; 181284990Scy#define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX16 182284990Scy#else 183284990Scy #error Invalid UNITY_POINTER_WIDTH specified! (16, 32 or 64 are supported) 184284990Scy#endif 185284990Scy 186284990Scy#ifndef UNITY_PTR_ATTRIBUTE 187284990Scy #define UNITY_PTR_ATTRIBUTE 188284990Scy#endif 189284990Scy 190284990Scy//------------------------------------------------------- 191284990Scy// Float Support 192284990Scy//------------------------------------------------------- 193284990Scy 194284990Scy#ifdef UNITY_EXCLUDE_FLOAT 195284990Scy 196284990Scy//No Floating Point Support 197284990Scy#undef UNITY_INCLUDE_FLOAT 198284990Scy#undef UNITY_FLOAT_PRECISION 199284990Scy#undef UNITY_FLOAT_TYPE 200284990Scy#undef UNITY_FLOAT_VERBOSE 201284990Scy 202284990Scy#else 203284990Scy 204284990Scy#ifndef UNITY_INCLUDE_FLOAT 205284990Scy#define UNITY_INCLUDE_FLOAT 206284990Scy#endif 207284990Scy 208284990Scy//Floating Point Support 209284990Scy#ifndef UNITY_FLOAT_PRECISION 210284990Scy#define UNITY_FLOAT_PRECISION (0.00001f) 211284990Scy#endif 212284990Scy#ifndef UNITY_FLOAT_TYPE 213284990Scy#define UNITY_FLOAT_TYPE float 214284990Scy#endif 215284990Scytypedef UNITY_FLOAT_TYPE _UF; 216284990Scy 217284990Scy#endif 218284990Scy 219284990Scy//------------------------------------------------------- 220284990Scy// Double Float Support 221284990Scy//------------------------------------------------------- 222284990Scy 223284990Scy//unlike FLOAT, we DON'T include by default 224284990Scy#ifndef UNITY_EXCLUDE_DOUBLE 225284990Scy#ifndef UNITY_INCLUDE_DOUBLE 226284990Scy#define UNITY_EXCLUDE_DOUBLE 227284990Scy#endif 228284990Scy#endif 229284990Scy 230284990Scy#ifdef UNITY_EXCLUDE_DOUBLE 231284990Scy 232284990Scy//No Floating Point Support 233284990Scy#undef UNITY_DOUBLE_PRECISION 234284990Scy#undef UNITY_DOUBLE_TYPE 235284990Scy#undef UNITY_DOUBLE_VERBOSE 236284990Scy 237284990Scy#ifdef UNITY_INCLUDE_DOUBLE 238284990Scy#undef UNITY_INCLUDE_DOUBLE 239284990Scy#endif 240284990Scy 241284990Scy#else 242284990Scy 243284990Scy//Double Floating Point Support 244284990Scy#ifndef UNITY_DOUBLE_PRECISION 245284990Scy#define UNITY_DOUBLE_PRECISION (1e-12f) 246284990Scy#endif 247284990Scy#ifndef UNITY_DOUBLE_TYPE 248284990Scy#define UNITY_DOUBLE_TYPE double 249284990Scy#endif 250284990Scytypedef UNITY_DOUBLE_TYPE _UD; 251284990Scy 252284990Scy#endif 253284990Scy 254284990Scy#ifdef UNITY_DOUBLE_VERBOSE 255284990Scy#ifndef UNITY_FLOAT_VERBOSE 256284990Scy#define UNITY_FLOAT_VERBOSE 257284990Scy#endif 258284990Scy#endif 259284990Scy 260284990Scy//------------------------------------------------------- 261284990Scy// Output Method: stdout (DEFAULT) 262284990Scy//------------------------------------------------------- 263284990Scy#ifndef UNITY_OUTPUT_CHAR 264284990Scy//Default to using putchar, which is defined in stdio.h 265284990Scy#include <stdio.h> 266284990Scy#define UNITY_OUTPUT_CHAR(a) putchar(a) 267284990Scy#else 268284990Scy//If defined as something else, make sure we declare it here so it's ready for use 269284990Scyextern int UNITY_OUTPUT_CHAR(int); 270284990Scy#endif 271284990Scy 272284990Scy#ifndef UNITY_OUTPUT_START 273284990Scy#define UNITY_OUTPUT_START() 274284990Scy#endif 275284990Scy 276284990Scy#ifndef UNITY_OUTPUT_COMPLETE 277284990Scy#define UNITY_OUTPUT_COMPLETE() 278284990Scy#endif 279284990Scy 280284990Scy//------------------------------------------------------- 281284990Scy// Footprint 282284990Scy//------------------------------------------------------- 283284990Scy 284284990Scy#ifndef UNITY_LINE_TYPE 285284990Scy#define UNITY_LINE_TYPE _U_UINT 286284990Scy#endif 287284990Scy 288284990Scy#ifndef UNITY_COUNTER_TYPE 289284990Scy#define UNITY_COUNTER_TYPE _U_UINT 290284990Scy#endif 291284990Scy 292284990Scy//------------------------------------------------------- 293284990Scy// Language Features Available 294284990Scy//------------------------------------------------------- 295284990Scy#if !defined(UNITY_WEAK_ATTRIBUTE) && !defined(UNITY_WEAK_PRAGMA) 296284990Scy# ifdef __GNUC__ // includes clang 297284990Scy# if !(defined(__WIN32__) && defined(__clang__)) 298284990Scy# define UNITY_WEAK_ATTRIBUTE __attribute__((weak)) 299284990Scy# endif 300284990Scy# endif 301284990Scy#endif 302284990Scy 303284990Scy#ifdef UNITY_NO_WEAK 304284990Scy# undef UNITY_WEAK_ATTRIBUTE 305284990Scy# undef UNITY_WEAK_PRAGMA 306284990Scy#endif 307284990Scy 308293423Sdelphij#if !defined(UNITY_NORETURN_ATTRIBUTE) 309293423Sdelphij# ifdef __GNUC__ // includes clang 310293423Sdelphij# if !(defined(__WIN32__) && defined(__clang__)) 311293423Sdelphij# define UNITY_NORETURN_ATTRIBUTE __attribute__((noreturn)) 312293423Sdelphij# endif 313293423Sdelphij# endif 314293423Sdelphij#endif 315284990Scy 316293423Sdelphij#ifndef UNITY_NORETURN_ATTRIBUTE 317293423Sdelphij# define UNITY_NORETURN_ATTRIBUTE 318293423Sdelphij#endif 319293423Sdelphij 320293423Sdelphij 321284990Scy//------------------------------------------------------- 322284990Scy// Internal Structs Needed 323284990Scy//------------------------------------------------------- 324284990Scy 325284990Scytypedef void (*UnityTestFunction)(void); 326284990Scy 327284990Scy#define UNITY_DISPLAY_RANGE_INT (0x10) 328284990Scy#define UNITY_DISPLAY_RANGE_UINT (0x20) 329284990Scy#define UNITY_DISPLAY_RANGE_HEX (0x40) 330284990Scy#define UNITY_DISPLAY_RANGE_AUTO (0x80) 331284990Scy 332284990Scytypedef enum 333284990Scy{ 334284990Scy#if (UNITY_INT_WIDTH == 16) 335284990Scy UNITY_DISPLAY_STYLE_INT = 2 + UNITY_DISPLAY_RANGE_INT + UNITY_DISPLAY_RANGE_AUTO, 336284990Scy#elif (UNITY_INT_WIDTH == 32) 337284990Scy UNITY_DISPLAY_STYLE_INT = 4 + UNITY_DISPLAY_RANGE_INT + UNITY_DISPLAY_RANGE_AUTO, 338284990Scy#elif (UNITY_INT_WIDTH == 64) 339284990Scy UNITY_DISPLAY_STYLE_INT = 8 + UNITY_DISPLAY_RANGE_INT + UNITY_DISPLAY_RANGE_AUTO, 340284990Scy#endif 341284990Scy UNITY_DISPLAY_STYLE_INT8 = 1 + UNITY_DISPLAY_RANGE_INT, 342284990Scy UNITY_DISPLAY_STYLE_INT16 = 2 + UNITY_DISPLAY_RANGE_INT, 343284990Scy UNITY_DISPLAY_STYLE_INT32 = 4 + UNITY_DISPLAY_RANGE_INT, 344284990Scy#ifdef UNITY_SUPPORT_64 345284990Scy UNITY_DISPLAY_STYLE_INT64 = 8 + UNITY_DISPLAY_RANGE_INT, 346284990Scy#endif 347284990Scy 348284990Scy#if (UNITY_INT_WIDTH == 16) 349284990Scy UNITY_DISPLAY_STYLE_UINT = 2 + UNITY_DISPLAY_RANGE_UINT + UNITY_DISPLAY_RANGE_AUTO, 350284990Scy#elif (UNITY_INT_WIDTH == 32) 351284990Scy UNITY_DISPLAY_STYLE_UINT = 4 + UNITY_DISPLAY_RANGE_UINT + UNITY_DISPLAY_RANGE_AUTO, 352284990Scy#elif (UNITY_INT_WIDTH == 64) 353284990Scy UNITY_DISPLAY_STYLE_UINT = 8 + UNITY_DISPLAY_RANGE_UINT + UNITY_DISPLAY_RANGE_AUTO, 354284990Scy#endif 355284990Scy UNITY_DISPLAY_STYLE_UINT8 = 1 + UNITY_DISPLAY_RANGE_UINT, 356284990Scy UNITY_DISPLAY_STYLE_UINT16 = 2 + UNITY_DISPLAY_RANGE_UINT, 357284990Scy UNITY_DISPLAY_STYLE_UINT32 = 4 + UNITY_DISPLAY_RANGE_UINT, 358284990Scy#ifdef UNITY_SUPPORT_64 359284990Scy UNITY_DISPLAY_STYLE_UINT64 = 8 + UNITY_DISPLAY_RANGE_UINT, 360284990Scy#endif 361284990Scy UNITY_DISPLAY_STYLE_HEX8 = 1 + UNITY_DISPLAY_RANGE_HEX, 362284990Scy UNITY_DISPLAY_STYLE_HEX16 = 2 + UNITY_DISPLAY_RANGE_HEX, 363284990Scy UNITY_DISPLAY_STYLE_HEX32 = 4 + UNITY_DISPLAY_RANGE_HEX, 364284990Scy#ifdef UNITY_SUPPORT_64 365284990Scy UNITY_DISPLAY_STYLE_HEX64 = 8 + UNITY_DISPLAY_RANGE_HEX, 366284990Scy#endif 367284990Scy UNITY_DISPLAY_STYLE_UNKNOWN 368284990Scy} UNITY_DISPLAY_STYLE_T; 369284990Scy 370284990Scy#ifndef UNITY_EXCLUDE_FLOAT 371284990Scytypedef enum _UNITY_FLOAT_TRAIT_T 372284990Scy{ 373284990Scy UNITY_FLOAT_IS_NOT_INF = 0, 374284990Scy UNITY_FLOAT_IS_INF, 375284990Scy UNITY_FLOAT_IS_NOT_NEG_INF, 376284990Scy UNITY_FLOAT_IS_NEG_INF, 377284990Scy UNITY_FLOAT_IS_NOT_NAN, 378284990Scy UNITY_FLOAT_IS_NAN, 379284990Scy UNITY_FLOAT_IS_NOT_DET, 380284990Scy UNITY_FLOAT_IS_DET, 381284990Scy} UNITY_FLOAT_TRAIT_T; 382284990Scy#endif 383284990Scy 384284990Scystruct _Unity 385284990Scy{ 386284990Scy const char* TestFile; 387284990Scy const char* CurrentTestName; 388284990Scy UNITY_LINE_TYPE CurrentTestLineNumber; 389284990Scy UNITY_COUNTER_TYPE NumberOfTests; 390284990Scy UNITY_COUNTER_TYPE TestFailures; 391284990Scy UNITY_COUNTER_TYPE TestIgnores; 392284990Scy UNITY_COUNTER_TYPE CurrentTestFailed; 393284990Scy UNITY_COUNTER_TYPE CurrentTestIgnored; 394284990Scy jmp_buf AbortFrame; 395284990Scy int isExpectingFail; 396284990Scy UNITY_COUNTER_TYPE TestXFAILS; 397284990Scy UNITY_COUNTER_TYPE TestPasses; 398284990Scy UNITY_COUNTER_TYPE TestXPASSES; 399284990Scy const char* XFAILMessage; 400284990Scy}; 401284990Scy 402284990Scyextern struct _Unity Unity; 403284990Scy 404284990Scy//------------------------------------------------------- 405284990Scy// Test Suite Management 406284990Scy//------------------------------------------------------- 407284990Scy 408284990Scyvoid UnityBegin(const char* filename); 409284990Scyint UnityEnd(void); 410284990Scyvoid UnityConcludeTest(void); 411284990Scyvoid UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int FuncLineNum); 412284990Scy 413284990Scy//------------------------------------------------------- 414284990Scy// Test Output 415284990Scy//------------------------------------------------------- 416284990Scy 417284990Scyvoid UnityPrint(const char* string); 418284990Scyvoid UnityPrintMask(const _U_UINT mask, const _U_UINT number); 419284990Scyvoid UnityPrintNumberByStyle(const _U_SINT number, const UNITY_DISPLAY_STYLE_T style); 420284990Scyvoid UnityPrintNumber(const _U_SINT number); 421284990Scyvoid UnityPrintNumberUnsigned(const _U_UINT number); 422284990Scyvoid UnityPrintNumberHex(const _U_UINT number, const char nibbles); 423284990Scy 424284990Scy#ifdef UNITY_FLOAT_VERBOSE 425284990Scyvoid UnityPrintFloat(const _UF number); 426284990Scy#endif 427284990Scy 428284990Scy//------------------------------------------------------- 429284990Scy// Test Assertion Fuctions 430284990Scy//------------------------------------------------------- 431284990Scy// Use the macros below this section instead of calling 432284990Scy// these directly. The macros have a consistent naming 433284990Scy// convention and will pull in file and line information 434284990Scy// for you. 435284990Scy 436284990Scyvoid UnityAssertEqualNumber(const _U_SINT expected, 437284990Scy const _U_SINT actual, 438284990Scy const char* msg, 439284990Scy const UNITY_LINE_TYPE lineNumber, 440284990Scy const UNITY_DISPLAY_STYLE_T style); 441284990Scy 442284990Scyvoid UnityAssertEqualIntArray(UNITY_PTR_ATTRIBUTE const void* expected, 443284990Scy UNITY_PTR_ATTRIBUTE const void* actual, 444284990Scy const _UU32 num_elements, 445284990Scy const char* msg, 446284990Scy const UNITY_LINE_TYPE lineNumber, 447284990Scy const UNITY_DISPLAY_STYLE_T style); 448284990Scy 449284990Scyvoid UnityAssertBits(const _U_SINT mask, 450284990Scy const _U_SINT expected, 451284990Scy const _U_SINT actual, 452284990Scy const char* msg, 453284990Scy const UNITY_LINE_TYPE lineNumber); 454284990Scy 455284990Scyvoid UnityAssertEqualString(const char* expected, 456284990Scy const char* actual, 457284990Scy const char* msg, 458284990Scy const UNITY_LINE_TYPE lineNumber); 459284990Scy 460284990Scyvoid UnityAssertEqualStringArray( const char** expected, 461284990Scy const char** actual, 462284990Scy const _UU32 num_elements, 463284990Scy const char* msg, 464284990Scy const UNITY_LINE_TYPE lineNumber); 465284990Scy 466284990Scyvoid UnityAssertEqualMemory( UNITY_PTR_ATTRIBUTE const void* expected, 467284990Scy UNITY_PTR_ATTRIBUTE const void* actual, 468284990Scy const _UU32 length, 469284990Scy const _UU32 num_elements, 470284990Scy const char* msg, 471284990Scy const UNITY_LINE_TYPE lineNumber); 472284990Scy 473284990Scyvoid UnityAssertNumbersWithin(const _U_SINT delta, 474284990Scy const _U_SINT expected, 475284990Scy const _U_SINT actual, 476284990Scy const char* msg, 477284990Scy const UNITY_LINE_TYPE lineNumber, 478284990Scy const UNITY_DISPLAY_STYLE_T style); 479284990Scy 480293423Sdelphijvoid UnityFail(const char* message, const UNITY_LINE_TYPE line) UNITY_NORETURN_ATTRIBUTE; 481284990Scy 482284990Scyvoid UnityIgnore(const char* message, const UNITY_LINE_TYPE line); 483284990Scy 484284990Scy#ifndef UNITY_EXCLUDE_FLOAT 485284990Scyvoid UnityAssertFloatsWithin(const _UF delta, 486284990Scy const _UF expected, 487284990Scy const _UF actual, 488284990Scy const char* msg, 489284990Scy const UNITY_LINE_TYPE lineNumber); 490284990Scy 491284990Scyvoid UnityAssertEqualFloatArray(UNITY_PTR_ATTRIBUTE const _UF* expected, 492284990Scy UNITY_PTR_ATTRIBUTE const _UF* actual, 493284990Scy const _UU32 num_elements, 494284990Scy const char* msg, 495284990Scy const UNITY_LINE_TYPE lineNumber); 496284990Scy 497284990Scyvoid UnityAssertFloatSpecial(const _UF actual, 498284990Scy const char* msg, 499284990Scy const UNITY_LINE_TYPE lineNumber, 500284990Scy const UNITY_FLOAT_TRAIT_T style); 501284990Scy#endif 502284990Scy 503284990Scy#ifndef UNITY_EXCLUDE_DOUBLE 504284990Scyvoid UnityAssertDoublesWithin(const _UD delta, 505284990Scy const _UD expected, 506284990Scy const _UD actual, 507284990Scy const char* msg, 508284990Scy const UNITY_LINE_TYPE lineNumber); 509284990Scy 510284990Scyvoid UnityAssertEqualDoubleArray(UNITY_PTR_ATTRIBUTE const _UD* expected, 511284990Scy UNITY_PTR_ATTRIBUTE const _UD* actual, 512284990Scy const _UU32 num_elements, 513284990Scy const char* msg, 514284990Scy const UNITY_LINE_TYPE lineNumber); 515284990Scy 516284990Scyvoid UnityAssertDoubleSpecial(const _UD actual, 517284990Scy const char* msg, 518284990Scy const UNITY_LINE_TYPE lineNumber, 519284990Scy const UNITY_FLOAT_TRAIT_T style); 520284990Scy#endif 521284990Scy 522284990Scy//------------------------------------------------------- 523284990Scy// Error Strings We Might Need 524284990Scy//------------------------------------------------------- 525284990Scy 526284990Scyextern const char UnityStrErrFloat[]; 527284990Scyextern const char UnityStrErrDouble[]; 528284990Scyextern const char UnityStrErr64[]; 529284990Scy 530284990Scy//------------------------------------------------------- 531284990Scy// Test Running Macros 532284990Scy//------------------------------------------------------- 533284990Scy 534284990Scy#define TEST_PROTECT() (setjmp(Unity.AbortFrame) == 0) 535284990Scy 536284990Scy#define TEST_ABORT() {longjmp(Unity.AbortFrame, 1);} 537284990Scy 538284990Scy//This tricky series of macros gives us an optional line argument to treat it as RUN_TEST(func, num=__LINE__) 539284990Scy#ifndef RUN_TEST 540284990Scy#ifdef __STDC_VERSION__ 541284990Scy#if __STDC_VERSION__ >= 199901L 542284990Scy#define RUN_TEST(...) UnityDefaultTestRun(RUN_TEST_FIRST(__VA_ARGS__), RUN_TEST_SECOND(__VA_ARGS__)) 543284990Scy#define RUN_TEST_FIRST(...) RUN_TEST_FIRST_HELPER(__VA_ARGS__, throwaway) 544284990Scy#define RUN_TEST_FIRST_HELPER(first,...) first, #first 545284990Scy#define RUN_TEST_SECOND(...) RUN_TEST_SECOND_HELPER(__VA_ARGS__, __LINE__, throwaway) 546284990Scy#define RUN_TEST_SECOND_HELPER(first,second,...) second 547284990Scy#endif 548284990Scy#endif 549284990Scy#endif 550284990Scy 551284990Scy//If we can't do the tricky version, we'll just have to require them to always include the line number 552284990Scy#ifndef RUN_TEST 553284990Scy#ifdef CMOCK 554284990Scy#define RUN_TEST(func, num) UnityDefaultTestRun(func, #func, num) 555284990Scy#else 556284990Scy#define RUN_TEST(func) UnityDefaultTestRun(func, #func, __LINE__) 557284990Scy#endif 558284990Scy#endif 559284990Scy 560284990Scy#define TEST_LINE_NUM (Unity.CurrentTestLineNumber) 561284990Scy#define TEST_IS_IGNORED (Unity.CurrentTestIgnored) 562284990Scy#define UNITY_NEW_TEST(a) \ 563284990Scy Unity.CurrentTestName = a; \ 564284990Scy Unity.CurrentTestLineNumber = (UNITY_LINE_TYPE)(__LINE__); \ 565284990Scy Unity.NumberOfTests++; 566284990Scy 567284990Scy#ifndef UNITY_BEGIN 568284990Scy#define UNITY_BEGIN() UnityBegin(__FILE__) 569284990Scy#endif 570284990Scy 571284990Scy#ifndef UNITY_END 572284990Scy#define UNITY_END() UnityEnd() 573284990Scy#endif 574284990Scy 575284990Scy//------------------------------------------------------- 576284990Scy// Basic Fail and Ignore 577284990Scy//------------------------------------------------------- 578284990Scy 579284990Scy#define UNITY_TEST_FAIL(line, message) UnityFail( (message), (UNITY_LINE_TYPE)line); 580284990Scy#define UNITY_TEST_IGNORE(line, message) UnityIgnore( (message), (UNITY_LINE_TYPE)line); 581284990Scy 582284990Scy//------------------------------------------------------- 583284990Scy// Test Asserts 584284990Scy//------------------------------------------------------- 585284990Scy 586284990Scy#define UNITY_TEST_ASSERT(condition, line, message) if (condition) {} else {UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, message);} 587284990Scy#define UNITY_TEST_ASSERT_NULL(pointer, line, message) UNITY_TEST_ASSERT(((pointer) == NULL), (UNITY_LINE_TYPE)line, message) 588284990Scy#define UNITY_TEST_ASSERT_NOT_NULL(pointer, line, message) UNITY_TEST_ASSERT(((pointer) != NULL), (UNITY_LINE_TYPE)line, message) 589284990Scy 590284990Scy#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) 591284990Scy#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) 592284990Scy#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) 593284990Scy#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) 594284990Scy#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) 595284990Scy#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) 596284990Scy#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) 597284990Scy#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) 598284990Scy#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) 599284990Scy#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) 600284990Scy#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) 601284990Scy#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) 602284990Scy 603284990Scy#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) 604284990Scy#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) 605284990Scy#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) 606284990Scy#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) 607284990Scy#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) 608284990Scy#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) 609284990Scy#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) 610284990Scy#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) 611284990Scy#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) 612284990Scy#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) 613284990Scy#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) 614284990Scy 615284990Scy#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) 616284990Scy#define UNITY_TEST_ASSERT_EQUAL_STRING(expected, actual, line, message) UnityAssertEqualString((const char*)(expected), (const char*)(actual), (message), (UNITY_LINE_TYPE)line) 617294554Sdelphij#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) 618284990Scy 619284990Scy#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) 620284990Scy#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) 621284990Scy#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) 622284990Scy#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) 623284990Scy#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) 624284990Scy#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) 625284990Scy#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) 626284990Scy#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) 627284990Scy#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) 628284990Scy#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) 629284990Scy#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) 630284990Scy#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) 631284990Scy#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) 632284990Scy#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) 633284990Scy 634284990Scy#ifdef UNITY_SUPPORT_64 635284990Scy#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) 636284990Scy#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) 637284990Scy#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) 638284990Scy#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) 639284990Scy#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) 640284990Scy#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) 641284990Scy#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) 642284990Scy#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) 643284990Scy#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) 644284990Scy#else 645284990Scy#define UNITY_TEST_ASSERT_EQUAL_INT64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 646284990Scy#define UNITY_TEST_ASSERT_EQUAL_UINT64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 647284990Scy#define UNITY_TEST_ASSERT_EQUAL_HEX64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 648284990Scy#define UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 649284990Scy#define UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 650284990Scy#define UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 651284990Scy#define UNITY_TEST_ASSERT_INT64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 652284990Scy#define UNITY_TEST_ASSERT_UINT64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 653284990Scy#define UNITY_TEST_ASSERT_HEX64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErr64) 654284990Scy#endif 655284990Scy 656284990Scy#ifdef UNITY_EXCLUDE_FLOAT 657284990Scy#define UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 658284990Scy#define UNITY_TEST_ASSERT_EQUAL_FLOAT(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 659284990Scy#define UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 660284990Scy#define UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 661284990Scy#define UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 662284990Scy#define UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 663284990Scy#define UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 664284990Scy#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 665284990Scy#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 666284990Scy#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 667284990Scy#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrFloat) 668284990Scy#else 669284990Scy#define UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, line, message) UnityAssertFloatsWithin((_UF)(delta), (_UF)(expected), (_UF)(actual), (message), (UNITY_LINE_TYPE)line) 670284990Scy#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) 671284990Scy#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) 672284990Scy#define UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_INF) 673284990Scy#define UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NEG_INF) 674284990Scy#define UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NAN) 675284990Scy#define UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_DET) 676284990Scy#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_INF) 677284990Scy#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) 678284990Scy#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_NAN) 679284990Scy#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(actual, line, message) UnityAssertFloatSpecial((_UF)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_DET) 680284990Scy#endif 681284990Scy 682284990Scy#ifdef UNITY_EXCLUDE_DOUBLE 683284990Scy#define UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 684284990Scy#define UNITY_TEST_ASSERT_EQUAL_DOUBLE(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 685284990Scy#define UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 686284990Scy#define UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 687284990Scy#define UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 688284990Scy#define UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 689284990Scy#define UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 690284990Scy#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 691284990Scy#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 692284990Scy#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 693284990Scy#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, UnityStrErrDouble) 694284990Scy#else 695284990Scy#define UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, line, message) UnityAssertDoublesWithin((_UD)(delta), (_UD)(expected), (_UD)(actual), (message), (UNITY_LINE_TYPE)line) 696284990Scy#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) 697284990Scy#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) 698284990Scy#define UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_INF) 699284990Scy#define UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NEG_INF) 700284990Scy#define UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NAN) 701284990Scy#define UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_DET) 702284990Scy#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_INF) 703284990Scy#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) 704284990Scy#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_NAN) 705284990Scy#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(actual, line, message) UnityAssertDoubleSpecial((_UD)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_FLOAT_IS_NOT_DET) 706284990Scy#endif 707284990Scy 708284990Scy//End of UNITY_INTERNALS_H 709284990Scy#endif 710284990Scy 711284990Scy//#define TEST_EXPECT_FAIL() Unity.isExpectingFail = 1; 712284990Scy//#define TEST_EXPECT_FAIL_MESSAGE(message) Unity.isExpectingFail = 1; Unity.XFAILMessage = message; //PROBLEM : does this work on all compilers? 713284990Scy 714284990Scy#define TEST_EXPECT_FAIL() UnityExpectFail(); 715284990Scy#define TEST_EXPECT_FAIL_MESSAGE(message) UnityExpectFailMessage( (message) ); 716