summaryrefslogtreecommitdiff
path: root/deps/Unity/examples
diff options
context:
space:
mode:
authorOmniscient <17525998+omnisci3nce@users.noreply.github.com>2024-02-24 22:47:46 +1100
committerOmniscient <17525998+omnisci3nce@users.noreply.github.com>2024-02-24 22:47:46 +1100
commit7b3afcaf77f96e7d62f6cd1623ead7f17512d79f (patch)
treeb5f82c64e9c06a84e4d095ab4ac48712e860b673 /deps/Unity/examples
parentb047be5252aeb981faea077409c1768fda0301d9 (diff)
repo init. partial port of existing code
Diffstat (limited to 'deps/Unity/examples')
-rw-r--r--deps/Unity/examples/example_1/makefile72
-rw-r--r--deps/Unity/examples/example_1/meson.build48
-rw-r--r--deps/Unity/examples/example_1/readme.txt12
-rw-r--r--deps/Unity/examples/example_1/src/ProductionCode.c24
-rw-r--r--deps/Unity/examples/example_1/src/ProductionCode.h3
-rw-r--r--deps/Unity/examples/example_1/src/ProductionCode2.c11
-rw-r--r--deps/Unity/examples/example_1/src/ProductionCode2.h2
-rw-r--r--deps/Unity/examples/example_1/subprojects/unity.wrap3
-rw-r--r--deps/Unity/examples/example_1/test/TestProductionCode.c62
-rw-r--r--deps/Unity/examples/example_1/test/TestProductionCode2.c31
-rw-r--r--deps/Unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c53
-rw-r--r--deps/Unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c57
-rw-r--r--deps/Unity/examples/example_2/makefile71
-rw-r--r--deps/Unity/examples/example_2/readme.txt5
-rw-r--r--deps/Unity/examples/example_2/src/ProductionCode.c24
-rw-r--r--deps/Unity/examples/example_2/src/ProductionCode.h3
-rw-r--r--deps/Unity/examples/example_2/src/ProductionCode2.c11
-rw-r--r--deps/Unity/examples/example_2/src/ProductionCode2.h2
-rw-r--r--deps/Unity/examples/example_2/test/TestProductionCode.c64
-rw-r--r--deps/Unity/examples/example_2/test/TestProductionCode2.c33
-rw-r--r--deps/Unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c9
-rw-r--r--deps/Unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c11
-rw-r--r--deps/Unity/examples/example_2/test/test_runners/all_tests.c12
-rw-r--r--deps/Unity/examples/example_3/helper/UnityHelper.c10
-rw-r--r--deps/Unity/examples/example_3/helper/UnityHelper.h12
-rw-r--r--deps/Unity/examples/example_3/rakefile.rb38
-rw-r--r--deps/Unity/examples/example_3/rakefile_helper.rb254
-rw-r--r--deps/Unity/examples/example_3/readme.txt13
-rw-r--r--deps/Unity/examples/example_3/src/ProductionCode.c24
-rw-r--r--deps/Unity/examples/example_3/src/ProductionCode.h3
-rw-r--r--deps/Unity/examples/example_3/src/ProductionCode2.c11
-rw-r--r--deps/Unity/examples/example_3/src/ProductionCode2.h2
-rw-r--r--deps/Unity/examples/example_3/target_gcc_32.yml47
-rw-r--r--deps/Unity/examples/example_3/test/TestProductionCode.c62
-rw-r--r--deps/Unity/examples/example_3/test/TestProductionCode2.c31
-rw-r--r--deps/Unity/examples/example_4/meson.build12
-rw-r--r--deps/Unity/examples/example_4/readme.txt15
-rw-r--r--deps/Unity/examples/example_4/src/ProductionCode.c24
-rw-r--r--deps/Unity/examples/example_4/src/ProductionCode.h3
-rw-r--r--deps/Unity/examples/example_4/src/ProductionCode2.c11
-rw-r--r--deps/Unity/examples/example_4/src/ProductionCode2.h2
-rw-r--r--deps/Unity/examples/example_4/src/meson.build16
-rwxr-xr-xdeps/Unity/examples/example_4/subprojects/unity.wrap6
-rw-r--r--deps/Unity/examples/example_4/test/TestProductionCode.c63
-rw-r--r--deps/Unity/examples/example_4/test/TestProductionCode2.c35
-rw-r--r--deps/Unity/examples/example_4/test/meson.build7
-rw-r--r--deps/Unity/examples/example_4/test/test_runners/TestProductionCode2_Runner.c53
-rw-r--r--deps/Unity/examples/example_4/test/test_runners/TestProductionCode_Runner.c57
-rw-r--r--deps/Unity/examples/example_4/test/test_runners/meson.build13
-rw-r--r--deps/Unity/examples/unity_config.h244
50 files changed, 1691 insertions, 0 deletions
diff --git a/deps/Unity/examples/example_1/makefile b/deps/Unity/examples/example_1/makefile
new file mode 100644
index 0000000..28409c1
--- /dev/null
+++ b/deps/Unity/examples/example_1/makefile
@@ -0,0 +1,72 @@
+# ==========================================
+# 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]
+# ==========================================
+
+#We try to detect the OS we are running on, and adjust commands as needed
+ifeq ($(OS),Windows_NT)
+ ifeq ($(shell uname -s),) # not in a bash-like shell
+ CLEANUP = del /F /Q
+ MKDIR = mkdir
+ else # in a bash-like shell, like msys
+ CLEANUP = rm -f
+ MKDIR = mkdir -p
+ endif
+ TARGET_EXTENSION=.exe
+else
+ CLEANUP = rm -f
+ MKDIR = mkdir -p
+ TARGET_EXTENSION=.out
+endif
+
+C_COMPILER=gcc
+ifeq ($(shell uname -s), Darwin)
+C_COMPILER=clang
+endif
+
+UNITY_ROOT=../..
+
+CFLAGS=-std=c89
+CFLAGS += -Wall
+CFLAGS += -Wextra
+CFLAGS += -Wpointer-arith
+CFLAGS += -Wcast-align
+CFLAGS += -Wwrite-strings
+CFLAGS += -Wswitch-default
+CFLAGS += -Wunreachable-code
+CFLAGS += -Winit-self
+CFLAGS += -Wmissing-field-initializers
+CFLAGS += -Wno-unknown-pragmas
+CFLAGS += -Wstrict-prototypes
+CFLAGS += -Wundef
+CFLAGS += -Wold-style-definition
+#CFLAGS += -Wno-misleading-indentation
+
+TARGET_BASE1=test1
+TARGET_BASE2=test2
+TARGET1 = $(TARGET_BASE1)$(TARGET_EXTENSION)
+TARGET2 = $(TARGET_BASE2)$(TARGET_EXTENSION)
+SRC_FILES1=$(UNITY_ROOT)/src/unity.c src/ProductionCode.c test/TestProductionCode.c test/test_runners/TestProductionCode_Runner.c
+SRC_FILES2=$(UNITY_ROOT)/src/unity.c src/ProductionCode2.c test/TestProductionCode2.c test/test_runners/TestProductionCode2_Runner.c
+INC_DIRS=-Isrc -I$(UNITY_ROOT)/src
+SYMBOLS=
+
+all: clean default
+
+default: $(SRC_FILES1) $(SRC_FILES2)
+ $(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $(SRC_FILES1) -o $(TARGET1)
+ $(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $(SRC_FILES2) -o $(TARGET2)
+ - ./$(TARGET1)
+ - ./$(TARGET2)
+
+test/test_runners/TestProductionCode_Runner.c: test/TestProductionCode.c
+ ruby $(UNITY_ROOT)/auto/generate_test_runner.rb test/TestProductionCode.c test/test_runners/TestProductionCode_Runner.c
+test/test_runners/TestProductionCode2_Runner.c: test/TestProductionCode2.c
+ ruby $(UNITY_ROOT)/auto/generate_test_runner.rb test/TestProductionCode2.c test/test_runners/TestProductionCode2_Runner.c
+
+clean:
+ $(CLEANUP) $(TARGET1) $(TARGET2)
+
+ci: CFLAGS += -Werror
+ci: default
diff --git a/deps/Unity/examples/example_1/meson.build b/deps/Unity/examples/example_1/meson.build
new file mode 100644
index 0000000..645eeb9
--- /dev/null
+++ b/deps/Unity/examples/example_1/meson.build
@@ -0,0 +1,48 @@
+project('Unity example', 'c',
+ license: 'MIT',
+ default_options: [
+ 'c_std=c99',
+ 'warning_level=3',
+ ],
+ meson_version: '>= 0.49.0'
+)
+
+unity_subproject = subproject('unity')
+unity_dependency = unity_subproject.get_variable('unity_dep')
+unity_gen_runner = unity_subproject.get_variable('gen_test_runner')
+
+src1 = files([
+ 'src' / 'ProductionCode.c',
+ 'test' / 'TestProductionCode.c',
+])
+
+src2 = files([
+ 'src' / 'ProductionCode2.c',
+ 'test' / 'TestProductionCode2.c',
+])
+
+inc = include_directories('src')
+
+test1 = executable('test1',
+ sources: [
+ src1,
+ unity_gen_runner.process('test' / 'TestProductionCode.c')
+ ],
+ include_directories: [ inc ],
+ dependencies: [ unity_dependency ],
+)
+
+test('test1', test1,
+ should_fail: true)
+
+test2 = executable('test2',
+ sources: [
+ src2,
+ unity_gen_runner.process('test' / 'TestProductionCode2.c')
+ ],
+ include_directories: [ inc ],
+ dependencies: [ unity_dependency ],
+)
+
+test('test2', test2)
+
diff --git a/deps/Unity/examples/example_1/readme.txt b/deps/Unity/examples/example_1/readme.txt
new file mode 100644
index 0000000..ddddd36
--- /dev/null
+++ b/deps/Unity/examples/example_1/readme.txt
@@ -0,0 +1,12 @@
+Example 1
+=========
+
+Close to the simplest possible example of Unity, using only basic features.
+
+Build and run with Make
+---
+Just run `make`.
+
+Build and run with Meson
+---
+Run `meson setup build` to create the build directory, and then `meson test -C build` to build and run the tests.
diff --git a/deps/Unity/examples/example_1/src/ProductionCode.c b/deps/Unity/examples/example_1/src/ProductionCode.c
new file mode 100644
index 0000000..db128e5
--- /dev/null
+++ b/deps/Unity/examples/example_1/src/ProductionCode.c
@@ -0,0 +1,24 @@
+
+#include "ProductionCode.h"
+
+int Counter = 0;
+int NumbersToFind[9] = { 0, 34, 55, 66, 32, 11, 1, 77, 888 }; /* some obnoxious array to search that is 1-based indexing instead of 0. */
+
+/* This function is supposed to search through NumbersToFind and find a particular number.
+ * If it finds it, the index is returned. Otherwise 0 is returned which sorta makes sense since
+ * NumbersToFind is indexed from 1. Unfortunately it's broken
+ * (and should therefore be caught by our tests) */
+int FindFunction_WhichIsBroken(int NumberToFind)
+{
+ int i = 0;
+ while (i < 8) /* Notice I should have been in braces */
+ i++;
+ if (NumbersToFind[i] == NumberToFind) /* Yikes! I'm getting run after the loop finishes instead of during it! */
+ return i;
+ return 0;
+}
+
+int FunctionWhichReturnsLocalVariable(void)
+{
+ return Counter;
+}
diff --git a/deps/Unity/examples/example_1/src/ProductionCode.h b/deps/Unity/examples/example_1/src/ProductionCode.h
new file mode 100644
index 0000000..250ca0d
--- /dev/null
+++ b/deps/Unity/examples/example_1/src/ProductionCode.h
@@ -0,0 +1,3 @@
+
+int FindFunction_WhichIsBroken(int NumberToFind);
+int FunctionWhichReturnsLocalVariable(void);
diff --git a/deps/Unity/examples/example_1/src/ProductionCode2.c b/deps/Unity/examples/example_1/src/ProductionCode2.c
new file mode 100644
index 0000000..98ee7ee
--- /dev/null
+++ b/deps/Unity/examples/example_1/src/ProductionCode2.c
@@ -0,0 +1,11 @@
+
+#include "ProductionCode2.h"
+
+char* ThisFunctionHasNotBeenTested(int Poor, char* LittleFunction)
+{
+ (void)Poor;
+ (void)LittleFunction;
+ /* Since There Are No Tests Yet, This Function Could Be Empty For All We Know.
+ * Which isn't terribly useful... but at least we put in a TEST_IGNORE so we won't forget */
+ return (char*)0;
+}
diff --git a/deps/Unity/examples/example_1/src/ProductionCode2.h b/deps/Unity/examples/example_1/src/ProductionCode2.h
new file mode 100644
index 0000000..34ae980
--- /dev/null
+++ b/deps/Unity/examples/example_1/src/ProductionCode2.h
@@ -0,0 +1,2 @@
+
+char* ThisFunctionHasNotBeenTested(int Poor, char* LittleFunction);
diff --git a/deps/Unity/examples/example_1/subprojects/unity.wrap b/deps/Unity/examples/example_1/subprojects/unity.wrap
new file mode 100644
index 0000000..6df241b
--- /dev/null
+++ b/deps/Unity/examples/example_1/subprojects/unity.wrap
@@ -0,0 +1,3 @@
+[wrap-git]
+url = https://github.com/ThrowTheSwitch/Unity.git
+revision = head
diff --git a/deps/Unity/examples/example_1/test/TestProductionCode.c b/deps/Unity/examples/example_1/test/TestProductionCode.c
new file mode 100644
index 0000000..404c371
--- /dev/null
+++ b/deps/Unity/examples/example_1/test/TestProductionCode.c
@@ -0,0 +1,62 @@
+
+#include "ProductionCode.h"
+#include "unity.h"
+
+/* sometimes you may want to get at local data in a module.
+ * for example: If you plan to pass by reference, this could be useful
+ * however, it should often be avoided */
+extern int Counter;
+
+void setUp(void)
+{
+ /* This is run before EACH TEST */
+ Counter = 0x5a5a;
+}
+
+void tearDown(void)
+{
+}
+
+void test_FindFunction_WhichIsBroken_ShouldReturnZeroIfItemIsNotInList_WhichWorksEvenInOurBrokenCode(void)
+{
+ /* All of these should pass */
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(78));
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(2));
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(33));
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(999));
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(-1));
+}
+
+void test_FindFunction_WhichIsBroken_ShouldReturnTheIndexForItemsInList_WhichWillFailBecauseOurFunctionUnderTestIsBroken(void)
+{
+ /* You should see this line fail in your test summary */
+ TEST_ASSERT_EQUAL(1, FindFunction_WhichIsBroken(34));
+
+ /* Notice the rest of these didn't get a chance to run because the line above failed.
+ * Unit tests abort each test function on the first sign of trouble.
+ * Then NEXT test function runs as normal. */
+ TEST_ASSERT_EQUAL(8, FindFunction_WhichIsBroken(8888));
+}
+
+void test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValue(void)
+{
+ /* This should be true because setUp set this up for us before this test */
+ TEST_ASSERT_EQUAL_HEX(0x5a5a, FunctionWhichReturnsLocalVariable());
+
+ /* This should be true because we can still change our answer */
+ Counter = 0x1234;
+ TEST_ASSERT_EQUAL_HEX(0x1234, FunctionWhichReturnsLocalVariable());
+}
+
+void test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValueAgain(void)
+{
+ /* This should be true again because setup was rerun before this test (and after we changed it to 0x1234) */
+ TEST_ASSERT_EQUAL_HEX(0x5a5a, FunctionWhichReturnsLocalVariable());
+}
+
+void test_FunctionWhichReturnsLocalVariable_ShouldReturnCurrentCounter_ButFailsBecauseThisTestIsActuallyFlawed(void)
+{
+ /* Sometimes you get the test wrong. When that happens, you get a failure too... and a quick look should tell
+ * you what actually happened...which in this case was a failure to setup the initial condition. */
+ TEST_ASSERT_EQUAL_HEX(0x1234, FunctionWhichReturnsLocalVariable());
+}
diff --git a/deps/Unity/examples/example_1/test/TestProductionCode2.c b/deps/Unity/examples/example_1/test/TestProductionCode2.c
new file mode 100644
index 0000000..7d940c1
--- /dev/null
+++ b/deps/Unity/examples/example_1/test/TestProductionCode2.c
@@ -0,0 +1,31 @@
+
+#include "ProductionCode2.h"
+#include "unity.h"
+
+/* These should be ignored because they are commented out in various ways:
+#include "whatever.h"
+#include "somethingelse.h"
+*/
+
+void setUp(void)
+{
+}
+
+void tearDown(void)
+{
+}
+
+void test_IgnoredTest(void)
+{
+ TEST_IGNORE_MESSAGE("This Test Was Ignored On Purpose");
+}
+
+void test_AnotherIgnoredTest(void)
+{
+ TEST_IGNORE_MESSAGE("These Can Be Useful For Leaving Yourself Notes On What You Need To Do Yet");
+}
+
+void test_ThisFunctionHasNotBeenTested_NeedsToBeImplemented(void)
+{
+ TEST_IGNORE(); /* Like This */
+}
diff --git a/deps/Unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c b/deps/Unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c
new file mode 100644
index 0000000..cf72c21
--- /dev/null
+++ b/deps/Unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c
@@ -0,0 +1,53 @@
+/* AUTOGENERATED FILE. DO NOT EDIT. */
+
+/*=======Test Runner Used To Run Each Test Below=====*/
+#define RUN_TEST(TestFunc, TestLineNum) \
+{ \
+ Unity.CurrentTestName = #TestFunc; \
+ Unity.CurrentTestLineNumber = TestLineNum; \
+ Unity.NumberOfTests++; \
+ if (TEST_PROTECT()) \
+ { \
+ setUp(); \
+ TestFunc(); \
+ } \
+ if (TEST_PROTECT()) \
+ { \
+ tearDown(); \
+ } \
+ UnityConcludeTest(); \
+}
+
+/*=======Automagically Detected Files To Include=====*/
+#include "unity.h"
+#include <setjmp.h>
+#include <stdio.h>
+#include "ProductionCode2.h"
+
+/*=======External Functions This Runner Calls=====*/
+extern void setUp(void);
+extern void tearDown(void);
+extern void test_IgnoredTest(void);
+extern void test_AnotherIgnoredTest(void);
+extern void test_ThisFunctionHasNotBeenTested_NeedsToBeImplemented(void);
+
+
+/*=======Test Reset Option=====*/
+void resetTest(void);
+void resetTest(void)
+{
+ tearDown();
+ setUp();
+}
+
+
+/*=======MAIN=====*/
+int main(void)
+{
+ UnityBegin("test/TestProductionCode2.c");
+ RUN_TEST(test_IgnoredTest, 18);
+ RUN_TEST(test_AnotherIgnoredTest, 23);
+ RUN_TEST(test_ThisFunctionHasNotBeenTested_NeedsToBeImplemented, 28);
+
+ return (UnityEnd());
+}
diff --git a/deps/Unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c b/deps/Unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c
new file mode 100644
index 0000000..3b49af7
--- /dev/null
+++ b/deps/Unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c
@@ -0,0 +1,57 @@
+/* AUTOGENERATED FILE. DO NOT EDIT. */
+
+/*=======Test Runner Used To Run Each Test Below=====*/
+#define RUN_TEST(TestFunc, TestLineNum) \
+{ \
+ Unity.CurrentTestName = #TestFunc; \
+ Unity.CurrentTestLineNumber = TestLineNum; \
+ Unity.NumberOfTests++; \
+ if (TEST_PROTECT()) \
+ { \
+ setUp(); \
+ TestFunc(); \
+ } \
+ if (TEST_PROTECT()) \
+ { \
+ tearDown(); \
+ } \
+ UnityConcludeTest(); \
+}
+
+/*=======Automagically Detected Files To Include=====*/
+#include "unity.h"
+#include <setjmp.h>
+#include <stdio.h>
+#include "ProductionCode.h"
+
+/*=======External Functions This Runner Calls=====*/
+extern void setUp(void);
+extern void tearDown(void);
+extern void test_FindFunction_WhichIsBroken_ShouldReturnZeroIfItemIsNotInList_WhichWorksEvenInOurBrokenCode(void);
+extern void test_FindFunction_WhichIsBroken_ShouldReturnTheIndexForItemsInList_WhichWillFailBecauseOurFunctionUnderTestIsBroken(void);
+extern void test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValue(void);
+extern void test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValueAgain(void);
+extern void test_FunctionWhichReturnsLocalVariable_ShouldReturnCurrentCounter_ButFailsBecauseThisTestIsActuallyFlawed(void);
+
+
+/*=======Test Reset Option=====*/
+void resetTest(void);
+void resetTest(void)
+{
+ tearDown();
+ setUp();
+}
+
+
+/*=======MAIN=====*/
+int main(void)
+{
+ UnityBegin("test/TestProductionCode.c");
+ RUN_TEST(test_FindFunction_WhichIsBroken_ShouldReturnZeroIfItemIsNotInList_WhichWorksEvenInOurBrokenCode, 20);
+ RUN_TEST(test_FindFunction_WhichIsBroken_ShouldReturnTheIndexForItemsInList_WhichWillFailBecauseOurFunctionUnderTestIsBroken, 30);
+ RUN_TEST(test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValue, 41);
+ RUN_TEST(test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValueAgain, 51);
+ RUN_TEST(test_FunctionWhichReturnsLocalVariable_ShouldReturnCurrentCounter_ButFailsBecauseThisTestIsActuallyFlawed, 57);
+
+ return (UnityEnd());
+}
diff --git a/deps/Unity/examples/example_2/makefile b/deps/Unity/examples/example_2/makefile
new file mode 100644
index 0000000..e283217
--- /dev/null
+++ b/deps/Unity/examples/example_2/makefile
@@ -0,0 +1,71 @@
+# ==========================================
+# 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]
+# ==========================================
+
+#We try to detect the OS we are running on, and adjust commands as needed
+ifeq ($(OS),Windows_NT)
+ ifeq ($(shell uname -s),) # not in a bash-like shell
+ CLEANUP = del /F /Q
+ MKDIR = mkdir
+ else # in a bash-like shell, like msys
+ CLEANUP = rm -f
+ MKDIR = mkdir -p
+ endif
+ TARGET_EXTENSION=.exe
+else
+ CLEANUP = rm -f
+ MKDIR = mkdir -p
+ TARGET_EXTENSION=.out
+endif
+
+C_COMPILER=gcc
+ifeq ($(shell uname -s), Darwin)
+C_COMPILER=clang
+endif
+
+UNITY_ROOT=../..
+
+CFLAGS=-std=c99
+CFLAGS += -Wall
+CFLAGS += -Wextra
+CFLAGS += -Wpointer-arith
+CFLAGS += -Wcast-align
+CFLAGS += -Wwrite-strings
+CFLAGS += -Wswitch-default
+CFLAGS += -Wunreachable-code
+CFLAGS += -Winit-self
+CFLAGS += -Wmissing-field-initializers
+CFLAGS += -Wno-unknown-pragmas
+CFLAGS += -Wstrict-prototypes
+CFLAGS += -Wundef
+CFLAGS += -Wold-style-definition
+#CFLAGS += -Wno-misleading-indentation
+
+TARGET_BASE1=all_tests
+TARGET1 = $(TARGET_BASE1)$(TARGET_EXTENSION)
+SRC_FILES1=\
+ $(UNITY_ROOT)/src/unity.c \
+ $(UNITY_ROOT)/extras/fixture/src/unity_fixture.c \
+ src/ProductionCode.c \
+ src/ProductionCode2.c \
+ test/TestProductionCode.c \
+ test/TestProductionCode2.c \
+ test/test_runners/TestProductionCode_Runner.c \
+ test/test_runners/TestProductionCode2_Runner.c \
+ test/test_runners/all_tests.c
+INC_DIRS=-Isrc -I$(UNITY_ROOT)/src -I$(UNITY_ROOT)/extras/fixture/src
+SYMBOLS=-DUNITY_FIXTURE_NO_EXTRAS
+
+all: clean default
+
+default:
+ $(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $(SRC_FILES1) -o $(TARGET1)
+ - ./$(TARGET1) -v
+
+clean:
+ $(CLEANUP) $(TARGET1)
+
+ci: CFLAGS += -Werror
+ci: default
diff --git a/deps/Unity/examples/example_2/readme.txt b/deps/Unity/examples/example_2/readme.txt
new file mode 100644
index 0000000..f0fce65
--- /dev/null
+++ b/deps/Unity/examples/example_2/readme.txt
@@ -0,0 +1,5 @@
+Example 2
+=========
+
+Same as the first example, but now using Unity's test fixture to group tests
+together. Using the test fixture also makes writing test runners much easier. \ No newline at end of file
diff --git a/deps/Unity/examples/example_2/src/ProductionCode.c b/deps/Unity/examples/example_2/src/ProductionCode.c
new file mode 100644
index 0000000..3bafe20
--- /dev/null
+++ b/deps/Unity/examples/example_2/src/ProductionCode.c
@@ -0,0 +1,24 @@
+
+#include "ProductionCode.h"
+
+int Counter = 0;
+int NumbersToFind[9] = { 0, 34, 55, 66, 32, 11, 1, 77, 888 }; //some obnoxious array to search that is 1-based indexing instead of 0.
+
+// This function is supposed to search through NumbersToFind and find a particular number.
+// If it finds it, the index is returned. Otherwise 0 is returned which sorta makes sense since
+// NumbersToFind is indexed from 1. Unfortunately it's broken
+// (and should therefore be caught by our tests)
+int FindFunction_WhichIsBroken(int NumberToFind)
+{
+ int i = 0;
+ while (i < 8) //Notice I should have been in braces
+ i++;
+ if (NumbersToFind[i] == NumberToFind) //Yikes! I'm getting run after the loop finishes instead of during it!
+ return i;
+ return 0;
+}
+
+int FunctionWhichReturnsLocalVariable(void)
+{
+ return Counter;
+}
diff --git a/deps/Unity/examples/example_2/src/ProductionCode.h b/deps/Unity/examples/example_2/src/ProductionCode.h
new file mode 100644
index 0000000..250ca0d
--- /dev/null
+++ b/deps/Unity/examples/example_2/src/ProductionCode.h
@@ -0,0 +1,3 @@
+
+int FindFunction_WhichIsBroken(int NumberToFind);
+int FunctionWhichReturnsLocalVariable(void);
diff --git a/deps/Unity/examples/example_2/src/ProductionCode2.c b/deps/Unity/examples/example_2/src/ProductionCode2.c
new file mode 100644
index 0000000..77c969f
--- /dev/null
+++ b/deps/Unity/examples/example_2/src/ProductionCode2.c
@@ -0,0 +1,11 @@
+
+#include "ProductionCode2.h"
+
+char* ThisFunctionHasNotBeenTested(int Poor, char* LittleFunction)
+{
+ (void)Poor;
+ (void)LittleFunction;
+ //Since There Are No Tests Yet, This Function Could Be Empty For All We Know.
+ // Which isn't terribly useful... but at least we put in a TEST_IGNORE so we won't forget
+ return (char*)0;
+}
diff --git a/deps/Unity/examples/example_2/src/ProductionCode2.h b/deps/Unity/examples/example_2/src/ProductionCode2.h
new file mode 100644
index 0000000..34ae980
--- /dev/null
+++ b/deps/Unity/examples/example_2/src/ProductionCode2.h
@@ -0,0 +1,2 @@
+
+char* ThisFunctionHasNotBeenTested(int Poor, char* LittleFunction);
diff --git a/deps/Unity/examples/example_2/test/TestProductionCode.c b/deps/Unity/examples/example_2/test/TestProductionCode.c
new file mode 100644
index 0000000..b8fb95c
--- /dev/null
+++ b/deps/Unity/examples/example_2/test/TestProductionCode.c
@@ -0,0 +1,64 @@
+#include "ProductionCode.h"
+#include "unity.h"
+#include "unity_fixture.h"
+
+TEST_GROUP(ProductionCode);
+
+//sometimes you may want to get at local data in a module.
+//for example: If you plan to pass by reference, this could be useful
+//however, it should often be avoided
+extern int Counter;
+
+TEST_SETUP(ProductionCode)
+{
+ //This is run before EACH TEST
+ Counter = 0x5a5a;
+}
+
+TEST_TEAR_DOWN(ProductionCode)
+{
+}
+
+TEST(ProductionCode, FindFunction_WhichIsBroken_ShouldReturnZeroIfItemIsNotInList_WhichWorksEvenInOurBrokenCode)
+{
+ //All of these should pass
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(78));
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(2));
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(33));
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(999));
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(-1));
+}
+
+TEST(ProductionCode, FindFunction_WhichIsBroken_ShouldReturnTheIndexForItemsInList_WhichWillFailBecauseOurFunctionUnderTestIsBroken)
+{
+ // You should see this line fail in your test summary
+ TEST_ASSERT_EQUAL(1, FindFunction_WhichIsBroken(34));
+
+ // Notice the rest of these didn't get a chance to run because the line above failed.
+ // Unit tests abort each test function on the first sign of trouble.
+ // Then NEXT test function runs as normal.
+ TEST_ASSERT_EQUAL(8, FindFunction_WhichIsBroken(8888));
+}
+
+TEST(ProductionCode, FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValue)
+{
+ //This should be true because setUp set this up for us before this test
+ TEST_ASSERT_EQUAL_HEX(0x5a5a, FunctionWhichReturnsLocalVariable());
+
+ //This should be true because we can still change our answer
+ Counter = 0x1234;
+ TEST_ASSERT_EQUAL_HEX(0x1234, FunctionWhichReturnsLocalVariable());
+}
+
+TEST(ProductionCode, FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValueAgain)
+{
+ //This should be true again because setup was rerun before this test (and after we changed it to 0x1234)
+ TEST_ASSERT_EQUAL_HEX(0x5a5a, FunctionWhichReturnsLocalVariable());
+}
+
+TEST(ProductionCode, FunctionWhichReturnsLocalVariable_ShouldReturnCurrentCounter_ButFailsBecauseThisTestIsActuallyFlawed)
+{
+ //Sometimes you get the test wrong. When that happens, you get a failure too... and a quick look should tell
+ // you what actually happened...which in this case was a failure to setup the initial condition.
+ TEST_ASSERT_EQUAL_HEX(0x1234, FunctionWhichReturnsLocalVariable());
+}
diff --git a/deps/Unity/examples/example_2/test/TestProductionCode2.c b/deps/Unity/examples/example_2/test/TestProductionCode2.c
new file mode 100644
index 0000000..d9f4efe
--- /dev/null
+++ b/deps/Unity/examples/example_2/test/TestProductionCode2.c
@@ -0,0 +1,33 @@
+#include "ProductionCode2.h"
+#include "unity.h"
+#include "unity_fixture.h"
+
+TEST_GROUP(ProductionCode2);
+
+/* These should be ignored because they are commented out in various ways:
+#include "whatever.h"
+*/
+//#include "somethingelse.h"
+
+TEST_SETUP(ProductionCode2)
+{
+}
+
+TEST_TEAR_DOWN(ProductionCode2)
+{
+}
+
+TEST(ProductionCode2, IgnoredTest)
+{
+ TEST_IGNORE_MESSAGE("This Test Was Ignored On Purpose");
+}
+
+TEST(ProductionCode2, AnotherIgnoredTest)
+{
+ TEST_IGNORE_MESSAGE("These Can Be Useful For Leaving Yourself Notes On What You Need To Do Yet");
+}
+
+TEST(ProductionCode2, ThisFunctionHasNotBeenTested_NeedsToBeImplemented)
+{
+ TEST_IGNORE(); //Like This
+}
diff --git a/deps/Unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c b/deps/Unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c
new file mode 100644
index 0000000..6fcc3b1
--- /dev/null
+++ b/deps/Unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c
@@ -0,0 +1,9 @@
+#include "unity.h"
+#include "unity_fixture.h"
+
+TEST_GROUP_RUNNER(ProductionCode2)
+{
+ RUN_TEST_CASE(ProductionCode2, IgnoredTest);
+ RUN_TEST_CASE(ProductionCode2, AnotherIgnoredTest);
+ RUN_TEST_CASE(ProductionCode2, ThisFunctionHasNotBeenTested_NeedsToBeImplemented);
+} \ No newline at end of file
diff --git a/deps/Unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c b/deps/Unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c
new file mode 100644
index 0000000..41a416a
--- /dev/null
+++ b/deps/Unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c
@@ -0,0 +1,11 @@
+#include "unity.h"
+#include "unity_fixture.h"
+
+TEST_GROUP_RUNNER(ProductionCode)
+{
+ RUN_TEST_CASE(ProductionCode, FindFunction_WhichIsBroken_ShouldReturnZeroIfItemIsNotInList_WhichWorksEvenInOurBrokenCode);
+ RUN_TEST_CASE(ProductionCode, FindFunction_WhichIsBroken_ShouldReturnTheIndexForItemsInList_WhichWillFailBecauseOurFunctionUnderTestIsBroken);
+ RUN_TEST_CASE(ProductionCode, FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValue);
+ RUN_TEST_CASE(ProductionCode, FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValueAgain);
+ RUN_TEST_CASE(ProductionCode, FunctionWhichReturnsLocalVariable_ShouldReturnCurrentCounter_ButFailsBecauseThisTestIsActuallyFlawed);
+} \ No newline at end of file
diff --git a/deps/Unity/examples/example_2/test/test_runners/all_tests.c b/deps/Unity/examples/example_2/test/test_runners/all_tests.c
new file mode 100644
index 0000000..e706ece
--- /dev/null
+++ b/deps/Unity/examples/example_2/test/test_runners/all_tests.c
@@ -0,0 +1,12 @@
+#include "unity_fixture.h"
+
+static void RunAllTests(void)
+{
+ RUN_TEST_GROUP(ProductionCode);
+ RUN_TEST_GROUP(ProductionCode2);
+}
+
+int main(int argc, const char * argv[])
+{
+ return UnityMain(argc, argv, RunAllTests);
+}
diff --git a/deps/Unity/examples/example_3/helper/UnityHelper.c b/deps/Unity/examples/example_3/helper/UnityHelper.c
new file mode 100644
index 0000000..9cf42c6
--- /dev/null
+++ b/deps/Unity/examples/example_3/helper/UnityHelper.c
@@ -0,0 +1,10 @@
+#include "unity.h"
+#include "UnityHelper.h"
+#include <stdio.h>
+#include <string.h>
+
+void AssertEqualExampleStruct(const EXAMPLE_STRUCT_T expected, const EXAMPLE_STRUCT_T actual, const unsigned short line)
+{
+ UNITY_TEST_ASSERT_EQUAL_INT(expected.x, actual.x, line, "Example Struct Failed For Field x");
+ UNITY_TEST_ASSERT_EQUAL_INT(expected.y, actual.y, line, "Example Struct Failed For Field y");
+}
diff --git a/deps/Unity/examples/example_3/helper/UnityHelper.h b/deps/Unity/examples/example_3/helper/UnityHelper.h
new file mode 100644
index 0000000..1516111
--- /dev/null
+++ b/deps/Unity/examples/example_3/helper/UnityHelper.h
@@ -0,0 +1,12 @@
+#ifndef _TESTHELPER_H
+#define _TESTHELPER_H
+
+#include "Types.h"
+
+void AssertEqualExampleStruct(const EXAMPLE_STRUCT_T expected, const EXAMPLE_STRUCT_T actual, const unsigned short line);
+
+#define UNITY_TEST_ASSERT_EQUAL_EXAMPLE_STRUCT_T(expected, actual, line, message) AssertEqualExampleStruct(expected, actual, line);
+
+#define TEST_ASSERT_EQUAL_EXAMPLE_STRUCT_T(expected, actual) UNITY_TEST_ASSERT_EQUAL_EXAMPLE_STRUCT_T(expected, actual, __LINE__, NULL);
+
+#endif // _TESTHELPER_H
diff --git a/deps/Unity/examples/example_3/rakefile.rb b/deps/Unity/examples/example_3/rakefile.rb
new file mode 100644
index 0000000..c095af3
--- /dev/null
+++ b/deps/Unity/examples/example_3/rakefile.rb
@@ -0,0 +1,38 @@
+require 'rake'
+require 'rake/clean'
+require_relative 'rakefile_helper'
+
+TEMP_DIRS = [
+ File.join(__dir__, 'build')
+].freeze
+
+TEMP_DIRS.each do |dir|
+ directory(dir)
+ CLOBBER.include(dir)
+end
+
+task prepare_for_tests: TEMP_DIRS
+
+# Load default configuration, for now
+DEFAULT_CONFIG_FILE = 'target_gcc_32.yml'.freeze
+configure_toolchain(DEFAULT_CONFIG_FILE)
+
+task unit: [:prepare_for_tests] do
+ run_tests unit_test_files
+end
+
+desc 'Generate test summary'
+task :summary do
+ report_summary
+end
+
+desc 'Build and test Unity'
+task all: %i[clean unit summary]
+task default: %i[clobber all]
+task ci: [:default]
+task cruise: [:default]
+
+desc 'Load configuration'
+task :config, :config_file do |_t, args|
+ configure_toolchain(args[:config_file])
+end
diff --git a/deps/Unity/examples/example_3/rakefile_helper.rb b/deps/Unity/examples/example_3/rakefile_helper.rb
new file mode 100644
index 0000000..cbc4549
--- /dev/null
+++ b/deps/Unity/examples/example_3/rakefile_helper.rb
@@ -0,0 +1,254 @@
+# ==========================================
+# 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]
+# ==========================================
+
+require 'fileutils'
+require_relative '../../auto/unity_test_summary'
+require_relative '../../auto/generate_test_runner'
+require_relative '../../auto/colour_reporter'
+require_relative '../../auto/yaml_helper'
+C_EXTENSION = '.c'.freeze
+
+def load_configuration(config_file)
+ $cfg_file = config_file
+ $cfg = YamlHelper.load_file($cfg_file)
+end
+
+def configure_clean
+ CLEAN.include("#{$cfg['compiler']['build_path']}*.*") unless $cfg['compiler']['build_path'].nil?
+end
+
+def configure_toolchain(config_file = DEFAULT_CONFIG_FILE)
+ config_file += '.yml' unless config_file =~ /\.yml$/
+ load_configuration(config_file)
+ configure_clean
+end
+
+def unit_test_files
+ path = "#{$cfg['compiler']['unit_tests_path']}Test*#{C_EXTENSION}"
+ path.tr!('\\', '/')
+ FileList.new(path)
+end
+
+def local_include_dirs
+ include_dirs = $cfg['compiler']['includes']['items'].dup
+ include_dirs.delete_if { |dir| dir.is_a?(Array) }
+ include_dirs
+end
+
+def extract_headers(filename)
+ includes = []
+ lines = File.readlines(filename)
+ lines.each do |line|
+ m = line.match(/^\s*#include\s+"\s*(.+\.[hH])\s*"/)
+ includes << m[1] unless m.nil?
+ end
+ includes
+end
+
+def find_source_file(header, paths)
+ paths.each do |dir|
+ src_file = dir + header.ext(C_EXTENSION)
+ return src_file if File.exist?(src_file)
+ end
+ nil
+end
+
+def tackit(strings)
+ if strings.is_a?(Array)
+ "\"#{strings.join}\""
+ else
+ strings
+ end
+end
+
+def squash(prefix, items)
+ result = ''
+ items.each { |item| result += " #{prefix}#{tackit(item)}" }
+ result
+end
+
+def build_compiler_fields
+ command = tackit($cfg['compiler']['path'])
+ defines = if $cfg['compiler']['defines']['items'].nil?
+ ''
+ else
+ squash($cfg['compiler']['defines']['prefix'], $cfg['compiler']['defines']['items'])
+ end
+ options = squash('', $cfg['compiler']['options'])
+ includes = squash($cfg['compiler']['includes']['prefix'], $cfg['compiler']['includes']['items'])
+ includes = includes.gsub(/\\ /, ' ').gsub(/\\"/, '"').gsub(/\\$/, '') # Remove trailing slashes (for IAR)
+
+ { command: command, defines: defines, options: options, includes: includes }
+end
+
+def compile(file, _defines = [])
+ compiler = build_compiler_fields
+ cmd_str = "#{compiler[:command]}#{compiler[:defines]}#{compiler[:options]}#{compiler[:includes]} #{file} " \
+ "#{$cfg['compiler']['object_files']['prefix']}#{$cfg['compiler']['object_files']['destination']}"
+ obj_file = "#{File.basename(file, C_EXTENSION)}#{$cfg['compiler']['object_files']['extension']}"
+ execute(cmd_str + obj_file)
+ obj_file
+end
+
+def build_linker_fields
+ command = tackit($cfg['linker']['path'])
+ options = if $cfg['linker']['options'].nil?
+ ''
+ else
+ squash('', $cfg['linker']['options'])
+ end
+ includes = if $cfg['linker']['includes'].nil? || $cfg['linker']['includes']['items'].nil?
+ ''
+ else
+ squash($cfg['linker']['includes']['prefix'], $cfg['linker']['includes']['items'])
+ end.gsub(/\\ /, ' ').gsub(/\\"/, '"').gsub(/\\$/, '') # Remove trailing slashes (for IAR)
+
+ { command: command, options: options, includes: includes }
+end
+
+def link_it(exe_name, obj_list)
+ linker = build_linker_fields
+ cmd_str = "#{linker[:command]}#{linker[:options]}#{linker[:includes]}"
+ cmd_str += " #{(obj_list.map { |obj| "#{$cfg['linker']['object_files']['path']}#{obj}" }).join(' ')}"
+ cmd_str += " #{$cfg['linker']['bin_files']['prefix']} "
+ cmd_str += $cfg['linker']['bin_files']['destination']
+ cmd_str += exe_name + $cfg['linker']['bin_files']['extension']
+ execute(cmd_str)
+end
+
+def build_simulator_fields
+ return nil if $cfg['simulator'].nil?
+
+ command = if $cfg['simulator']['path'].nil?
+ ''
+ else
+ "#{tackit($cfg['simulator']['path'])} "
+ end
+ pre_support = if $cfg['simulator']['pre_support'].nil?
+ ''
+ else
+ squash('', $cfg['simulator']['pre_support'])
+ end
+ post_support = if $cfg['simulator']['post_support'].nil?
+ ''
+ else
+ squash('', $cfg['simulator']['post_support'])
+ end
+
+ { command: command, pre_support: pre_support, post_support: post_support }
+end
+
+def execute(command_string, verbose = true, raise_on_fail = true)
+ report command_string
+ output = `#{command_string}`.chomp
+ report(output) if verbose && !output.nil? && !output.empty?
+
+ if !$?.nil? && !$?.exitstatus.zero? && raise_on_fail
+ raise "Command failed. (Returned #{$?.exitstatus})"
+ end
+
+ output
+end
+
+def report_summary
+ summary = UnityTestSummary.new
+ summary.root = __dir__
+ results_glob = "#{$cfg['compiler']['build_path']}*.test*"
+ results_glob.tr!('\\', '/')
+ results = Dir[results_glob]
+ summary.targets = results
+ summary.run
+ fail_out 'FAIL: There were failures' if summary.failures > 0
+end
+
+def run_tests(test_files)
+ report 'Running system tests...'
+
+ # Tack on TEST define for compiling unit tests
+ load_configuration($cfg_file)
+ test_defines = ['TEST']
+ $cfg['compiler']['defines']['items'] = [] if $cfg['compiler']['defines']['items'].nil?
+ $cfg['compiler']['defines']['items'] << 'TEST'
+
+ include_dirs = local_include_dirs
+
+ # Build and execute each unit test
+ test_files.each do |test|
+ obj_list = []
+
+ # Detect dependencies and build required required modules
+ extract_headers(test).each do |header|
+ # Compile corresponding source file if it exists
+ src_file = find_source_file(header, include_dirs)
+ obj_list << compile(src_file, test_defines) unless src_file.nil?
+ end
+
+ # Build the test runner (generate if configured to do so)
+ test_base = File.basename(test, C_EXTENSION)
+ runner_name = "#{test_base}_Runner.c"
+ if $cfg['compiler']['runner_path'].nil?
+ runner_path = $cfg['compiler']['build_path'] + runner_name
+ test_gen = UnityTestRunnerGenerator.new($cfg_file)
+ test_gen.run(test, runner_path)
+ else
+ runner_path = $cfg['compiler']['runner_path'] + runner_name
+ end
+
+ obj_list << compile(runner_path, test_defines)
+
+ # Build the test module
+ obj_list << compile(test, test_defines)
+
+ # Link the test executable
+ link_it(test_base, obj_list)
+
+ # Execute unit test and generate results file
+ simulator = build_simulator_fields
+ executable = $cfg['linker']['bin_files']['destination'] + test_base + $cfg['linker']['bin_files']['extension']
+ cmd_str = if simulator.nil?
+ executable
+ else
+ "#{simulator[:command]} #{simulator[:pre_support]} #{executable} #{simulator[:post_support]}"
+ end
+ output = execute(cmd_str, true, false)
+ test_results = $cfg['compiler']['build_path'] + test_base
+ test_results += if output.match(/OK$/m).nil?
+ '.testfail'
+ else
+ '.testpass'
+ end
+ File.open(test_results, 'w') { |f| f.print output }
+ end
+end
+
+def build_application(main)
+ report 'Building application...'
+
+ obj_list = []
+ load_configuration($cfg_file)
+ main_path = $cfg['compiler']['source_path'] + main + C_EXTENSION
+
+ # Detect dependencies and build required required modules
+ include_dirs = get_local_include_dirs
+ extract_headers(main_path).each do |header|
+ src_file = find_source_file(header, include_dirs)
+ obj_list << compile(src_file) unless src_file.nil?
+ end
+
+ # Build the main source file
+ main_base = File.basename(main_path, C_EXTENSION)
+ obj_list << compile(main_path)
+
+ # Create the executable
+ link_it(main_base, obj_list)
+end
+
+def fail_out(msg)
+ puts msg
+ puts 'Not returning exit code so continuous integration can pass'
+ # exit(-1) # Only removed to pass example_3, which has failing tests on purpose.
+ # Still fail if the build fails for any other reason.
+end
diff --git a/deps/Unity/examples/example_3/readme.txt b/deps/Unity/examples/example_3/readme.txt
new file mode 100644
index 0000000..7371fea
--- /dev/null
+++ b/deps/Unity/examples/example_3/readme.txt
@@ -0,0 +1,13 @@
+Example 3
+=========
+
+This example project gives an example of some passing, ignored, and failing tests.
+It's simple and meant for you to look over and get an idea for what all of this stuff does.
+
+You can build and test using rake. The rake version will let you test with gcc or a couple
+versions of IAR. You can tweak the yaml files to get those versions running.
+
+Ruby is required if you're using the rake version (obviously). This version shows off most of
+Unity's advanced features (automatically creating test runners, fancy summaries, etc.)
+Without ruby, you have to maintain your own test runners. Do that for a while and you'll learn
+why you really want to start using the Ruby tools.
diff --git a/deps/Unity/examples/example_3/src/ProductionCode.c b/deps/Unity/examples/example_3/src/ProductionCode.c
new file mode 100644
index 0000000..3bafe20
--- /dev/null
+++ b/deps/Unity/examples/example_3/src/ProductionCode.c
@@ -0,0 +1,24 @@
+
+#include "ProductionCode.h"
+
+int Counter = 0;
+int NumbersToFind[9] = { 0, 34, 55, 66, 32, 11, 1, 77, 888 }; //some obnoxious array to search that is 1-based indexing instead of 0.
+
+// This function is supposed to search through NumbersToFind and find a particular number.
+// If it finds it, the index is returned. Otherwise 0 is returned which sorta makes sense since
+// NumbersToFind is indexed from 1. Unfortunately it's broken
+// (and should therefore be caught by our tests)
+int FindFunction_WhichIsBroken(int NumberToFind)
+{
+ int i = 0;
+ while (i < 8) //Notice I should have been in braces
+ i++;
+ if (NumbersToFind[i] == NumberToFind) //Yikes! I'm getting run after the loop finishes instead of during it!
+ return i;
+ return 0;
+}
+
+int FunctionWhichReturnsLocalVariable(void)
+{
+ return Counter;
+}
diff --git a/deps/Unity/examples/example_3/src/ProductionCode.h b/deps/Unity/examples/example_3/src/ProductionCode.h
new file mode 100644
index 0000000..250ca0d
--- /dev/null
+++ b/deps/Unity/examples/example_3/src/ProductionCode.h
@@ -0,0 +1,3 @@
+
+int FindFunction_WhichIsBroken(int NumberToFind);
+int FunctionWhichReturnsLocalVariable(void);
diff --git a/deps/Unity/examples/example_3/src/ProductionCode2.c b/deps/Unity/examples/example_3/src/ProductionCode2.c
new file mode 100644
index 0000000..77c969f
--- /dev/null
+++ b/deps/Unity/examples/example_3/src/ProductionCode2.c
@@ -0,0 +1,11 @@
+
+#include "ProductionCode2.h"
+
+char* ThisFunctionHasNotBeenTested(int Poor, char* LittleFunction)
+{
+ (void)Poor;
+ (void)LittleFunction;
+ //Since There Are No Tests Yet, This Function Could Be Empty For All We Know.
+ // Which isn't terribly useful... but at least we put in a TEST_IGNORE so we won't forget
+ return (char*)0;
+}
diff --git a/deps/Unity/examples/example_3/src/ProductionCode2.h b/deps/Unity/examples/example_3/src/ProductionCode2.h
new file mode 100644
index 0000000..34ae980
--- /dev/null
+++ b/deps/Unity/examples/example_3/src/ProductionCode2.h
@@ -0,0 +1,2 @@
+
+char* ThisFunctionHasNotBeenTested(int Poor, char* LittleFunction);
diff --git a/deps/Unity/examples/example_3/target_gcc_32.yml b/deps/Unity/examples/example_3/target_gcc_32.yml
new file mode 100644
index 0000000..d7568ab
--- /dev/null
+++ b/deps/Unity/examples/example_3/target_gcc_32.yml
@@ -0,0 +1,47 @@
+# Copied from ~Unity/targets/gcc_32.yml
+unity_root: &unity_root '../..'
+unity_source: &unity_source '../../src/'
+compiler:
+ path: gcc
+ source_path: &source_path 'src/'
+ unit_tests_path: &unit_tests_path 'test/'
+ build_path: &build_path 'build/'
+ options:
+ - '-c'
+ - '-m32'
+ - '-Wall'
+ - '-Wno-address'
+ - '-std=c99'
+ - '-pedantic'
+ includes:
+ prefix: '-I'
+ items:
+ - *source_path
+ - *unity_source
+ - *unit_tests_path
+ defines:
+ prefix: '-D'
+ items:
+ - UNITY_INCLUDE_DOUBLE
+ - UNITY_SUPPORT_TEST_CASES
+ object_files:
+ prefix: '-o'
+ extension: '.o'
+ destination: *build_path
+linker:
+ path: gcc
+ options:
+ - -lm
+ - '-m32'
+ includes:
+ prefix: '-I'
+ object_files:
+ path: *build_path
+ extension: '.o'
+ bin_files:
+ prefix: '-o'
+ extension: '.exe'
+ destination: *build_path
+colour: true
+:unity:
+ :plugins: []
diff --git a/deps/Unity/examples/example_3/test/TestProductionCode.c b/deps/Unity/examples/example_3/test/TestProductionCode.c
new file mode 100644
index 0000000..28a5581
--- /dev/null
+++ b/deps/Unity/examples/example_3/test/TestProductionCode.c
@@ -0,0 +1,62 @@
+
+#include "ProductionCode.h"
+#include "unity.h"
+
+//sometimes you may want to get at local data in a module.
+//for example: If you plan to pass by reference, this could be useful
+//however, it should often be avoided
+extern int Counter;
+
+void setUp(void)
+{
+ //This is run before EACH TEST
+ Counter = 0x5a5a;
+}
+
+void tearDown(void)
+{
+}
+
+void test_FindFunction_WhichIsBroken_ShouldReturnZeroIfItemIsNotInList_WhichWorksEvenInOurBrokenCode(void)
+{
+ //All of these should pass
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(78));
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(1));
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(33));
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(999));
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(-1));
+}
+
+void test_FindFunction_WhichIsBroken_ShouldReturnTheIndexForItemsInList_WhichWillFailBecauseOurFunctionUnderTestIsBroken(void)
+{
+ // You should see this line fail in your test summary
+ TEST_ASSERT_EQUAL(1, FindFunction_WhichIsBroken(34));
+
+ // Notice the rest of these didn't get a chance to run because the line above failed.
+ // Unit tests abort each test function on the first sign of trouble.
+ // Then NEXT test function runs as normal.
+ TEST_ASSERT_EQUAL(8, FindFunction_WhichIsBroken(8888));
+}
+
+void test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValue(void)
+{
+ //This should be true because setUp set this up for us before this test
+ TEST_ASSERT_EQUAL_HEX(0x5a5a, FunctionWhichReturnsLocalVariable());
+
+ //This should be true because we can still change our answer
+ Counter = 0x1234;
+ TEST_ASSERT_EQUAL_HEX(0x1234, FunctionWhichReturnsLocalVariable());
+}
+
+void test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValueAgain(void)
+{
+ //This should be true again because setup was rerun before this test (and after we changed it to 0x1234)
+ TEST_ASSERT_EQUAL_HEX(0x5a5a, FunctionWhichReturnsLocalVariable());
+}
+
+void test_FunctionWhichReturnsLocalVariable_ShouldReturnCurrentCounter_ButFailsBecauseThisTestIsActuallyFlawed(void)
+{
+ //Sometimes you get the test wrong. When that happens, you get a failure too... and a quick look should tell
+ // you what actually happened...which in this case was a failure to setup the initial condition.
+ TEST_ASSERT_EQUAL_HEX(0x1234, FunctionWhichReturnsLocalVariable());
+}
diff --git a/deps/Unity/examples/example_3/test/TestProductionCode2.c b/deps/Unity/examples/example_3/test/TestProductionCode2.c
new file mode 100644
index 0000000..e2119cc
--- /dev/null
+++ b/deps/Unity/examples/example_3/test/TestProductionCode2.c
@@ -0,0 +1,31 @@
+
+#include "ProductionCode2.h"
+#include "unity.h"
+
+/* These should be ignored because they are commented out in various ways:
+#include "whatever.h"
+*/
+//#include "somethingelse.h"
+
+void setUp(void)
+{
+}
+
+void tearDown(void)
+{
+}
+
+void test_IgnoredTest(void)
+{
+ TEST_IGNORE_MESSAGE("This Test Was Ignored On Purpose");
+}
+
+void test_AnotherIgnoredTest(void)
+{
+ TEST_IGNORE_MESSAGE("These Can Be Useful For Leaving Yourself Notes On What You Need To Do Yet");
+}
+
+void test_ThisFunctionHasNotBeenTested_NeedsToBeImplemented(void)
+{
+ TEST_IGNORE(); //Like This
+}
diff --git a/deps/Unity/examples/example_4/meson.build b/deps/Unity/examples/example_4/meson.build
new file mode 100644
index 0000000..b1c4e85
--- /dev/null
+++ b/deps/Unity/examples/example_4/meson.build
@@ -0,0 +1,12 @@
+#
+# build script written by : Michael Brockus.
+# github repo author: Mike Karlesky, Mark VanderVoord, Greg Williams.
+#
+# license: MIT
+#
+project('example-4', 'c', meson_version: '>= 0.55.0')
+
+unity_dep = dependency('unity')
+
+subdir('src')
+subdir('test')
diff --git a/deps/Unity/examples/example_4/readme.txt b/deps/Unity/examples/example_4/readme.txt
new file mode 100644
index 0000000..c8f45a8
--- /dev/null
+++ b/deps/Unity/examples/example_4/readme.txt
@@ -0,0 +1,15 @@
+Example 4
+=========
+
+Close to the simplest possible example of Unity, using only basic features.
+to build this example run "meson setup <build dir name>".
+
+Meson uses the Ninja build system to actually build the code. To start the
+build, simply type the following command.
+
+"ninja -C <build dir name>"
+
+Meson provides native support for running tests. The command to do that is simple.
+
+"meson test -C <build dir name>".
+ \ No newline at end of file
diff --git a/deps/Unity/examples/example_4/src/ProductionCode.c b/deps/Unity/examples/example_4/src/ProductionCode.c
new file mode 100644
index 0000000..db128e5
--- /dev/null
+++ b/deps/Unity/examples/example_4/src/ProductionCode.c
@@ -0,0 +1,24 @@
+
+#include "ProductionCode.h"
+
+int Counter = 0;
+int NumbersToFind[9] = { 0, 34, 55, 66, 32, 11, 1, 77, 888 }; /* some obnoxious array to search that is 1-based indexing instead of 0. */
+
+/* This function is supposed to search through NumbersToFind and find a particular number.
+ * If it finds it, the index is returned. Otherwise 0 is returned which sorta makes sense since
+ * NumbersToFind is indexed from 1. Unfortunately it's broken
+ * (and should therefore be caught by our tests) */
+int FindFunction_WhichIsBroken(int NumberToFind)
+{
+ int i = 0;
+ while (i < 8) /* Notice I should have been in braces */
+ i++;
+ if (NumbersToFind[i] == NumberToFind) /* Yikes! I'm getting run after the loop finishes instead of during it! */
+ return i;
+ return 0;
+}
+
+int FunctionWhichReturnsLocalVariable(void)
+{
+ return Counter;
+}
diff --git a/deps/Unity/examples/example_4/src/ProductionCode.h b/deps/Unity/examples/example_4/src/ProductionCode.h
new file mode 100644
index 0000000..250ca0d
--- /dev/null
+++ b/deps/Unity/examples/example_4/src/ProductionCode.h
@@ -0,0 +1,3 @@
+
+int FindFunction_WhichIsBroken(int NumberToFind);
+int FunctionWhichReturnsLocalVariable(void);
diff --git a/deps/Unity/examples/example_4/src/ProductionCode2.c b/deps/Unity/examples/example_4/src/ProductionCode2.c
new file mode 100644
index 0000000..98ee7ee
--- /dev/null
+++ b/deps/Unity/examples/example_4/src/ProductionCode2.c
@@ -0,0 +1,11 @@
+
+#include "ProductionCode2.h"
+
+char* ThisFunctionHasNotBeenTested(int Poor, char* LittleFunction)
+{
+ (void)Poor;
+ (void)LittleFunction;
+ /* Since There Are No Tests Yet, This Function Could Be Empty For All We Know.
+ * Which isn't terribly useful... but at least we put in a TEST_IGNORE so we won't forget */
+ return (char*)0;
+}
diff --git a/deps/Unity/examples/example_4/src/ProductionCode2.h b/deps/Unity/examples/example_4/src/ProductionCode2.h
new file mode 100644
index 0000000..34ae980
--- /dev/null
+++ b/deps/Unity/examples/example_4/src/ProductionCode2.h
@@ -0,0 +1,2 @@
+
+char* ThisFunctionHasNotBeenTested(int Poor, char* LittleFunction);
diff --git a/deps/Unity/examples/example_4/src/meson.build b/deps/Unity/examples/example_4/src/meson.build
new file mode 100644
index 0000000..10c5735
--- /dev/null
+++ b/deps/Unity/examples/example_4/src/meson.build
@@ -0,0 +1,16 @@
+#
+# build script written by : Michael Brockus.
+# github repo author: Mike Karlesky, Mark VanderVoord, Greg Williams.
+#
+# license: MIT
+#
+inc_dir = include_directories('.')
+lib_list = {'a': ['ProductionCode.c' ], 'b': ['ProductionCode2.c']}
+
+foreach lib, src : lib_list
+ set_variable(lib + '_lib',
+ static_library(lib + '_lib', sources: src, include_directories: inc_dir))
+endforeach
+
+a_dep = declare_dependency(link_with: a_lib, include_directories: inc_dir)
+b_dep = declare_dependency(link_with: b_lib, include_directories: inc_dir)
diff --git a/deps/Unity/examples/example_4/subprojects/unity.wrap b/deps/Unity/examples/example_4/subprojects/unity.wrap
new file mode 100755
index 0000000..8688475
--- /dev/null
+++ b/deps/Unity/examples/example_4/subprojects/unity.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+url = https://github.com/ThrowTheSwitch/Unity.git
+revision = head
+
+[provide]
+unity = unity_dep
diff --git a/deps/Unity/examples/example_4/test/TestProductionCode.c b/deps/Unity/examples/example_4/test/TestProductionCode.c
new file mode 100644
index 0000000..526a84e
--- /dev/null
+++ b/deps/Unity/examples/example_4/test/TestProductionCode.c
@@ -0,0 +1,63 @@
+
+#include "ProductionCode.h"
+#include "unity.h"
+
+/* sometimes you may want to get at local data in a module.
+ * for example: If you plan to pass by reference, this could be useful
+ * however, it should often be avoided */
+extern int Counter;
+
+void setUp(void)
+{
+ /* This is run before EACH TEST */
+ Counter = 0x5a5a;
+}
+
+void tearDown(void)
+{
+}
+
+
+void test_FindFunction_WhichIsBroken_ShouldReturnZeroIfItemIsNotInList_WhichWorksEvenInOurBrokenCode(void)
+{
+ /* All of these should pass */
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(78));
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(2));
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(33));
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(999));
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(-1));
+}
+
+void test_FindFunction_WhichIsBroken_ShouldReturnTheIndexForItemsInList_WhichWillFailBecauseOurFunctionUnderTestIsBroken(void)
+{
+ /* You should see this line fail in your test summary */
+ TEST_ASSERT_EQUAL(1, FindFunction_WhichIsBroken(34));
+
+ /* Notice the rest of these didn't get a chance to run because the line above failed.
+ * Unit tests abort each test function on the first sign of trouble.
+ * Then NEXT test function runs as normal. */
+ TEST_ASSERT_EQUAL(8, FindFunction_WhichIsBroken(8888));
+}
+
+void test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValue(void)
+{
+ /* This should be true because setUp set this up for us before this test */
+ TEST_ASSERT_EQUAL_HEX(0x5a5a, FunctionWhichReturnsLocalVariable());
+
+ /* This should be true because we can still change our answer */
+ Counter = 0x1234;
+ TEST_ASSERT_EQUAL_HEX(0x1234, FunctionWhichReturnsLocalVariable());
+}
+
+void test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValueAgain(void)
+{
+ /* This should be true again because setup was rerun before this test (and after we changed it to 0x1234) */
+ TEST_ASSERT_EQUAL_HEX(0x5a5a, FunctionWhichReturnsLocalVariable());
+}
+
+void test_FunctionWhichReturnsLocalVariable_ShouldReturnCurrentCounter_ButFailsBecauseThisTestIsActuallyFlawed(void)
+{
+ /* Sometimes you get the test wrong. When that happens, you get a failure too... and a quick look should tell
+ * you what actually happened...which in this case was a failure to setup the initial condition. */
+ TEST_ASSERT_EQUAL_HEX(0x1234, FunctionWhichReturnsLocalVariable());
+}
diff --git a/deps/Unity/examples/example_4/test/TestProductionCode2.c b/deps/Unity/examples/example_4/test/TestProductionCode2.c
new file mode 100644
index 0000000..2578ca9
--- /dev/null
+++ b/deps/Unity/examples/example_4/test/TestProductionCode2.c
@@ -0,0 +1,35 @@
+
+#include "ProductionCode2.h"
+#include "unity.h"
+
+/* These should be ignored because they are commented out in various ways:
+#include "whatever.h"
+#include "somethingelse.h"
+*/
+
+void setUp(void)
+{
+}
+
+void tearDown(void)
+{
+}
+
+void test_IgnoredTest(void);
+void test_AnotherIgnoredTest(void);
+void test_ThisFunctionHasNotBeenTested_NeedsToBeImplemented(void);
+
+void test_IgnoredTest(void)
+{
+ TEST_IGNORE_MESSAGE("This Test Was Ignored On Purpose");
+}
+
+void test_AnotherIgnoredTest(void)
+{
+ TEST_IGNORE_MESSAGE("These Can Be Useful For Leaving Yourself Notes On What You Need To Do Yet");
+}
+
+void test_ThisFunctionHasNotBeenTested_NeedsToBeImplemented(void)
+{
+ TEST_IGNORE(); /* Like This */
+}
diff --git a/deps/Unity/examples/example_4/test/meson.build b/deps/Unity/examples/example_4/test/meson.build
new file mode 100644
index 0000000..0e3c72f
--- /dev/null
+++ b/deps/Unity/examples/example_4/test/meson.build
@@ -0,0 +1,7 @@
+#
+# build script written by : Michael Brockus.
+# github repo author: Mike Karlesky, Mark VanderVoord, Greg Williams.
+#
+# license: MIT
+#
+subdir('test_runners')
diff --git a/deps/Unity/examples/example_4/test/test_runners/TestProductionCode2_Runner.c b/deps/Unity/examples/example_4/test/test_runners/TestProductionCode2_Runner.c
new file mode 100644
index 0000000..cf72c21
--- /dev/null
+++ b/deps/Unity/examples/example_4/test/test_runners/TestProductionCode2_Runner.c
@@ -0,0 +1,53 @@
+/* AUTOGENERATED FILE. DO NOT EDIT. */
+
+/*=======Test Runner Used To Run Each Test Below=====*/
+#define RUN_TEST(TestFunc, TestLineNum) \
+{ \
+ Unity.CurrentTestName = #TestFunc; \
+ Unity.CurrentTestLineNumber = TestLineNum; \
+ Unity.NumberOfTests++; \
+ if (TEST_PROTECT()) \
+ { \
+ setUp(); \
+ TestFunc(); \
+ } \
+ if (TEST_PROTECT()) \
+ { \
+ tearDown(); \
+ } \
+ UnityConcludeTest(); \
+}
+
+/*=======Automagically Detected Files To Include=====*/
+#include "unity.h"
+#include <setjmp.h>
+#include <stdio.h>
+#include "ProductionCode2.h"
+
+/*=======External Functions This Runner Calls=====*/
+extern void setUp(void);
+extern void tearDown(void);
+extern void test_IgnoredTest(void);
+extern void test_AnotherIgnoredTest(void);
+extern void test_ThisFunctionHasNotBeenTested_NeedsToBeImplemented(void);
+
+
+/*=======Test Reset Option=====*/
+void resetTest(void);
+void resetTest(void)
+{
+ tearDown();
+ setUp();
+}
+
+
+/*=======MAIN=====*/
+int main(void)
+{
+ UnityBegin("test/TestProductionCode2.c");
+ RUN_TEST(test_IgnoredTest, 18);
+ RUN_TEST(test_AnotherIgnoredTest, 23);
+ RUN_TEST(test_ThisFunctionHasNotBeenTested_NeedsToBeImplemented, 28);
+
+ return (UnityEnd());
+}
diff --git a/deps/Unity/examples/example_4/test/test_runners/TestProductionCode_Runner.c b/deps/Unity/examples/example_4/test/test_runners/TestProductionCode_Runner.c
new file mode 100644
index 0000000..3b49af7
--- /dev/null
+++ b/deps/Unity/examples/example_4/test/test_runners/TestProductionCode_Runner.c
@@ -0,0 +1,57 @@
+/* AUTOGENERATED FILE. DO NOT EDIT. */
+
+/*=======Test Runner Used To Run Each Test Below=====*/
+#define RUN_TEST(TestFunc, TestLineNum) \
+{ \
+ Unity.CurrentTestName = #TestFunc; \
+ Unity.CurrentTestLineNumber = TestLineNum; \
+ Unity.NumberOfTests++; \
+ if (TEST_PROTECT()) \
+ { \
+ setUp(); \
+ TestFunc(); \
+ } \
+ if (TEST_PROTECT()) \
+ { \
+ tearDown(); \
+ } \
+ UnityConcludeTest(); \
+}
+
+/*=======Automagically Detected Files To Include=====*/
+#include "unity.h"
+#include <setjmp.h>
+#include <stdio.h>
+#include "ProductionCode.h"
+
+/*=======External Functions This Runner Calls=====*/
+extern void setUp(void);
+extern void tearDown(void);
+extern void test_FindFunction_WhichIsBroken_ShouldReturnZeroIfItemIsNotInList_WhichWorksEvenInOurBrokenCode(void);
+extern void test_FindFunction_WhichIsBroken_ShouldReturnTheIndexForItemsInList_WhichWillFailBecauseOurFunctionUnderTestIsBroken(void);
+extern void test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValue(void);
+extern void test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValueAgain(void);
+extern void test_FunctionWhichReturnsLocalVariable_ShouldReturnCurrentCounter_ButFailsBecauseThisTestIsActuallyFlawed(void);
+
+
+/*=======Test Reset Option=====*/
+void resetTest(void);
+void resetTest(void)
+{
+ tearDown();
+ setUp();
+}
+
+
+/*=======MAIN=====*/
+int main(void)
+{
+ UnityBegin("test/TestProductionCode.c");
+ RUN_TEST(test_FindFunction_WhichIsBroken_ShouldReturnZeroIfItemIsNotInList_WhichWorksEvenInOurBrokenCode, 20);
+ RUN_TEST(test_FindFunction_WhichIsBroken_ShouldReturnTheIndexForItemsInList_WhichWillFailBecauseOurFunctionUnderTestIsBroken, 30);
+ RUN_TEST(test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValue, 41);
+ RUN_TEST(test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValueAgain, 51);
+ RUN_TEST(test_FunctionWhichReturnsLocalVariable_ShouldReturnCurrentCounter_ButFailsBecauseThisTestIsActuallyFlawed, 57);
+
+ return (UnityEnd());
+}
diff --git a/deps/Unity/examples/example_4/test/test_runners/meson.build b/deps/Unity/examples/example_4/test/test_runners/meson.build
new file mode 100644
index 0000000..1503c5f
--- /dev/null
+++ b/deps/Unity/examples/example_4/test/test_runners/meson.build
@@ -0,0 +1,13 @@
+#
+# build script written by : Michael Brockus.
+# github repo author: Mike Karlesky, Mark VanderVoord, Greg Williams.
+#
+# license: MIT
+#
+cases = [
+ ['TestProductionCode_Runner.c', join_paths('..' ,'TestProductionCode.c' )],
+ ['TestProductionCode2_Runner.c', join_paths('..' ,'TestProductionCode2.c')]
+ ]
+
+test('01-test-case', executable('01-test-case', cases[0], dependencies: [ a_dep, unity_dep ]))
+test('02-test-case', executable('02-test-case', cases[1], dependencies: [ b_dep, unity_dep ]))
diff --git a/deps/Unity/examples/unity_config.h b/deps/Unity/examples/unity_config.h
new file mode 100644
index 0000000..fc6cdb0
--- /dev/null
+++ b/deps/Unity/examples/unity_config.h
@@ -0,0 +1,244 @@
+/* Unity Configuration
+ * As of May 11th, 2016 at ThrowTheSwitch/Unity commit 837c529
+ * Update: December 29th, 2016
+ * See Also: Unity/docs/UnityConfigurationGuide.pdf
+ *
+ * Unity is designed to run on almost anything that is targeted by a C compiler.
+ * It would be awesome if this could be done with zero configuration. While
+ * there are some targets that come close to this dream, it is sadly not
+ * universal. It is likely that you are going to need at least a couple of the
+ * configuration options described in this document.
+ *
+ * All of Unity's configuration options are `#defines`. Most of these are simple
+ * definitions. A couple are macros with arguments. They live inside the
+ * unity_internals.h header file. We don't necessarily recommend opening that
+ * file unless you really need to. That file is proof that a cross-platform
+ * library is challenging to build. From a more positive perspective, it is also
+ * proof that a great deal of complexity can be centralized primarily to one
+ * place in order to provide a more consistent and simple experience elsewhere.
+ *
+ * Using These Options
+ * It doesn't matter if you're using a target-specific compiler and a simulator
+ * or a native compiler. In either case, you've got a couple choices for
+ * configuring these options:
+ *
+ * 1. Because these options are specified via C defines, you can pass most of
+ * these options to your compiler through command line compiler flags. Even
+ * if you're using an embedded target that forces you to use their
+ * overbearing IDE for all configuration, there will be a place somewhere in
+ * your project to configure defines for your compiler.
+ * 2. You can create a custom `unity_config.h` configuration file (present in
+ * your toolchain's search paths). In this file, you will list definitions
+ * and macros specific to your target. All you must do is define
+ * `UNITY_INCLUDE_CONFIG_H` and Unity will rely on `unity_config.h` for any
+ * further definitions it may need.
+ */
+
+#ifndef UNITY_CONFIG_H
+#define UNITY_CONFIG_H
+
+/* ************************* AUTOMATIC INTEGER TYPES ***************************
+ * C's concept of an integer varies from target to target. The C Standard has
+ * rules about the `int` matching the register size of the target
+ * microprocessor. It has rules about the `int` and how its size relates to
+ * other integer types. An `int` on one target might be 16 bits while on another
+ * target it might be 64. There are more specific types in compilers compliant
+ * with C99 or later, but that's certainly not every compiler you are likely to
+ * encounter. Therefore, Unity has a number of features for helping to adjust
+ * itself to match your required integer sizes. It starts off by trying to do it
+ * automatically.
+ **************************************************************************** */
+
+/* The first attempt to guess your types is to check `limits.h`. Some compilers
+ * that don't support `stdint.h` could include `limits.h`. If you don't
+ * want Unity to check this file, define this to make it skip the inclusion.
+ * Unity looks at UINT_MAX & ULONG_MAX, which were available since C89.
+ */
+/* #define UNITY_EXCLUDE_LIMITS_H */
+
+/* The second thing that Unity does to guess your types is check `stdint.h`.
+ * This file defines `UINTPTR_MAX`, since C99, that Unity can make use of to
+ * learn about your system. It's possible you don't want it to do this or it's
+ * possible that your system doesn't support `stdint.h`. If that's the case,
+ * you're going to want to define this. That way, Unity will know to skip the
+ * inclusion of this file and you won't be left with a compiler error.
+ */
+/* #define UNITY_EXCLUDE_STDINT_H */
+
+/* ********************** MANUAL INTEGER TYPE DEFINITION ***********************
+ * If you've disabled all of the automatic options above, you're going to have
+ * to do the configuration yourself. There are just a handful of defines that
+ * you are going to specify if you don't like the defaults.
+ **************************************************************************** */
+
+ /* Define this to be the number of bits an `int` takes up on your system. The
+ * default, if not auto-detected, is 32 bits.
+ *
+ * Example:
+ */
+/* #define UNITY_INT_WIDTH 16 */
+
+/* Define this to be the number of bits a `long` takes up on your system. The
+ * default, if not autodetected, is 32 bits. This is used to figure out what
+ * kind of 64-bit support your system can handle. Does it need to specify a
+ * `long` or a `long long` to get a 64-bit value. On 16-bit systems, this option
+ * is going to be ignored.
+ *
+ * Example:
+ */
+/* #define UNITY_LONG_WIDTH 16 */
+
+/* Define this to be the number of bits a pointer takes up on your system. The
+ * default, if not autodetected, is 32-bits. If you're getting ugly compiler
+ * warnings about casting from pointers, this is the one to look at.
+ *
+ * Example:
+ */
+/* #define UNITY_POINTER_WIDTH 64 */
+
+/* Unity will automatically include 64-bit support if it auto-detects it, or if
+ * your `int`, `long`, or pointer widths are greater than 32-bits. Define this
+ * to enable 64-bit support if none of the other options already did it for you.
+ * There can be a significant size and speed impact to enabling 64-bit support
+ * on small targets, so don't define it if you don't need it.
+ */
+/* #define UNITY_INCLUDE_64 */
+
+
+/* *************************** FLOATING POINT TYPES ****************************
+ * In the embedded world, it's not uncommon for targets to have no support for
+ * floating point operations at all or to have support that is limited to only
+ * single precision. We are able to guess integer sizes on the fly because
+ * integers are always available in at least one size. Floating point, on the
+ * other hand, is sometimes not available at all. Trying to include `float.h` on
+ * these platforms would result in an error. This leaves manual configuration as
+ * the only option.
+ **************************************************************************** */
+
+ /* By default, Unity guesses that you will want single precision floating point
+ * support, but not double precision. It's easy to change either of these using
+ * the include and exclude options here. You may include neither, just float,
+ * or both, as suits your needs.
+ */
+/* #define UNITY_EXCLUDE_FLOAT */
+/* #define UNITY_INCLUDE_DOUBLE */
+/* #define UNITY_EXCLUDE_DOUBLE */
+
+/* For features that are enabled, the following floating point options also
+ * become available.
+ */
+
+/* Unity aims for as small of a footprint as possible and avoids most standard
+ * library calls (some embedded platforms don't have a standard library!).
+ * Because of this, its routines for printing integer values are minimalist and
+ * hand-coded. To keep Unity universal, though, we eventually chose to develop
+ * our own floating point print routines. Still, the display of floating point
+ * values during a failure are optional. By default, Unity will print the
+ * actual results of floating point assertion failures. So a failed assertion
+ * will produce a message like "Expected 4.0 Was 4.25". If you would like less
+ * verbose failure messages for floating point assertions, use this option to
+ * give a failure message `"Values Not Within Delta"` and trim the binary size.
+ */
+/* #define UNITY_EXCLUDE_FLOAT_PRINT */
+
+/* If enabled, Unity assumes you want your `FLOAT` asserts to compare standard C
+ * floats. If your compiler supports a specialty floating point type, you can
+ * always override this behavior by using this definition.
+ *
+ * Example:
+ */
+/* #define UNITY_FLOAT_TYPE float16_t */
+
+/* If enabled, Unity assumes you want your `DOUBLE` asserts to compare standard
+ * C doubles. If you would like to change this, you can specify something else
+ * by using this option. For example, defining `UNITY_DOUBLE_TYPE` to `long
+ * double` could enable gargantuan floating point types on your 64-bit processor
+ * instead of the standard `double`.
+ *
+ * Example:
+ */
+/* #define UNITY_DOUBLE_TYPE long double */
+
+/* If you look up `UNITY_ASSERT_EQUAL_FLOAT` and `UNITY_ASSERT_EQUAL_DOUBLE` as
+ * documented in the Unity Assertion Guide, you will learn that they are not
+ * really asserting that two values are equal but rather that two values are
+ * "close enough" to equal. "Close enough" is controlled by these precision
+ * configuration options. If you are working with 32-bit floats and/or 64-bit
+ * doubles (the normal on most processors), you should have no need to change
+ * these options. They are both set to give you approximately 1 significant bit
+ * in either direction. The float precision is 0.00001 while the double is
+ * 10^-12. For further details on how this works, see the appendix of the Unity
+ * Assertion Guide.
+ *
+ * Example:
+ */
+/* #define UNITY_FLOAT_PRECISION 0.001f */
+/* #define UNITY_DOUBLE_PRECISION 0.001f */
+
+
+/* *************************** MISCELLANEOUS ***********************************
+ * Miscellaneous configuration options for Unity
+ **************************************************************************** */
+
+/* Unity uses the stddef.h header included in the C standard library for the
+ * "NULL" macro. Define this in order to disable the include of stddef.h. If you
+ * do this, you have to make sure to provide your own "NULL" definition.
+ */
+/* #define UNITY_EXCLUDE_STDDEF_H */
+
+/* Define this to enable the unity formatted print macro:
+ * "TEST_PRINTF"
+ */
+/* #define UNITY_INCLUDE_PRINT_FORMATTED */
+
+
+/* *************************** TOOLSET CUSTOMIZATION ***************************
+ * In addition to the options listed above, there are a number of other options
+ * which will come in handy to customize Unity's behavior for your specific
+ * toolchain. It is possible that you may not need to touch any of these but
+ * certain platforms, particularly those running in simulators, may need to jump
+ * through extra hoops to operate properly. These macros will help in those
+ * situations.
+ **************************************************************************** */
+
+/* By default, Unity prints its results to `stdout` as it runs. This works
+ * perfectly fine in most situations where you are using a native compiler for
+ * testing. It works on some simulators as well so long as they have `stdout`
+ * routed back to the command line. There are times, however, where the
+ * simulator will lack support for dumping results or you will want to route
+ * results elsewhere for other reasons. In these cases, you should define the
+ * `UNITY_OUTPUT_CHAR` macro. This macro accepts a single character at a time
+ * (as an `int`, since this is the parameter type of the standard C `putchar`
+ * function most commonly used). You may replace this with whatever function
+ * call you like.
+ *
+ * Example:
+ * Say you are forced to run your test suite on an embedded processor with no
+ * `stdout` option. You decide to route your test result output to a custom
+ * serial `RS232_putc()` function you wrote like thus:
+ */
+/* #define UNITY_OUTPUT_CHAR(a) RS232_putc(a) */
+/* #define UNITY_OUTPUT_CHAR_HEADER_DECLARATION RS232_putc(int) */
+/* #define UNITY_OUTPUT_FLUSH() RS232_flush() */
+/* #define UNITY_OUTPUT_FLUSH_HEADER_DECLARATION RS232_flush(void) */
+/* #define UNITY_OUTPUT_START() RS232_config(115200,1,8,0) */
+/* #define UNITY_OUTPUT_COMPLETE() RS232_close() */
+
+/* Some compilers require a custom attribute to be assigned to pointers, like
+ * `near` or `far`. In these cases, you can give Unity a safe default for these
+ * by defining this option with the attribute you would like.
+ *
+ * Example:
+ */
+/* #define UNITY_PTR_ATTRIBUTE __attribute__((far)) */
+/* #define UNITY_PTR_ATTRIBUTE near */
+
+/* Print execution time of each test when executed in verbose mode
+ *
+ * Example:
+ *
+ * TEST - PASS (10 ms)
+ */
+/* #define UNITY_INCLUDE_EXEC_TIME */
+
+#endif /* UNITY_CONFIG_H */