summaryrefslogtreecommitdiff
path: root/deps/Unity/examples/example_4
diff options
context:
space:
mode:
Diffstat (limited to 'deps/Unity/examples/example_4')
-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
14 files changed, 317 insertions, 0 deletions
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 ]))