1 /* ==========================================
2     Unity Project - A Test Framework for C
3     Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
4     [Released under MIT License. Please refer to license.txt for details]
5 ========================================== */
6 
7 #ifndef UNITY_FRAMEWORK_H
8 #define UNITY_FRAMEWORK_H
9 
10 #define UNITY
11 
12 #include "unity_internals.h"
13 
14 enum _unity_module
15 {
16     k_unity_i2c                = 1,
17     k_unity_acmp               = 2,
18     k_unity_adc12              = 3,
19     k_unity_adc16              = 4,
20     k_unity_cmp                = 5,
21     k_unity_cadc               = 6,
22     k_unity_dac                = 7,
23     k_unity_dac32              = 8,
24     k_unity_dcdc               = 9,
25     k_unity_enc                = 10,
26     k_unity_pdb                = 11,
27     k_unity_uart               = 12,
28     k_unity_crc                = 13,
29     k_unity_ltc                = 14,
30     k_unity_rnga               = 15,
31     k_unity_trng               = 16,
32     k_unity_vref               = 17,
33     k_unity_flexbus            = 18,
34     k_unity_dspi               = 19,
35     k_unity_lpspi              = 20,
36     k_unity_sai                = 21,
37     k_unity_mmcau              = 22,
38     k_unity_sdramc             = 23,
39     k_unity_aoi                = 24,
40     k_unity_mmdvsq             = 25,
41     k_unity_mmau               = 26,
42     k_unity_xbar               = 27,
43     k_unity_xbara              = 28,
44     k_unity_xbarb              = 29,
45     k_unity_sim                = 30,
46     k_unity_dryice             = 31,
47     k_unity_sd                 = 32,
48     k_unity_spi                = 33,
49     k_unity_mmc                = 34,
50     k_unity_sdspi              = 35,
51     k_unity_sema42             = 36,
52     k_unity_xrdc               = 37,
53     k_unity_mu                 = 38,
54     k_unity_lmem               = 39,
55     k_unity_wdog32             = 40,
56     k_unity_cop                = 41,
57     k_unity_ewm                = 42,
58     k_unity_wdog               = 43,
59     k_unity_scg                = 44,
60     k_unity_flexcan            = 45,
61     k_unity_tsi_v2             = 46,
62     k_unity_tsi_v4             = 47,
63     k_unity_rtos_uart          = 48,
64     k_unity_rtos_lpuart        = 49,
65     k_unity_smartcard          = 50,
66     k_unity_afe                = 51,
67     k_unity_rtos_i2c           = 52,
68     k_unity_rtos_spi           = 53,
69     k_unity_rtos_dspi          = 54,
70     k_unity_mcmgr              = 55,
71     k_unity_rpmsg              = 56,
72     k_unity_flexio_spi         = 57,
73     k_unity_hsadc              = 58,
74     k_unity_rdmgr              = 59,
75     k_unity_enet               = 60,
76     k_unity_qspi               = 61,
77     k_unity_dmamux             = 62,
78     k_unity_dma                = 63,
79     k_unity_edma               = 64,
80     k_unity_slcd               = 65,
81     k_unity_sysmpu             = 66,
82     k_unity_cmt                = 67,
83     k_unity_intmux             = 68,
84     k_unity_irtc               = 69,
85     k_unity_port               = 70,
86     k_unity_rtc                = 71,
87     k_unity_trgmux             = 72,
88     k_unity_qtmr               = 73,
89     k_unity_tpm                = 74,
90     k_unity_pmc                = 75,
91     k_unity_gpio               = 76,
92     k_unity_ftm                = 77,
93     k_unity_lpsci              = 78,
94     k_unity_lpuart             = 79,
95     k_unity_pit                = 80,
96     k_unity_lpit               = 81,
97     k_unity_rcm                = 82,
98     k_unity_pwm                = 83,
99     k_unity_lptmr              = 84,
100     k_unity_lpi2c              = 85,
101     k_unity_pwt                = 86,
102     k_unity_sdhc               = 87,
103     k_unity_tsi_v5             = 88,
104     k_unity_llwu               = 89,
105     k_unity_flexio             = 90,
106     k_unity_lpadc              = 91,
107     k_unity_tstmr              = 92,
108     k_unity_smc                = 93,
109     k_unity_mailbox            = 94,
110     k_unity_flashiap           = 95,
111     k_unity_fmeas              = 96,
112     k_unity_caam               = 97,
113     k_unity_flexspi            = 98,
114     k_unity_lpc_adc            = 99,
115     k_unity_rtos_usart         = 100,
116     k_unity_flexio_i2c         = 101,
117     k_unity_i2s                = 102,
118     k_unity_gint               = 103,
119     k_unity_pint               = 104,
120     k_unity_mrt                = 105,
121     k_unity_ctimer             = 106,
122     k_unity_sctimer            = 107,
123     k_unity_flexio_uart        = 108,
124     k_unity_flexio_i2s         = 109,
125     k_unity_aes                = 110,
126     k_unity_mmdc               = 111,
127     k_unity_rtos_lpsci         = 112,
128     k_unity_eeprom             = 113,
129     k_unity_sha                = 114,
130     k_unity_lcd                = 115,
131     k_unity_emc                = 116,
132     k_unity_sdif               = 117,
133     k_unity_spifi              = 118,
134     k_unity_rit                = 119,
135     k_unity_irqsteer           = 120,
136     k_unity_flexio_mculcd      = 121,
137     k_unity_isi                = 122,
138     k_unity_adc_12b1msps_sar   = 123,
139     k_unity_dac_1              = 124,
140     k_unity_cache              = 125,
141     k_unity_esai               = 126,
142     k_unity_usdhc              = 127,
143     k_unity_src                = 128,
144     k_unity_tsc                = 129,
145     k_unity_ecspi              = 130,
146     k_unity_dryice_digital     = 131,
147     k_unity_dac12              = 132,
148     k_unity_elcdif             = 133,
149     k_unity_pxp                = 134,
150     k_unity_lpcmp              = 135,
151     k_unity_csi                = 136,
152     k_unity_cau3               = 137,
153     k_unity_adc_5v12b_ll18_015 = 138,
154     k_unity_dcdc_1             = 139,
155     k_unity_flexram            = 140,
156     k_unity_adc_etc            = 141,
157     k_unity_dcp                = 142,
158     k_unity_semc               = 143,
159     k_unity_tmu                = 144,
160     k_unity_dpu                = 145,
161     k_unity_rdc                = 146,
162     k_unity_sema4              = 147,
163     k_unity_miniusart          = 148,
164     k_unity_minispi            = 149,
165     k_unity_prince             = 150,
166     k_unity_puf                = 151,
167     k_unity_hashcrypt          = 152,
168     k_unity_lin                = 153,
169     k_unity_lcdif              = 154,
170     k_unity_swm                = 155,
171     k_unity_powerquad          = 156,
172     k_unity_otp_nxh2004        = 157,
173     k_unity_rng_nxh2004        = 158,
174     k_unity_rsa_nxh2004        = 159,
175     k_unity_asrc               = 160,
176     k_unity_syscon_nxh2004     = 161,
177     k_unity_i3c                = 162,
178     k_unity_ftfx               = 163,
179     k_unity_dsp                = 164,
180     k_unity_common             = 165,
181     k_unity_dcic               = 166,
182     k_unity_imu                = 167,
183     k_unity_maestro            = 168,
184     k_unity_clock              = 169,
185     k_unity_spc                = 170,
186     k_unity_cmc                = 171,
187     k_unity_ccm32k             = 172,
188     k_unity_wuu                = 173,
189     k_unity_sfa                = 174,
190     k_unity_pm                 = 175,
191     k_unity_dac14              = 176,
192 };
193 
194 #define MAKE_UNITY_NUM(unity_module, caseID) (((uint32_t)(unity_module)*10000) + (uint32_t)(caseID))
195 
196 //-------------------------------------------------------
197 // Configuration Options
198 //-------------------------------------------------------
199 // All options described below should be passed as a compiler flag to all files using Unity. If you must add #defines,
200 // place them BEFORE the #include above.
201 
202 // Integers/longs/pointers
203 //     - Unity assumes 32 bit integers, longs, and pointers by default
204 //     - If your compiler treats ints of a different size, options are:
205 //       - define UNITY_USE_LIMITS_H to use limits.h to determine sizes
206 //       - define UNITY_INT_WIDTH, UNITY_LONG_WIDTH, nand UNITY_POINTER_WIDTH
207 
208 // Floats
209 //     - define UNITY_EXCLUDE_FLOAT to disallow floating point comparisons
210 //     - define UNITY_FLOAT_PRECISION to specify the precision to use when doing TEST_ASSERT_EQUAL_FLOAT
211 //     - define UNITY_FLOAT_TYPE to specify doubles instead of single precision floats
212 //     - define UNITY_FLOAT_VERBOSE to print floating point values in errors (uses sprintf)
213 //     - define UNITY_INCLUDE_DOUBLE to allow double floating point comparisons
214 //     - define UNITY_EXCLUDE_DOUBLE to disallow double floating point comparisons (default)
215 //     - define UNITY_DOUBLE_PRECISION to specify the precision to use when doing TEST_ASSERT_EQUAL_DOUBLE
216 //     - define UNITY_DOUBLE_TYPE to specify something other than double
217 //     - define UNITY_DOUBLE_VERBOSE to print floating point values in errors (uses sprintf)
218 
219 // Output
220 //     - by default, Unity prints to standard out with putchar.  define UNITY_OUTPUT_CHAR(a) with a different function
221 //     if desired
222 
223 // Optimization
224 //     - by default, line numbers are stored in unsigned shorts.  Define UNITY_LINE_TYPE with a different type if your
225 //     files are huge
226 //     - by default, test and failure counters are unsigned shorts.  Define UNITY_COUNTER_TYPE with a different type if
227 //     you want to save space or have more than 65535 Tests.
228 
229 // Test Cases
230 //     - define UNITY_SUPPORT_TEST_CASES to include the TEST_CASE macro, though really it's mostly about the runner
231 //     generator script
232 
233 // Parameterized Tests
234 //     - you'll want to create a define of TEST_CASE(...) which basically evaluates to nothing
235 
236 //-------------------------------------------------------
237 // Test Running Macros
238 //-------------------------------------------------------
239 
240 #define TEST_PROTECT() (setjmp(Unity.AbortFrame) == 0)
241 
242 #define TEST_ABORT()                  \
243     {                                 \
244         longjmp(Unity.AbortFrame, 1); \
245     }
246 
247 #ifndef RUN_EXAMPLE
248 #ifdef UNITY_SHOW_TEST_FILE_PATH
249 #define RUN_EXAMPLE(func, caseId) UnityDefaultTestRun(&setUp, func, &tearDown, #func, caseId, __FILE__)
250 #else
251 #define RUN_EXAMPLE(func, caseId) UnityDefaultTestRun(&setUp, func, &tearDown, #func, caseId)
252 #endif
253 #endif
254 
255 #ifndef RUN_EXAMPLE_EX
256 #ifdef UNITY_SHOW_TEST_FILE_PATH
257 #define RUN_EXAMPLE_EX(setUpFunc, func, tearDownFunc, caseId) \
258     UnityDefaultTestRun(setUpFunc, func, tearDownFunc, #func, caseId, __FILE__)
259 #else
260 #define RUN_EXAMPLE_EX(setUpFunc, func, tearDownFunc, caseId) \
261     UnityDefaultTestRun(setUpFunc, func, tearDownFunc, #func, caseId)
262 #endif
263 #endif
264 
265 #define TEST_LINE_NUM   (Unity.CurrentTestLineNumber)
266 #define TEST_IS_IGNORED (Unity.CurrentTestIgnored)
267 
268 /* Remove unused ## to fix gcc build error*/
269 #define FSL_TEST(testCase, message, assertWithoutTEST, param...) \
270     SET_INDEP_ASSERT_ID(testCase, __LINE__);                     \
271     TEST_##assertWithoutTEST(param)
272 
273 /* Remove unused ## to fix gcc build error*/
274 #define FSL_TEST_ASSERT(testCase, message, assertWithoutTEST_ASSERT, param...) \
275     SET_INDEP_ASSERT_ID(testCase, __LINE__);                                   \
276     TEST_ASSERT_##assertWithoutTEST_ASSERT(param)
277 
278 //-------------------------------------------------------
279 // Basic Fail and Ignore
280 //-------------------------------------------------------
281 
282 #define TEST_FAIL_MESSAGE(message)   UNITY_TEST_FAIL(__LINE__, message)
283 #define TEST_FAIL()                  UNITY_TEST_FAIL(__LINE__, NULL)
284 #define TEST_IGNORE_MESSAGE(message) UNITY_TEST_IGNORE(__LINE__, message)
285 #define TEST_IGNORE()                UNITY_TEST_IGNORE(__LINE__, NULL)
286 #define TEST_ONLY()
287 
288 //-------------------------------------------------------
289 // Test Asserts (simple)
290 //-------------------------------------------------------
291 
292 // Boolean
293 #define TEST_ASSERT(condition)        UNITY_TEST_ASSERT((condition), __LINE__, " Expression Evaluated To FALSE")
294 #define TEST_ASSERT_TRUE(condition)   UNITY_TEST_ASSERT((condition), __LINE__, " Expected TRUE Was FALSE")
295 #define TEST_ASSERT_UNLESS(condition) UNITY_TEST_ASSERT(!(condition), __LINE__, " Expression Evaluated To TRUE")
296 #define TEST_ASSERT_FALSE(condition)  UNITY_TEST_ASSERT(!(condition), __LINE__, " Expected FALSE Was TRUE")
297 #define TEST_ASSERT_NULL(pointer)     UNITY_TEST_ASSERT_NULL((pointer), __LINE__, " Expected NULL")
298 #define TEST_ASSERT_NOT_NULL(pointer) UNITY_TEST_ASSERT_NOT_NULL((pointer), __LINE__, " Expected Non-NULL")
299 
300 // Integers (of all sizes)
301 #define TEST_ASSERT_EQUAL_INT(expected, actual)   UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, NULL)
302 #define TEST_ASSERT_EQUAL_INT8(expected, actual)  UNITY_TEST_ASSERT_EQUAL_INT8((expected), (actual), __LINE__, NULL)
303 #define TEST_ASSERT_EQUAL_INT16(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT16((expected), (actual), __LINE__, NULL)
304 #define TEST_ASSERT_EQUAL_INT32(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT32((expected), (actual), __LINE__, NULL)
305 #define TEST_ASSERT_EQUAL_INT64(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT64((expected), (actual), __LINE__, NULL)
306 #define TEST_ASSERT_EQUAL(expected, actual)       UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, NULL)
307 #define TEST_ASSERT_NOT_EQUAL(expected, actual) \
308     UNITY_TEST_ASSERT(((expected) != (actual)), __LINE__, " Expected Not-Equal")
309 #define TEST_ASSERT_EQUAL_UINT(expected, actual)   UNITY_TEST_ASSERT_EQUAL_UINT((expected), (actual), __LINE__, NULL)
310 #define TEST_ASSERT_EQUAL_UINT8(expected, actual)  UNITY_TEST_ASSERT_EQUAL_UINT8((expected), (actual), __LINE__, NULL)
311 #define TEST_ASSERT_EQUAL_UINT16(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT16((expected), (actual), __LINE__, NULL)
312 #define TEST_ASSERT_EQUAL_UINT32(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT32((expected), (actual), __LINE__, NULL)
313 #define TEST_ASSERT_EQUAL_UINT64(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT64((expected), (actual), __LINE__, NULL)
314 #define TEST_ASSERT_EQUAL_HEX(expected, actual)    UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, NULL)
315 #define TEST_ASSERT_EQUAL_HEX8(expected, actual)   UNITY_TEST_ASSERT_EQUAL_HEX8((expected), (actual), __LINE__, NULL)
316 #define TEST_ASSERT_EQUAL_HEX16(expected, actual)  UNITY_TEST_ASSERT_EQUAL_HEX16((expected), (actual), __LINE__, NULL)
317 #define TEST_ASSERT_EQUAL_HEX32(expected, actual)  UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, NULL)
318 #define TEST_ASSERT_EQUAL_HEX64(expected, actual)  UNITY_TEST_ASSERT_EQUAL_HEX64((expected), (actual), __LINE__, NULL)
319 #define TEST_ASSERT_BITS(mask, expected, actual)   UNITY_TEST_ASSERT_BITS((mask), (expected), (actual), __LINE__, NULL)
320 #define TEST_ASSERT_BITS_HIGH(mask, actual)        UNITY_TEST_ASSERT_BITS((mask), (_UU32)(-1), (actual), __LINE__, NULL)
321 #define TEST_ASSERT_BITS_LOW(mask, actual)         UNITY_TEST_ASSERT_BITS((mask), (_UU32)(0), (actual), __LINE__, NULL)
322 #define TEST_ASSERT_BIT_HIGH(bit, actual) \
323     UNITY_TEST_ASSERT_BITS(((_UU32)1 << bit), (_UU32)(-1), (actual), __LINE__, NULL)
324 #define TEST_ASSERT_BIT_LOW(bit, actual) UNITY_TEST_ASSERT_BITS(((_UU32)1 << bit), (_UU32)(0), (actual), __LINE__, NULL)
325 
326 // Integer Ranges (of all sizes)
327 #define TEST_ASSERT_INT_WITHIN(delta, expected, actual) \
328     UNITY_TEST_ASSERT_INT_WITHIN(delta, expected, actual, __LINE__, NULL)
329 #define TEST_ASSERT_UINT_WITHIN(delta, expected, actual) \
330     UNITY_TEST_ASSERT_UINT_WITHIN(delta, expected, actual, __LINE__, NULL)
331 #define TEST_ASSERT_HEX_WITHIN(delta, expected, actual) \
332     UNITY_TEST_ASSERT_HEX32_WITHIN(delta, expected, actual, __LINE__, NULL)
333 #define TEST_ASSERT_HEX8_WITHIN(delta, expected, actual) \
334     UNITY_TEST_ASSERT_HEX8_WITHIN(delta, expected, actual, __LINE__, NULL)
335 #define TEST_ASSERT_HEX16_WITHIN(delta, expected, actual) \
336     UNITY_TEST_ASSERT_HEX16_WITHIN(delta, expected, actual, __LINE__, NULL)
337 #define TEST_ASSERT_HEX32_WITHIN(delta, expected, actual) \
338     UNITY_TEST_ASSERT_HEX32_WITHIN(delta, expected, actual, __LINE__, NULL)
339 #define TEST_ASSERT_HEX64_WITHIN(delta, expected, actual) \
340     UNITY_TEST_ASSERT_HEX64_WITHIN(delta, expected, actual, __LINE__, NULL)
341 
342 // Structs and Strings
343 #define TEST_ASSERT_EQUAL_PTR(expected, actual)    UNITY_TEST_ASSERT_EQUAL_PTR((expected), (actual), __LINE__, NULL)
344 #define TEST_ASSERT_EQUAL_STRING(expected, actual) UNITY_TEST_ASSERT_EQUAL_STRING(expected, actual, __LINE__, NULL)
345 #define TEST_ASSERT_EQUAL_MEMORY(expected, actual, len) \
346     UNITY_TEST_ASSERT_EQUAL_MEMORY(expected, actual, len, __LINE__, NULL)
347 
348 // Arrays
349 #define TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, num_elements) \
350     UNITY_TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, num_elements, __LINE__, NULL)
351 #define TEST_ASSERT_EQUAL_INT8_ARRAY(expected, actual, num_elements) \
352     UNITY_TEST_ASSERT_EQUAL_INT8_ARRAY(expected, actual, num_elements, __LINE__, NULL)
353 #define TEST_ASSERT_EQUAL_INT16_ARRAY(expected, actual, num_elements) \
354     UNITY_TEST_ASSERT_EQUAL_INT16_ARRAY(expected, actual, num_elements, __LINE__, NULL)
355 #define TEST_ASSERT_EQUAL_INT32_ARRAY(expected, actual, num_elements) \
356     UNITY_TEST_ASSERT_EQUAL_INT32_ARRAY(expected, actual, num_elements, __LINE__, NULL)
357 #define TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements) \
358     UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements, __LINE__, NULL)
359 #define TEST_ASSERT_EQUAL_UINT_ARRAY(expected, actual, num_elements) \
360     UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY(expected, actual, num_elements, __LINE__, NULL)
361 #define TEST_ASSERT_EQUAL_UINT8_ARRAY(expected, actual, num_elements) \
362     UNITY_TEST_ASSERT_EQUAL_UINT8_ARRAY(expected, actual, num_elements, __LINE__, NULL)
363 #define TEST_ASSERT_EQUAL_UINT16_ARRAY(expected, actual, num_elements) \
364     UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY(expected, actual, num_elements, __LINE__, NULL)
365 #define TEST_ASSERT_EQUAL_UINT32_ARRAY(expected, actual, num_elements) \
366     UNITY_TEST_ASSERT_EQUAL_UINT32_ARRAY(expected, actual, num_elements, __LINE__, NULL)
367 #define TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements) \
368     UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements, __LINE__, NULL)
369 #define TEST_ASSERT_EQUAL_HEX_ARRAY(expected, actual, num_elements) \
370     UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements, __LINE__, NULL)
371 #define TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, num_elements) \
372     UNITY_TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, num_elements, __LINE__, NULL)
373 #define TEST_ASSERT_EQUAL_HEX16_ARRAY(expected, actual, num_elements) \
374     UNITY_TEST_ASSERT_EQUAL_HEX16_ARRAY(expected, actual, num_elements, __LINE__, NULL)
375 #define TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements) \
376     UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements, __LINE__, NULL)
377 #define TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements) \
378     UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements, __LINE__, NULL)
379 #define TEST_ASSERT_EQUAL_PTR_ARRAY(expected, actual, num_elements) \
380     UNITY_TEST_ASSERT_EQUAL_PTR_ARRAY(expected, actual, num_elements, __LINE__, NULL)
381 #define TEST_ASSERT_EQUAL_STRING_ARRAY(expected, actual, num_elements) \
382     UNITY_TEST_ASSERT_EQUAL_STRING_ARRAY(expected, actual, num_elements, __LINE__, NULL)
383 #define TEST_ASSERT_EQUAL_MEMORY_ARRAY(expected, actual, len, num_elements) \
384     UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY(expected, actual, len, num_elements, __LINE__, NULL)
385 
386 // Floating Point (If Enabled)
387 #define TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual) \
388     UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, __LINE__, NULL)
389 #define TEST_ASSERT_EQUAL_FLOAT(expected, actual) UNITY_TEST_ASSERT_EQUAL_FLOAT(expected, actual, __LINE__, NULL)
390 #define TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements) \
391     UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements, __LINE__, NULL)
392 #define TEST_ASSERT_FLOAT_IS_INF(actual)     UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, __LINE__, NULL)
393 #define TEST_ASSERT_FLOAT_IS_NEG_INF(actual) UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, __LINE__, NULL)
394 #define TEST_ASSERT_FLOAT_IS_NAN(actual)     UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, __LINE__, NULL)
395 
396 // Double (If Enabled)
397 #define TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual) \
398     UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, __LINE__, NULL)
399 #define TEST_ASSERT_EQUAL_DOUBLE(expected, actual) UNITY_TEST_ASSERT_EQUAL_DOUBLE(expected, actual, __LINE__, NULL)
400 #define TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements) \
401     UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements, __LINE__, NULL)
402 #define TEST_ASSERT_DOUBLE_IS_INF(actual)     UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, __LINE__, NULL)
403 #define TEST_ASSERT_DOUBLE_IS_NEG_INF(actual) UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, __LINE__, NULL)
404 #define TEST_ASSERT_DOUBLE_IS_NAN(actual)     UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, __LINE__, NULL)
405 
406 //-------------------------------------------------------
407 // Test Asserts (with additional messages)
408 //-------------------------------------------------------
409 
410 // Boolean
411 #define TEST_ASSERT_MESSAGE(condition, message)        UNITY_TEST_ASSERT((condition), __LINE__, message)
412 #define TEST_ASSERT_TRUE_MESSAGE(condition, message)   UNITY_TEST_ASSERT((condition), __LINE__, message)
413 #define TEST_ASSERT_UNLESS_MESSAGE(condition, message) UNITY_TEST_ASSERT(!(condition), __LINE__, message)
414 #define TEST_ASSERT_FALSE_MESSAGE(condition, message)  UNITY_TEST_ASSERT(!(condition), __LINE__, message)
415 #define TEST_ASSERT_NULL_MESSAGE(pointer, message)     UNITY_TEST_ASSERT_NULL((pointer), __LINE__, message)
416 #define TEST_ASSERT_NOT_NULL_MESSAGE(pointer, message) UNITY_TEST_ASSERT_NOT_NULL((pointer), __LINE__, message)
417 
418 // Integers (of all sizes)
419 #define TEST_ASSERT_EQUAL_INT_MESSAGE(expected, actual, message) \
420     UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, message)
421 #define TEST_ASSERT_EQUAL_INT8_MESSAGE(expected, actual, message) \
422     UNITY_TEST_ASSERT_EQUAL_INT8((expected), (actual), __LINE__, message)
423 #define TEST_ASSERT_EQUAL_INT16_MESSAGE(expected, actual, message) \
424     UNITY_TEST_ASSERT_EQUAL_INT16((expected), (actual), __LINE__, message)
425 #define TEST_ASSERT_EQUAL_INT32_MESSAGE(expected, actual, message) \
426     UNITY_TEST_ASSERT_EQUAL_INT32((expected), (actual), __LINE__, message)
427 #define TEST_ASSERT_EQUAL_INT64_MESSAGE(expected, actual, message) \
428     UNITY_TEST_ASSERT_EQUAL_INT64((expected), (actual), __LINE__, message)
429 #define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message) \
430     UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, message)
431 #define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message) \
432     UNITY_TEST_ASSERT(((expected) != (actual)), __LINE__, message)
433 #define TEST_ASSERT_EQUAL_UINT_MESSAGE(expected, actual, message) \
434     UNITY_TEST_ASSERT_EQUAL_UINT((expected), (actual), __LINE__, message)
435 #define TEST_ASSERT_EQUAL_UINT8_MESSAGE(expected, actual, message) \
436     UNITY_TEST_ASSERT_EQUAL_UINT8((expected), (actual), __LINE__, message)
437 #define TEST_ASSERT_EQUAL_UINT16_MESSAGE(expected, actual, message) \
438     UNITY_TEST_ASSERT_EQUAL_UINT16((expected), (actual), __LINE__, message)
439 #define TEST_ASSERT_EQUAL_UINT32_MESSAGE(expected, actual, message) \
440     UNITY_TEST_ASSERT_EQUAL_UINT32((expected), (actual), __LINE__, message)
441 #define TEST_ASSERT_EQUAL_UINT64_MESSAGE(expected, actual, message) \
442     UNITY_TEST_ASSERT_EQUAL_UINT64((expected), (actual), __LINE__, message)
443 #define TEST_ASSERT_EQUAL_HEX_MESSAGE(expected, actual, message) \
444     UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, message)
445 #define TEST_ASSERT_EQUAL_HEX8_MESSAGE(expected, actual, message) \
446     UNITY_TEST_ASSERT_EQUAL_HEX8((expected), (actual), __LINE__, message)
447 #define TEST_ASSERT_EQUAL_HEX16_MESSAGE(expected, actual, message) \
448     UNITY_TEST_ASSERT_EQUAL_HEX16((expected), (actual), __LINE__, message)
449 #define TEST_ASSERT_EQUAL_HEX32_MESSAGE(expected, actual, message) \
450     UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, message)
451 #define TEST_ASSERT_EQUAL_HEX64_MESSAGE(expected, actual, message) \
452     UNITY_TEST_ASSERT_EQUAL_HEX64((expected), (actual), __LINE__, message)
453 #define TEST_ASSERT_BITS_MESSAGE(mask, expected, actual, message) \
454     UNITY_TEST_ASSERT_BITS((mask), (expected), (actual), __LINE__, message)
455 #define TEST_ASSERT_BITS_HIGH_MESSAGE(mask, actual, message) \
456     UNITY_TEST_ASSERT_BITS((mask), (_UU32)(-1), (actual), __LINE__, message)
457 #define TEST_ASSERT_BITS_LOW_MESSAGE(mask, actual, message) \
458     UNITY_TEST_ASSERT_BITS((mask), (_UU32)(0), (actual), __LINE__, message)
459 #define TEST_ASSERT_BIT_HIGH_MESSAGE(bit, actual, message) \
460     UNITY_TEST_ASSERT_BITS(((_UU32)1 << bit), (_UU32)(-1), (actual), __LINE__, message)
461 #define TEST_ASSERT_BIT_LOW_MESSAGE(bit, actual, message) \
462     UNITY_TEST_ASSERT_BITS(((_UU32)1 << bit), (_UU32)(0), (actual), __LINE__, message)
463 
464 // Integer Ranges (of all sizes)
465 #define TEST_ASSERT_INT_WITHIN_MESSAGE(delta, expected, actual, message) \
466     UNITY_TEST_ASSERT_INT_WITHIN(delta, expected, actual, __LINE__, message)
467 #define TEST_ASSERT_UINT_WITHIN_MESSAGE(delta, expected, actual, message) \
468     UNITY_TEST_ASSERT_UINT_WITHIN(delta, expected, actual, __LINE__, message)
469 #define TEST_ASSERT_HEX_WITHIN_MESSAGE(delta, expected, actual, message) \
470     UNITY_TEST_ASSERT_HEX32_WITHIN(delta, expected, actual, __LINE__, message)
471 #define TEST_ASSERT_HEX8_WITHIN_MESSAGE(delta, expected, actual, message) \
472     UNITY_TEST_ASSERT_HEX8_WITHIN(delta, expected, actual, __LINE__, message)
473 #define TEST_ASSERT_HEX16_WITHIN_MESSAGE(delta, expected, actual, message) \
474     UNITY_TEST_ASSERT_HEX16_WITHIN(delta, expected, actual, __LINE__, message)
475 #define TEST_ASSERT_HEX32_WITHIN_MESSAGE(delta, expected, actual, message) \
476     UNITY_TEST_ASSERT_HEX32_WITHIN(delta, expected, actual, __LINE__, message)
477 #define TEST_ASSERT_HEX64_WITHIN_MESSAGE(delta, expected, actual, message) \
478     UNITY_TEST_ASSERT_HEX64_WITHIN(delta, expected, actual, __LINE__, message)
479 
480 // Structs and Strings
481 #define TEST_ASSERT_EQUAL_PTR_MESSAGE(expected, actual, message) \
482     UNITY_TEST_ASSERT_EQUAL_PTR(expected, actual, __LINE__, message)
483 #define TEST_ASSERT_EQUAL_STRING_MESSAGE(expected, actual, message) \
484     UNITY_TEST_ASSERT_EQUAL_STRING(expected, actual, __LINE__, message)
485 #define TEST_ASSERT_EQUAL_MEMORY_MESSAGE(expected, actual, len, message) \
486     UNITY_TEST_ASSERT_EQUAL_MEMORY(expected, actual, len, __LINE__, message)
487 
488 // Arrays
489 #define TEST_ASSERT_EQUAL_INT_ARRAY_MESSAGE(expected, actual, num_elements, message) \
490     UNITY_TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, num_elements, __LINE__, message)
491 #define TEST_ASSERT_EQUAL_INT8_ARRAY_MESSAGE(expected, actual, num_elements, message) \
492     UNITY_TEST_ASSERT_EQUAL_INT8_ARRAY(expected, actual, num_elements, __LINE__, message)
493 #define TEST_ASSERT_EQUAL_INT16_ARRAY_MESSAGE(expected, actual, num_elements, message) \
494     UNITY_TEST_ASSERT_EQUAL_INT16_ARRAY(expected, actual, num_elements, __LINE__, message)
495 #define TEST_ASSERT_EQUAL_INT32_ARRAY_MESSAGE(expected, actual, num_elements, message) \
496     UNITY_TEST_ASSERT_EQUAL_INT32_ARRAY(expected, actual, num_elements, __LINE__, message)
497 #define TEST_ASSERT_EQUAL_INT64_ARRAY_MESSAGE(expected, actual, num_elements, message) \
498     UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements, __LINE__, message)
499 #define TEST_ASSERT_EQUAL_UINT_ARRAY_MESSAGE(expected, actual, num_elements, message) \
500     UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY(expected, actual, num_elements, __LINE__, message)
501 #define TEST_ASSERT_EQUAL_UINT8_ARRAY_MESSAGE(expected, actual, num_elements, message) \
502     UNITY_TEST_ASSERT_EQUAL_UINT8_ARRAY(expected, actual, num_elements, __LINE__, message)
503 #define TEST_ASSERT_EQUAL_UINT16_ARRAY_MESSAGE(expected, actual, num_elements, message) \
504     UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY(expected, actual, num_elements, __LINE__, message)
505 #define TEST_ASSERT_EQUAL_UINT32_ARRAY_MESSAGE(expected, actual, num_elements, message) \
506     UNITY_TEST_ASSERT_EQUAL_UINT32_ARRAY(expected, actual, num_elements, __LINE__, message)
507 #define TEST_ASSERT_EQUAL_UINT64_ARRAY_MESSAGE(expected, actual, num_elements, message) \
508     UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements, __LINE__, message)
509 #define TEST_ASSERT_EQUAL_HEX_ARRAY_MESSAGE(expected, actual, num_elements, message) \
510     UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements, __LINE__, message)
511 #define TEST_ASSERT_EQUAL_HEX8_ARRAY_MESSAGE(expected, actual, num_elements, message) \
512     UNITY_TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, num_elements, __LINE__, message)
513 #define TEST_ASSERT_EQUAL_HEX16_ARRAY_MESSAGE(expected, actual, num_elements, message) \
514     UNITY_TEST_ASSERT_EQUAL_HEX16_ARRAY(expected, actual, num_elements, __LINE__, message)
515 #define TEST_ASSERT_EQUAL_HEX32_ARRAY_MESSAGE(expected, actual, num_elements, message) \
516     UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements, __LINE__, message)
517 #define TEST_ASSERT_EQUAL_HEX64_ARRAY_MESSAGE(expected, actual, num_elements, message) \
518     UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements, __LINE__, message)
519 #define TEST_ASSERT_EQUAL_PTR_ARRAY_MESSAGE(expected, actual, num_elements, message) \
520     UNITY_TEST_ASSERT_EQUAL_PTR_ARRAY(expected, actual, num_elements, __LINE__, message)
521 #define TEST_ASSERT_EQUAL_STRING_ARRAY_MESSAGE(expected, actual, num_elements, message) \
522     UNITY_TEST_ASSERT_EQUAL_STRING_ARRAY(expected, actual, num_elements, __LINE__, message)
523 #define TEST_ASSERT_EQUAL_MEMORY_ARRAY_MESSAGE(expected, actual, len, num_elements, message) \
524     UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY(expected, actual, len, num_elements, __LINE__, message)
525 
526 // Floating Point (If Enabled)
527 #define TEST_ASSERT_FLOAT_WITHIN_MESSAGE(delta, expected, actual, message) \
528     UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, __LINE__, message)
529 #define TEST_ASSERT_EQUAL_FLOAT_MESSAGE(expected, actual, message) \
530     UNITY_TEST_ASSERT_EQUAL_FLOAT(expected, actual, __LINE__, message)
531 #define TEST_ASSERT_EQUAL_FLOAT_ARRAY_MESSAGE(expected, actual, num_elements, message) \
532     UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements, __LINE__, message)
533 /*
534 Error[Pm046]: floating point values shall not be tested for exact equality or inequality (MISRA C 2004 rule 13.3)
535 #define TEST_ASSERT_FLOAT_IS_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, __LINE__, message)
536 #define TEST_ASSERT_FLOAT_IS_NEG_INF_MESSAGE(actual, message)
537 UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, __LINE__, message)
538 #define TEST_ASSERT_FLOAT_IS_NAN_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, __LINE__, message)
539 */
540 // Double (If Enabled)
541 #define TEST_ASSERT_DOUBLE_WITHIN_MESSAGE(delta, expected, actual, message) \
542     UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, __LINE__, message)
543 #define TEST_ASSERT_EQUAL_DOUBLE_MESSAGE(expected, actual, message) \
544     UNITY_TEST_ASSERT_EQUAL_DOUBLE(expected, actual, __LINE__, message)
545 #define TEST_ASSERT_EQUAL_DOUBLE_ARRAY_MESSAGE(expected, actual, num_elements, message) \
546     UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements, __LINE__, message)
547 /*
548 Error[Pm046]: floating point values shall not be tested for exact equality or inequality (MISRA C 2004 rule 13.3)
549 #define TEST_ASSERT_DOUBLE_IS_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, __LINE__, message)
550 #define TEST_ASSERT_DOUBLE_IS_NEG_INF_MESSAGE(actual, message)
551 UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, __LINE__, message)
552 #define TEST_ASSERT_DOUBLE_IS_NAN_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, __LINE__, message)
553 */
554 #ifdef DO_GCOV_COVERAGE
555 void static_init(void);
556 int _read(int file, char *ptr, int len);
557 int _write(int file, char *ptr, int len);
558 #endif
559 #endif
560