unity_internals.h 42 KB

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