mirror of
https://github.com/hathach/tinyusb.git
synced 2025-05-08 23:01:36 +08:00
add unity to test project
This commit is contained in:
parent
e4a69a6f71
commit
01a97b74f5
BIN
tests/unity/docs/Unity Summary.odt
Normal file
BIN
tests/unity/docs/Unity Summary.odt
Normal file
Binary file not shown.
BIN
tests/unity/docs/Unity Summary.pdf
Normal file
BIN
tests/unity/docs/Unity Summary.pdf
Normal file
Binary file not shown.
216
tests/unity/docs/Unity Summary.txt
Normal file
216
tests/unity/docs/Unity Summary.txt
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
==============
|
||||||
|
Unity Test API
|
||||||
|
==============
|
||||||
|
|
||||||
|
[Copyright (c) 2007 - 2012 Unity Project by Mike Karlesky, Mark VanderVoord, and Greg Williams]
|
||||||
|
|
||||||
|
-------------
|
||||||
|
Running Tests
|
||||||
|
-------------
|
||||||
|
|
||||||
|
RUN_TEST(func, linenum)
|
||||||
|
|
||||||
|
Each Test is run within the macro RUN_TEST. This macro performs necessary setup before the test is called and handles cleanup and result tabulation afterwards.
|
||||||
|
|
||||||
|
--------------
|
||||||
|
Ignoring Tests
|
||||||
|
--------------
|
||||||
|
|
||||||
|
There are times when a test is incomplete or not valid for some reason. At these times, TEST_IGNORE can be called. Control will immediately be returned to the caller of the test, and no failures will be returned.
|
||||||
|
|
||||||
|
TEST_IGNORE()
|
||||||
|
|
||||||
|
Ignore this test and return immediately
|
||||||
|
|
||||||
|
TEST_IGNORE_MESSAGE (message)
|
||||||
|
|
||||||
|
Ignore this test and return immediately. Output a message stating why the test was ignored.
|
||||||
|
|
||||||
|
--------------
|
||||||
|
Aborting Tests
|
||||||
|
--------------
|
||||||
|
|
||||||
|
There are times when a test will contain an infinite loop on error conditions, or there may be reason to escape from the test early without executing the rest of the test. A pair of macros support this functionality in Unity. The first (TEST_PROTECT) sets up the feature, and handles emergency abort cases. TEST_ABORT can then be used at any time within the tests to return to the last TEST_PROTECT call.
|
||||||
|
|
||||||
|
TEST_PROTECT()
|
||||||
|
|
||||||
|
Setup and Catch macro
|
||||||
|
|
||||||
|
TEST_ABORT()
|
||||||
|
|
||||||
|
Abort Test macro
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
if (TEST_PROTECT() == 0)
|
||||||
|
{
|
||||||
|
MyTest();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
If MyTest calls TEST_ABORT, program control will immediately return to TEST_PROTECT with a non-zero return value.
|
||||||
|
|
||||||
|
|
||||||
|
=======================
|
||||||
|
Unity Assertion Summary
|
||||||
|
=======================
|
||||||
|
|
||||||
|
--------------------
|
||||||
|
Basic Validity Tests
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
TEST_ASSERT_TRUE(condition)
|
||||||
|
|
||||||
|
Evaluates whatever code is in condition and fails if it evaluates to false
|
||||||
|
|
||||||
|
TEST_ASSERT_FALSE(condition)
|
||||||
|
|
||||||
|
Evaluates whatever code is in condition and fails if it evaluates to true
|
||||||
|
|
||||||
|
TEST_ASSERT(condition)
|
||||||
|
|
||||||
|
Another way of calling TEST_ASSERT_TRUE
|
||||||
|
|
||||||
|
TEST_ASSERT_UNLESS(condition)
|
||||||
|
|
||||||
|
Another way of calling TEST_ASSERT_FALSE
|
||||||
|
|
||||||
|
TEST_FAIL()
|
||||||
|
TEST_FAIL_MESSAGE(message)
|
||||||
|
|
||||||
|
This test is automatically marked as a failure. The message is output stating why.
|
||||||
|
|
||||||
|
------------------------------
|
||||||
|
Numerical Assertions: Integers
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUAL_INT(expected, actual)
|
||||||
|
TEST_ASSERT_EQUAL_INT8(expected, actual)
|
||||||
|
TEST_ASSERT_EQUAL_INT16(expected, actual)
|
||||||
|
TEST_ASSERT_EQUAL_INT32(expected, actual)
|
||||||
|
TEST_ASSERT_EQUAL_INT64(expected, actual)
|
||||||
|
|
||||||
|
Compare two integers for equality and display errors as signed integers. A cast will be performed
|
||||||
|
to your natural integer size so often this can just be used. When you need to specify the exact size,
|
||||||
|
like when comparing arrays, you can use a specific version:
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUAL_UINT(expected, actual)
|
||||||
|
TEST_ASSERT_EQUAL_UINT8(expected, actual)
|
||||||
|
TEST_ASSERT_EQUAL_UINT16(expected, actual)
|
||||||
|
TEST_ASSERT_EQUAL_UINT32(expected, actual)
|
||||||
|
TEST_ASSERT_EQUAL_UINT64(expected, actual)
|
||||||
|
|
||||||
|
Compare two integers for equality and display errors as unsigned integers. Like INT, there are
|
||||||
|
variants for different sizes also.
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUAL_HEX(expected, actual)
|
||||||
|
TEST_ASSERT_EQUAL_HEX8(expected, actual)
|
||||||
|
TEST_ASSERT_EQUAL_HEX16(expected, actual)
|
||||||
|
TEST_ASSERT_EQUAL_HEX32(expected, actual)
|
||||||
|
TEST_ASSERT_EQUAL_HEX64(expected, actual)
|
||||||
|
|
||||||
|
Compares two integers for equality and display errors as hexadecimal. Like the other integer comparisons,
|
||||||
|
you can specify the size... here the size will also effect how many nibbles are shown (for example, HEX16
|
||||||
|
will show 4 nibbles).
|
||||||
|
|
||||||
|
_ARRAY
|
||||||
|
|
||||||
|
You can append _ARRAY to any of these macros to make an array comparison of that type. Here you will
|
||||||
|
need to care a bit more about the actual size of the value being checked. You will also specify an
|
||||||
|
additional argument which is the number of elements to compare. For example:
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, elements)
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUAL(expected, actual)
|
||||||
|
|
||||||
|
Another way of calling TEST_ASSERT_EQUAL_INT
|
||||||
|
|
||||||
|
TEST_ASSERT_INT_WITHIN(delta, expected, actual)
|
||||||
|
|
||||||
|
Asserts that the actual value is within plus or minus delta of the expected value. This also comes in
|
||||||
|
size specific variants.
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------
|
||||||
|
Numerical Assertions: Bitwise
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
TEST_ASSERT_BITS(mask, expected, actual)
|
||||||
|
|
||||||
|
Use an integer mask to specify which bits should be compared between two other integers. High bits in the mask are compared, low bits ignored.
|
||||||
|
|
||||||
|
TEST_ASSERT_BITS_HIGH(mask, actual)
|
||||||
|
|
||||||
|
Use an integer mask to specify which bits should be inspected to determine if they are all set high. High bits in the mask are compared, low bits ignored.
|
||||||
|
|
||||||
|
TEST_ASSERT_BITS_LOW(mask, actual)
|
||||||
|
|
||||||
|
Use an integer mask to specify which bits should be inspected to determine if they are all set low. High bits in the mask are compared, low bits ignored.
|
||||||
|
|
||||||
|
TEST_ASSERT_BIT_HIGH(bit, actual)
|
||||||
|
|
||||||
|
Test a single bit and verify that it is high. The bit is specified 0-31 for a 32-bit integer.
|
||||||
|
|
||||||
|
TEST_ASSERT_BIT_LOW(bit, actual)
|
||||||
|
|
||||||
|
Test a single bit and verify that it is low. The bit is specified 0-31 for a 32-bit integer.
|
||||||
|
|
||||||
|
----------------------------
|
||||||
|
Numerical Assertions: Floats
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual)
|
||||||
|
|
||||||
|
Asserts that the actual value is within plus or minus delta of the expected value.
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUAL_FLOAT(expected, actual)
|
||||||
|
TEST_ASSERT_EQUAL_DOUBLE(expected, actual)
|
||||||
|
|
||||||
|
Asserts that two floating point values are "equal" within a small % delta of the expected value.
|
||||||
|
|
||||||
|
-----------------
|
||||||
|
String Assertions
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUAL_STRING(expected, actual)
|
||||||
|
|
||||||
|
Compare two null-terminate strings. Fail if any character is different or if the lengths are different.
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUAL_STRING_MESSAGE(expected, actual, message)
|
||||||
|
|
||||||
|
Compare two null-terminate strings. Fail if any character is different or if the lengths are different. Output a custom message on failure.
|
||||||
|
|
||||||
|
------------------
|
||||||
|
Pointer Assertions
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Most pointer operations can be performed by simply using the integer comparisons above. However, a couple of special cases are added for clarity.
|
||||||
|
|
||||||
|
TEST_ASSERT_NULL(pointer)
|
||||||
|
|
||||||
|
Fails if the pointer is not equal to NULL
|
||||||
|
|
||||||
|
TEST_ASSERT_NOT_NULL(pointer)
|
||||||
|
|
||||||
|
Fails if the pointer is equal to NULL
|
||||||
|
|
||||||
|
|
||||||
|
-----------------
|
||||||
|
Memory Assertions
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUAL_MEMORY(expected, actual, len)
|
||||||
|
|
||||||
|
Compare two blocks of memory. This is a good generic assertion for types that can't be coerced into acting like
|
||||||
|
standard types... but since it's a memory compare, you have to be careful that your data types are packed.
|
||||||
|
|
||||||
|
--------
|
||||||
|
_MESSAGE
|
||||||
|
--------
|
||||||
|
|
||||||
|
you can append _MESSAGE to any of the macros to make them take an additional argument. This argument
|
||||||
|
is a string that will be printed at the end of the failure strings. This is useful for specifying more
|
||||||
|
information about the problem.
|
||||||
|
|
31
tests/unity/docs/license.txt
Normal file
31
tests/unity/docs/license.txt
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
Copyright (c) 2007-2010 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation
|
||||||
|
files (the "Software"), to deal in the Software without
|
||||||
|
restriction, including without limitation the rights to use,
|
||||||
|
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
The end-user documentation included with the redistribution, if
|
||||||
|
any, must include the following acknowledgment: "This product
|
||||||
|
includes software developed for the Unity Project, by Mike Karlesky,
|
||||||
|
Mark VanderVoord, and Greg Williams and other contributors", in
|
||||||
|
the same place and form as other third-party acknowledgments.
|
||||||
|
Alternately, this acknowledgment may appear in the software
|
||||||
|
itself, in the same form and location as other such third-party
|
||||||
|
acknowledgments.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
OTHER DEALINGS IN THE SOFTWARE.
|
9
tests/unity/extras/fixture/readme.txt
Normal file
9
tests/unity/extras/fixture/readme.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
Copyright (c) 2010 James Grenning and Contributed to Unity Project
|
||||||
|
|
||||||
|
Unity Project - A Test Framework for C
|
||||||
|
Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||||
|
[Released under MIT License. Please refer to license.txt for details]
|
||||||
|
|
||||||
|
This Framework is an optional add-on to Unity. By including unity_framework.h in place of unity.h,
|
||||||
|
you may now work with Unity in a manner similar to CppUTest. This framework adds the concepts of
|
||||||
|
test groups and gives finer control of your tests over the command line.
|
377
tests/unity/extras/fixture/src/unity_fixture.c
Normal file
377
tests/unity/extras/fixture/src/unity_fixture.c
Normal file
@ -0,0 +1,377 @@
|
|||||||
|
//- Copyright (c) 2010 James Grenning and Contributed to Unity Project
|
||||||
|
/* ==========================================
|
||||||
|
Unity Project - A Test Framework for C
|
||||||
|
Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||||
|
[Released under MIT License. Please refer to license.txt for details]
|
||||||
|
========================================== */
|
||||||
|
|
||||||
|
#include "unity_fixture.h"
|
||||||
|
#include "unity_internals.h"
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
UNITY_FIXTURE_T UnityFixture;
|
||||||
|
|
||||||
|
//If you decide to use the function pointer approach.
|
||||||
|
int (*outputChar)(int) = putchar;
|
||||||
|
|
||||||
|
int verbose = 0;
|
||||||
|
|
||||||
|
void setUp(void) { /*does nothing*/ }
|
||||||
|
void tearDown(void) { /*does nothing*/ }
|
||||||
|
|
||||||
|
void announceTestRun(unsigned int runNumber)
|
||||||
|
{
|
||||||
|
UnityPrint("Unity test run ");
|
||||||
|
UnityPrintNumber(runNumber+1);
|
||||||
|
UnityPrint(" of ");
|
||||||
|
UnityPrintNumber(UnityFixture.RepeatCount);
|
||||||
|
UNITY_OUTPUT_CHAR('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
int UnityMain(int argc, char* argv[], void (*runAllTests)())
|
||||||
|
{
|
||||||
|
int result = UnityGetCommandLineOptions(argc, argv);
|
||||||
|
unsigned int r;
|
||||||
|
if (result != 0)
|
||||||
|
return result;
|
||||||
|
|
||||||
|
for (r = 0; r < UnityFixture.RepeatCount; r++)
|
||||||
|
{
|
||||||
|
announceTestRun(r);
|
||||||
|
UnityBegin();
|
||||||
|
runAllTests();
|
||||||
|
UNITY_OUTPUT_CHAR('\n');
|
||||||
|
UnityEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
return UnityFailureCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
static int selected(const char * filter, const char * name)
|
||||||
|
{
|
||||||
|
if (filter == 0)
|
||||||
|
return 1;
|
||||||
|
return strstr(name, filter) ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int testSelected(const char* test)
|
||||||
|
{
|
||||||
|
return selected(UnityFixture.NameFilter, test);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int groupSelected(const char* group)
|
||||||
|
{
|
||||||
|
return selected(UnityFixture.GroupFilter, group);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void runTestCase()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void UnityTestRunner(unityfunction* setup,
|
||||||
|
unityfunction* testBody,
|
||||||
|
unityfunction* teardown,
|
||||||
|
const char * printableName,
|
||||||
|
const char * group,
|
||||||
|
const char * name,
|
||||||
|
const char * file, int line)
|
||||||
|
{
|
||||||
|
if (testSelected(name) && groupSelected(group))
|
||||||
|
{
|
||||||
|
Unity.CurrentTestFailed = 0;
|
||||||
|
Unity.TestFile = file;
|
||||||
|
Unity.CurrentTestName = printableName;
|
||||||
|
Unity.CurrentTestLineNumber = line;
|
||||||
|
if (!UnityFixture.Verbose)
|
||||||
|
UNITY_OUTPUT_CHAR('.');
|
||||||
|
else
|
||||||
|
UnityPrint(printableName);
|
||||||
|
|
||||||
|
Unity.NumberOfTests++;
|
||||||
|
UnityMalloc_StartTest();
|
||||||
|
UnityPointer_Init();
|
||||||
|
|
||||||
|
runTestCase();
|
||||||
|
if (TEST_PROTECT())
|
||||||
|
{
|
||||||
|
setup();
|
||||||
|
testBody();
|
||||||
|
}
|
||||||
|
if (TEST_PROTECT())
|
||||||
|
{
|
||||||
|
teardown();
|
||||||
|
}
|
||||||
|
if (TEST_PROTECT())
|
||||||
|
{
|
||||||
|
UnityPointer_UndoAllSets();
|
||||||
|
if (!Unity.CurrentTestFailed)
|
||||||
|
UnityMalloc_EndTest();
|
||||||
|
}
|
||||||
|
UnityConcludeFixtureTest();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UnityIgnoreTest()
|
||||||
|
{
|
||||||
|
Unity.NumberOfTests++;
|
||||||
|
Unity.CurrentTestIgnored = 1;
|
||||||
|
UNITY_OUTPUT_CHAR('!');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
//Malloc and free stuff
|
||||||
|
//
|
||||||
|
#define MALLOC_DONT_FAIL -1
|
||||||
|
static int malloc_count;
|
||||||
|
static int malloc_fail_countdown = MALLOC_DONT_FAIL;
|
||||||
|
|
||||||
|
void UnityMalloc_StartTest()
|
||||||
|
{
|
||||||
|
malloc_count = 0;
|
||||||
|
malloc_fail_countdown = MALLOC_DONT_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UnityMalloc_EndTest()
|
||||||
|
{
|
||||||
|
malloc_fail_countdown = MALLOC_DONT_FAIL;
|
||||||
|
if (malloc_count != 0)
|
||||||
|
{
|
||||||
|
TEST_FAIL_MESSAGE("This test leaks!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UnityMalloc_MakeMallocFailAfterCount(int countdown)
|
||||||
|
{
|
||||||
|
malloc_fail_countdown = countdown;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef malloc
|
||||||
|
#undef malloc
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef free
|
||||||
|
#undef free
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
typedef struct GuardBytes
|
||||||
|
{
|
||||||
|
int size;
|
||||||
|
char guard[sizeof(int)];
|
||||||
|
} Guard;
|
||||||
|
|
||||||
|
|
||||||
|
static const char * end = "END";
|
||||||
|
|
||||||
|
void * unity_malloc(size_t size)
|
||||||
|
{
|
||||||
|
char* mem;
|
||||||
|
Guard* guard;
|
||||||
|
|
||||||
|
if (malloc_fail_countdown != MALLOC_DONT_FAIL)
|
||||||
|
{
|
||||||
|
if (malloc_fail_countdown == 0)
|
||||||
|
return 0;
|
||||||
|
malloc_fail_countdown--;
|
||||||
|
}
|
||||||
|
|
||||||
|
malloc_count++;
|
||||||
|
|
||||||
|
guard = (Guard*)malloc(size + sizeof(Guard) + 4);
|
||||||
|
guard->size = size;
|
||||||
|
mem = (char*)&(guard[1]);
|
||||||
|
memcpy(&mem[size], end, strlen(end) + 1);
|
||||||
|
|
||||||
|
return (void*)mem;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int isOverrun(void * mem)
|
||||||
|
{
|
||||||
|
Guard* guard = (Guard*)mem;
|
||||||
|
char* memAsChar = (char*)mem;
|
||||||
|
guard--;
|
||||||
|
|
||||||
|
return strcmp(&memAsChar[guard->size], end) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void release_memory(void * mem)
|
||||||
|
{
|
||||||
|
Guard* guard = (Guard*)mem;
|
||||||
|
guard--;
|
||||||
|
|
||||||
|
malloc_count--;
|
||||||
|
free(guard);
|
||||||
|
}
|
||||||
|
|
||||||
|
void unity_free(void * mem)
|
||||||
|
{
|
||||||
|
int overrun = isOverrun(mem);//strcmp(&memAsChar[guard->size], end) != 0;
|
||||||
|
release_memory(mem);
|
||||||
|
if (overrun)
|
||||||
|
{
|
||||||
|
TEST_FAIL_MESSAGE("Buffer overrun detected during free()");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void* unity_calloc(size_t num, size_t size)
|
||||||
|
{
|
||||||
|
void* mem = unity_malloc(num * size);
|
||||||
|
memset(mem, 0, num*size);
|
||||||
|
return mem;
|
||||||
|
}
|
||||||
|
|
||||||
|
void* unity_realloc(void * oldMem, size_t size)
|
||||||
|
{
|
||||||
|
Guard* guard = (Guard*)oldMem;
|
||||||
|
// char* memAsChar = (char*)oldMem;
|
||||||
|
void* newMem;
|
||||||
|
|
||||||
|
if (oldMem == 0)
|
||||||
|
return unity_malloc(size);
|
||||||
|
|
||||||
|
guard--;
|
||||||
|
if (isOverrun(oldMem))
|
||||||
|
{
|
||||||
|
release_memory(oldMem);
|
||||||
|
TEST_FAIL_MESSAGE("Buffer overrun detected during realloc()");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (size == 0)
|
||||||
|
{
|
||||||
|
release_memory(oldMem);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (guard->size >= size)
|
||||||
|
return oldMem;
|
||||||
|
|
||||||
|
newMem = unity_malloc(size);
|
||||||
|
memcpy(newMem, oldMem, guard->size);
|
||||||
|
unity_free(oldMem);
|
||||||
|
return newMem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//--------------------------------------------------------
|
||||||
|
//Automatic pointer restoration functions
|
||||||
|
typedef struct _PointerPair
|
||||||
|
{
|
||||||
|
struct _PointerPair * next;
|
||||||
|
void ** pointer;
|
||||||
|
void * old_value;
|
||||||
|
} PointerPair;
|
||||||
|
|
||||||
|
enum {MAX_POINTERS=50};
|
||||||
|
static PointerPair pointer_store[MAX_POINTERS];
|
||||||
|
static int pointer_index = 0;
|
||||||
|
|
||||||
|
void UnityPointer_Init()
|
||||||
|
{
|
||||||
|
pointer_index = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UnityPointer_Set(void ** pointer, void * newValue)
|
||||||
|
{
|
||||||
|
if (pointer_index >= MAX_POINTERS)
|
||||||
|
TEST_FAIL_MESSAGE("Too many pointers set");
|
||||||
|
|
||||||
|
pointer_store[pointer_index].pointer = pointer;
|
||||||
|
pointer_store[pointer_index].old_value = *pointer;
|
||||||
|
*pointer = newValue;
|
||||||
|
pointer_index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UnityPointer_UndoAllSets()
|
||||||
|
{
|
||||||
|
while (pointer_index > 0)
|
||||||
|
{
|
||||||
|
pointer_index--;
|
||||||
|
*(pointer_store[pointer_index].pointer) =
|
||||||
|
pointer_store[pointer_index].old_value;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int UnityFailureCount()
|
||||||
|
{
|
||||||
|
return Unity.TestFailures;
|
||||||
|
}
|
||||||
|
|
||||||
|
int UnityGetCommandLineOptions(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
UnityFixture.Verbose = 0;
|
||||||
|
UnityFixture.GroupFilter = 0;
|
||||||
|
UnityFixture.NameFilter = 0;
|
||||||
|
UnityFixture.RepeatCount = 1;
|
||||||
|
|
||||||
|
if (argc == 1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
for (i = 1; i < argc; )
|
||||||
|
{
|
||||||
|
if (strcmp(argv[i], "-v") == 0)
|
||||||
|
{
|
||||||
|
UnityFixture.Verbose = 1;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
else if (strcmp(argv[i], "-g") == 0)
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
if (i >= argc)
|
||||||
|
return 1;
|
||||||
|
UnityFixture.GroupFilter = argv[i];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
else if (strcmp(argv[i], "-n") == 0)
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
if (i >= argc)
|
||||||
|
return 1;
|
||||||
|
UnityFixture.NameFilter = argv[i];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
else if (strcmp(argv[i], "-r") == 0)
|
||||||
|
{
|
||||||
|
UnityFixture.RepeatCount = 2;
|
||||||
|
i++;
|
||||||
|
if (i < argc)
|
||||||
|
{
|
||||||
|
if (*(argv[i]) >= '0' && *(argv[i]) <= '9')
|
||||||
|
{
|
||||||
|
UnityFixture.RepeatCount = atoi(argv[i]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UnityConcludeFixtureTest()
|
||||||
|
{
|
||||||
|
if (Unity.CurrentTestIgnored)
|
||||||
|
{
|
||||||
|
Unity.TestIgnores++;
|
||||||
|
}
|
||||||
|
else if (!Unity.CurrentTestFailed)
|
||||||
|
{
|
||||||
|
if (UnityFixture.Verbose)
|
||||||
|
{
|
||||||
|
UnityPrint(" PASS");
|
||||||
|
UNITY_OUTPUT_CHAR('\n');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (Unity.CurrentTestFailed)
|
||||||
|
{
|
||||||
|
Unity.TestFailures++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Unity.CurrentTestFailed = 0;
|
||||||
|
Unity.CurrentTestIgnored = 0;
|
||||||
|
}
|
||||||
|
|
81
tests/unity/extras/fixture/src/unity_fixture.h
Normal file
81
tests/unity/extras/fixture/src/unity_fixture.h
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
//- Copyright (c) 2010 James Grenning and Contributed to Unity Project
|
||||||
|
/* ==========================================
|
||||||
|
Unity Project - A Test Framework for C
|
||||||
|
Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||||
|
[Released under MIT License. Please refer to license.txt for details]
|
||||||
|
========================================== */
|
||||||
|
|
||||||
|
#ifndef UNITY_FIXTURE_H_
|
||||||
|
#define UNITY_FIXTURE_H_
|
||||||
|
|
||||||
|
#include "unity.h"
|
||||||
|
#include "unity_internals.h"
|
||||||
|
#include "unity_fixture_malloc_overrides.h"
|
||||||
|
#include "unity_fixture_internals.h"
|
||||||
|
|
||||||
|
int UnityMain(int argc, char* argv[], void (*runAllTests)());
|
||||||
|
|
||||||
|
|
||||||
|
#define TEST_GROUP(group)\
|
||||||
|
int TEST_GROUP_##group = 0
|
||||||
|
|
||||||
|
#define TEST_SETUP(group) void TEST_##group##_SETUP()
|
||||||
|
|
||||||
|
#define TEST_TEAR_DOWN(group) void TEST_##group##_TEAR_DOWN()
|
||||||
|
|
||||||
|
|
||||||
|
#define TEST(group, name) \
|
||||||
|
void TEST_##group##_##name##_();\
|
||||||
|
void TEST_##group##_##name##_run()\
|
||||||
|
{\
|
||||||
|
UnityTestRunner(TEST_##group##_SETUP,\
|
||||||
|
TEST_##group##_##name##_,\
|
||||||
|
TEST_##group##_TEAR_DOWN,\
|
||||||
|
"TEST(" #group ", " #name ")",\
|
||||||
|
#group, #name,\
|
||||||
|
__FILE__, __LINE__);\
|
||||||
|
}\
|
||||||
|
void TEST_##group##_##name##_()
|
||||||
|
|
||||||
|
#define IGNORE_TEST(group, name) \
|
||||||
|
void TEST_##group##_##name##_();\
|
||||||
|
void TEST_##group##_##name##_run()\
|
||||||
|
{\
|
||||||
|
UnityIgnoreTest();\
|
||||||
|
}\
|
||||||
|
void TEST_##group##_##name##_()
|
||||||
|
|
||||||
|
#define DECLARE_TEST_CASE(group, name) \
|
||||||
|
void TEST_##group##_##name##_run()
|
||||||
|
|
||||||
|
#define RUN_TEST_CASE(group, name) \
|
||||||
|
DECLARE_TEST_CASE(group, name);\
|
||||||
|
TEST_##group##_##name##_run();
|
||||||
|
|
||||||
|
//This goes at the bottom of each test file or in a separate c file
|
||||||
|
#define TEST_GROUP_RUNNER(group)\
|
||||||
|
void TEST_##group##_GROUP_RUNNER_runAll();\
|
||||||
|
void TEST_##group##_GROUP_RUNNER()\
|
||||||
|
{\
|
||||||
|
TEST_##group##_GROUP_RUNNER_runAll();\
|
||||||
|
}\
|
||||||
|
void TEST_##group##_GROUP_RUNNER_runAll()
|
||||||
|
|
||||||
|
//Call this from main
|
||||||
|
#define RUN_TEST_GROUP(group)\
|
||||||
|
void TEST_##group##_GROUP_RUNNER();\
|
||||||
|
TEST_##group##_GROUP_RUNNER();
|
||||||
|
|
||||||
|
//CppUTest Compatibility Macros
|
||||||
|
#define UT_PTR_SET(ptr, newPointerValue) UnityPointer_Set((void**)&ptr, (void*)newPointerValue)
|
||||||
|
#define TEST_ASSERT_POINTERS_EQUAL(expected, actual) TEST_ASSERT_EQUAL_PTR(expected, actual)
|
||||||
|
#define TEST_ASSERT_BYTES_EQUAL(expected, actual) TEST_ASSERT_EQUAL_HEX8(0xff & (expected), 0xff & (actual))
|
||||||
|
#define FAIL(message) TEST_FAIL((message))
|
||||||
|
#define CHECK(condition) TEST_ASSERT_TRUE((condition))
|
||||||
|
#define LONGS_EQUAL(expected, actual) TEST_ASSERT_EQUAL_INT((expected), (actual))
|
||||||
|
#define STRCMP_EQUAL(expected, actual) TEST_ASSERT_EQUAL_STRING((expected), (actual))
|
||||||
|
#define DOUBLES_EQUAL(expected, actual, delta) TEST_ASSERT_FLOAT_WITHIN(((expected), (actual), (delta))
|
||||||
|
|
||||||
|
void UnityMalloc_MakeMallocFailAfterCount(int count);
|
||||||
|
|
||||||
|
#endif /* UNITY_FIXTURE_H_ */
|
44
tests/unity/extras/fixture/src/unity_fixture_internals.h
Normal file
44
tests/unity/extras/fixture/src/unity_fixture_internals.h
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
//- Copyright (c) 2010 James Grenning and Contributed to Unity Project
|
||||||
|
/* ==========================================
|
||||||
|
Unity Project - A Test Framework for C
|
||||||
|
Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||||
|
[Released under MIT License. Please refer to license.txt for details]
|
||||||
|
========================================== */
|
||||||
|
|
||||||
|
#ifndef UNITY_FIXTURE_INTERNALS_H_
|
||||||
|
#define UNITY_FIXTURE_INTERNALS_H_
|
||||||
|
|
||||||
|
typedef struct _UNITY_FIXTURE_T
|
||||||
|
{
|
||||||
|
int Verbose;
|
||||||
|
unsigned int RepeatCount;
|
||||||
|
const char* NameFilter;
|
||||||
|
const char* GroupFilter;
|
||||||
|
} UNITY_FIXTURE_T;
|
||||||
|
|
||||||
|
typedef void unityfunction();
|
||||||
|
void UnityTestRunner(unityfunction * setup,
|
||||||
|
unityfunction * body,
|
||||||
|
unityfunction * teardown,
|
||||||
|
const char * printableName,
|
||||||
|
const char * group,
|
||||||
|
const char * name,
|
||||||
|
const char * file, int line);
|
||||||
|
|
||||||
|
void UnityIgnoreTest();
|
||||||
|
void UnityMalloc_StartTest();
|
||||||
|
void UnityMalloc_EndTest();
|
||||||
|
int UnityFailureCount();
|
||||||
|
int UnityGetCommandLineOptions(int argc, char* argv[]);
|
||||||
|
void UnityConcludeFixtureTest();
|
||||||
|
|
||||||
|
void UnityPointer_Set(void ** ptr, void * newValue);
|
||||||
|
void UnityPointer_UndoAllSets();
|
||||||
|
void UnityPointer_Init();
|
||||||
|
|
||||||
|
void UnityAssertEqualPointer(const void * expected,
|
||||||
|
const void * actual,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber);
|
||||||
|
|
||||||
|
#endif /* UNITY_FIXTURE_INTERNALS_H_ */
|
@ -0,0 +1,16 @@
|
|||||||
|
//- Copyright (c) 2010 James Grenning and Contributed to Unity Project
|
||||||
|
/* ==========================================
|
||||||
|
Unity Project - A Test Framework for C
|
||||||
|
Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||||
|
[Released under MIT License. Please refer to license.txt for details]
|
||||||
|
========================================== */
|
||||||
|
|
||||||
|
#ifndef UNITY_FIXTURE_MALLOC_OVERRIDES_H_
|
||||||
|
#define UNITY_FIXTURE_MALLOC_OVERRIDES_H_
|
||||||
|
|
||||||
|
#define malloc unity_malloc
|
||||||
|
#define calloc unity_calloc
|
||||||
|
#define realloc unity_realloc
|
||||||
|
#define free unity_free
|
||||||
|
|
||||||
|
#endif /* UNITY_FIXTURE_MALLOC_OVERRIDES_H_ */
|
2
tests/unity/release/build.info
Normal file
2
tests/unity/release/build.info
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
118
|
||||||
|
|
2
tests/unity/release/version.info
Normal file
2
tests/unity/release/version.info
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
2.1.0
|
||||||
|
|
1141
tests/unity/src/unity.c
Normal file
1141
tests/unity/src/unity.c
Normal file
File diff suppressed because it is too large
Load Diff
242
tests/unity/src/unity.h
Normal file
242
tests/unity/src/unity.h
Normal file
@ -0,0 +1,242 @@
|
|||||||
|
/* ==========================================
|
||||||
|
Unity Project - A Test Framework for C
|
||||||
|
Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||||
|
[Released under MIT License. Please refer to license.txt for details]
|
||||||
|
========================================== */
|
||||||
|
|
||||||
|
#ifndef UNITY_FRAMEWORK_H
|
||||||
|
#define UNITY_FRAMEWORK_H
|
||||||
|
|
||||||
|
#define UNITY
|
||||||
|
|
||||||
|
#include "unity_internals.h"
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Configuration Options
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
// Integers
|
||||||
|
// - Unity assumes 32 bit integers by default
|
||||||
|
// - If your compiler treats ints of a different size, define UNITY_INT_WIDTH
|
||||||
|
|
||||||
|
// Floats
|
||||||
|
// - define UNITY_EXCLUDE_FLOAT to disallow floating point comparisons
|
||||||
|
// - define UNITY_FLOAT_PRECISION to specify the precision to use when doing TEST_ASSERT_EQUAL_FLOAT
|
||||||
|
// - define UNITY_FLOAT_TYPE to specify doubles instead of single precision floats
|
||||||
|
// - define UNITY_FLOAT_VERBOSE to print floating point values in errors (uses sprintf)
|
||||||
|
// - define UNITY_INCLUDE_DOUBLE to allow double floating point comparisons
|
||||||
|
// - define UNITY_EXCLUDE_DOUBLE to disallow double floating point comparisons (default)
|
||||||
|
// - define UNITY_DOUBLE_PRECISION to specify the precision to use when doing TEST_ASSERT_EQUAL_DOUBLE
|
||||||
|
// - define UNITY_DOUBLE_TYPE to specify something other than double
|
||||||
|
// - define UNITY_DOUBLE_VERBOSE to print floating point values in errors (uses sprintf)
|
||||||
|
|
||||||
|
// Output
|
||||||
|
// - by default, Unity prints to standard out with putchar. define UNITY_OUTPUT_CHAR(a) with a different function if desired
|
||||||
|
|
||||||
|
// Optimization
|
||||||
|
// - by default, line numbers are stored in unsigned shorts. Define UNITY_LINE_TYPE with a different type if your files are huge
|
||||||
|
// - by default, test and failure counters are unsigned shorts. Define UNITY_COUNTER_TYPE with a different type if you want to save space or have more than 65535 Tests.
|
||||||
|
|
||||||
|
// Test Cases
|
||||||
|
// - define UNITY_SUPPORT_TEST_CASES to include the TEST_CASE macro, though really it's mostly about the runner generator script
|
||||||
|
|
||||||
|
// Parameterized Tests
|
||||||
|
// - you'll want to create a define of TEST_CASE(...) which basically evaluates to nothing
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Test Running Macros
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
#define TEST_PROTECT() (setjmp(Unity.AbortFrame) == 0)
|
||||||
|
|
||||||
|
#define TEST_ABORT() {longjmp(Unity.AbortFrame, 1);}
|
||||||
|
|
||||||
|
#ifndef RUN_TEST
|
||||||
|
#define RUN_TEST(func, line_num) UnityDefaultTestRun(func, #func, line_num)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define TEST_LINE_NUM (Unity.CurrentTestLineNumber)
|
||||||
|
#define TEST_IS_IGNORED (Unity.CurrentTestIgnored)
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Basic Fail and Ignore
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
#define TEST_FAIL_MESSAGE(message) UNITY_TEST_FAIL(__LINE__, message)
|
||||||
|
#define TEST_FAIL() UNITY_TEST_FAIL(__LINE__, NULL)
|
||||||
|
#define TEST_IGNORE_MESSAGE(message) UNITY_TEST_IGNORE(__LINE__, message)
|
||||||
|
#define TEST_IGNORE() UNITY_TEST_IGNORE(__LINE__, NULL)
|
||||||
|
#define TEST_ONLY()
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Test Asserts (simple)
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
//Boolean
|
||||||
|
#define TEST_ASSERT(condition) UNITY_TEST_ASSERT( (condition), __LINE__, " Expression Evaluated To FALSE")
|
||||||
|
#define TEST_ASSERT_TRUE(condition) UNITY_TEST_ASSERT( (condition), __LINE__, " Expected TRUE Was FALSE")
|
||||||
|
#define TEST_ASSERT_UNLESS(condition) UNITY_TEST_ASSERT( !(condition), __LINE__, " Expression Evaluated To TRUE")
|
||||||
|
#define TEST_ASSERT_FALSE(condition) UNITY_TEST_ASSERT( !(condition), __LINE__, " Expected FALSE Was TRUE")
|
||||||
|
#define TEST_ASSERT_NULL(pointer) UNITY_TEST_ASSERT_NULL( (pointer), __LINE__, " Expected NULL")
|
||||||
|
#define TEST_ASSERT_NOT_NULL(pointer) UNITY_TEST_ASSERT_NOT_NULL((pointer), __LINE__, " Expected Non-NULL")
|
||||||
|
|
||||||
|
//Integers (of all sizes)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT8(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT8((expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT16(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT16((expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT32(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT32((expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT64(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT64((expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_NOT_EQUAL(expected, actual) UNITY_TEST_ASSERT(((expected) != (actual)), __LINE__, " Expected Not-Equal")
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT( (expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT8(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT8( (expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT16(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT16( (expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT32(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT32( (expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT64(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT64( (expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX(expected, actual) UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX8(expected, actual) UNITY_TEST_ASSERT_EQUAL_HEX8( (expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX16(expected, actual) UNITY_TEST_ASSERT_EQUAL_HEX16((expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX32(expected, actual) UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX64(expected, actual) UNITY_TEST_ASSERT_EQUAL_HEX64((expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_BITS(mask, expected, actual) UNITY_TEST_ASSERT_BITS((mask), (expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_BITS_HIGH(mask, actual) UNITY_TEST_ASSERT_BITS((mask), (_UU32)(-1), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_BITS_LOW(mask, actual) UNITY_TEST_ASSERT_BITS((mask), (_UU32)(0), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_BIT_HIGH(bit, actual) UNITY_TEST_ASSERT_BITS(((_UU32)1 << bit), (_UU32)(-1), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_BIT_LOW(bit, actual) UNITY_TEST_ASSERT_BITS(((_UU32)1 << bit), (_UU32)(0), (actual), __LINE__, NULL)
|
||||||
|
|
||||||
|
//Integer Ranges (of all sizes)
|
||||||
|
#define TEST_ASSERT_INT_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_INT_WITHIN(delta, expected, actual, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_UINT_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_UINT_WITHIN(delta, expected, actual, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_HEX_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_HEX32_WITHIN(delta, expected, actual, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_HEX8_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_HEX8_WITHIN(delta, expected, actual, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_HEX16_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_HEX16_WITHIN(delta, expected, actual, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_HEX32_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_HEX32_WITHIN(delta, expected, actual, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_HEX64_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_HEX64_WITHIN(delta, expected, actual, __LINE__, NULL)
|
||||||
|
|
||||||
|
//Structs and Strings
|
||||||
|
#define TEST_ASSERT_EQUAL_PTR(expected, actual) UNITY_TEST_ASSERT_EQUAL_PTR((expected), (actual), __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_STRING(expected, actual) UNITY_TEST_ASSERT_EQUAL_STRING(expected, actual, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_MEMORY(expected, actual, len) UNITY_TEST_ASSERT_EQUAL_MEMORY(expected, actual, len, __LINE__, NULL)
|
||||||
|
|
||||||
|
//Arrays
|
||||||
|
#define TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT8_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_INT8_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT16_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_INT16_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT32_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_INT32_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT8_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT8_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT16_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT32_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT32_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX16_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_HEX16_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_PTR_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_PTR_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_STRING_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_STRING_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_MEMORY_ARRAY(expected, actual, len, num_elements) UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY(expected, actual, len, num_elements, __LINE__, NULL)
|
||||||
|
|
||||||
|
//Floating Point (If Enabled)
|
||||||
|
#define TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_FLOAT(expected, actual) UNITY_TEST_ASSERT_EQUAL_FLOAT(expected, actual, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_FLOAT_IS_INF(actual) UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_FLOAT_IS_NEG_INF(actual) UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_FLOAT_IS_NAN(actual) UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, __LINE__, NULL)
|
||||||
|
|
||||||
|
//Double (If Enabled)
|
||||||
|
#define TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_DOUBLE(expected, actual) UNITY_TEST_ASSERT_EQUAL_DOUBLE(expected, actual, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_DOUBLE_IS_INF(actual) UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_DOUBLE_IS_NEG_INF(actual) UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, __LINE__, NULL)
|
||||||
|
#define TEST_ASSERT_DOUBLE_IS_NAN(actual) UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, __LINE__, NULL)
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Test Asserts (with additional messages)
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
//Boolean
|
||||||
|
#define TEST_ASSERT_MESSAGE(condition, message) UNITY_TEST_ASSERT( (condition), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_TRUE_MESSAGE(condition, message) UNITY_TEST_ASSERT( (condition), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_UNLESS_MESSAGE(condition, message) UNITY_TEST_ASSERT( !(condition), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_FALSE_MESSAGE(condition, message) UNITY_TEST_ASSERT( !(condition), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_NULL_MESSAGE(pointer, message) UNITY_TEST_ASSERT_NULL( (pointer), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_NOT_NULL_MESSAGE(pointer, message) UNITY_TEST_ASSERT_NOT_NULL((pointer), __LINE__, message)
|
||||||
|
|
||||||
|
//Integers (of all sizes)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT8_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT8((expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT16_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT16((expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT32_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT32((expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT64_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT64((expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT(((expected) != (actual)), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT( (expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT8_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT8( (expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT16_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT16( (expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT32_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT32( (expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT64_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT64( (expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX8_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_HEX8( (expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX16_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_HEX16((expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX32_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX64_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_HEX64((expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_BITS_MESSAGE(mask, expected, actual, message) UNITY_TEST_ASSERT_BITS((mask), (expected), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_BITS_HIGH_MESSAGE(mask, actual, message) UNITY_TEST_ASSERT_BITS((mask), (_UU32)(-1), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_BITS_LOW_MESSAGE(mask, actual, message) UNITY_TEST_ASSERT_BITS((mask), (_UU32)(0), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_BIT_HIGH_MESSAGE(bit, actual, message) UNITY_TEST_ASSERT_BITS(((_UU32)1 << bit), (_UU32)(-1), (actual), __LINE__, message)
|
||||||
|
#define TEST_ASSERT_BIT_LOW_MESSAGE(bit, actual, message) UNITY_TEST_ASSERT_BITS(((_UU32)1 << bit), (_UU32)(0), (actual), __LINE__, message)
|
||||||
|
|
||||||
|
//Integer Ranges (of all sizes)
|
||||||
|
#define TEST_ASSERT_INT_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_INT_WITHIN(delta, expected, actual, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_UINT_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_UINT_WITHIN(delta, expected, actual, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_HEX_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_HEX32_WITHIN(delta, expected, actual, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_HEX8_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_HEX8_WITHIN(delta, expected, actual, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_HEX16_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_HEX16_WITHIN(delta, expected, actual, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_HEX32_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_HEX32_WITHIN(delta, expected, actual, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_HEX64_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_HEX64_WITHIN(delta, expected, actual, __LINE__, message)
|
||||||
|
|
||||||
|
//Structs and Strings
|
||||||
|
#define TEST_ASSERT_EQUAL_PTR_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_PTR(expected, actual, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_STRING_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_STRING(expected, actual, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_MEMORY_MESSAGE(expected, actual, len, message) UNITY_TEST_ASSERT_EQUAL_MEMORY(expected, actual, len, __LINE__, message)
|
||||||
|
|
||||||
|
//Arrays
|
||||||
|
#define TEST_ASSERT_EQUAL_INT_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT8_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_INT8_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT16_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_INT16_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT32_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_INT32_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_INT64_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT8_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT8_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT16_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT32_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT32_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_UINT64_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX8_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX16_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_HEX16_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX32_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_HEX64_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_PTR_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_PTR_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_STRING_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_STRING_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_MEMORY_ARRAY_MESSAGE(expected, actual, len, num_elements, message) UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY(expected, actual, len, num_elements, __LINE__, message)
|
||||||
|
|
||||||
|
//Floating Point (If Enabled)
|
||||||
|
#define TEST_ASSERT_FLOAT_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_FLOAT_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_FLOAT(expected, actual, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_FLOAT_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_FLOAT_IS_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_FLOAT_IS_NEG_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_FLOAT_IS_NAN_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, __LINE__, message)
|
||||||
|
|
||||||
|
//Double (If Enabled)
|
||||||
|
#define TEST_ASSERT_DOUBLE_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_DOUBLE_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_DOUBLE(expected, actual, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_EQUAL_DOUBLE_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_DOUBLE_IS_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_DOUBLE_IS_NEG_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, __LINE__, message)
|
||||||
|
#define TEST_ASSERT_DOUBLE_IS_NAN_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, __LINE__, message)
|
||||||
|
#endif
|
546
tests/unity/src/unity_internals.h
Normal file
546
tests/unity/src/unity_internals.h
Normal file
@ -0,0 +1,546 @@
|
|||||||
|
/* ==========================================
|
||||||
|
Unity Project - A Test Framework for C
|
||||||
|
Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||||
|
[Released under MIT License. Please refer to license.txt for details]
|
||||||
|
========================================== */
|
||||||
|
|
||||||
|
#ifndef UNITY_INTERNALS_H
|
||||||
|
#define UNITY_INTERNALS_H
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <setjmp.h>
|
||||||
|
|
||||||
|
// Unity attempts to determine sizeof(various types)
|
||||||
|
// based on UINT_MAX, ULONG_MAX, etc. These are typically
|
||||||
|
// defined in limits.h.
|
||||||
|
#ifdef UNITY_USE_LIMITS_H
|
||||||
|
#include <limits.h>
|
||||||
|
#endif
|
||||||
|
// As a fallback, hope that including stdint.h will
|
||||||
|
// provide this information.
|
||||||
|
#ifndef UNITY_EXCLUDE_STDINT_H
|
||||||
|
#include <stdint.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Guess Widths If Not Specified
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
// Determine the size of an int, if not already specificied.
|
||||||
|
// We cannot use sizeof(int), because it is not yet defined
|
||||||
|
// at this stage in the trnslation of the C program.
|
||||||
|
// Therefore, infer it from UINT_MAX if possible.
|
||||||
|
#ifndef UNITY_INT_WIDTH
|
||||||
|
#ifdef UINT_MAX
|
||||||
|
#if (UINT_MAX == 0xFFFF)
|
||||||
|
#define UNITY_INT_WIDTH (16)
|
||||||
|
#elif (UINT_MAX == 0xFFFFFFFF)
|
||||||
|
#define UNITY_INT_WIDTH (32)
|
||||||
|
#elif (UINT_MAX == 0xFFFFFFFFFFFFFFFF)
|
||||||
|
#define UNITY_INT_WIDTH (64)
|
||||||
|
#ifndef UNITY_SUPPORT_64
|
||||||
|
#define UNITY_SUPPORT_64
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifndef UNITY_INT_WIDTH
|
||||||
|
#define UNITY_INT_WIDTH (32)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Determine the size of a long, if not already specified,
|
||||||
|
// by following the process used above to define
|
||||||
|
// UNITY_INT_WIDTH.
|
||||||
|
#ifndef UNITY_LONG_WIDTH
|
||||||
|
#ifdef ULONG_MAX
|
||||||
|
#if (ULONG_MAX == 0xFFFF)
|
||||||
|
#define UNITY_LONG_WIDTH (16)
|
||||||
|
#elif (ULONG_MAX == 0xFFFFFFFF)
|
||||||
|
#define UNITY_LONG_WIDTH (32)
|
||||||
|
#elif (ULONG_MAX == 0xFFFFFFFFFFFFFFFF)
|
||||||
|
#define UNITY_LONG_WIDTH (64)
|
||||||
|
#ifndef UNITY_SUPPORT_64
|
||||||
|
#define UNITY_SUPPORT_64
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifndef UNITY_LONG_WIDTH
|
||||||
|
#define UNITY_LONG_WIDTH (32)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Determine the size of a pointer, if not already specified,
|
||||||
|
// by following the process used above to define
|
||||||
|
// UNITY_INT_WIDTH.
|
||||||
|
#ifndef UNITY_POINTER_WIDTH
|
||||||
|
#ifdef UINTPTR_MAX
|
||||||
|
#if (UINTPTR_MAX <= 0xFFFF)
|
||||||
|
#define UNITY_POINTER_WIDTH (16)
|
||||||
|
#elif (UINTPTR_MAX <= 0xFFFFFFFF)
|
||||||
|
#define UNITY_POINTER_WIDTH (32)
|
||||||
|
#elif (UINTPTR_MAX <= 0xFFFFFFFFFFFFFFFF)
|
||||||
|
#define UNITY_POINTER_WIDTH (64)
|
||||||
|
#ifndef UNITY_SUPPORT_64
|
||||||
|
#define UNITY_SUPPORT_64
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifndef UNITY_POINTER_WIDTH
|
||||||
|
#ifdef INTPTR_MAX
|
||||||
|
#if (INTPTR_MAX <= 0x7FFF)
|
||||||
|
#define UNITY_POINTER_WIDTH (16)
|
||||||
|
#elif (INTPTR_MAX <= 0x7FFFFFFF)
|
||||||
|
#define UNITY_POINTER_WIDTH (32)
|
||||||
|
#elif (INTPTR_MAX <= 0x7FFFFFFFFFFFFFFF)
|
||||||
|
#define UNITY_POINTER_WIDTH (64)
|
||||||
|
#ifndef UNITY_SUPPORT_64
|
||||||
|
#define UNITY_SUPPORT_64
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifndef UNITY_POINTER_WIDTH
|
||||||
|
#define UNITY_POINTER_WIDTH (32)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Int Support
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
#if (UNITY_INT_WIDTH == 32)
|
||||||
|
typedef unsigned char _UU8;
|
||||||
|
typedef unsigned short _UU16;
|
||||||
|
typedef unsigned int _UU32;
|
||||||
|
typedef signed char _US8;
|
||||||
|
typedef signed short _US16;
|
||||||
|
typedef signed int _US32;
|
||||||
|
#elif (UNITY_INT_WIDTH == 16)
|
||||||
|
typedef unsigned char _UU8;
|
||||||
|
typedef unsigned int _UU16;
|
||||||
|
typedef unsigned long _UU32;
|
||||||
|
typedef signed char _US8;
|
||||||
|
typedef signed int _US16;
|
||||||
|
typedef signed long _US32;
|
||||||
|
#else
|
||||||
|
#error Invalid UNITY_INT_WIDTH specified! (16 or 32 are supported)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// 64-bit Support
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
#ifndef UNITY_SUPPORT_64
|
||||||
|
|
||||||
|
//No 64-bit Support
|
||||||
|
typedef _UU32 _U_UINT;
|
||||||
|
typedef _US32 _U_SINT;
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
//64-bit Support
|
||||||
|
#if (UNITY_LONG_WIDTH == 32)
|
||||||
|
typedef unsigned long long _UU64;
|
||||||
|
typedef signed long long _US64;
|
||||||
|
#elif (UNITY_LONG_WIDTH == 64)
|
||||||
|
typedef unsigned long _UU64;
|
||||||
|
typedef signed long _US64;
|
||||||
|
#else
|
||||||
|
#error Invalid UNITY_LONG_WIDTH specified! (32 or 64 are supported)
|
||||||
|
#endif
|
||||||
|
typedef _UU64 _U_UINT;
|
||||||
|
typedef _US64 _U_SINT;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Pointer Support
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
#if (UNITY_POINTER_WIDTH == 32)
|
||||||
|
typedef _UU32 _UP;
|
||||||
|
#define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX32
|
||||||
|
#elif (UNITY_POINTER_WIDTH == 64)
|
||||||
|
#ifndef UNITY_SUPPORT_64
|
||||||
|
#error "You've Specified 64-bit pointers without enabling 64-bit Support. Define UNITY_SUPPORT_64"
|
||||||
|
#endif
|
||||||
|
typedef _UU64 _UP;
|
||||||
|
#define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX64
|
||||||
|
#elif (UNITY_POINTER_WIDTH == 16)
|
||||||
|
typedef _UU16 _UP;
|
||||||
|
#define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX16
|
||||||
|
#else
|
||||||
|
#error Invalid UNITY_POINTER_WIDTH specified! (16, 32 or 64 are supported)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Float Support
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
#ifdef UNITY_EXCLUDE_FLOAT
|
||||||
|
|
||||||
|
//No Floating Point Support
|
||||||
|
#undef UNITY_FLOAT_PRECISION
|
||||||
|
#undef UNITY_FLOAT_TYPE
|
||||||
|
#undef UNITY_FLOAT_VERBOSE
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
//Floating Point Support
|
||||||
|
#ifndef UNITY_FLOAT_PRECISION
|
||||||
|
#define UNITY_FLOAT_PRECISION (0.00001f)
|
||||||
|
#endif
|
||||||
|
#ifndef UNITY_FLOAT_TYPE
|
||||||
|
#define UNITY_FLOAT_TYPE float
|
||||||
|
#endif
|
||||||
|
typedef UNITY_FLOAT_TYPE _UF;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Double Float Support
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
//unlike FLOAT, we DON'T include by default
|
||||||
|
#ifndef UNITY_EXCLUDE_DOUBLE
|
||||||
|
#ifndef UNITY_INCLUDE_DOUBLE
|
||||||
|
#define UNITY_EXCLUDE_DOUBLE
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||||
|
|
||||||
|
//No Floating Point Support
|
||||||
|
#undef UNITY_DOUBLE_PRECISION
|
||||||
|
#undef UNITY_DOUBLE_TYPE
|
||||||
|
#undef UNITY_DOUBLE_VERBOSE
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
//Floating Point Support
|
||||||
|
#ifndef UNITY_DOUBLE_PRECISION
|
||||||
|
#define UNITY_DOUBLE_PRECISION (1e-12f)
|
||||||
|
#endif
|
||||||
|
#ifndef UNITY_DOUBLE_TYPE
|
||||||
|
#define UNITY_DOUBLE_TYPE double
|
||||||
|
#endif
|
||||||
|
typedef UNITY_DOUBLE_TYPE _UD;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Output Method
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
#ifndef UNITY_OUTPUT_CHAR
|
||||||
|
//Default to using putchar, which is defined in stdio.h above
|
||||||
|
#define UNITY_OUTPUT_CHAR(a) putchar(a)
|
||||||
|
#else
|
||||||
|
//If defined as something else, make sure we declare it here so it's ready for use
|
||||||
|
extern int UNITY_OUTPUT_CHAR(int);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Footprint
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
#ifndef UNITY_LINE_TYPE
|
||||||
|
#define UNITY_LINE_TYPE _U_UINT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef UNITY_COUNTER_TYPE
|
||||||
|
#define UNITY_COUNTER_TYPE _U_UINT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Internal Structs Needed
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
typedef void (*UnityTestFunction)(void);
|
||||||
|
|
||||||
|
#define UNITY_DISPLAY_RANGE_INT (0x10)
|
||||||
|
#define UNITY_DISPLAY_RANGE_UINT (0x20)
|
||||||
|
#define UNITY_DISPLAY_RANGE_HEX (0x40)
|
||||||
|
#define UNITY_DISPLAY_RANGE_AUTO (0x80)
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
#if (UNITY_INT_WIDTH == 16)
|
||||||
|
UNITY_DISPLAY_STYLE_INT = 2 + UNITY_DISPLAY_RANGE_INT + UNITY_DISPLAY_RANGE_AUTO,
|
||||||
|
#elif (UNITY_INT_WIDTH == 32)
|
||||||
|
UNITY_DISPLAY_STYLE_INT = 4 + UNITY_DISPLAY_RANGE_INT + UNITY_DISPLAY_RANGE_AUTO,
|
||||||
|
#elif (UNITY_INT_WIDTH == 64)
|
||||||
|
UNITY_DISPLAY_STYLE_INT = 8 + UNITY_DISPLAY_RANGE_INT + UNITY_DISPLAY_RANGE_AUTO,
|
||||||
|
#endif
|
||||||
|
UNITY_DISPLAY_STYLE_INT8 = 1 + UNITY_DISPLAY_RANGE_INT,
|
||||||
|
UNITY_DISPLAY_STYLE_INT16 = 2 + UNITY_DISPLAY_RANGE_INT,
|
||||||
|
UNITY_DISPLAY_STYLE_INT32 = 4 + UNITY_DISPLAY_RANGE_INT,
|
||||||
|
#ifdef UNITY_SUPPORT_64
|
||||||
|
UNITY_DISPLAY_STYLE_INT64 = 8 + UNITY_DISPLAY_RANGE_INT,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (UNITY_INT_WIDTH == 16)
|
||||||
|
UNITY_DISPLAY_STYLE_UINT = 2 + UNITY_DISPLAY_RANGE_UINT + UNITY_DISPLAY_RANGE_AUTO,
|
||||||
|
#elif (UNITY_INT_WIDTH == 32)
|
||||||
|
UNITY_DISPLAY_STYLE_UINT = 4 + UNITY_DISPLAY_RANGE_UINT + UNITY_DISPLAY_RANGE_AUTO,
|
||||||
|
#elif (UNITY_INT_WIDTH == 64)
|
||||||
|
UNITY_DISPLAY_STYLE_UINT = 8 + UNITY_DISPLAY_RANGE_UINT + UNITY_DISPLAY_RANGE_AUTO,
|
||||||
|
#endif
|
||||||
|
UNITY_DISPLAY_STYLE_UINT8 = 1 + UNITY_DISPLAY_RANGE_UINT,
|
||||||
|
UNITY_DISPLAY_STYLE_UINT16 = 2 + UNITY_DISPLAY_RANGE_UINT,
|
||||||
|
UNITY_DISPLAY_STYLE_UINT32 = 4 + UNITY_DISPLAY_RANGE_UINT,
|
||||||
|
#ifdef UNITY_SUPPORT_64
|
||||||
|
UNITY_DISPLAY_STYLE_UINT64 = 8 + UNITY_DISPLAY_RANGE_UINT,
|
||||||
|
#endif
|
||||||
|
UNITY_DISPLAY_STYLE_HEX8 = 1 + UNITY_DISPLAY_RANGE_HEX,
|
||||||
|
UNITY_DISPLAY_STYLE_HEX16 = 2 + UNITY_DISPLAY_RANGE_HEX,
|
||||||
|
UNITY_DISPLAY_STYLE_HEX32 = 4 + UNITY_DISPLAY_RANGE_HEX,
|
||||||
|
#ifdef UNITY_SUPPORT_64
|
||||||
|
UNITY_DISPLAY_STYLE_HEX64 = 8 + UNITY_DISPLAY_RANGE_HEX,
|
||||||
|
#endif
|
||||||
|
UNITY_DISPLAY_STYLE_UNKNOWN
|
||||||
|
} UNITY_DISPLAY_STYLE_T;
|
||||||
|
|
||||||
|
struct _Unity
|
||||||
|
{
|
||||||
|
const char* TestFile;
|
||||||
|
const char* CurrentTestName;
|
||||||
|
UNITY_LINE_TYPE CurrentTestLineNumber;
|
||||||
|
UNITY_COUNTER_TYPE NumberOfTests;
|
||||||
|
UNITY_COUNTER_TYPE TestFailures;
|
||||||
|
UNITY_COUNTER_TYPE TestIgnores;
|
||||||
|
UNITY_COUNTER_TYPE CurrentTestFailed;
|
||||||
|
UNITY_COUNTER_TYPE CurrentTestIgnored;
|
||||||
|
jmp_buf AbortFrame;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern struct _Unity Unity;
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Test Suite Management
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
void UnityBegin(void);
|
||||||
|
int UnityEnd(void);
|
||||||
|
void UnityConcludeTest(void);
|
||||||
|
void UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int FuncLineNum);
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Test Output
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
void UnityPrint(const char* string);
|
||||||
|
void UnityPrintMask(const _U_UINT mask, const _U_UINT number);
|
||||||
|
void UnityPrintNumberByStyle(const _U_SINT number, const UNITY_DISPLAY_STYLE_T style);
|
||||||
|
void UnityPrintNumber(const _U_SINT number);
|
||||||
|
void UnityPrintNumberUnsigned(const _U_UINT number);
|
||||||
|
void UnityPrintNumberHex(const _U_UINT number, const char nibbles);
|
||||||
|
|
||||||
|
#ifdef UNITY_FLOAT_VERBOSE
|
||||||
|
void UnityPrintFloat(const _UF number);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Test Assertion Fuctions
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Use the macros below this section instead of calling
|
||||||
|
// these directly. The macros have a consistent naming
|
||||||
|
// convention and will pull in file and line information
|
||||||
|
// for you.
|
||||||
|
|
||||||
|
void UnityAssertEqualNumber(const _U_SINT expected,
|
||||||
|
const _U_SINT actual,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber,
|
||||||
|
const UNITY_DISPLAY_STYLE_T style);
|
||||||
|
|
||||||
|
void UnityAssertEqualIntArray(const _U_SINT* expected,
|
||||||
|
const _U_SINT* actual,
|
||||||
|
const _UU32 num_elements,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber,
|
||||||
|
const UNITY_DISPLAY_STYLE_T style);
|
||||||
|
|
||||||
|
void UnityAssertBits(const _U_SINT mask,
|
||||||
|
const _U_SINT expected,
|
||||||
|
const _U_SINT actual,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber);
|
||||||
|
|
||||||
|
void UnityAssertEqualString(const char* expected,
|
||||||
|
const char* actual,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber);
|
||||||
|
|
||||||
|
void UnityAssertEqualStringArray( const char** expected,
|
||||||
|
const char** actual,
|
||||||
|
const _UU32 num_elements,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber);
|
||||||
|
|
||||||
|
void UnityAssertEqualMemory( const void* expected,
|
||||||
|
const void* actual,
|
||||||
|
const _UU32 length,
|
||||||
|
const _UU32 num_elements,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber);
|
||||||
|
|
||||||
|
void UnityAssertNumbersWithin(const _U_SINT delta,
|
||||||
|
const _U_SINT expected,
|
||||||
|
const _U_SINT actual,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber,
|
||||||
|
const UNITY_DISPLAY_STYLE_T style);
|
||||||
|
|
||||||
|
void UnityFail(const char* message, const UNITY_LINE_TYPE line);
|
||||||
|
|
||||||
|
void UnityIgnore(const char* message, const UNITY_LINE_TYPE line);
|
||||||
|
|
||||||
|
#ifndef UNITY_EXCLUDE_FLOAT
|
||||||
|
void UnityAssertFloatsWithin(const _UF delta,
|
||||||
|
const _UF expected,
|
||||||
|
const _UF actual,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber);
|
||||||
|
|
||||||
|
void UnityAssertEqualFloatArray(const _UF* expected,
|
||||||
|
const _UF* actual,
|
||||||
|
const _UU32 num_elements,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber);
|
||||||
|
|
||||||
|
void UnityAssertFloatIsInf(const _UF actual,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber);
|
||||||
|
|
||||||
|
void UnityAssertFloatIsNegInf(const _UF actual,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber);
|
||||||
|
|
||||||
|
void UnityAssertFloatIsNaN(const _UF actual,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef UNITY_EXCLUDE_DOUBLE
|
||||||
|
void UnityAssertDoublesWithin(const _UD delta,
|
||||||
|
const _UD expected,
|
||||||
|
const _UD actual,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber);
|
||||||
|
|
||||||
|
void UnityAssertEqualDoubleArray(const _UD* expected,
|
||||||
|
const _UD* actual,
|
||||||
|
const _UU32 num_elements,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber);
|
||||||
|
|
||||||
|
void UnityAssertDoubleIsInf(const _UD actual,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber);
|
||||||
|
|
||||||
|
void UnityAssertDoubleIsNegInf(const _UD actual,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber);
|
||||||
|
|
||||||
|
void UnityAssertDoubleIsNaN(const _UD actual,
|
||||||
|
const char* msg,
|
||||||
|
const UNITY_LINE_TYPE lineNumber);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Basic Fail and Ignore
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
#define UNITY_TEST_FAIL(line, message) UnityFail( (message), (UNITY_LINE_TYPE)line);
|
||||||
|
#define UNITY_TEST_IGNORE(line, message) UnityIgnore( (message), (UNITY_LINE_TYPE)line);
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// Test Asserts
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
#define UNITY_TEST_ASSERT(condition, line, message) if (condition) {} else {UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, message);}
|
||||||
|
#define UNITY_TEST_ASSERT_NULL(pointer, line, message) UNITY_TEST_ASSERT(((pointer) == NULL), (UNITY_LINE_TYPE)line, message)
|
||||||
|
#define UNITY_TEST_ASSERT_NOT_NULL(pointer, line, message) UNITY_TEST_ASSERT(((pointer) != NULL), (UNITY_LINE_TYPE)line, message)
|
||||||
|
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_INT(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(expected), (_U_SINT)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_INT8(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_US8 )(expected), (_U_SINT)(_US8 )(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_INT16(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_US16)(expected), (_U_SINT)(_US16)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_INT32(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_US32)(expected), (_U_SINT)(_US32)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_UINT(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(expected), (_U_SINT)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_UINT8(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_US8 )(expected), (_U_SINT)(_US8 )(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_UINT16(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_US16)(expected), (_U_SINT)(_US16)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_UINT32(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_US32)(expected), (_U_SINT)(_US32)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_HEX8(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_US8 )(expected), (_U_SINT)(_US8 )(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX8)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_HEX16(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_US16)(expected), (_U_SINT)(_US16)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX16)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_HEX32(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_US32)(expected), (_U_SINT)(_US32)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX32)
|
||||||
|
#define UNITY_TEST_ASSERT_BITS(mask, expected, actual, line, message) UnityAssertBits((_U_SINT)(mask), (_U_SINT)(expected), (_U_SINT)(actual), (message), (UNITY_LINE_TYPE)line)
|
||||||
|
|
||||||
|
#define UNITY_TEST_ASSERT_INT_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(delta), (_U_SINT)(expected), (_U_SINT)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT)
|
||||||
|
#define UNITY_TEST_ASSERT_UINT_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(delta), (_U_SINT)(expected), (_U_SINT)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT)
|
||||||
|
#define UNITY_TEST_ASSERT_HEX8_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(_U_UINT)(_UU8 )(delta), (_U_SINT)(_U_UINT)(_UU8 )(expected), (_U_SINT)(_U_UINT)(_UU8 )(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX8)
|
||||||
|
#define UNITY_TEST_ASSERT_HEX16_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(_U_UINT)(_UU16)(delta), (_U_SINT)(_U_UINT)(_UU16)(expected), (_U_SINT)(_U_UINT)(_UU16)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX16)
|
||||||
|
#define UNITY_TEST_ASSERT_HEX32_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(_U_UINT)(_UU32)(delta), (_U_SINT)(_U_UINT)(_UU32)(expected), (_U_SINT)(_U_UINT)(_UU32)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX32)
|
||||||
|
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_PTR(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(_UP)(expected), (_U_SINT)(_UP)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_POINTER)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_STRING(expected, actual, line, message) UnityAssertEqualString((const char*)(expected), (const char*)(actual), (message), (UNITY_LINE_TYPE)line)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_MEMORY(expected, actual, len, line, message) UnityAssertEqualMemory((void*)(expected), (void*)(actual), (_UU32)(len), 1, (message), (UNITY_LINE_TYPE)line)
|
||||||
|
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((const _U_SINT*)(expected), (const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_INT8_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((const _U_SINT*)(expected), (const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT8)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_INT16_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((const _U_SINT*)(expected), (const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT16)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_INT32_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((const _U_SINT*)(expected), (const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT32)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((const _U_SINT*)(expected), (const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_UINT8_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((const _U_SINT*)(expected), (const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT8)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((const _U_SINT*)(expected), (const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT16)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_UINT32_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((const _U_SINT*)(expected), (const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT32)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((const _U_SINT*)(expected), (const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX8)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_HEX16_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((const _U_SINT*)(expected), (const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX16)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((const _U_SINT*)(expected), (const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX32)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_PTR_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((const _U_SINT*)(_UP*)(expected), (const _U_SINT*)(_UP*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_POINTER)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_STRING_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualStringArray((const char**)(expected), (const char**)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY(expected, actual, len, num_elements, line, message) UnityAssertEqualMemory((void*)(expected), (void*)(actual), (_UU32)(len), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line)
|
||||||
|
|
||||||
|
#ifdef UNITY_SUPPORT_64
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_INT64(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(expected), (_U_SINT)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT64)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_UINT64(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(expected), (_U_SINT)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT64)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_HEX64(expected, actual, line, message) UnityAssertEqualNumber((_U_SINT)(expected), (_U_SINT)(actual), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX64)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((const _U_SINT*)(expected), (const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_INT64)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((const _U_SINT*)(expected), (const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_UINT64)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((const _U_SINT*)(expected), (const _U_SINT*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX64)
|
||||||
|
#define UNITY_TEST_ASSERT_HEX64_WITHIN(delta, expected, actual, line, message) UnityAssertNumbersWithin((_U_SINT)(delta), (_U_SINT)(expected), (_U_SINT)(actual), NULL, (UNITY_LINE_TYPE)line, UNITY_DISPLAY_STYLE_HEX64)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef UNITY_EXCLUDE_FLOAT
|
||||||
|
#define UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, "Unity Floating Point Disabled")
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_FLOAT(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, "Unity Floating Point Disabled")
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, "Unity Floating Point Disabled")
|
||||||
|
#define UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, "Unity Floating Point Disabled")
|
||||||
|
#define UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, "Unity Floating Point Disabled")
|
||||||
|
#define UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, "Unity Floating Point Disabled")
|
||||||
|
#else
|
||||||
|
#define UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, line, message) UnityAssertFloatsWithin((_UF)(delta), (_UF)(expected), (_UF)(actual), (message), (UNITY_LINE_TYPE)line)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_FLOAT(expected, actual, line, message) UNITY_TEST_ASSERT_FLOAT_WITHIN((_UF)(expected) * (_UF)UNITY_FLOAT_PRECISION, (_UF)expected, (_UF)actual, (UNITY_LINE_TYPE)line, message)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualFloatArray((_UF*)(expected), (_UF*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line)
|
||||||
|
#define UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, line, message) UnityAssertFloatIsInf((_UF)(actual), (message), (UNITY_LINE_TYPE)line)
|
||||||
|
#define UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, line, message) UnityAssertFloatIsNegInf((_UF)(actual), (message), (UNITY_LINE_TYPE)line)
|
||||||
|
#define UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, line, message) UnityAssertFloatIsNaN((_UF)(actual), (message), (UNITY_LINE_TYPE)line)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||||
|
#define UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, "Unity Double Precision Disabled")
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_DOUBLE(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, "Unity Double Precision Disabled")
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, "Unity Double Precision Disabled")
|
||||||
|
#define UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, "Unity Double Precision Disabled")
|
||||||
|
#define UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, "Unity Double Precision Disabled")
|
||||||
|
#define UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)line, "Unity Double Precision Disabled")
|
||||||
|
#else
|
||||||
|
#define UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, line, message) UnityAssertDoublesWithin((_UD)(delta), (_UD)(expected), (_UD)(actual), (message), (UNITY_LINE_TYPE)line)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_DOUBLE(expected, actual, line, message) UNITY_TEST_ASSERT_DOUBLE_WITHIN((_UF)(expected) * (_UD)UNITY_DOUBLE_PRECISION, (_UD)expected, (_UD)actual, (UNITY_LINE_TYPE)line, message)
|
||||||
|
#define UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualDoubleArray((_UD*)(expected), (_UD*)(actual), (_UU32)(num_elements), (message), (UNITY_LINE_TYPE)line)
|
||||||
|
#define UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, line, message) UnityAssertFloatIsInf((_UF)(actual), (message), (UNITY_LINE_TYPE)line)
|
||||||
|
#define UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, line, message) UnityAssertFloatIsNegInf((_UF)(actual), (message), (UNITY_LINE_TYPE)line)
|
||||||
|
#define UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, line, message) UnityAssertFloatIsNaN((_UF)(actual), (message), (UNITY_LINE_TYPE)line)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
Loading…
x
Reference in New Issue
Block a user