unity_internals.h 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732
  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. #include "../examples/unity_config.h"
  9. #ifndef UNITY_EXCLUDE_SETJMP_H
  10. #include <setjmp.h>
  11. #endif
  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 UNITY_UINT8;
  79. typedef unsigned short UNITY_UINT16;
  80. typedef unsigned int UNITY_UINT32;
  81. typedef signed char UNITY_INT8;
  82. typedef signed short UNITY_INT16;
  83. typedef signed int UNITY_INT32;
  84. #elif (UNITY_INT_WIDTH == 16)
  85. typedef unsigned char UNITY_UINT8;
  86. typedef unsigned int UNITY_UINT16;
  87. typedef unsigned long UNITY_UINT32;
  88. typedef signed char UNITY_INT8;
  89. typedef signed int UNITY_INT16;
  90. typedef signed long UNITY_INT32;
  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 UNITY_UINT32 UNITY_UINT;
  105. typedef UNITY_INT32 UNITY_INT;
  106. #else
  107. /* 64-bit Support */
  108. #if (UNITY_LONG_WIDTH == 32)
  109. typedef unsigned long long UNITY_UINT64;
  110. typedef signed long long UNITY_INT64;
  111. #elif (UNITY_LONG_WIDTH == 64)
  112. typedef unsigned long UNITY_UINT64;
  113. typedef signed long UNITY_INT64;
  114. #else
  115. #error Invalid UNITY_LONG_WIDTH specified! (32 or 64 are supported)
  116. #endif
  117. typedef UNITY_UINT64 UNITY_UINT;
  118. typedef UNITY_INT64 UNITY_INT;
  119. #endif
  120. /*-------------------------------------------------------
  121. * Pointer Support
  122. *-------------------------------------------------------*/
  123. #if (UNITY_POINTER_WIDTH == 32)
  124. #define UNITY_PTR_TO_INT UNITY_INT32
  125. #define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX32
  126. #elif (UNITY_POINTER_WIDTH == 64)
  127. #define UNITY_PTR_TO_INT UNITY_INT64
  128. #define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX64
  129. #elif (UNITY_POINTER_WIDTH == 16)
  130. #define UNITY_PTR_TO_INT UNITY_INT16
  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. #endif
  141. /*-------------------------------------------------------
  142. * Float Support
  143. *-------------------------------------------------------*/
  144. #ifdef UNITY_EXCLUDE_FLOAT
  145. /* No Floating Point Support */
  146. #ifndef UNITY_EXCLUDE_DOUBLE
  147. #define UNITY_EXCLUDE_DOUBLE /* Remove double when excluding float support */
  148. #endif
  149. #ifndef UNITY_EXCLUDE_FLOAT_PRINT
  150. #define UNITY_EXCLUDE_FLOAT_PRINT
  151. #endif
  152. #else
  153. /* Floating Point Support */
  154. #ifndef UNITY_FLOAT_PRECISION
  155. #define UNITY_FLOAT_PRECISION (0.00001f)
  156. #endif
  157. #ifndef UNITY_FLOAT_TYPE
  158. #define UNITY_FLOAT_TYPE float
  159. #endif
  160. typedef UNITY_FLOAT_TYPE UNITY_FLOAT;
  161. /* isinf & isnan macros should be provided by math.h */
  162. #ifndef isinf
  163. /* The value of Inf - Inf is NaN */
  164. #define isinf(n) (isnan((n) - (n)) && !isnan(n))
  165. #endif
  166. #ifndef isnan
  167. /* NaN is the only floating point value that does NOT equal itself.
  168. * Therefore if n != n, then it is NaN. */
  169. #define isnan(n) ((n != n) ? 1 : 0)
  170. #endif
  171. #endif
  172. /*-------------------------------------------------------
  173. * Double Float Support
  174. *-------------------------------------------------------*/
  175. /* unlike float, we DON'T include by default */
  176. #if defined(UNITY_EXCLUDE_DOUBLE) || !defined(UNITY_INCLUDE_DOUBLE)
  177. /* No Floating Point Support */
  178. #ifndef UNITY_EXCLUDE_DOUBLE
  179. #define UNITY_EXCLUDE_DOUBLE
  180. #else
  181. #undef UNITY_INCLUDE_DOUBLE
  182. #endif
  183. #ifndef UNITY_EXCLUDE_FLOAT
  184. #ifndef UNITY_DOUBLE_TYPE
  185. #define UNITY_DOUBLE_TYPE double
  186. #endif
  187. typedef UNITY_FLOAT UNITY_DOUBLE;
  188. /* For parameter in UnityPrintFloat(UNITY_DOUBLE), which aliases to double or float */
  189. #endif
  190. #else
  191. /* Double Floating Point Support */
  192. #ifndef UNITY_DOUBLE_PRECISION
  193. #define UNITY_DOUBLE_PRECISION (1e-12)
  194. #endif
  195. #ifndef UNITY_DOUBLE_TYPE
  196. #define UNITY_DOUBLE_TYPE double
  197. #endif
  198. typedef UNITY_DOUBLE_TYPE UNITY_DOUBLE;
  199. #endif
  200. /*-------------------------------------------------------
  201. * Output Method: stdout (DEFAULT)
  202. *-------------------------------------------------------*/
  203. #ifndef UNITY_OUTPUT_CHAR
  204. /* Default to using putchar, which is defined in stdio.h */
  205. #include <stdio.h>
  206. #define UNITY_OUTPUT_CHAR(a) (void)putchar(a)
  207. #else
  208. /* If defined as something else, make sure we declare it here so it's ready for use */
  209. #ifndef UNITY_OMIT_OUTPUT_CHAR_HEADER_DECLARATION
  210. extern void UNITY_OUTPUT_CHAR(int);
  211. #endif
  212. #endif
  213. #ifndef UNITY_OUTPUT_FLUSH
  214. /* Default to using fflush, which is defined in stdio.h */
  215. #include <stdio.h>
  216. #define UNITY_OUTPUT_FLUSH (void)fflush(stdout)
  217. #else
  218. /* If defined as something else, make sure we declare it here so it's ready for use */
  219. #ifndef UNITY_OMIT_OUTPUT_FLUSH_HEADER_DECLARATION
  220. extern void UNITY_OUTPUT_FLUSH(void);
  221. #endif
  222. #endif
  223. #ifndef UNITY_OUTPUT_FLUSH
  224. #define UNITY_FLUSH_CALL()
  225. #else
  226. #define UNITY_FLUSH_CALL() UNITY_OUTPUT_FLUSH
  227. #endif
  228. #ifndef UNITY_PRINT_EOL
  229. #define UNITY_PRINT_EOL() UNITY_OUTPUT_CHAR('\n')
  230. #endif
  231. #ifndef UNITY_OUTPUT_START
  232. #define UNITY_OUTPUT_START()
  233. #endif
  234. #ifndef UNITY_OUTPUT_COMPLETE
  235. #define UNITY_OUTPUT_COMPLETE()
  236. #endif
  237. /*-------------------------------------------------------
  238. * Footprint
  239. *-------------------------------------------------------*/
  240. #ifndef UNITY_LINE_TYPE
  241. #define UNITY_LINE_TYPE UNITY_UINT
  242. #endif
  243. #ifndef UNITY_COUNTER_TYPE
  244. #define UNITY_COUNTER_TYPE UNITY_UINT
  245. #endif
  246. /*-------------------------------------------------------
  247. * Language Features Available
  248. *-------------------------------------------------------*/
  249. #if !defined(UNITY_WEAK_ATTRIBUTE) && !defined(UNITY_WEAK_PRAGMA)
  250. # ifdef __GNUC__ /* includes clang */
  251. # if !(defined(__WIN32__) && defined(__clang__)) && !defined(__TMS470__)
  252. # define UNITY_WEAK_ATTRIBUTE __attribute__((weak))
  253. # endif
  254. # endif
  255. #endif
  256. #ifdef UNITY_NO_WEAK
  257. # undef UNITY_WEAK_ATTRIBUTE
  258. # undef UNITY_WEAK_PRAGMA
  259. #endif
  260. /*-------------------------------------------------------
  261. * Internal Structs Needed
  262. *-------------------------------------------------------*/
  263. typedef void (*UnityTestFunction)(void);
  264. #define UNITY_DISPLAY_RANGE_INT (0x10)
  265. #define UNITY_DISPLAY_RANGE_UINT (0x20)
  266. #define UNITY_DISPLAY_RANGE_HEX (0x40)
  267. typedef enum
  268. {
  269. UNITY_DISPLAY_STYLE_INT = sizeof(int)+ UNITY_DISPLAY_RANGE_INT,
  270. UNITY_DISPLAY_STYLE_INT8 = 1 + UNITY_DISPLAY_RANGE_INT,
  271. UNITY_DISPLAY_STYLE_INT16 = 2 + UNITY_DISPLAY_RANGE_INT,
  272. UNITY_DISPLAY_STYLE_INT32 = 4 + UNITY_DISPLAY_RANGE_INT,
  273. #ifdef UNITY_SUPPORT_64
  274. UNITY_DISPLAY_STYLE_INT64 = 8 + UNITY_DISPLAY_RANGE_INT,
  275. #endif
  276. UNITY_DISPLAY_STYLE_UINT = sizeof(unsigned) + UNITY_DISPLAY_RANGE_UINT,
  277. UNITY_DISPLAY_STYLE_UINT8 = 1 + UNITY_DISPLAY_RANGE_UINT,
  278. UNITY_DISPLAY_STYLE_UINT16 = 2 + UNITY_DISPLAY_RANGE_UINT,
  279. UNITY_DISPLAY_STYLE_UINT32 = 4 + UNITY_DISPLAY_RANGE_UINT,
  280. #ifdef UNITY_SUPPORT_64
  281. UNITY_DISPLAY_STYLE_UINT64 = 8 + UNITY_DISPLAY_RANGE_UINT,
  282. #endif
  283. UNITY_DISPLAY_STYLE_HEX8 = 1 + UNITY_DISPLAY_RANGE_HEX,
  284. UNITY_DISPLAY_STYLE_HEX16 = 2 + UNITY_DISPLAY_RANGE_HEX,
  285. UNITY_DISPLAY_STYLE_HEX32 = 4 + UNITY_DISPLAY_RANGE_HEX,
  286. #ifdef UNITY_SUPPORT_64
  287. UNITY_DISPLAY_STYLE_HEX64 = 8 + UNITY_DISPLAY_RANGE_HEX,
  288. #endif
  289. UNITY_DISPLAY_STYLE_UNKNOWN
  290. } UNITY_DISPLAY_STYLE_T;
  291. #ifndef UNITY_EXCLUDE_FLOAT
  292. typedef enum UNITY_FLOAT_TRAIT
  293. {
  294. UNITY_FLOAT_IS_NOT_INF = 0,
  295. UNITY_FLOAT_IS_INF,
  296. UNITY_FLOAT_IS_NOT_NEG_INF,
  297. UNITY_FLOAT_IS_NEG_INF,
  298. UNITY_FLOAT_IS_NOT_NAN,
  299. UNITY_FLOAT_IS_NAN,
  300. UNITY_FLOAT_IS_NOT_DET,
  301. UNITY_FLOAT_IS_DET,
  302. UNITY_FLOAT_INVALID_TRAIT
  303. } UNITY_FLOAT_TRAIT_T;
  304. #endif
  305. struct UNITY_STORAGE_T
  306. {
  307. const char* TestFile;
  308. const char* CurrentTestName;
  309. #ifndef UNITY_EXCLUDE_DETAILS
  310. const char* CurrentDetail1;
  311. const char* CurrentDetail2;
  312. #endif
  313. UNITY_LINE_TYPE CurrentTestLineNumber;
  314. UNITY_COUNTER_TYPE NumberOfTests;
  315. UNITY_COUNTER_TYPE TestFailures;
  316. UNITY_COUNTER_TYPE TestIgnores;
  317. UNITY_COUNTER_TYPE CurrentTestFailed;
  318. UNITY_COUNTER_TYPE CurrentTestIgnored;
  319. #ifndef UNITY_EXCLUDE_SETJMP_H
  320. jmp_buf AbortFrame;
  321. #endif
  322. };
  323. extern struct UNITY_STORAGE_T Unity;
  324. /*-------------------------------------------------------
  325. * Test Suite Management
  326. *-------------------------------------------------------*/
  327. void UnityBegin(const char* filename);
  328. int UnityEnd(void);
  329. void UnityConcludeTest(void);
  330. void UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int FuncLineNum);
  331. /*-------------------------------------------------------
  332. * Details Support
  333. *-------------------------------------------------------*/
  334. #ifdef UNITY_EXCLUDE_DETAILS
  335. #define UNITY_CLR_DETAILS()
  336. #define UNITY_SET_DETAIL(d1)
  337. #define UNITY_SET_DETAILS(d1,d2)
  338. #else
  339. #define UNITY_CLR_DETAILS() { Unity.CurrentDetail1 = 0; Unity.CurrentDetail2 = 0; }
  340. #define UNITY_SET_DETAIL(d1) { Unity.CurrentDetail1 = d1; Unity.CurrentDetail2 = 0; }
  341. #define UNITY_SET_DETAILS(d1,d2) { Unity.CurrentDetail1 = d1; Unity.CurrentDetail2 = d2; }
  342. #ifndef UNITY_DETAIL1_NAME
  343. #define UNITY_DETAIL1_NAME "Function"
  344. #endif
  345. #ifndef UNITY_DETAIL2_NAME
  346. #define UNITY_DETAIL2_NAME "Argument"
  347. #endif
  348. #endif
  349. /*-------------------------------------------------------
  350. * Test Output
  351. *-------------------------------------------------------*/
  352. void UnityPrint(const char* string);
  353. void UnityPrintLen(const char* string, const UNITY_UINT32 length);
  354. void UnityPrintMask(const UNITY_UINT mask, const UNITY_UINT number);
  355. void UnityPrintNumberByStyle(const UNITY_INT number, const UNITY_DISPLAY_STYLE_T style);
  356. void UnityPrintNumber(const UNITY_INT number);
  357. void UnityPrintNumberUnsigned(const UNITY_UINT number);
  358. void UnityPrintNumberHex(const UNITY_UINT number, const char nibbles);
  359. #ifndef UNITY_EXCLUDE_FLOAT_PRINT
  360. void UnityPrintFloat(const UNITY_DOUBLE input_number);
  361. #endif
  362. /*-------------------------------------------------------
  363. * Test Assertion Functions
  364. *-------------------------------------------------------
  365. * Use the macros below this section instead of calling
  366. * these directly. The macros have a consistent naming
  367. * convention and will pull in file and line information
  368. * for you. */
  369. void UnityAssertEqualNumber(const UNITY_INT expected,
  370. const UNITY_INT actual,
  371. const char* msg,
  372. const UNITY_LINE_TYPE lineNumber,
  373. const UNITY_DISPLAY_STYLE_T style);
  374. void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected,
  375. UNITY_INTERNAL_PTR actual,
  376. const UNITY_UINT32 num_elements,
  377. const char* msg,
  378. const UNITY_LINE_TYPE lineNumber,
  379. const UNITY_DISPLAY_STYLE_T style);
  380. void UnityAssertBits(const UNITY_INT mask,
  381. const UNITY_INT expected,
  382. const UNITY_INT actual,
  383. const char* msg,
  384. const UNITY_LINE_TYPE lineNumber);
  385. void UnityAssertEqualString(const char* expected,
  386. const char* actual,
  387. const char* msg,
  388. const UNITY_LINE_TYPE lineNumber);
  389. void UnityAssertEqualStringLen(const char* expected,
  390. const char* actual,
  391. const UNITY_UINT32 length,
  392. const char* msg,
  393. const UNITY_LINE_TYPE lineNumber);
  394. void UnityAssertEqualStringArray( const char** expected,
  395. const char** actual,
  396. const UNITY_UINT32 num_elements,
  397. const char* msg,
  398. const UNITY_LINE_TYPE lineNumber);
  399. void UnityAssertEqualMemory( UNITY_INTERNAL_PTR expected,
  400. UNITY_INTERNAL_PTR actual,
  401. const UNITY_UINT32 length,
  402. const UNITY_UINT32 num_elements,
  403. const char* msg,
  404. const UNITY_LINE_TYPE lineNumber);
  405. void UnityAssertNumbersWithin(const UNITY_UINT delta,
  406. const UNITY_INT expected,
  407. const UNITY_INT actual,
  408. const char* msg,
  409. const UNITY_LINE_TYPE lineNumber,
  410. const UNITY_DISPLAY_STYLE_T style);
  411. void UnityFail(const char* message, const UNITY_LINE_TYPE line);
  412. void UnityIgnore(const char* message, const UNITY_LINE_TYPE line);
  413. #ifndef UNITY_EXCLUDE_FLOAT
  414. void UnityAssertFloatsWithin(const UNITY_FLOAT delta,
  415. const UNITY_FLOAT expected,
  416. const UNITY_FLOAT actual,
  417. const char* msg,
  418. const UNITY_LINE_TYPE lineNumber);
  419. void UnityAssertEqualFloatArray(UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* expected,
  420. UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* actual,
  421. const UNITY_UINT32 num_elements,
  422. const char* msg,
  423. const UNITY_LINE_TYPE lineNumber);
  424. void UnityAssertFloatSpecial(const UNITY_FLOAT actual,
  425. const char* msg,
  426. const UNITY_LINE_TYPE lineNumber,
  427. const UNITY_FLOAT_TRAIT_T style);
  428. #endif
  429. #ifndef UNITY_EXCLUDE_DOUBLE
  430. void UnityAssertDoublesWithin(const UNITY_DOUBLE delta,
  431. const UNITY_DOUBLE expected,
  432. const UNITY_DOUBLE actual,
  433. const char* msg,
  434. const UNITY_LINE_TYPE lineNumber);
  435. void UnityAssertEqualDoubleArray(UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* expected,
  436. UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* actual,
  437. const UNITY_UINT32 num_elements,
  438. const char* msg,
  439. const UNITY_LINE_TYPE lineNumber);
  440. void UnityAssertDoubleSpecial(const UNITY_DOUBLE actual,
  441. const char* msg,
  442. const UNITY_LINE_TYPE lineNumber,
  443. const UNITY_FLOAT_TRAIT_T style);
  444. #endif
  445. /*-------------------------------------------------------
  446. * Error Strings We Might Need
  447. *-------------------------------------------------------*/
  448. extern const char UnityStrErrFloat[];
  449. extern const char UnityStrErrDouble[];
  450. extern const char UnityStrErr64[];
  451. /*-------------------------------------------------------
  452. * Test Running Macros
  453. *-------------------------------------------------------*/
  454. #ifndef UNITY_EXCLUDE_SETJMP_H
  455. #define TEST_PROTECT() (setjmp(Unity.AbortFrame) == 0)
  456. #define TEST_ABORT() longjmp(Unity.AbortFrame, 1)
  457. #else
  458. #define TEST_PROTECT() 1
  459. #define TEST_ABORT() return
  460. #endif
  461. /* This tricky series of macros gives us an optional line argument to treat it as RUN_TEST(func, num=__LINE__) */
  462. #ifndef RUN_TEST
  463. #ifdef __STDC_VERSION__
  464. #if __STDC_VERSION__ >= 199901L
  465. #define RUN_TEST(...) UnityDefaultTestRun(RUN_TEST_FIRST(__VA_ARGS__), RUN_TEST_SECOND(__VA_ARGS__))
  466. #define RUN_TEST_FIRST(...) RUN_TEST_FIRST_HELPER(__VA_ARGS__, throwaway)
  467. #define RUN_TEST_FIRST_HELPER(first, ...) (first), #first
  468. #define RUN_TEST_SECOND(...) RUN_TEST_SECOND_HELPER(__VA_ARGS__, __LINE__, throwaway)
  469. #define RUN_TEST_SECOND_HELPER(first, second, ...) (second)
  470. #endif
  471. #endif
  472. #endif
  473. /* If we can't do the tricky version, we'll just have to require them to always include the line number */
  474. #ifndef RUN_TEST
  475. #ifdef CMOCK
  476. #define RUN_TEST(func, num) UnityDefaultTestRun(func, #func, num)
  477. #else
  478. #define RUN_TEST(func) UnityDefaultTestRun(func, #func, __LINE__)
  479. #endif
  480. #endif
  481. #define TEST_LINE_NUM (Unity.CurrentTestLineNumber)
  482. #define TEST_IS_IGNORED (Unity.CurrentTestIgnored)
  483. #define UNITY_NEW_TEST(a) \
  484. Unity.CurrentTestName = (a); \
  485. Unity.CurrentTestLineNumber = (UNITY_LINE_TYPE)(__LINE__); \
  486. Unity.NumberOfTests++;
  487. #ifndef UNITY_BEGIN
  488. #define UNITY_BEGIN() UnityBegin(__FILE__)
  489. #endif
  490. #ifndef UNITY_END
  491. #define UNITY_END() UnityEnd()
  492. #endif
  493. /*-----------------------------------------------
  494. * Command Line Argument Support
  495. *-----------------------------------------------*/
  496. #ifdef UNITY_USE_COMMAND_LINE_ARGS
  497. int UnityParseOptions(int argc, char** argv);
  498. int UnityTestMatches(void);
  499. #endif
  500. /*-------------------------------------------------------
  501. * Basic Fail and Ignore
  502. *-------------------------------------------------------*/
  503. #define UNITY_TEST_FAIL(line, message) UnityFail( (message), (UNITY_LINE_TYPE)(line))
  504. #define UNITY_TEST_IGNORE(line, message) UnityIgnore( (message), (UNITY_LINE_TYPE)(line))
  505. /*-------------------------------------------------------
  506. * Test Asserts
  507. *-------------------------------------------------------*/
  508. #define UNITY_TEST_ASSERT(condition, line, message) if (condition) {} else {UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), (message));}
  509. #define UNITY_TEST_ASSERT_NULL(pointer, line, message) UNITY_TEST_ASSERT(((pointer) == NULL), (UNITY_LINE_TYPE)(line), (message))
  510. #define UNITY_TEST_ASSERT_NOT_NULL(pointer, line, message) UNITY_TEST_ASSERT(((pointer) != NULL), (UNITY_LINE_TYPE)(line), (message))
  511. #define UNITY_TEST_ASSERT_EQUAL_INT(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT)
  512. #define UNITY_TEST_ASSERT_EQUAL_INT8(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )(expected), (UNITY_INT)(UNITY_INT8 )(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8)
  513. #define UNITY_TEST_ASSERT_EQUAL_INT16(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(UNITY_INT16)(expected), (UNITY_INT)(UNITY_INT16)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16)
  514. #define UNITY_TEST_ASSERT_EQUAL_INT32(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(UNITY_INT32)(expected), (UNITY_INT)(UNITY_INT32)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32)
  515. #define UNITY_TEST_ASSERT_EQUAL_UINT(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT)
  516. #define UNITY_TEST_ASSERT_EQUAL_UINT8(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(UNITY_UINT8 )(expected), (UNITY_INT)(UNITY_UINT8 )(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8)
  517. #define UNITY_TEST_ASSERT_EQUAL_UINT16(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(UNITY_UINT16)(expected), (UNITY_INT)(UNITY_UINT16)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16)
  518. #define UNITY_TEST_ASSERT_EQUAL_UINT32(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(UNITY_UINT32)(expected), (UNITY_INT)(UNITY_UINT32)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32)
  519. #define UNITY_TEST_ASSERT_EQUAL_HEX8(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )(expected), (UNITY_INT)(UNITY_INT8 )(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8)
  520. #define UNITY_TEST_ASSERT_EQUAL_HEX16(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(UNITY_INT16)(expected), (UNITY_INT)(UNITY_INT16)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16)
  521. #define UNITY_TEST_ASSERT_EQUAL_HEX32(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(UNITY_INT32)(expected), (UNITY_INT)(UNITY_INT32)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32)
  522. #define UNITY_TEST_ASSERT_BITS(mask, expected, actual, line, message) UnityAssertBits((UNITY_INT)(mask), (UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line))
  523. #define UNITY_TEST_ASSERT_INT_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((delta), (UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT)
  524. #define UNITY_TEST_ASSERT_INT8_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((UNITY_UINT8 )(delta), (UNITY_INT)(UNITY_INT8 )(expected), (UNITY_INT)(UNITY_INT8 )(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8)
  525. #define UNITY_TEST_ASSERT_INT16_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((UNITY_UINT16)(delta), (UNITY_INT)(UNITY_INT16)(expected), (UNITY_INT)(UNITY_INT16)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16)
  526. #define UNITY_TEST_ASSERT_INT32_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((UNITY_UINT32)(delta), (UNITY_INT)(UNITY_INT32)(expected), (UNITY_INT)(UNITY_INT32)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32)
  527. #define UNITY_TEST_ASSERT_UINT_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((delta), (UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT)
  528. #define UNITY_TEST_ASSERT_UINT8_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((UNITY_UINT8 )(delta), (UNITY_INT)(UNITY_UINT)(UNITY_UINT8 )(expected), (UNITY_INT)(UNITY_UINT)(UNITY_UINT8 )(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8)
  529. #define UNITY_TEST_ASSERT_UINT16_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((UNITY_UINT16)(delta), (UNITY_INT)(UNITY_UINT)(UNITY_UINT16)(expected), (UNITY_INT)(UNITY_UINT)(UNITY_UINT16)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16)
  530. #define UNITY_TEST_ASSERT_UINT32_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((UNITY_UINT32)(delta), (UNITY_INT)(UNITY_UINT)(UNITY_UINT32)(expected), (UNITY_INT)(UNITY_UINT)(UNITY_UINT32)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32)
  531. #define UNITY_TEST_ASSERT_HEX8_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((UNITY_UINT8 )(delta), (UNITY_INT)(UNITY_UINT)(UNITY_UINT8 )(expected), (UNITY_INT)(UNITY_UINT)(UNITY_UINT8 )(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8)
  532. #define UNITY_TEST_ASSERT_HEX16_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((UNITY_UINT16)(delta), (UNITY_INT)(UNITY_UINT)(UNITY_UINT16)(expected), (UNITY_INT)(UNITY_UINT)(UNITY_UINT16)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16)
  533. #define UNITY_TEST_ASSERT_HEX32_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((UNITY_UINT32)(delta), (UNITY_INT)(UNITY_UINT)(UNITY_UINT32)(expected), (UNITY_INT)(UNITY_UINT)(UNITY_UINT32)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32)
  534. #define UNITY_TEST_ASSERT_EQUAL_PTR(expected, actual, line, message) UnityAssertEqualNumber((UNITY_PTR_TO_INT)(expected), (UNITY_PTR_TO_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_POINTER)
  535. #define UNITY_TEST_ASSERT_EQUAL_STRING(expected, actual, line, message) UnityAssertEqualString((const char*)(expected), (const char*)(actual), (message), (UNITY_LINE_TYPE)(line))
  536. #define UNITY_TEST_ASSERT_EQUAL_STRING_LEN(expected, actual, len, line, message) UnityAssertEqualStringLen((const char*)(expected), (const char*)(actual), (UNITY_UINT32)(len), (message), (UNITY_LINE_TYPE)(line))
  537. #define UNITY_TEST_ASSERT_EQUAL_MEMORY(expected, actual, len, line, message) UnityAssertEqualMemory((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(len), 1, (message), (UNITY_LINE_TYPE)(line))
  538. #define UNITY_TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT)
  539. #define UNITY_TEST_ASSERT_EQUAL_INT8_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8)
  540. #define UNITY_TEST_ASSERT_EQUAL_INT16_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16)
  541. #define UNITY_TEST_ASSERT_EQUAL_INT32_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32)
  542. #define UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT)
  543. #define UNITY_TEST_ASSERT_EQUAL_UINT8_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8)
  544. #define UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16)
  545. #define UNITY_TEST_ASSERT_EQUAL_UINT32_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32)
  546. #define UNITY_TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8)
  547. #define UNITY_TEST_ASSERT_EQUAL_HEX16_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16)
  548. #define UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32)
  549. #define UNITY_TEST_ASSERT_EQUAL_PTR_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_POINTER)
  550. #define UNITY_TEST_ASSERT_EQUAL_STRING_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualStringArray((const char**)(expected), (const char**)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line))
  551. #define UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY(expected, actual, len, num_elements, line, message) UnityAssertEqualMemory((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(len), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line))
  552. #ifdef UNITY_SUPPORT_64
  553. #define UNITY_TEST_ASSERT_EQUAL_INT64(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64)
  554. #define UNITY_TEST_ASSERT_EQUAL_UINT64(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64)
  555. #define UNITY_TEST_ASSERT_EQUAL_HEX64(expected, actual, line, message) UnityAssertEqualNumber((UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64)
  556. #define UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64)
  557. #define UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64)
  558. #define UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64)
  559. #define UNITY_TEST_ASSERT_INT64_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((delta), (UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64)
  560. #define UNITY_TEST_ASSERT_UINT64_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((delta), (UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64)
  561. #define UNITY_TEST_ASSERT_HEX64_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((delta), (UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64)
  562. #else
  563. #define UNITY_TEST_ASSERT_EQUAL_INT64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
  564. #define UNITY_TEST_ASSERT_EQUAL_UINT64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
  565. #define UNITY_TEST_ASSERT_EQUAL_HEX64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
  566. #define UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
  567. #define UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
  568. #define UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
  569. #define UNITY_TEST_ASSERT_INT64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
  570. #define UNITY_TEST_ASSERT_UINT64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
  571. #define UNITY_TEST_ASSERT_HEX64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64)
  572. #endif
  573. #ifdef UNITY_EXCLUDE_FLOAT
  574. #define UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
  575. #define UNITY_TEST_ASSERT_EQUAL_FLOAT(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
  576. #define UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
  577. #define UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
  578. #define UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
  579. #define UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
  580. #define UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
  581. #define UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
  582. #define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
  583. #define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
  584. #define UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat)
  585. #else
  586. #define UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, line, message) UnityAssertFloatsWithin((UNITY_FLOAT)(delta), (UNITY_FLOAT)(expected), (UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line))
  587. #define UNITY_TEST_ASSERT_EQUAL_FLOAT(expected, actual, line, message) UNITY_TEST_ASSERT_FLOAT_WITHIN((UNITY_FLOAT)(expected) * (UNITY_FLOAT)UNITY_FLOAT_PRECISION, (UNITY_FLOAT)(expected), (UNITY_FLOAT)(actual), (UNITY_LINE_TYPE)(line), (message))
  588. #define UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualFloatArray((UNITY_FLOAT*)(expected), (UNITY_FLOAT*)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line))
  589. #define UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_INF)
  590. #define UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NEG_INF)
  591. #define UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NAN)
  592. #define UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_DET)
  593. #define UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_INF)
  594. #define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NEG_INF(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_NEG_INF)
  595. #define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_NAN)
  596. #define UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_DET)
  597. #endif
  598. #ifdef UNITY_EXCLUDE_DOUBLE
  599. #define UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
  600. #define UNITY_TEST_ASSERT_EQUAL_DOUBLE(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
  601. #define UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
  602. #define UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
  603. #define UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
  604. #define UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
  605. #define UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
  606. #define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
  607. #define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
  608. #define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
  609. #define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble)
  610. #else
  611. #define UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, line, message) UnityAssertDoublesWithin((UNITY_DOUBLE)(delta), (UNITY_DOUBLE)(expected), (UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)line)
  612. #define UNITY_TEST_ASSERT_EQUAL_DOUBLE(expected, actual, line, message) UNITY_TEST_ASSERT_DOUBLE_WITHIN((UNITY_DOUBLE)(expected) * (UNITY_DOUBLE)UNITY_DOUBLE_PRECISION, (UNITY_DOUBLE)expected, (UNITY_DOUBLE)actual, (UNITY_LINE_TYPE)(line), message)
  613. #define UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualDoubleArray((UNITY_DOUBLE*)(expected), (UNITY_DOUBLE*)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)line)
  614. #define UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_INF)
  615. #define UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NEG_INF)
  616. #define UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NAN)
  617. #define UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_DET)
  618. #define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_INF)
  619. #define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_NEG_INF)
  620. #define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_NAN)
  621. #define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_DET)
  622. #endif
  623. /* End of UNITY_INTERNALS_H */
  624. #endif