ON Semiconductor / mbed-os

Dependents:   mbed-TFT-example-NCS36510 mbed-Accelerometer-example-NCS36510 mbed-Accelerometer-example-NCS36510

Committer:
group-onsemi
Date:
Wed Jan 25 20:34:15 2017 +0000
Revision:
0:098463de4c5d
Initial commit

Who changed what in which revision?

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