FRDM K64F Metronome

Committer:
ram54288
Date:
Sun May 14 18:37:05 2017 +0000
Revision:
0:dbad57390bd1
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ram54288 0:dbad57390bd1 1 /* =========================================================================
ram54288 0:dbad57390bd1 2 Unity Project - A Test Framework for C
ram54288 0:dbad57390bd1 3 Copyright (c) 2007-14 Mike Karlesky, Mark VanderVoord, Greg Williams
ram54288 0:dbad57390bd1 4 [Released under MIT License. Please refer to license.txt for details]
ram54288 0:dbad57390bd1 5 ============================================================================ */
ram54288 0:dbad57390bd1 6
ram54288 0:dbad57390bd1 7 #include "unity.h"
ram54288 0:dbad57390bd1 8 #include <stddef.h>
ram54288 0:dbad57390bd1 9
ram54288 0:dbad57390bd1 10 /* If omitted from header, declare overrideable prototypes here so they're ready for use */
ram54288 0:dbad57390bd1 11 #ifdef UNITY_OMIT_OUTPUT_CHAR_HEADER_DECLARATION
ram54288 0:dbad57390bd1 12 void UNITY_OUTPUT_CHAR(int);
ram54288 0:dbad57390bd1 13 #endif
ram54288 0:dbad57390bd1 14
ram54288 0:dbad57390bd1 15 /* Helpful macros for us to use here */
ram54288 0:dbad57390bd1 16 #define UNITY_FAIL_AND_BAIL { Unity.CurrentTestFailed = 1; longjmp(Unity.AbortFrame, 1); }
ram54288 0:dbad57390bd1 17 #define UNITY_IGNORE_AND_BAIL { Unity.CurrentTestIgnored = 1; longjmp(Unity.AbortFrame, 1); }
ram54288 0:dbad57390bd1 18
ram54288 0:dbad57390bd1 19 /* return prematurely if we are already in failure or ignore state */
ram54288 0:dbad57390bd1 20 #define UNITY_SKIP_EXECUTION { if ((Unity.CurrentTestFailed != 0) || (Unity.CurrentTestIgnored != 0)) {return;} }
ram54288 0:dbad57390bd1 21
ram54288 0:dbad57390bd1 22 struct _Unity Unity;
ram54288 0:dbad57390bd1 23
ram54288 0:dbad57390bd1 24 static const char UnityStrOk[] = "OK";
ram54288 0:dbad57390bd1 25 static const char UnityStrPass[] = "PASS";
ram54288 0:dbad57390bd1 26 static const char UnityStrFail[] = "FAIL";
ram54288 0:dbad57390bd1 27 static const char UnityStrIgnore[] = "IGNORE";
ram54288 0:dbad57390bd1 28 static const char UnityStrNull[] = "NULL";
ram54288 0:dbad57390bd1 29 static const char UnityStrSpacer[] = ". ";
ram54288 0:dbad57390bd1 30 static const char UnityStrExpected[] = " Expected ";
ram54288 0:dbad57390bd1 31 static const char UnityStrWas[] = " Was ";
ram54288 0:dbad57390bd1 32 static const char UnityStrElement[] = " Element ";
ram54288 0:dbad57390bd1 33 static const char UnityStrByte[] = " Byte ";
ram54288 0:dbad57390bd1 34 static const char UnityStrMemory[] = " Memory Mismatch.";
ram54288 0:dbad57390bd1 35 static const char UnityStrDelta[] = " Values Not Within Delta ";
ram54288 0:dbad57390bd1 36 static const char UnityStrPointless[] = " You Asked Me To Compare Nothing, Which Was Pointless.";
ram54288 0:dbad57390bd1 37 static const char UnityStrNullPointerForExpected[] = " Expected pointer to be NULL";
ram54288 0:dbad57390bd1 38 static const char UnityStrNullPointerForActual[] = " Actual pointer was NULL";
ram54288 0:dbad57390bd1 39 static const char UnityStrNot[] = "Not ";
ram54288 0:dbad57390bd1 40 static const char UnityStrInf[] = "Infinity";
ram54288 0:dbad57390bd1 41 static const char UnityStrNegInf[] = "Negative Infinity";
ram54288 0:dbad57390bd1 42 static const char UnityStrNaN[] = "NaN";
ram54288 0:dbad57390bd1 43 static const char UnityStrDet[] = "Determinate";
ram54288 0:dbad57390bd1 44 static const char UnityStrInvalidFloatTrait[] = "Invalid Float Trait";
ram54288 0:dbad57390bd1 45 const char UnityStrErrFloat[] = "Unity Floating Point Disabled";
ram54288 0:dbad57390bd1 46 const char UnityStrErrDouble[] = "Unity Double Precision Disabled";
ram54288 0:dbad57390bd1 47 const char UnityStrErr64[] = "Unity 64-bit Support Disabled";
ram54288 0:dbad57390bd1 48 static const char UnityStrBreaker[] = "-----------------------";
ram54288 0:dbad57390bd1 49 static const char UnityStrResultsTests[] = " Tests ";
ram54288 0:dbad57390bd1 50 static const char UnityStrResultsFailures[] = " Failures ";
ram54288 0:dbad57390bd1 51 static const char UnityStrResultsIgnored[] = " Ignored ";
ram54288 0:dbad57390bd1 52 static const char UnityStrDetail1Name[] = UNITY_DETAIL1_NAME " ";
ram54288 0:dbad57390bd1 53 static const char UnityStrDetail2Name[] = " " UNITY_DETAIL2_NAME " ";
ram54288 0:dbad57390bd1 54
ram54288 0:dbad57390bd1 55 #ifdef UNITY_FLOAT_NEEDS_ZERO
ram54288 0:dbad57390bd1 56 /* Dividing by these constants produces +/- infinity.
ram54288 0:dbad57390bd1 57 * The rationale is given in UnityAssertFloatIsInf's body. */
ram54288 0:dbad57390bd1 58 static const _UF f_zero = 0.0f;
ram54288 0:dbad57390bd1 59 #endif
ram54288 0:dbad57390bd1 60
ram54288 0:dbad57390bd1 61 /* compiler-generic print formatting masks */
ram54288 0:dbad57390bd1 62 static const _U_UINT UnitySizeMask[] =
ram54288 0:dbad57390bd1 63 {
ram54288 0:dbad57390bd1 64 255u, /* 0xFF */
ram54288 0:dbad57390bd1 65 65535u, /* 0xFFFF */
ram54288 0:dbad57390bd1 66 65535u,
ram54288 0:dbad57390bd1 67 4294967295u, /* 0xFFFFFFFF */
ram54288 0:dbad57390bd1 68 4294967295u,
ram54288 0:dbad57390bd1 69 4294967295u,
ram54288 0:dbad57390bd1 70 4294967295u
ram54288 0:dbad57390bd1 71 #ifdef UNITY_SUPPORT_64
ram54288 0:dbad57390bd1 72 ,0xFFFFFFFFFFFFFFFF
ram54288 0:dbad57390bd1 73 #endif
ram54288 0:dbad57390bd1 74 };
ram54288 0:dbad57390bd1 75
ram54288 0:dbad57390bd1 76 /*-----------------------------------------------
ram54288 0:dbad57390bd1 77 * Pretty Printers & Test Result Output Handlers
ram54288 0:dbad57390bd1 78 *-----------------------------------------------*/
ram54288 0:dbad57390bd1 79
ram54288 0:dbad57390bd1 80 void UnityPrint(const char* string)
ram54288 0:dbad57390bd1 81 {
ram54288 0:dbad57390bd1 82 const char* pch = string;
ram54288 0:dbad57390bd1 83
ram54288 0:dbad57390bd1 84 if (pch != NULL)
ram54288 0:dbad57390bd1 85 {
ram54288 0:dbad57390bd1 86 while (*pch)
ram54288 0:dbad57390bd1 87 {
ram54288 0:dbad57390bd1 88 /* printable characters plus CR & LF are printed */
ram54288 0:dbad57390bd1 89 if ((*pch <= 126) && (*pch >= 32))
ram54288 0:dbad57390bd1 90 {
ram54288 0:dbad57390bd1 91 UNITY_OUTPUT_CHAR(*pch);
ram54288 0:dbad57390bd1 92 }
ram54288 0:dbad57390bd1 93 /* write escaped carriage returns */
ram54288 0:dbad57390bd1 94 else if (*pch == 13)
ram54288 0:dbad57390bd1 95 {
ram54288 0:dbad57390bd1 96 UNITY_OUTPUT_CHAR('\\');
ram54288 0:dbad57390bd1 97 UNITY_OUTPUT_CHAR('r');
ram54288 0:dbad57390bd1 98 }
ram54288 0:dbad57390bd1 99 /* write escaped line feeds */
ram54288 0:dbad57390bd1 100 else if (*pch == 10)
ram54288 0:dbad57390bd1 101 {
ram54288 0:dbad57390bd1 102 UNITY_OUTPUT_CHAR('\\');
ram54288 0:dbad57390bd1 103 UNITY_OUTPUT_CHAR('n');
ram54288 0:dbad57390bd1 104 }
ram54288 0:dbad57390bd1 105 /* unprintable characters are shown as codes */
ram54288 0:dbad57390bd1 106 else
ram54288 0:dbad57390bd1 107 {
ram54288 0:dbad57390bd1 108 UNITY_OUTPUT_CHAR('\\');
ram54288 0:dbad57390bd1 109 UnityPrintNumberHex((_U_UINT)*pch, 2);
ram54288 0:dbad57390bd1 110 }
ram54288 0:dbad57390bd1 111 pch++;
ram54288 0:dbad57390bd1 112 }
ram54288 0:dbad57390bd1 113 }
ram54288 0:dbad57390bd1 114 }
ram54288 0:dbad57390bd1 115
ram54288 0:dbad57390bd1 116 void UnityPrintLen(const char* string, const _UU32 length);
ram54288 0:dbad57390bd1 117 void UnityPrintLen(const char* string, const _UU32 length)
ram54288 0:dbad57390bd1 118 {
ram54288 0:dbad57390bd1 119 const char* pch = string;
ram54288 0:dbad57390bd1 120
ram54288 0:dbad57390bd1 121 if (pch != NULL)
ram54288 0:dbad57390bd1 122 {
ram54288 0:dbad57390bd1 123 while (*pch && (_UU32)(pch - string) < length)
ram54288 0:dbad57390bd1 124 {
ram54288 0:dbad57390bd1 125 /* printable characters plus CR & LF are printed */
ram54288 0:dbad57390bd1 126 if ((*pch <= 126) && (*pch >= 32))
ram54288 0:dbad57390bd1 127 {
ram54288 0:dbad57390bd1 128 UNITY_OUTPUT_CHAR(*pch);
ram54288 0:dbad57390bd1 129 }
ram54288 0:dbad57390bd1 130 /* write escaped carriage returns */
ram54288 0:dbad57390bd1 131 else if (*pch == 13)
ram54288 0:dbad57390bd1 132 {
ram54288 0:dbad57390bd1 133 UNITY_OUTPUT_CHAR('\\');
ram54288 0:dbad57390bd1 134 UNITY_OUTPUT_CHAR('r');
ram54288 0:dbad57390bd1 135 }
ram54288 0:dbad57390bd1 136 /* write escaped line feeds */
ram54288 0:dbad57390bd1 137 else if (*pch == 10)
ram54288 0:dbad57390bd1 138 {
ram54288 0:dbad57390bd1 139 UNITY_OUTPUT_CHAR('\\');
ram54288 0:dbad57390bd1 140 UNITY_OUTPUT_CHAR('n');
ram54288 0:dbad57390bd1 141 }
ram54288 0:dbad57390bd1 142 /* unprintable characters are shown as codes */
ram54288 0:dbad57390bd1 143 else
ram54288 0:dbad57390bd1 144 {
ram54288 0:dbad57390bd1 145 UNITY_OUTPUT_CHAR('\\');
ram54288 0:dbad57390bd1 146 UnityPrintNumberHex((_U_UINT)*pch, 2);
ram54288 0:dbad57390bd1 147 }
ram54288 0:dbad57390bd1 148 pch++;
ram54288 0:dbad57390bd1 149 }
ram54288 0:dbad57390bd1 150 }
ram54288 0:dbad57390bd1 151 }
ram54288 0:dbad57390bd1 152
ram54288 0:dbad57390bd1 153 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 154 void UnityPrintNumberByStyle(const _U_SINT number, const UNITY_DISPLAY_STYLE_T style)
ram54288 0:dbad57390bd1 155 {
ram54288 0:dbad57390bd1 156 if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT)
ram54288 0:dbad57390bd1 157 {
ram54288 0:dbad57390bd1 158 UnityPrintNumber(number);
ram54288 0:dbad57390bd1 159 }
ram54288 0:dbad57390bd1 160 else if ((style & UNITY_DISPLAY_RANGE_UINT) == UNITY_DISPLAY_RANGE_UINT)
ram54288 0:dbad57390bd1 161 {
ram54288 0:dbad57390bd1 162 UnityPrintNumberUnsigned( (_U_UINT)number & UnitySizeMask[((_U_UINT)style & (_U_UINT)0x0F) - 1] );
ram54288 0:dbad57390bd1 163 }
ram54288 0:dbad57390bd1 164 else
ram54288 0:dbad57390bd1 165 {
ram54288 0:dbad57390bd1 166 UnityPrintNumberHex((_U_UINT)number, (char)((style & 0x000F) << 1));
ram54288 0:dbad57390bd1 167 }
ram54288 0:dbad57390bd1 168 }
ram54288 0:dbad57390bd1 169
ram54288 0:dbad57390bd1 170 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 171 void UnityPrintNumber(const _U_SINT number_to_print)
ram54288 0:dbad57390bd1 172 {
ram54288 0:dbad57390bd1 173 _U_UINT number = (_U_UINT)number_to_print;
ram54288 0:dbad57390bd1 174
ram54288 0:dbad57390bd1 175 if (number_to_print < 0)
ram54288 0:dbad57390bd1 176 {
ram54288 0:dbad57390bd1 177 /* A negative number, including MIN negative */
ram54288 0:dbad57390bd1 178 UNITY_OUTPUT_CHAR('-');
ram54288 0:dbad57390bd1 179 number = (_U_UINT)(-number_to_print);
ram54288 0:dbad57390bd1 180 }
ram54288 0:dbad57390bd1 181 UnityPrintNumberUnsigned(number);
ram54288 0:dbad57390bd1 182 }
ram54288 0:dbad57390bd1 183
ram54288 0:dbad57390bd1 184 /*-----------------------------------------------
ram54288 0:dbad57390bd1 185 * basically do an itoa using as little ram as possible */
ram54288 0:dbad57390bd1 186 void UnityPrintNumberUnsigned(const _U_UINT number)
ram54288 0:dbad57390bd1 187 {
ram54288 0:dbad57390bd1 188 _U_UINT divisor = 1;
ram54288 0:dbad57390bd1 189
ram54288 0:dbad57390bd1 190 /* figure out initial divisor */
ram54288 0:dbad57390bd1 191 while (number / divisor > 9)
ram54288 0:dbad57390bd1 192 {
ram54288 0:dbad57390bd1 193 divisor *= 10;
ram54288 0:dbad57390bd1 194 }
ram54288 0:dbad57390bd1 195
ram54288 0:dbad57390bd1 196 /* now mod and print, then divide divisor */
ram54288 0:dbad57390bd1 197 do
ram54288 0:dbad57390bd1 198 {
ram54288 0:dbad57390bd1 199 UNITY_OUTPUT_CHAR((char)('0' + (number / divisor % 10)));
ram54288 0:dbad57390bd1 200 divisor /= 10;
ram54288 0:dbad57390bd1 201 }
ram54288 0:dbad57390bd1 202 while (divisor > 0);
ram54288 0:dbad57390bd1 203 }
ram54288 0:dbad57390bd1 204
ram54288 0:dbad57390bd1 205 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 206 void UnityPrintNumberHex(const _U_UINT number, const char nibbles_to_print)
ram54288 0:dbad57390bd1 207 {
ram54288 0:dbad57390bd1 208 _U_UINT nibble;
ram54288 0:dbad57390bd1 209 char nibbles = nibbles_to_print;
ram54288 0:dbad57390bd1 210 UNITY_OUTPUT_CHAR('0');
ram54288 0:dbad57390bd1 211 UNITY_OUTPUT_CHAR('x');
ram54288 0:dbad57390bd1 212
ram54288 0:dbad57390bd1 213 while (nibbles > 0)
ram54288 0:dbad57390bd1 214 {
ram54288 0:dbad57390bd1 215 nibble = (number >> (--nibbles << 2)) & 0x0000000F;
ram54288 0:dbad57390bd1 216 if (nibble <= 9)
ram54288 0:dbad57390bd1 217 {
ram54288 0:dbad57390bd1 218 UNITY_OUTPUT_CHAR((char)('0' + nibble));
ram54288 0:dbad57390bd1 219 }
ram54288 0:dbad57390bd1 220 else
ram54288 0:dbad57390bd1 221 {
ram54288 0:dbad57390bd1 222 UNITY_OUTPUT_CHAR((char)('A' - 10 + nibble));
ram54288 0:dbad57390bd1 223 }
ram54288 0:dbad57390bd1 224 }
ram54288 0:dbad57390bd1 225 }
ram54288 0:dbad57390bd1 226
ram54288 0:dbad57390bd1 227 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 228 void UnityPrintMask(const _U_UINT mask, const _U_UINT number)
ram54288 0:dbad57390bd1 229 {
ram54288 0:dbad57390bd1 230 _U_UINT current_bit = (_U_UINT)1 << (UNITY_INT_WIDTH - 1);
ram54288 0:dbad57390bd1 231 _US32 i;
ram54288 0:dbad57390bd1 232
ram54288 0:dbad57390bd1 233 for (i = 0; i < UNITY_INT_WIDTH; i++)
ram54288 0:dbad57390bd1 234 {
ram54288 0:dbad57390bd1 235 if (current_bit & mask)
ram54288 0:dbad57390bd1 236 {
ram54288 0:dbad57390bd1 237 if (current_bit & number)
ram54288 0:dbad57390bd1 238 {
ram54288 0:dbad57390bd1 239 UNITY_OUTPUT_CHAR('1');
ram54288 0:dbad57390bd1 240 }
ram54288 0:dbad57390bd1 241 else
ram54288 0:dbad57390bd1 242 {
ram54288 0:dbad57390bd1 243 UNITY_OUTPUT_CHAR('0');
ram54288 0:dbad57390bd1 244 }
ram54288 0:dbad57390bd1 245 }
ram54288 0:dbad57390bd1 246 else
ram54288 0:dbad57390bd1 247 {
ram54288 0:dbad57390bd1 248 UNITY_OUTPUT_CHAR('X');
ram54288 0:dbad57390bd1 249 }
ram54288 0:dbad57390bd1 250 current_bit = current_bit >> 1;
ram54288 0:dbad57390bd1 251 }
ram54288 0:dbad57390bd1 252 }
ram54288 0:dbad57390bd1 253
ram54288 0:dbad57390bd1 254 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 255 #ifdef UNITY_FLOAT_VERBOSE
ram54288 0:dbad57390bd1 256 #include <stdio.h>
ram54288 0:dbad57390bd1 257
ram54288 0:dbad57390bd1 258 #ifndef UNITY_VERBOSE_NUMBER_MAX_LENGTH
ram54288 0:dbad57390bd1 259 # ifdef UNITY_DOUBLE_VERBOSE
ram54288 0:dbad57390bd1 260 # define UNITY_VERBOSE_NUMBER_MAX_LENGTH 317
ram54288 0:dbad57390bd1 261 # else
ram54288 0:dbad57390bd1 262 # define UNITY_VERBOSE_NUMBER_MAX_LENGTH 47
ram54288 0:dbad57390bd1 263 # endif
ram54288 0:dbad57390bd1 264 #endif
ram54288 0:dbad57390bd1 265
ram54288 0:dbad57390bd1 266 void UnityPrintFloat(_UF number)
ram54288 0:dbad57390bd1 267 {
ram54288 0:dbad57390bd1 268 char TempBuffer[UNITY_VERBOSE_NUMBER_MAX_LENGTH + 1];
ram54288 0:dbad57390bd1 269 snprintf(TempBuffer, sizeof(TempBuffer), "%.6f", number);
ram54288 0:dbad57390bd1 270 UnityPrint(TempBuffer);
ram54288 0:dbad57390bd1 271 }
ram54288 0:dbad57390bd1 272 #endif
ram54288 0:dbad57390bd1 273
ram54288 0:dbad57390bd1 274 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 275
ram54288 0:dbad57390bd1 276 void UnityPrintFail(void);
ram54288 0:dbad57390bd1 277 void UnityPrintFail(void)
ram54288 0:dbad57390bd1 278 {
ram54288 0:dbad57390bd1 279 UnityPrint(UnityStrFail);
ram54288 0:dbad57390bd1 280 }
ram54288 0:dbad57390bd1 281
ram54288 0:dbad57390bd1 282 void UnityPrintOk(void);
ram54288 0:dbad57390bd1 283 void UnityPrintOk(void)
ram54288 0:dbad57390bd1 284 {
ram54288 0:dbad57390bd1 285 UnityPrint(UnityStrOk);
ram54288 0:dbad57390bd1 286 }
ram54288 0:dbad57390bd1 287
ram54288 0:dbad57390bd1 288 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 289 static void UnityTestResultsBegin(const char* file, const UNITY_LINE_TYPE line);
ram54288 0:dbad57390bd1 290 static void UnityTestResultsBegin(const char* file, const UNITY_LINE_TYPE line)
ram54288 0:dbad57390bd1 291 {
ram54288 0:dbad57390bd1 292 #ifndef UNITY_FIXTURES
ram54288 0:dbad57390bd1 293 UnityPrint(file);
ram54288 0:dbad57390bd1 294 UNITY_OUTPUT_CHAR(':');
ram54288 0:dbad57390bd1 295 UnityPrintNumber((_U_SINT)line);
ram54288 0:dbad57390bd1 296 UNITY_OUTPUT_CHAR(':');
ram54288 0:dbad57390bd1 297 UnityPrint(Unity.CurrentTestName);
ram54288 0:dbad57390bd1 298 UNITY_OUTPUT_CHAR(':');
ram54288 0:dbad57390bd1 299 #else
ram54288 0:dbad57390bd1 300 UNITY_UNUSED(file);
ram54288 0:dbad57390bd1 301 UNITY_UNUSED(line);
ram54288 0:dbad57390bd1 302 #endif
ram54288 0:dbad57390bd1 303 }
ram54288 0:dbad57390bd1 304
ram54288 0:dbad57390bd1 305 /* SA_PATCH: Make failures more noticable. */
ram54288 0:dbad57390bd1 306 static void UnityPrintVisibleFailure(void);
ram54288 0:dbad57390bd1 307 static void UnityPrintVisibleFailure(void)
ram54288 0:dbad57390bd1 308 {
ram54288 0:dbad57390bd1 309 UNITY_OUTPUT_CHAR('\n');
ram54288 0:dbad57390bd1 310 UnityPrint("===!!!===> ");
ram54288 0:dbad57390bd1 311 /* SA_PATCH: Output results using easy to parse tags. */
ram54288 0:dbad57390bd1 312 UnityPrint(UNITY_RESULTS_TAGS_RESULT_START);
ram54288 0:dbad57390bd1 313 UnityPrint(UnityStrFail);
ram54288 0:dbad57390bd1 314 /* SA_PATCH: Output results using easy to parse tags. */
ram54288 0:dbad57390bd1 315 UnityPrint(UNITY_RESULTS_TAGS_RESULT_END);
ram54288 0:dbad57390bd1 316 UnityPrint(" <===!!!===");
ram54288 0:dbad57390bd1 317 }
ram54288 0:dbad57390bd1 318 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 319 static void UnityTestResultsFailBegin(const UNITY_LINE_TYPE line);
ram54288 0:dbad57390bd1 320 static void UnityTestResultsFailBegin(const UNITY_LINE_TYPE line)
ram54288 0:dbad57390bd1 321 {
ram54288 0:dbad57390bd1 322 #ifndef UNITY_FIXTURES
ram54288 0:dbad57390bd1 323 UnityTestResultsBegin(Unity.TestFile, line);
ram54288 0:dbad57390bd1 324 #else
ram54288 0:dbad57390bd1 325 UNITY_UNUSED(line);
ram54288 0:dbad57390bd1 326 #endif
ram54288 0:dbad57390bd1 327 /* SA_PATCH: Make failures more noticable. */
ram54288 0:dbad57390bd1 328 UnityPrintVisibleFailure();
ram54288 0:dbad57390bd1 329 //UnityPrint(UnityStrFail);
ram54288 0:dbad57390bd1 330 UNITY_OUTPUT_CHAR(':');
ram54288 0:dbad57390bd1 331 }
ram54288 0:dbad57390bd1 332
ram54288 0:dbad57390bd1 333 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 334 void UnityConcludeTest(void)
ram54288 0:dbad57390bd1 335 {
ram54288 0:dbad57390bd1 336 if (Unity.CurrentTestIgnored)
ram54288 0:dbad57390bd1 337 {
ram54288 0:dbad57390bd1 338 Unity.TestIgnores++;
ram54288 0:dbad57390bd1 339 }
ram54288 0:dbad57390bd1 340 else if (!Unity.CurrentTestFailed)
ram54288 0:dbad57390bd1 341 {
ram54288 0:dbad57390bd1 342 UnityTestResultsBegin(Unity.TestFile, Unity.CurrentTestLineNumber);
ram54288 0:dbad57390bd1 343 UnityPrint(UnityStrPass);
ram54288 0:dbad57390bd1 344 }
ram54288 0:dbad57390bd1 345 else
ram54288 0:dbad57390bd1 346 {
ram54288 0:dbad57390bd1 347 Unity.TestFailures++;
ram54288 0:dbad57390bd1 348 }
ram54288 0:dbad57390bd1 349
ram54288 0:dbad57390bd1 350 Unity.CurrentTestFailed = 0;
ram54288 0:dbad57390bd1 351 Unity.CurrentTestIgnored = 0;
ram54288 0:dbad57390bd1 352 UNITY_PRINT_EOL();
ram54288 0:dbad57390bd1 353 UNITY_FLUSH_CALL();
ram54288 0:dbad57390bd1 354 }
ram54288 0:dbad57390bd1 355
ram54288 0:dbad57390bd1 356 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 357 static void UnityAddMsgIfSpecified(const char* msg);
ram54288 0:dbad57390bd1 358 static void UnityAddMsgIfSpecified(const char* msg)
ram54288 0:dbad57390bd1 359 {
ram54288 0:dbad57390bd1 360 if (msg)
ram54288 0:dbad57390bd1 361 {
ram54288 0:dbad57390bd1 362 UnityPrint(UnityStrSpacer);
ram54288 0:dbad57390bd1 363 #ifndef UNITY_EXCLUDE_DETAILS
ram54288 0:dbad57390bd1 364 if (Unity.CurrentDetail1)
ram54288 0:dbad57390bd1 365 {
ram54288 0:dbad57390bd1 366 UnityPrint(UnityStrDetail1Name);
ram54288 0:dbad57390bd1 367 UnityPrint(Unity.CurrentDetail1);
ram54288 0:dbad57390bd1 368 if (Unity.CurrentDetail2)
ram54288 0:dbad57390bd1 369 {
ram54288 0:dbad57390bd1 370 UnityPrint(UnityStrDetail2Name);
ram54288 0:dbad57390bd1 371 UnityPrint(Unity.CurrentDetail2);
ram54288 0:dbad57390bd1 372 }
ram54288 0:dbad57390bd1 373 UnityPrint(UnityStrSpacer);
ram54288 0:dbad57390bd1 374 }
ram54288 0:dbad57390bd1 375 #endif
ram54288 0:dbad57390bd1 376 UnityPrint(msg);
ram54288 0:dbad57390bd1 377 }
ram54288 0:dbad57390bd1 378 }
ram54288 0:dbad57390bd1 379
ram54288 0:dbad57390bd1 380 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 381 static void UnityPrintExpectedAndActualStrings(const char* expected, const char* actual);
ram54288 0:dbad57390bd1 382 static void UnityPrintExpectedAndActualStrings(const char* expected, const char* actual)
ram54288 0:dbad57390bd1 383 {
ram54288 0:dbad57390bd1 384 UnityPrint(UnityStrExpected);
ram54288 0:dbad57390bd1 385 if (expected != NULL)
ram54288 0:dbad57390bd1 386 {
ram54288 0:dbad57390bd1 387 UNITY_OUTPUT_CHAR('\'');
ram54288 0:dbad57390bd1 388 UnityPrint(expected);
ram54288 0:dbad57390bd1 389 UNITY_OUTPUT_CHAR('\'');
ram54288 0:dbad57390bd1 390 }
ram54288 0:dbad57390bd1 391 else
ram54288 0:dbad57390bd1 392 {
ram54288 0:dbad57390bd1 393 UnityPrint(UnityStrNull);
ram54288 0:dbad57390bd1 394 }
ram54288 0:dbad57390bd1 395 UnityPrint(UnityStrWas);
ram54288 0:dbad57390bd1 396 if (actual != NULL)
ram54288 0:dbad57390bd1 397 {
ram54288 0:dbad57390bd1 398 UNITY_OUTPUT_CHAR('\'');
ram54288 0:dbad57390bd1 399 UnityPrint(actual);
ram54288 0:dbad57390bd1 400 UNITY_OUTPUT_CHAR('\'');
ram54288 0:dbad57390bd1 401 }
ram54288 0:dbad57390bd1 402 else
ram54288 0:dbad57390bd1 403 {
ram54288 0:dbad57390bd1 404 UnityPrint(UnityStrNull);
ram54288 0:dbad57390bd1 405 }
ram54288 0:dbad57390bd1 406 }
ram54288 0:dbad57390bd1 407
ram54288 0:dbad57390bd1 408 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 409 static void UnityPrintExpectedAndActualStringsLen(const char* expected, const char* actual, const _UU32 length)
ram54288 0:dbad57390bd1 410 {
ram54288 0:dbad57390bd1 411 UnityPrint(UnityStrExpected);
ram54288 0:dbad57390bd1 412 if (expected != NULL)
ram54288 0:dbad57390bd1 413 {
ram54288 0:dbad57390bd1 414 UNITY_OUTPUT_CHAR('\'');
ram54288 0:dbad57390bd1 415 UnityPrintLen(expected, length);
ram54288 0:dbad57390bd1 416 UNITY_OUTPUT_CHAR('\'');
ram54288 0:dbad57390bd1 417 }
ram54288 0:dbad57390bd1 418 else
ram54288 0:dbad57390bd1 419 {
ram54288 0:dbad57390bd1 420 UnityPrint(UnityStrNull);
ram54288 0:dbad57390bd1 421 }
ram54288 0:dbad57390bd1 422 UnityPrint(UnityStrWas);
ram54288 0:dbad57390bd1 423 if (actual != NULL)
ram54288 0:dbad57390bd1 424 {
ram54288 0:dbad57390bd1 425 UNITY_OUTPUT_CHAR('\'');
ram54288 0:dbad57390bd1 426 UnityPrintLen(actual, length);
ram54288 0:dbad57390bd1 427 UNITY_OUTPUT_CHAR('\'');
ram54288 0:dbad57390bd1 428 }
ram54288 0:dbad57390bd1 429 else
ram54288 0:dbad57390bd1 430 {
ram54288 0:dbad57390bd1 431 UnityPrint(UnityStrNull);
ram54288 0:dbad57390bd1 432 }
ram54288 0:dbad57390bd1 433 }
ram54288 0:dbad57390bd1 434
ram54288 0:dbad57390bd1 435
ram54288 0:dbad57390bd1 436
ram54288 0:dbad57390bd1 437 /*-----------------------------------------------
ram54288 0:dbad57390bd1 438 * Assertion & Control Helpers
ram54288 0:dbad57390bd1 439 *-----------------------------------------------*/
ram54288 0:dbad57390bd1 440
ram54288 0:dbad57390bd1 441 static int UnityCheckArraysForNull(UNITY_INTERNAL_PTR expected, UNITY_INTERNAL_PTR actual, const UNITY_LINE_TYPE lineNumber, const char* msg)
ram54288 0:dbad57390bd1 442 {
ram54288 0:dbad57390bd1 443 /* return true if they are both NULL */
ram54288 0:dbad57390bd1 444 if ((expected == NULL) && (actual == NULL))
ram54288 0:dbad57390bd1 445 return 1;
ram54288 0:dbad57390bd1 446
ram54288 0:dbad57390bd1 447 /* throw error if just expected is NULL */
ram54288 0:dbad57390bd1 448 if (expected == NULL)
ram54288 0:dbad57390bd1 449 {
ram54288 0:dbad57390bd1 450 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 451 UnityPrint(UnityStrNullPointerForExpected);
ram54288 0:dbad57390bd1 452 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 453 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 454 }
ram54288 0:dbad57390bd1 455
ram54288 0:dbad57390bd1 456 /* throw error if just actual is NULL */
ram54288 0:dbad57390bd1 457 if (actual == NULL)
ram54288 0:dbad57390bd1 458 {
ram54288 0:dbad57390bd1 459 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 460 UnityPrint(UnityStrNullPointerForActual);
ram54288 0:dbad57390bd1 461 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 462 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 463 }
ram54288 0:dbad57390bd1 464
ram54288 0:dbad57390bd1 465 /* return false if neither is NULL */
ram54288 0:dbad57390bd1 466 return 0;
ram54288 0:dbad57390bd1 467 }
ram54288 0:dbad57390bd1 468
ram54288 0:dbad57390bd1 469 /*-----------------------------------------------
ram54288 0:dbad57390bd1 470 * Assertion Functions
ram54288 0:dbad57390bd1 471 *-----------------------------------------------*/
ram54288 0:dbad57390bd1 472
ram54288 0:dbad57390bd1 473 void UnityAssertBits(const _U_SINT mask,
ram54288 0:dbad57390bd1 474 const _U_SINT expected,
ram54288 0:dbad57390bd1 475 const _U_SINT actual,
ram54288 0:dbad57390bd1 476 const char* msg,
ram54288 0:dbad57390bd1 477 const UNITY_LINE_TYPE lineNumber)
ram54288 0:dbad57390bd1 478 {
ram54288 0:dbad57390bd1 479 UNITY_SKIP_EXECUTION;
ram54288 0:dbad57390bd1 480
ram54288 0:dbad57390bd1 481 if ((mask & expected) != (mask & actual))
ram54288 0:dbad57390bd1 482 {
ram54288 0:dbad57390bd1 483 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 484 UnityPrint(UnityStrExpected);
ram54288 0:dbad57390bd1 485 UnityPrintMask((_U_UINT)mask, (_U_UINT)expected);
ram54288 0:dbad57390bd1 486 UnityPrint(UnityStrWas);
ram54288 0:dbad57390bd1 487 UnityPrintMask((_U_UINT)mask, (_U_UINT)actual);
ram54288 0:dbad57390bd1 488 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 489 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 490 }
ram54288 0:dbad57390bd1 491 }
ram54288 0:dbad57390bd1 492
ram54288 0:dbad57390bd1 493 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 494 void UnityAssertEqualNumber(const _U_SINT expected,
ram54288 0:dbad57390bd1 495 const _U_SINT actual,
ram54288 0:dbad57390bd1 496 const char* msg,
ram54288 0:dbad57390bd1 497 const UNITY_LINE_TYPE lineNumber,
ram54288 0:dbad57390bd1 498 const UNITY_DISPLAY_STYLE_T style)
ram54288 0:dbad57390bd1 499 {
ram54288 0:dbad57390bd1 500 UNITY_SKIP_EXECUTION;
ram54288 0:dbad57390bd1 501
ram54288 0:dbad57390bd1 502 if (expected != actual)
ram54288 0:dbad57390bd1 503 {
ram54288 0:dbad57390bd1 504 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 505 UnityPrint(UnityStrExpected);
ram54288 0:dbad57390bd1 506 UnityPrintNumberByStyle(expected, style);
ram54288 0:dbad57390bd1 507 UnityPrint(UnityStrWas);
ram54288 0:dbad57390bd1 508 UnityPrintNumberByStyle(actual, style);
ram54288 0:dbad57390bd1 509 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 510 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 511 }
ram54288 0:dbad57390bd1 512 }
ram54288 0:dbad57390bd1 513
ram54288 0:dbad57390bd1 514 #define UnityPrintPointlessAndBail() \
ram54288 0:dbad57390bd1 515 { \
ram54288 0:dbad57390bd1 516 UnityTestResultsFailBegin(lineNumber); \
ram54288 0:dbad57390bd1 517 UnityPrint(UnityStrPointless); \
ram54288 0:dbad57390bd1 518 UnityAddMsgIfSpecified(msg); \
ram54288 0:dbad57390bd1 519 UNITY_FAIL_AND_BAIL; }
ram54288 0:dbad57390bd1 520
ram54288 0:dbad57390bd1 521 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 522 void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected,
ram54288 0:dbad57390bd1 523 UNITY_INTERNAL_PTR actual,
ram54288 0:dbad57390bd1 524 const _UU32 num_elements,
ram54288 0:dbad57390bd1 525 const char* msg,
ram54288 0:dbad57390bd1 526 const UNITY_LINE_TYPE lineNumber,
ram54288 0:dbad57390bd1 527 const UNITY_DISPLAY_STYLE_T style)
ram54288 0:dbad57390bd1 528 {
ram54288 0:dbad57390bd1 529 _UU32 elements = num_elements;
ram54288 0:dbad57390bd1 530 UNITY_INTERNAL_PTR ptr_exp = (UNITY_INTERNAL_PTR)expected;
ram54288 0:dbad57390bd1 531 UNITY_INTERNAL_PTR ptr_act = (UNITY_INTERNAL_PTR)actual;
ram54288 0:dbad57390bd1 532
ram54288 0:dbad57390bd1 533 UNITY_SKIP_EXECUTION;
ram54288 0:dbad57390bd1 534
ram54288 0:dbad57390bd1 535 if (elements == 0)
ram54288 0:dbad57390bd1 536 {
ram54288 0:dbad57390bd1 537 UnityPrintPointlessAndBail();
ram54288 0:dbad57390bd1 538 }
ram54288 0:dbad57390bd1 539
ram54288 0:dbad57390bd1 540 if (UnityCheckArraysForNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg) == 1)
ram54288 0:dbad57390bd1 541 return;
ram54288 0:dbad57390bd1 542
ram54288 0:dbad57390bd1 543 /* If style is UNITY_DISPLAY_STYLE_INT, we'll fall into the default case rather than the INT16 or INT32 (etc) case
ram54288 0:dbad57390bd1 544 * as UNITY_DISPLAY_STYLE_INT includes a flag for UNITY_DISPLAY_RANGE_AUTO, which the width-specific
ram54288 0:dbad57390bd1 545 * variants do not. Therefore remove this flag. */
ram54288 0:dbad57390bd1 546 switch(style & (UNITY_DISPLAY_STYLE_T)(~UNITY_DISPLAY_RANGE_AUTO))
ram54288 0:dbad57390bd1 547 {
ram54288 0:dbad57390bd1 548 case UNITY_DISPLAY_STYLE_HEX8:
ram54288 0:dbad57390bd1 549 case UNITY_DISPLAY_STYLE_INT8:
ram54288 0:dbad57390bd1 550 case UNITY_DISPLAY_STYLE_UINT8:
ram54288 0:dbad57390bd1 551 while (elements--)
ram54288 0:dbad57390bd1 552 {
ram54288 0:dbad57390bd1 553 if (*(UNITY_PTR_ATTRIBUTE const _US8*)ptr_exp != *(UNITY_PTR_ATTRIBUTE const _US8*)ptr_act)
ram54288 0:dbad57390bd1 554 {
ram54288 0:dbad57390bd1 555 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 556 UnityPrint(UnityStrElement);
ram54288 0:dbad57390bd1 557 UnityPrintNumberUnsigned(num_elements - elements - 1);
ram54288 0:dbad57390bd1 558 UnityPrint(UnityStrExpected);
ram54288 0:dbad57390bd1 559 UnityPrintNumberByStyle(*(UNITY_PTR_ATTRIBUTE const _US8*)ptr_exp, style);
ram54288 0:dbad57390bd1 560 UnityPrint(UnityStrWas);
ram54288 0:dbad57390bd1 561 UnityPrintNumberByStyle(*(UNITY_PTR_ATTRIBUTE const _US8*)ptr_act, style);
ram54288 0:dbad57390bd1 562 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 563 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 564 }
ram54288 0:dbad57390bd1 565 ptr_exp = (UNITY_INTERNAL_PTR)((_UP)ptr_exp + 1);
ram54288 0:dbad57390bd1 566 ptr_act = (UNITY_INTERNAL_PTR)((_UP)ptr_act + 1);
ram54288 0:dbad57390bd1 567 }
ram54288 0:dbad57390bd1 568 break;
ram54288 0:dbad57390bd1 569 case UNITY_DISPLAY_STYLE_HEX16:
ram54288 0:dbad57390bd1 570 case UNITY_DISPLAY_STYLE_INT16:
ram54288 0:dbad57390bd1 571 case UNITY_DISPLAY_STYLE_UINT16:
ram54288 0:dbad57390bd1 572 while (elements--)
ram54288 0:dbad57390bd1 573 {
ram54288 0:dbad57390bd1 574 if (*(UNITY_PTR_ATTRIBUTE const _US16*)ptr_exp != *(UNITY_PTR_ATTRIBUTE const _US16*)ptr_act)
ram54288 0:dbad57390bd1 575 {
ram54288 0:dbad57390bd1 576 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 577 UnityPrint(UnityStrElement);
ram54288 0:dbad57390bd1 578 UnityPrintNumberUnsigned(num_elements - elements - 1);
ram54288 0:dbad57390bd1 579 UnityPrint(UnityStrExpected);
ram54288 0:dbad57390bd1 580 UnityPrintNumberByStyle(*(UNITY_PTR_ATTRIBUTE const _US16*)ptr_exp, style);
ram54288 0:dbad57390bd1 581 UnityPrint(UnityStrWas);
ram54288 0:dbad57390bd1 582 UnityPrintNumberByStyle(*(UNITY_PTR_ATTRIBUTE const _US16*)ptr_act, style);
ram54288 0:dbad57390bd1 583 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 584 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 585 }
ram54288 0:dbad57390bd1 586 ptr_exp = (UNITY_INTERNAL_PTR)((_UP)ptr_exp + 2);
ram54288 0:dbad57390bd1 587 ptr_act = (UNITY_INTERNAL_PTR)((_UP)ptr_act + 2);
ram54288 0:dbad57390bd1 588 }
ram54288 0:dbad57390bd1 589 break;
ram54288 0:dbad57390bd1 590 #ifdef UNITY_SUPPORT_64
ram54288 0:dbad57390bd1 591 case UNITY_DISPLAY_STYLE_HEX64:
ram54288 0:dbad57390bd1 592 case UNITY_DISPLAY_STYLE_INT64:
ram54288 0:dbad57390bd1 593 case UNITY_DISPLAY_STYLE_UINT64:
ram54288 0:dbad57390bd1 594 while (elements--)
ram54288 0:dbad57390bd1 595 {
ram54288 0:dbad57390bd1 596 if (*(UNITY_PTR_ATTRIBUTE const _US64*)ptr_exp != *(UNITY_PTR_ATTRIBUTE const _US64*)ptr_act)
ram54288 0:dbad57390bd1 597 {
ram54288 0:dbad57390bd1 598 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 599 UnityPrint(UnityStrElement);
ram54288 0:dbad57390bd1 600 UnityPrintNumberUnsigned(num_elements - elements - 1);
ram54288 0:dbad57390bd1 601 UnityPrint(UnityStrExpected);
ram54288 0:dbad57390bd1 602 UnityPrintNumberByStyle(*(UNITY_PTR_ATTRIBUTE const _US64*)ptr_exp, style);
ram54288 0:dbad57390bd1 603 UnityPrint(UnityStrWas);
ram54288 0:dbad57390bd1 604 UnityPrintNumberByStyle(*(UNITY_PTR_ATTRIBUTE const _US64*)ptr_act, style);
ram54288 0:dbad57390bd1 605 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 606 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 607 }
ram54288 0:dbad57390bd1 608 ptr_exp = (UNITY_INTERNAL_PTR)((_UP)ptr_exp + 8);
ram54288 0:dbad57390bd1 609 ptr_act = (UNITY_INTERNAL_PTR)((_UP)ptr_act + 8);
ram54288 0:dbad57390bd1 610 }
ram54288 0:dbad57390bd1 611 break;
ram54288 0:dbad57390bd1 612 #endif
ram54288 0:dbad57390bd1 613 default:
ram54288 0:dbad57390bd1 614 while (elements--)
ram54288 0:dbad57390bd1 615 {
ram54288 0:dbad57390bd1 616 if (*(UNITY_PTR_ATTRIBUTE const _US32*)ptr_exp != *(UNITY_PTR_ATTRIBUTE const _US32*)ptr_act)
ram54288 0:dbad57390bd1 617 {
ram54288 0:dbad57390bd1 618 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 619 UnityPrint(UnityStrElement);
ram54288 0:dbad57390bd1 620 UnityPrintNumberUnsigned(num_elements - elements - 1);
ram54288 0:dbad57390bd1 621 UnityPrint(UnityStrExpected);
ram54288 0:dbad57390bd1 622 UnityPrintNumberByStyle(*(UNITY_PTR_ATTRIBUTE const _US32*)ptr_exp, style);
ram54288 0:dbad57390bd1 623 UnityPrint(UnityStrWas);
ram54288 0:dbad57390bd1 624 UnityPrintNumberByStyle(*(UNITY_PTR_ATTRIBUTE const _US32*)ptr_act, style);
ram54288 0:dbad57390bd1 625 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 626 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 627 }
ram54288 0:dbad57390bd1 628 ptr_exp = (UNITY_INTERNAL_PTR)((_UP)ptr_exp + 4);
ram54288 0:dbad57390bd1 629 ptr_act = (UNITY_INTERNAL_PTR)((_UP)ptr_act + 4);
ram54288 0:dbad57390bd1 630 }
ram54288 0:dbad57390bd1 631 break;
ram54288 0:dbad57390bd1 632 }
ram54288 0:dbad57390bd1 633 }
ram54288 0:dbad57390bd1 634
ram54288 0:dbad57390bd1 635 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 636 #ifndef UNITY_EXCLUDE_FLOAT
ram54288 0:dbad57390bd1 637 void UnityAssertEqualFloatArray(UNITY_PTR_ATTRIBUTE const _UF* expected,
ram54288 0:dbad57390bd1 638 UNITY_PTR_ATTRIBUTE const _UF* actual,
ram54288 0:dbad57390bd1 639 const _UU32 num_elements,
ram54288 0:dbad57390bd1 640 const char* msg,
ram54288 0:dbad57390bd1 641 const UNITY_LINE_TYPE lineNumber)
ram54288 0:dbad57390bd1 642 {
ram54288 0:dbad57390bd1 643 _UU32 elements = num_elements;
ram54288 0:dbad57390bd1 644 UNITY_PTR_ATTRIBUTE const _UF* ptr_expected = expected;
ram54288 0:dbad57390bd1 645 UNITY_PTR_ATTRIBUTE const _UF* ptr_actual = actual;
ram54288 0:dbad57390bd1 646 _UF diff, tol;
ram54288 0:dbad57390bd1 647
ram54288 0:dbad57390bd1 648 UNITY_SKIP_EXECUTION;
ram54288 0:dbad57390bd1 649
ram54288 0:dbad57390bd1 650 if (elements == 0)
ram54288 0:dbad57390bd1 651 {
ram54288 0:dbad57390bd1 652 UnityPrintPointlessAndBail();
ram54288 0:dbad57390bd1 653 }
ram54288 0:dbad57390bd1 654
ram54288 0:dbad57390bd1 655 if (UnityCheckArraysForNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg) == 1)
ram54288 0:dbad57390bd1 656 return;
ram54288 0:dbad57390bd1 657
ram54288 0:dbad57390bd1 658 while (elements--)
ram54288 0:dbad57390bd1 659 {
ram54288 0:dbad57390bd1 660 diff = *ptr_expected - *ptr_actual;
ram54288 0:dbad57390bd1 661 if (diff < 0.0f)
ram54288 0:dbad57390bd1 662 diff = 0.0f - diff;
ram54288 0:dbad57390bd1 663 tol = UNITY_FLOAT_PRECISION * *ptr_expected;
ram54288 0:dbad57390bd1 664 if (tol < 0.0f)
ram54288 0:dbad57390bd1 665 tol = 0.0f - tol;
ram54288 0:dbad57390bd1 666
ram54288 0:dbad57390bd1 667 /* This first part of this condition will catch any NaN or Infinite values */
ram54288 0:dbad57390bd1 668 if (isnan(diff) || isinf(diff) || (diff > tol))
ram54288 0:dbad57390bd1 669 {
ram54288 0:dbad57390bd1 670 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 671 UnityPrint(UnityStrElement);
ram54288 0:dbad57390bd1 672 UnityPrintNumberUnsigned(num_elements - elements - 1);
ram54288 0:dbad57390bd1 673 #ifdef UNITY_FLOAT_VERBOSE
ram54288 0:dbad57390bd1 674 UnityPrint(UnityStrExpected);
ram54288 0:dbad57390bd1 675 UnityPrintFloat(*ptr_expected);
ram54288 0:dbad57390bd1 676 UnityPrint(UnityStrWas);
ram54288 0:dbad57390bd1 677 UnityPrintFloat(*ptr_actual);
ram54288 0:dbad57390bd1 678 #else
ram54288 0:dbad57390bd1 679 UnityPrint(UnityStrDelta);
ram54288 0:dbad57390bd1 680 #endif
ram54288 0:dbad57390bd1 681 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 682 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 683 }
ram54288 0:dbad57390bd1 684 ptr_expected++;
ram54288 0:dbad57390bd1 685 ptr_actual++;
ram54288 0:dbad57390bd1 686 }
ram54288 0:dbad57390bd1 687 }
ram54288 0:dbad57390bd1 688
ram54288 0:dbad57390bd1 689 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 690 void UnityAssertFloatsWithin(const _UF delta,
ram54288 0:dbad57390bd1 691 const _UF expected,
ram54288 0:dbad57390bd1 692 const _UF actual,
ram54288 0:dbad57390bd1 693 const char* msg,
ram54288 0:dbad57390bd1 694 const UNITY_LINE_TYPE lineNumber)
ram54288 0:dbad57390bd1 695 {
ram54288 0:dbad57390bd1 696 _UF diff = actual - expected;
ram54288 0:dbad57390bd1 697 _UF pos_delta = delta;
ram54288 0:dbad57390bd1 698
ram54288 0:dbad57390bd1 699 UNITY_SKIP_EXECUTION;
ram54288 0:dbad57390bd1 700
ram54288 0:dbad57390bd1 701 if (diff < 0.0f)
ram54288 0:dbad57390bd1 702 {
ram54288 0:dbad57390bd1 703 diff = 0.0f - diff;
ram54288 0:dbad57390bd1 704 }
ram54288 0:dbad57390bd1 705 if (pos_delta < 0.0f)
ram54288 0:dbad57390bd1 706 {
ram54288 0:dbad57390bd1 707 pos_delta = 0.0f - pos_delta;
ram54288 0:dbad57390bd1 708 }
ram54288 0:dbad57390bd1 709
ram54288 0:dbad57390bd1 710 /* This first part of this condition will catch any NaN or Infinite values */
ram54288 0:dbad57390bd1 711 if (isnan(diff) || isinf(diff) || (pos_delta < diff))
ram54288 0:dbad57390bd1 712 {
ram54288 0:dbad57390bd1 713 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 714 #ifdef UNITY_FLOAT_VERBOSE
ram54288 0:dbad57390bd1 715 UnityPrint(UnityStrExpected);
ram54288 0:dbad57390bd1 716 UnityPrintFloat(expected);
ram54288 0:dbad57390bd1 717 UnityPrint(UnityStrWas);
ram54288 0:dbad57390bd1 718 UnityPrintFloat(actual);
ram54288 0:dbad57390bd1 719 #else
ram54288 0:dbad57390bd1 720 UnityPrint(UnityStrDelta);
ram54288 0:dbad57390bd1 721 #endif
ram54288 0:dbad57390bd1 722 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 723 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 724 }
ram54288 0:dbad57390bd1 725 }
ram54288 0:dbad57390bd1 726
ram54288 0:dbad57390bd1 727 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 728 void UnityAssertFloatSpecial(const _UF actual,
ram54288 0:dbad57390bd1 729 const char* msg,
ram54288 0:dbad57390bd1 730 const UNITY_LINE_TYPE lineNumber,
ram54288 0:dbad57390bd1 731 const UNITY_FLOAT_TRAIT_T style)
ram54288 0:dbad57390bd1 732 {
ram54288 0:dbad57390bd1 733 const char* trait_names[] = { UnityStrInf, UnityStrNegInf, UnityStrNaN, UnityStrDet };
ram54288 0:dbad57390bd1 734 _U_SINT should_be_trait = ((_U_SINT)style & 1);
ram54288 0:dbad57390bd1 735 _U_SINT is_trait = !should_be_trait;
ram54288 0:dbad57390bd1 736 _U_SINT trait_index = (_U_SINT)(style >> 1);
ram54288 0:dbad57390bd1 737
ram54288 0:dbad57390bd1 738 UNITY_SKIP_EXECUTION;
ram54288 0:dbad57390bd1 739
ram54288 0:dbad57390bd1 740 switch(style)
ram54288 0:dbad57390bd1 741 {
ram54288 0:dbad57390bd1 742 /* To determine Inf / Neg Inf, we compare to an Inf / Neg Inf value we create on the fly
ram54288 0:dbad57390bd1 743 * We are using a variable to hold the zero value because some compilers complain about dividing by zero otherwise */
ram54288 0:dbad57390bd1 744 case UNITY_FLOAT_IS_INF:
ram54288 0:dbad57390bd1 745 case UNITY_FLOAT_IS_NOT_INF:
ram54288 0:dbad57390bd1 746 is_trait = isinf(actual) & ispos(actual);
ram54288 0:dbad57390bd1 747 break;
ram54288 0:dbad57390bd1 748 case UNITY_FLOAT_IS_NEG_INF:
ram54288 0:dbad57390bd1 749 case UNITY_FLOAT_IS_NOT_NEG_INF:
ram54288 0:dbad57390bd1 750 is_trait = isinf(actual) & isneg(actual);
ram54288 0:dbad57390bd1 751 break;
ram54288 0:dbad57390bd1 752
ram54288 0:dbad57390bd1 753 /* NaN is the only floating point value that does NOT equal itself. Therefore if Actual == Actual, then it is NOT NaN. */
ram54288 0:dbad57390bd1 754 case UNITY_FLOAT_IS_NAN:
ram54288 0:dbad57390bd1 755 case UNITY_FLOAT_IS_NOT_NAN:
ram54288 0:dbad57390bd1 756 is_trait = isnan(actual);
ram54288 0:dbad57390bd1 757 break;
ram54288 0:dbad57390bd1 758
ram54288 0:dbad57390bd1 759 /* A determinate number is non infinite and not NaN. (therefore the opposite of the two above) */
ram54288 0:dbad57390bd1 760 case UNITY_FLOAT_IS_DET:
ram54288 0:dbad57390bd1 761 case UNITY_FLOAT_IS_NOT_DET:
ram54288 0:dbad57390bd1 762 if (isinf(actual) | isnan(actual))
ram54288 0:dbad57390bd1 763 is_trait = 0;
ram54288 0:dbad57390bd1 764 else
ram54288 0:dbad57390bd1 765 is_trait = 1;
ram54288 0:dbad57390bd1 766 break;
ram54288 0:dbad57390bd1 767
ram54288 0:dbad57390bd1 768 default:
ram54288 0:dbad57390bd1 769 trait_index = 0;
ram54288 0:dbad57390bd1 770 trait_names[0] = UnityStrInvalidFloatTrait;
ram54288 0:dbad57390bd1 771 break;
ram54288 0:dbad57390bd1 772 }
ram54288 0:dbad57390bd1 773
ram54288 0:dbad57390bd1 774 if (is_trait != should_be_trait)
ram54288 0:dbad57390bd1 775 {
ram54288 0:dbad57390bd1 776 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 777 UnityPrint(UnityStrExpected);
ram54288 0:dbad57390bd1 778 if (!should_be_trait)
ram54288 0:dbad57390bd1 779 UnityPrint(UnityStrNot);
ram54288 0:dbad57390bd1 780 UnityPrint(trait_names[trait_index]);
ram54288 0:dbad57390bd1 781 UnityPrint(UnityStrWas);
ram54288 0:dbad57390bd1 782 #ifdef UNITY_FLOAT_VERBOSE
ram54288 0:dbad57390bd1 783 UnityPrintFloat(actual);
ram54288 0:dbad57390bd1 784 #else
ram54288 0:dbad57390bd1 785 if (should_be_trait)
ram54288 0:dbad57390bd1 786 UnityPrint(UnityStrNot);
ram54288 0:dbad57390bd1 787 UnityPrint(trait_names[trait_index]);
ram54288 0:dbad57390bd1 788 #endif
ram54288 0:dbad57390bd1 789 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 790 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 791 }
ram54288 0:dbad57390bd1 792 }
ram54288 0:dbad57390bd1 793
ram54288 0:dbad57390bd1 794 #endif /* not UNITY_EXCLUDE_FLOAT */
ram54288 0:dbad57390bd1 795
ram54288 0:dbad57390bd1 796 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 797 #ifndef UNITY_EXCLUDE_DOUBLE
ram54288 0:dbad57390bd1 798 void UnityAssertEqualDoubleArray(UNITY_PTR_ATTRIBUTE const _UD* expected,
ram54288 0:dbad57390bd1 799 UNITY_PTR_ATTRIBUTE const _UD* actual,
ram54288 0:dbad57390bd1 800 const _UU32 num_elements,
ram54288 0:dbad57390bd1 801 const char* msg,
ram54288 0:dbad57390bd1 802 const UNITY_LINE_TYPE lineNumber)
ram54288 0:dbad57390bd1 803 {
ram54288 0:dbad57390bd1 804 _UU32 elements = num_elements;
ram54288 0:dbad57390bd1 805 UNITY_PTR_ATTRIBUTE const _UD* ptr_expected = expected;
ram54288 0:dbad57390bd1 806 UNITY_PTR_ATTRIBUTE const _UD* ptr_actual = actual;
ram54288 0:dbad57390bd1 807 _UD diff, tol;
ram54288 0:dbad57390bd1 808
ram54288 0:dbad57390bd1 809 UNITY_SKIP_EXECUTION;
ram54288 0:dbad57390bd1 810
ram54288 0:dbad57390bd1 811 if (elements == 0)
ram54288 0:dbad57390bd1 812 {
ram54288 0:dbad57390bd1 813 UnityPrintPointlessAndBail();
ram54288 0:dbad57390bd1 814 }
ram54288 0:dbad57390bd1 815
ram54288 0:dbad57390bd1 816 if (UnityCheckArraysForNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg) == 1)
ram54288 0:dbad57390bd1 817 return;
ram54288 0:dbad57390bd1 818
ram54288 0:dbad57390bd1 819 while (elements--)
ram54288 0:dbad57390bd1 820 {
ram54288 0:dbad57390bd1 821 diff = *ptr_expected - *ptr_actual;
ram54288 0:dbad57390bd1 822 if (diff < 0.0)
ram54288 0:dbad57390bd1 823 diff = 0.0 - diff;
ram54288 0:dbad57390bd1 824 tol = UNITY_DOUBLE_PRECISION * *ptr_expected;
ram54288 0:dbad57390bd1 825 if (tol < 0.0)
ram54288 0:dbad57390bd1 826 tol = 0.0 - tol;
ram54288 0:dbad57390bd1 827
ram54288 0:dbad57390bd1 828 /* This first part of this condition will catch any NaN or Infinite values */
ram54288 0:dbad57390bd1 829 if (isnan(diff) || isinf(diff) || (diff > tol))
ram54288 0:dbad57390bd1 830 {
ram54288 0:dbad57390bd1 831 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 832 UnityPrint(UnityStrElement);
ram54288 0:dbad57390bd1 833 UnityPrintNumberUnsigned(num_elements - elements - 1);
ram54288 0:dbad57390bd1 834 #ifdef UNITY_DOUBLE_VERBOSE
ram54288 0:dbad57390bd1 835 UnityPrint(UnityStrExpected);
ram54288 0:dbad57390bd1 836 UnityPrintFloat((float)(*ptr_expected));
ram54288 0:dbad57390bd1 837 UnityPrint(UnityStrWas);
ram54288 0:dbad57390bd1 838 UnityPrintFloat((float)(*ptr_actual));
ram54288 0:dbad57390bd1 839 #else
ram54288 0:dbad57390bd1 840 UnityPrint(UnityStrDelta);
ram54288 0:dbad57390bd1 841 #endif
ram54288 0:dbad57390bd1 842 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 843 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 844 }
ram54288 0:dbad57390bd1 845 ptr_expected++;
ram54288 0:dbad57390bd1 846 ptr_actual++;
ram54288 0:dbad57390bd1 847 }
ram54288 0:dbad57390bd1 848 }
ram54288 0:dbad57390bd1 849
ram54288 0:dbad57390bd1 850 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 851 void UnityAssertDoublesWithin(const _UD delta,
ram54288 0:dbad57390bd1 852 const _UD expected,
ram54288 0:dbad57390bd1 853 const _UD actual,
ram54288 0:dbad57390bd1 854 const char* msg,
ram54288 0:dbad57390bd1 855 const UNITY_LINE_TYPE lineNumber)
ram54288 0:dbad57390bd1 856 {
ram54288 0:dbad57390bd1 857 _UD diff = actual - expected;
ram54288 0:dbad57390bd1 858 _UD pos_delta = delta;
ram54288 0:dbad57390bd1 859
ram54288 0:dbad57390bd1 860 UNITY_SKIP_EXECUTION;
ram54288 0:dbad57390bd1 861
ram54288 0:dbad57390bd1 862 if (diff < 0.0)
ram54288 0:dbad57390bd1 863 {
ram54288 0:dbad57390bd1 864 diff = 0.0 - diff;
ram54288 0:dbad57390bd1 865 }
ram54288 0:dbad57390bd1 866 if (pos_delta < 0.0)
ram54288 0:dbad57390bd1 867 {
ram54288 0:dbad57390bd1 868 pos_delta = 0.0 - pos_delta;
ram54288 0:dbad57390bd1 869 }
ram54288 0:dbad57390bd1 870
ram54288 0:dbad57390bd1 871 /* This first part of this condition will catch any NaN or Infinite values */
ram54288 0:dbad57390bd1 872 if (isnan(diff) || isinf(diff) || (pos_delta < diff))
ram54288 0:dbad57390bd1 873 {
ram54288 0:dbad57390bd1 874 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 875 #ifdef UNITY_DOUBLE_VERBOSE
ram54288 0:dbad57390bd1 876 UnityPrint(UnityStrExpected);
ram54288 0:dbad57390bd1 877 UnityPrintFloat((float)expected);
ram54288 0:dbad57390bd1 878 UnityPrint(UnityStrWas);
ram54288 0:dbad57390bd1 879 UnityPrintFloat((float)actual);
ram54288 0:dbad57390bd1 880 #else
ram54288 0:dbad57390bd1 881 UnityPrint(UnityStrDelta);
ram54288 0:dbad57390bd1 882 #endif
ram54288 0:dbad57390bd1 883 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 884 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 885 }
ram54288 0:dbad57390bd1 886 }
ram54288 0:dbad57390bd1 887
ram54288 0:dbad57390bd1 888 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 889
ram54288 0:dbad57390bd1 890 void UnityAssertDoubleSpecial(const _UD actual,
ram54288 0:dbad57390bd1 891 const char* msg,
ram54288 0:dbad57390bd1 892 const UNITY_LINE_TYPE lineNumber,
ram54288 0:dbad57390bd1 893 const UNITY_FLOAT_TRAIT_T style)
ram54288 0:dbad57390bd1 894 {
ram54288 0:dbad57390bd1 895 const char* trait_names[] = { UnityStrInf, UnityStrNegInf, UnityStrNaN, UnityStrDet };
ram54288 0:dbad57390bd1 896 _U_SINT should_be_trait = ((_U_SINT)style & 1);
ram54288 0:dbad57390bd1 897 _U_SINT is_trait = !should_be_trait;
ram54288 0:dbad57390bd1 898 _U_SINT trait_index = (_U_SINT)(style >> 1);
ram54288 0:dbad57390bd1 899
ram54288 0:dbad57390bd1 900 UNITY_SKIP_EXECUTION;
ram54288 0:dbad57390bd1 901
ram54288 0:dbad57390bd1 902 switch(style)
ram54288 0:dbad57390bd1 903 {
ram54288 0:dbad57390bd1 904 /* To determine Inf / Neg Inf, we compare to an Inf / Neg Inf value we create on the fly
ram54288 0:dbad57390bd1 905 * We are using a variable to hold the zero value because some compilers complain about dividing by zero otherwise */
ram54288 0:dbad57390bd1 906 case UNITY_FLOAT_IS_INF:
ram54288 0:dbad57390bd1 907 case UNITY_FLOAT_IS_NOT_INF:
ram54288 0:dbad57390bd1 908 is_trait = isinf(actual) & ispos(actual);
ram54288 0:dbad57390bd1 909 break;
ram54288 0:dbad57390bd1 910 case UNITY_FLOAT_IS_NEG_INF:
ram54288 0:dbad57390bd1 911 case UNITY_FLOAT_IS_NOT_NEG_INF:
ram54288 0:dbad57390bd1 912 is_trait = isinf(actual) & isneg(actual);
ram54288 0:dbad57390bd1 913 break;
ram54288 0:dbad57390bd1 914
ram54288 0:dbad57390bd1 915 /* NaN is the only floating point value that does NOT equal itself. Therefore if Actual == Actual, then it is NOT NaN. */
ram54288 0:dbad57390bd1 916 case UNITY_FLOAT_IS_NAN:
ram54288 0:dbad57390bd1 917 case UNITY_FLOAT_IS_NOT_NAN:
ram54288 0:dbad57390bd1 918 is_trait = isnan(actual);
ram54288 0:dbad57390bd1 919 break;
ram54288 0:dbad57390bd1 920
ram54288 0:dbad57390bd1 921 /* A determinate number is non infinite and not NaN. (therefore the opposite of the two above) */
ram54288 0:dbad57390bd1 922 case UNITY_FLOAT_IS_DET:
ram54288 0:dbad57390bd1 923 case UNITY_FLOAT_IS_NOT_DET:
ram54288 0:dbad57390bd1 924 if (isinf(actual) | isnan(actual))
ram54288 0:dbad57390bd1 925 is_trait = 0;
ram54288 0:dbad57390bd1 926 else
ram54288 0:dbad57390bd1 927 is_trait = 1;
ram54288 0:dbad57390bd1 928 break;
ram54288 0:dbad57390bd1 929
ram54288 0:dbad57390bd1 930 default:
ram54288 0:dbad57390bd1 931 trait_index = 0;
ram54288 0:dbad57390bd1 932 trait_names[0] = UnityStrInvalidFloatTrait;
ram54288 0:dbad57390bd1 933 break;
ram54288 0:dbad57390bd1 934 }
ram54288 0:dbad57390bd1 935
ram54288 0:dbad57390bd1 936 if (is_trait != should_be_trait)
ram54288 0:dbad57390bd1 937 {
ram54288 0:dbad57390bd1 938 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 939 UnityPrint(UnityStrExpected);
ram54288 0:dbad57390bd1 940 if (!should_be_trait)
ram54288 0:dbad57390bd1 941 UnityPrint(UnityStrNot);
ram54288 0:dbad57390bd1 942 UnityPrint(trait_names[trait_index]);
ram54288 0:dbad57390bd1 943 UnityPrint(UnityStrWas);
ram54288 0:dbad57390bd1 944 #ifdef UNITY_DOUBLE_VERBOSE
ram54288 0:dbad57390bd1 945 UnityPrintFloat(actual);
ram54288 0:dbad57390bd1 946 #else
ram54288 0:dbad57390bd1 947 if (should_be_trait)
ram54288 0:dbad57390bd1 948 UnityPrint(UnityStrNot);
ram54288 0:dbad57390bd1 949 UnityPrint(trait_names[trait_index]);
ram54288 0:dbad57390bd1 950 #endif
ram54288 0:dbad57390bd1 951 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 952 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 953 }
ram54288 0:dbad57390bd1 954 }
ram54288 0:dbad57390bd1 955
ram54288 0:dbad57390bd1 956
ram54288 0:dbad57390bd1 957 #endif /* not UNITY_EXCLUDE_DOUBLE */
ram54288 0:dbad57390bd1 958
ram54288 0:dbad57390bd1 959 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 960 void UnityAssertNumbersWithin( const _U_UINT delta,
ram54288 0:dbad57390bd1 961 const _U_SINT expected,
ram54288 0:dbad57390bd1 962 const _U_SINT actual,
ram54288 0:dbad57390bd1 963 const char* msg,
ram54288 0:dbad57390bd1 964 const UNITY_LINE_TYPE lineNumber,
ram54288 0:dbad57390bd1 965 const UNITY_DISPLAY_STYLE_T style)
ram54288 0:dbad57390bd1 966 {
ram54288 0:dbad57390bd1 967 UNITY_SKIP_EXECUTION;
ram54288 0:dbad57390bd1 968
ram54288 0:dbad57390bd1 969 if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT)
ram54288 0:dbad57390bd1 970 {
ram54288 0:dbad57390bd1 971 if (actual > expected)
ram54288 0:dbad57390bd1 972 Unity.CurrentTestFailed = ((_U_UINT)(actual - expected) > delta);
ram54288 0:dbad57390bd1 973 else
ram54288 0:dbad57390bd1 974 Unity.CurrentTestFailed = ((_U_UINT)(expected - actual) > delta);
ram54288 0:dbad57390bd1 975 }
ram54288 0:dbad57390bd1 976 else
ram54288 0:dbad57390bd1 977 {
ram54288 0:dbad57390bd1 978 if ((_U_UINT)actual > (_U_UINT)expected)
ram54288 0:dbad57390bd1 979 Unity.CurrentTestFailed = ((_U_UINT)(actual - expected) > delta);
ram54288 0:dbad57390bd1 980 else
ram54288 0:dbad57390bd1 981 Unity.CurrentTestFailed = ((_U_UINT)(expected - actual) > delta);
ram54288 0:dbad57390bd1 982 }
ram54288 0:dbad57390bd1 983
ram54288 0:dbad57390bd1 984 if (Unity.CurrentTestFailed)
ram54288 0:dbad57390bd1 985 {
ram54288 0:dbad57390bd1 986 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 987 UnityPrint(UnityStrDelta);
ram54288 0:dbad57390bd1 988 UnityPrintNumberByStyle((_U_SINT)delta, style);
ram54288 0:dbad57390bd1 989 UnityPrint(UnityStrExpected);
ram54288 0:dbad57390bd1 990 UnityPrintNumberByStyle(expected, style);
ram54288 0:dbad57390bd1 991 UnityPrint(UnityStrWas);
ram54288 0:dbad57390bd1 992 UnityPrintNumberByStyle(actual, style);
ram54288 0:dbad57390bd1 993 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 994 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 995 }
ram54288 0:dbad57390bd1 996 }
ram54288 0:dbad57390bd1 997
ram54288 0:dbad57390bd1 998 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 999 void UnityAssertEqualString(const char* expected,
ram54288 0:dbad57390bd1 1000 const char* actual,
ram54288 0:dbad57390bd1 1001 const char* msg,
ram54288 0:dbad57390bd1 1002 const UNITY_LINE_TYPE lineNumber)
ram54288 0:dbad57390bd1 1003 {
ram54288 0:dbad57390bd1 1004 _UU32 i;
ram54288 0:dbad57390bd1 1005
ram54288 0:dbad57390bd1 1006 UNITY_SKIP_EXECUTION;
ram54288 0:dbad57390bd1 1007
ram54288 0:dbad57390bd1 1008 /* if both pointers not null compare the strings */
ram54288 0:dbad57390bd1 1009 if (expected && actual)
ram54288 0:dbad57390bd1 1010 {
ram54288 0:dbad57390bd1 1011 for (i = 0; expected[i] || actual[i]; i++)
ram54288 0:dbad57390bd1 1012 {
ram54288 0:dbad57390bd1 1013 if (expected[i] != actual[i])
ram54288 0:dbad57390bd1 1014 {
ram54288 0:dbad57390bd1 1015 Unity.CurrentTestFailed = 1;
ram54288 0:dbad57390bd1 1016 break;
ram54288 0:dbad57390bd1 1017 }
ram54288 0:dbad57390bd1 1018 }
ram54288 0:dbad57390bd1 1019 }
ram54288 0:dbad57390bd1 1020 else
ram54288 0:dbad57390bd1 1021 { /* handle case of one pointers being null (if both null, test should pass) */
ram54288 0:dbad57390bd1 1022 if (expected != actual)
ram54288 0:dbad57390bd1 1023 {
ram54288 0:dbad57390bd1 1024 Unity.CurrentTestFailed = 1;
ram54288 0:dbad57390bd1 1025 }
ram54288 0:dbad57390bd1 1026 }
ram54288 0:dbad57390bd1 1027
ram54288 0:dbad57390bd1 1028 if (Unity.CurrentTestFailed)
ram54288 0:dbad57390bd1 1029 {
ram54288 0:dbad57390bd1 1030 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 1031 UnityPrintExpectedAndActualStrings(expected, actual);
ram54288 0:dbad57390bd1 1032 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 1033 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 1034 }
ram54288 0:dbad57390bd1 1035 }
ram54288 0:dbad57390bd1 1036
ram54288 0:dbad57390bd1 1037 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 1038 void UnityAssertEqualStringLen(const char* expected,
ram54288 0:dbad57390bd1 1039 const char* actual,
ram54288 0:dbad57390bd1 1040 const _UU32 length,
ram54288 0:dbad57390bd1 1041 const char* msg,
ram54288 0:dbad57390bd1 1042 const UNITY_LINE_TYPE lineNumber)
ram54288 0:dbad57390bd1 1043 {
ram54288 0:dbad57390bd1 1044 _UU32 i;
ram54288 0:dbad57390bd1 1045
ram54288 0:dbad57390bd1 1046 UNITY_SKIP_EXECUTION;
ram54288 0:dbad57390bd1 1047
ram54288 0:dbad57390bd1 1048 /* if both pointers not null compare the strings */
ram54288 0:dbad57390bd1 1049 if (expected && actual)
ram54288 0:dbad57390bd1 1050 {
ram54288 0:dbad57390bd1 1051 for (i = 0; (expected[i] || actual[i]) && i < length; i++)
ram54288 0:dbad57390bd1 1052 {
ram54288 0:dbad57390bd1 1053 if (expected[i] != actual[i])
ram54288 0:dbad57390bd1 1054 {
ram54288 0:dbad57390bd1 1055 Unity.CurrentTestFailed = 1;
ram54288 0:dbad57390bd1 1056 break;
ram54288 0:dbad57390bd1 1057 }
ram54288 0:dbad57390bd1 1058 }
ram54288 0:dbad57390bd1 1059 }
ram54288 0:dbad57390bd1 1060 else
ram54288 0:dbad57390bd1 1061 { /* handle case of one pointers being null (if both null, test should pass) */
ram54288 0:dbad57390bd1 1062 if (expected != actual)
ram54288 0:dbad57390bd1 1063 {
ram54288 0:dbad57390bd1 1064 Unity.CurrentTestFailed = 1;
ram54288 0:dbad57390bd1 1065 }
ram54288 0:dbad57390bd1 1066 }
ram54288 0:dbad57390bd1 1067
ram54288 0:dbad57390bd1 1068 if (Unity.CurrentTestFailed)
ram54288 0:dbad57390bd1 1069 {
ram54288 0:dbad57390bd1 1070 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 1071 UnityPrintExpectedAndActualStringsLen(expected, actual, length);
ram54288 0:dbad57390bd1 1072 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 1073 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 1074 }
ram54288 0:dbad57390bd1 1075 }
ram54288 0:dbad57390bd1 1076
ram54288 0:dbad57390bd1 1077
ram54288 0:dbad57390bd1 1078 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 1079 void UnityAssertEqualStringArray( const char** expected,
ram54288 0:dbad57390bd1 1080 const char** actual,
ram54288 0:dbad57390bd1 1081 const _UU32 num_elements,
ram54288 0:dbad57390bd1 1082 const char* msg,
ram54288 0:dbad57390bd1 1083 const UNITY_LINE_TYPE lineNumber)
ram54288 0:dbad57390bd1 1084 {
ram54288 0:dbad57390bd1 1085 _UU32 i, j = 0;
ram54288 0:dbad57390bd1 1086
ram54288 0:dbad57390bd1 1087 UNITY_SKIP_EXECUTION;
ram54288 0:dbad57390bd1 1088
ram54288 0:dbad57390bd1 1089 /* if no elements, it's an error */
ram54288 0:dbad57390bd1 1090 if (num_elements == 0)
ram54288 0:dbad57390bd1 1091 {
ram54288 0:dbad57390bd1 1092 UnityPrintPointlessAndBail();
ram54288 0:dbad57390bd1 1093 }
ram54288 0:dbad57390bd1 1094
ram54288 0:dbad57390bd1 1095 if (UnityCheckArraysForNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg) == 1)
ram54288 0:dbad57390bd1 1096 return;
ram54288 0:dbad57390bd1 1097
ram54288 0:dbad57390bd1 1098 do
ram54288 0:dbad57390bd1 1099 {
ram54288 0:dbad57390bd1 1100 /* if both pointers not null compare the strings */
ram54288 0:dbad57390bd1 1101 if (expected[j] && actual[j])
ram54288 0:dbad57390bd1 1102 {
ram54288 0:dbad57390bd1 1103 for (i = 0; expected[j][i] || actual[j][i]; i++)
ram54288 0:dbad57390bd1 1104 {
ram54288 0:dbad57390bd1 1105 if (expected[j][i] != actual[j][i])
ram54288 0:dbad57390bd1 1106 {
ram54288 0:dbad57390bd1 1107 Unity.CurrentTestFailed = 1;
ram54288 0:dbad57390bd1 1108 break;
ram54288 0:dbad57390bd1 1109 }
ram54288 0:dbad57390bd1 1110 }
ram54288 0:dbad57390bd1 1111 }
ram54288 0:dbad57390bd1 1112 else
ram54288 0:dbad57390bd1 1113 { /* handle case of one pointers being null (if both null, test should pass) */
ram54288 0:dbad57390bd1 1114 if (expected[j] != actual[j])
ram54288 0:dbad57390bd1 1115 {
ram54288 0:dbad57390bd1 1116 Unity.CurrentTestFailed = 1;
ram54288 0:dbad57390bd1 1117 }
ram54288 0:dbad57390bd1 1118 }
ram54288 0:dbad57390bd1 1119
ram54288 0:dbad57390bd1 1120 if (Unity.CurrentTestFailed)
ram54288 0:dbad57390bd1 1121 {
ram54288 0:dbad57390bd1 1122 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 1123 if (num_elements > 1)
ram54288 0:dbad57390bd1 1124 {
ram54288 0:dbad57390bd1 1125 UnityPrint(UnityStrElement);
ram54288 0:dbad57390bd1 1126 UnityPrintNumberUnsigned(j);
ram54288 0:dbad57390bd1 1127 }
ram54288 0:dbad57390bd1 1128 UnityPrintExpectedAndActualStrings((const char*)(expected[j]), (const char*)(actual[j]));
ram54288 0:dbad57390bd1 1129 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 1130 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 1131 }
ram54288 0:dbad57390bd1 1132 } while (++j < num_elements);
ram54288 0:dbad57390bd1 1133 }
ram54288 0:dbad57390bd1 1134
ram54288 0:dbad57390bd1 1135 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 1136 void UnityAssertEqualMemory( UNITY_INTERNAL_PTR expected,
ram54288 0:dbad57390bd1 1137 UNITY_INTERNAL_PTR actual,
ram54288 0:dbad57390bd1 1138 const _UU32 length,
ram54288 0:dbad57390bd1 1139 const _UU32 num_elements,
ram54288 0:dbad57390bd1 1140 const char* msg,
ram54288 0:dbad57390bd1 1141 const UNITY_LINE_TYPE lineNumber)
ram54288 0:dbad57390bd1 1142 {
ram54288 0:dbad57390bd1 1143 UNITY_PTR_ATTRIBUTE const unsigned char* ptr_exp = (UNITY_PTR_ATTRIBUTE const unsigned char*)expected;
ram54288 0:dbad57390bd1 1144 UNITY_PTR_ATTRIBUTE const unsigned char* ptr_act = (UNITY_PTR_ATTRIBUTE const unsigned char*)actual;
ram54288 0:dbad57390bd1 1145 _UU32 elements = num_elements;
ram54288 0:dbad57390bd1 1146 _UU32 bytes;
ram54288 0:dbad57390bd1 1147
ram54288 0:dbad57390bd1 1148 UNITY_SKIP_EXECUTION;
ram54288 0:dbad57390bd1 1149
ram54288 0:dbad57390bd1 1150 if ((elements == 0) || (length == 0))
ram54288 0:dbad57390bd1 1151 {
ram54288 0:dbad57390bd1 1152 UnityPrintPointlessAndBail();
ram54288 0:dbad57390bd1 1153 }
ram54288 0:dbad57390bd1 1154
ram54288 0:dbad57390bd1 1155 if (UnityCheckArraysForNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg) == 1)
ram54288 0:dbad57390bd1 1156 return;
ram54288 0:dbad57390bd1 1157
ram54288 0:dbad57390bd1 1158 while (elements--)
ram54288 0:dbad57390bd1 1159 {
ram54288 0:dbad57390bd1 1160 /* /////////////////////////////////// */
ram54288 0:dbad57390bd1 1161 bytes = length;
ram54288 0:dbad57390bd1 1162 while (bytes--)
ram54288 0:dbad57390bd1 1163 {
ram54288 0:dbad57390bd1 1164 if (*ptr_exp != *ptr_act)
ram54288 0:dbad57390bd1 1165 {
ram54288 0:dbad57390bd1 1166 UnityTestResultsFailBegin(lineNumber);
ram54288 0:dbad57390bd1 1167 UnityPrint(UnityStrMemory);
ram54288 0:dbad57390bd1 1168 if (num_elements > 1)
ram54288 0:dbad57390bd1 1169 {
ram54288 0:dbad57390bd1 1170 UnityPrint(UnityStrElement);
ram54288 0:dbad57390bd1 1171 UnityPrintNumberUnsigned(num_elements - elements - 1);
ram54288 0:dbad57390bd1 1172 }
ram54288 0:dbad57390bd1 1173 UnityPrint(UnityStrByte);
ram54288 0:dbad57390bd1 1174 UnityPrintNumberUnsigned(length - bytes - 1);
ram54288 0:dbad57390bd1 1175 UnityPrint(UnityStrExpected);
ram54288 0:dbad57390bd1 1176 UnityPrintNumberByStyle(*ptr_exp, UNITY_DISPLAY_STYLE_HEX8);
ram54288 0:dbad57390bd1 1177 UnityPrint(UnityStrWas);
ram54288 0:dbad57390bd1 1178 UnityPrintNumberByStyle(*ptr_act, UNITY_DISPLAY_STYLE_HEX8);
ram54288 0:dbad57390bd1 1179 UnityAddMsgIfSpecified(msg);
ram54288 0:dbad57390bd1 1180 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 1181 }
ram54288 0:dbad57390bd1 1182 ptr_exp = (UNITY_INTERNAL_PTR)((_UP)ptr_exp + 1);
ram54288 0:dbad57390bd1 1183 ptr_act = (UNITY_INTERNAL_PTR)((_UP)ptr_act + 1);
ram54288 0:dbad57390bd1 1184 }
ram54288 0:dbad57390bd1 1185 /* /////////////////////////////////// */
ram54288 0:dbad57390bd1 1186
ram54288 0:dbad57390bd1 1187 }
ram54288 0:dbad57390bd1 1188 }
ram54288 0:dbad57390bd1 1189
ram54288 0:dbad57390bd1 1190 /*-----------------------------------------------
ram54288 0:dbad57390bd1 1191 * Control Functions
ram54288 0:dbad57390bd1 1192 *-----------------------------------------------*/
ram54288 0:dbad57390bd1 1193
ram54288 0:dbad57390bd1 1194 void UnityFail(const char* msg, const UNITY_LINE_TYPE line)
ram54288 0:dbad57390bd1 1195 {
ram54288 0:dbad57390bd1 1196 UNITY_SKIP_EXECUTION;
ram54288 0:dbad57390bd1 1197
ram54288 0:dbad57390bd1 1198 UnityTestResultsBegin(Unity.TestFile, line);
ram54288 0:dbad57390bd1 1199 /* SA_PATCH: Make failures more noticable. */
ram54288 0:dbad57390bd1 1200 UnityPrintVisibleFailure();
ram54288 0:dbad57390bd1 1201 //UnityPrintFail();
ram54288 0:dbad57390bd1 1202 if (msg != NULL)
ram54288 0:dbad57390bd1 1203 {
ram54288 0:dbad57390bd1 1204 UNITY_OUTPUT_CHAR(':');
ram54288 0:dbad57390bd1 1205
ram54288 0:dbad57390bd1 1206 #ifndef UNITY_EXCLUDE_DETAILS
ram54288 0:dbad57390bd1 1207 if (Unity.CurrentDetail1)
ram54288 0:dbad57390bd1 1208 {
ram54288 0:dbad57390bd1 1209 UnityPrint(UnityStrDetail1Name);
ram54288 0:dbad57390bd1 1210 UnityPrint(Unity.CurrentDetail1);
ram54288 0:dbad57390bd1 1211 if (Unity.CurrentDetail2)
ram54288 0:dbad57390bd1 1212 {
ram54288 0:dbad57390bd1 1213 UnityPrint(UnityStrDetail2Name);
ram54288 0:dbad57390bd1 1214 UnityPrint(Unity.CurrentDetail2);
ram54288 0:dbad57390bd1 1215 }
ram54288 0:dbad57390bd1 1216 UnityPrint(UnityStrSpacer);
ram54288 0:dbad57390bd1 1217 }
ram54288 0:dbad57390bd1 1218 #endif
ram54288 0:dbad57390bd1 1219 if (msg[0] != ' ')
ram54288 0:dbad57390bd1 1220 {
ram54288 0:dbad57390bd1 1221 UNITY_OUTPUT_CHAR(' ');
ram54288 0:dbad57390bd1 1222 }
ram54288 0:dbad57390bd1 1223 UnityPrint(msg);
ram54288 0:dbad57390bd1 1224 }
ram54288 0:dbad57390bd1 1225
ram54288 0:dbad57390bd1 1226 UNITY_FAIL_AND_BAIL;
ram54288 0:dbad57390bd1 1227 }
ram54288 0:dbad57390bd1 1228
ram54288 0:dbad57390bd1 1229 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 1230 void UnityIgnore(const char* msg, const UNITY_LINE_TYPE line)
ram54288 0:dbad57390bd1 1231 {
ram54288 0:dbad57390bd1 1232 UNITY_SKIP_EXECUTION;
ram54288 0:dbad57390bd1 1233
ram54288 0:dbad57390bd1 1234 UnityTestResultsBegin(Unity.TestFile, line);
ram54288 0:dbad57390bd1 1235 UnityPrint(UnityStrIgnore);
ram54288 0:dbad57390bd1 1236 if (msg != NULL)
ram54288 0:dbad57390bd1 1237 {
ram54288 0:dbad57390bd1 1238 UNITY_OUTPUT_CHAR(':');
ram54288 0:dbad57390bd1 1239 UNITY_OUTPUT_CHAR(' ');
ram54288 0:dbad57390bd1 1240 UnityPrint(msg);
ram54288 0:dbad57390bd1 1241 }
ram54288 0:dbad57390bd1 1242 UNITY_IGNORE_AND_BAIL;
ram54288 0:dbad57390bd1 1243 }
ram54288 0:dbad57390bd1 1244
ram54288 0:dbad57390bd1 1245 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 1246 #if defined(UNITY_WEAK_ATTRIBUTE)
ram54288 0:dbad57390bd1 1247 UNITY_WEAK_ATTRIBUTE void setUp(void) { }
ram54288 0:dbad57390bd1 1248 UNITY_WEAK_ATTRIBUTE void tearDown(void) { }
ram54288 0:dbad57390bd1 1249 #elif defined(UNITY_WEAK_PRAGMA)
ram54288 0:dbad57390bd1 1250 # pragma weak setUp
ram54288 0:dbad57390bd1 1251 void setUp(void) { }
ram54288 0:dbad57390bd1 1252 # pragma weak tearDown
ram54288 0:dbad57390bd1 1253 void tearDown(void) { }
ram54288 0:dbad57390bd1 1254 #endif
ram54288 0:dbad57390bd1 1255 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 1256 void UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int FuncLineNum)
ram54288 0:dbad57390bd1 1257 {
ram54288 0:dbad57390bd1 1258 Unity.CurrentTestName = FuncName;
ram54288 0:dbad57390bd1 1259 Unity.CurrentTestLineNumber = (UNITY_LINE_TYPE)FuncLineNum;
ram54288 0:dbad57390bd1 1260 Unity.NumberOfTests++;
ram54288 0:dbad57390bd1 1261 UNITY_CLR_DETAILS();
ram54288 0:dbad57390bd1 1262 if (TEST_PROTECT())
ram54288 0:dbad57390bd1 1263 {
ram54288 0:dbad57390bd1 1264 setUp();
ram54288 0:dbad57390bd1 1265 Func();
ram54288 0:dbad57390bd1 1266 }
ram54288 0:dbad57390bd1 1267 if (TEST_PROTECT() && !(Unity.CurrentTestIgnored))
ram54288 0:dbad57390bd1 1268 {
ram54288 0:dbad57390bd1 1269 tearDown();
ram54288 0:dbad57390bd1 1270 }
ram54288 0:dbad57390bd1 1271 UnityConcludeTest();
ram54288 0:dbad57390bd1 1272 }
ram54288 0:dbad57390bd1 1273
ram54288 0:dbad57390bd1 1274 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 1275 void UnityBegin(const char* filename)
ram54288 0:dbad57390bd1 1276 {
ram54288 0:dbad57390bd1 1277 Unity.TestFile = filename;
ram54288 0:dbad57390bd1 1278 Unity.CurrentTestName = NULL;
ram54288 0:dbad57390bd1 1279 Unity.CurrentTestLineNumber = 0;
ram54288 0:dbad57390bd1 1280 Unity.NumberOfTests = 0;
ram54288 0:dbad57390bd1 1281 Unity.TestFailures = 0;
ram54288 0:dbad57390bd1 1282 Unity.TestIgnores = 0;
ram54288 0:dbad57390bd1 1283 Unity.CurrentTestFailed = 0;
ram54288 0:dbad57390bd1 1284 Unity.CurrentTestIgnored = 0;
ram54288 0:dbad57390bd1 1285
ram54288 0:dbad57390bd1 1286 UNITY_CLR_DETAILS();
ram54288 0:dbad57390bd1 1287 UNITY_OUTPUT_START();
ram54288 0:dbad57390bd1 1288 }
ram54288 0:dbad57390bd1 1289
ram54288 0:dbad57390bd1 1290 /*-----------------------------------------------*/
ram54288 0:dbad57390bd1 1291 int UnityEnd(void)
ram54288 0:dbad57390bd1 1292 {
ram54288 0:dbad57390bd1 1293 UNITY_PRINT_EOL();
ram54288 0:dbad57390bd1 1294 UnityPrint(UnityStrBreaker);
ram54288 0:dbad57390bd1 1295 UNITY_PRINT_EOL();
ram54288 0:dbad57390bd1 1296 UnityPrintNumber((_U_SINT)(Unity.NumberOfTests));
ram54288 0:dbad57390bd1 1297 UnityPrint(UnityStrResultsTests);
ram54288 0:dbad57390bd1 1298 UnityPrintNumber((_U_SINT)(Unity.TestFailures));
ram54288 0:dbad57390bd1 1299 UnityPrint(UnityStrResultsFailures);
ram54288 0:dbad57390bd1 1300 UnityPrintNumber((_U_SINT)(Unity.TestIgnores));
ram54288 0:dbad57390bd1 1301 UnityPrint(UnityStrResultsIgnored);
ram54288 0:dbad57390bd1 1302 UNITY_PRINT_EOL();
ram54288 0:dbad57390bd1 1303 if (Unity.TestFailures == 0U)
ram54288 0:dbad57390bd1 1304 {
ram54288 0:dbad57390bd1 1305 UnityPrintOk();
ram54288 0:dbad57390bd1 1306 }
ram54288 0:dbad57390bd1 1307 else
ram54288 0:dbad57390bd1 1308 {
ram54288 0:dbad57390bd1 1309 UnityPrintFail();
ram54288 0:dbad57390bd1 1310 #ifdef UNITY_DIFFERENTIATE_FINAL_FAIL
ram54288 0:dbad57390bd1 1311 UNITY_OUTPUT_CHAR('E'); UNITY_OUTPUT_CHAR('D');
ram54288 0:dbad57390bd1 1312 #endif
ram54288 0:dbad57390bd1 1313 }
ram54288 0:dbad57390bd1 1314 UNITY_PRINT_EOL();
ram54288 0:dbad57390bd1 1315 UNITY_FLUSH_CALL();
ram54288 0:dbad57390bd1 1316 UNITY_OUTPUT_COMPLETE();
ram54288 0:dbad57390bd1 1317 return (int)(Unity.TestFailures);
ram54288 0:dbad57390bd1 1318 }
ram54288 0:dbad57390bd1 1319
ram54288 0:dbad57390bd1 1320 /*-----------------------------------------------*/