Donald Meyers / Mbed OS evan
Committer:
djmeyers
Date:
Sat Mar 18 22:37:16 2017 +0000
Revision:
0:06ee5f8a484a
Initial commit

Who changed what in which revision?

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