diff --git a/makefile b/makefile index 6e95a280b37197d93d820b8355141084616767f8..af59374a1607cfadfae61f72cdb2a424aa043deb 100644 --- a/makefile +++ b/makefile @@ -1,13 +1,28 @@ C_COMPILER=gcc -OUT_FILE=-o testunity +TARGET_BASE = testunity ifeq ($(OS),Windows_NT) -OUT_EXTENSION=.exe + TARGET_EXTENSION=.exe else -OUT_EXTENSION=.out + TARGET_EXTENSION=.out endif +TARGET = $(TARGET_BASE)$(TARGET_EXTENSION) +OUT_FILE=-o $(TARGET) SRC_FILES=src/unity.c test/testunity.c test/testunity_Runner.c INC_DIRS=-Isrc SYMBOLS=-DTEST +ifeq ($(OS),Windows_NT) + CLEANUP = del /F /Q bin\* && del /F /Q $(TARGET) +else + CLEANUP = rm -f bin/*.o ; rm -f $(TARGET) +endif + +all: clean default + default: $(C_COMPILER) $(INC_DIRS) $(SYMBOLS) $(SRC_FILES) $(OUT_FILE)$(OUT_EXTENSION) + $(TARGET) + +clean: + $(CLEANUP) + diff --git a/src/UnityHelper.c b/src/UnityHelper.c new file mode 100644 index 0000000000000000000000000000000000000000..c41c0c6892849980c5719c02f16b993b814b1e93 --- /dev/null +++ b/src/UnityHelper.c @@ -0,0 +1,39 @@ +#include "unity.h" +#include "UnityHelper.h" +#include +#include + +static char message[1024]; + +void AssertEqualArrayUint(unsigned int* expected, unsigned int* actual, unsigned int length) +{ + unsigned int i; + + for (i = 0; i < length; i++) + { + sprintf(message, "Array comparison failed at index %u.", i); + TEST_ASSERT_EQUAL_UINT_MESSAGE(expected[i], actual[i], message); + } +} + +void AssertEqualArrayInt(int* expected, int* actual, unsigned int length) +{ + unsigned int i; + + for (i = 0; i < length; i++) + { + sprintf(message, "Array comparison failed at index %u.", i); + TEST_ASSERT_EQUAL_INT_MESSAGE(expected[i], actual[i], message); + } +} + +void AssertEqualArrayFloatWithin(float tolerance, float* expected, float* actual, unsigned int length) +{ + unsigned int i; + + for (i = 0; i < length; i++) + { + sprintf(message, "Array mismatch at index %u, Expected %f, Actual %f, Tolerance %f, Delta %f", i, expected[i], actual[i], tolerance, (expected[i]-actual[i])); + TEST_ASSERT_FLOAT_WITHIN_MESSAGE(tolerance, expected[i], actual[i], message); + } +} diff --git a/src/UnityHelper.h b/src/UnityHelper.h new file mode 100644 index 0000000000000000000000000000000000000000..d1d507af2c2ebcdb91b8072b2315215b19e78fa6 --- /dev/null +++ b/src/UnityHelper.h @@ -0,0 +1,12 @@ +#ifndef _TESTHELPER_H +#define _TESTHELPER_H + +void AssertEqualArrayUint(unsigned int* expected, unsigned int* actual, unsigned int length); +void AssertEqualArrayInt(int* expected, int* actual, unsigned int length); +void AssertEqualArrayFloatWithin(float tolerance, float* expected, float* actual, unsigned int length); + +#define TEST_ASSERT_EQUAL_UINT_ARRAY(expected, actual, length) {TEST_WRAP(AssertEqualArrayUint(expected, actual, length));} +#define TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, length) {TEST_WRAP(AssertEqualArrayInt(expected, actual, length));} +#define TEST_ASSERT_FLOAT_ARRAY_WITHIN(tolerance, expected, actual, length) {TEST_WRAP(AssertEqualArrayFloatWithin(tolerance, expected, actual, length));} + +#endif // _TESTHELPER_H diff --git a/src/unity.c b/src/unity.c index 549ae3d7dd4b0fd25e797539672a83369f4f8b54..619e5ee7ed12230c68f05e6e2d3c78d9c14f48fc 100644 --- a/src/unity.c +++ b/src/unity.c @@ -334,3 +334,7 @@ void UnityEnd(void) } } +int UnityGetNumFailures(void) +{ + return Unity.TestFailures; +} diff --git a/src/unity.h b/src/unity.h index c089ee681c6a15bd39709b9d63310b98d0b77259..a3a47856c0c486b3ba76e3b387a6a4cfcdd88ab3 100644 --- a/src/unity.h +++ b/src/unity.h @@ -34,6 +34,7 @@ void CreateResults(); void UnityBegin(); void UnityEnd(void); +int UnityGetNumFailures(void); void UnityPrintChar(char ch); void UnityPrint(const char *string);