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