unity_internals.h 41 KB

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