From 7e96f4ed54a69c40b218e7794846af76432f9eab Mon Sep 17 00:00:00 2001 From: fdai7782 Date: Fri, 9 Feb 2024 18:40:49 +0100 Subject: [PATCH] IMPORTANT FIXES: ADDED ALL HEADER FILES FOR THE DIFFRENT .C FILES AND ALSO IMPROVED THE YAML FILE -- COMPILING WORKS NOW! --- .vscode/c_cpp_properties.json | 16 + .vscode/settings.json | 8 + Unity | 1 + build-project.sh | 0 project.yml | 16 +- src/main/c/BasicMode.c | 2 +- src/main/c/ConvertMode.c | 1 - src/main/c/main_calculator.c | 51 +- .../c/{calculator.h => main_calculator.h} | 13 +- src/main/c/programmingMode.c | 2 +- src/main/c/programmingMode.h | 8 + src/main/c/scientificMode.c | 1 - src/main/c/testForNumber.c | 3 +- src/main/c/testForNumber.h | 7 + src/main/c/testForOperator.c | 4 +- src/main/c/testForOperator.h | 7 + src/test/c/test_calculator.c | 35 +- target/test/cache/defines_dependency.yml | 9 + target/test/cache/input.yml | 243 +++++++++ target/test/cache/test_calculator.c | 502 ++++++++++++++++++ target/test/dependencies/cmock.d | 6 + target/test/dependencies/force_build | 0 target/test/dependencies/main_calculator.d | 2 + target/test/dependencies/programmingMode.d | 2 + target/test/dependencies/testForNumber.d | 2 + target/test/dependencies/testForOperator.d | 2 + target/test/dependencies/test_calculator.d | 5 + .../dependencies/test_calculator_runner.d | 4 + target/test/dependencies/unity.d | 4 + target/test/out/c/cmock.o | Bin 0 -> 11200 bytes target/test/out/c/main_calculator.o | Bin 0 -> 32304 bytes target/test/out/c/programmingMode.o | Bin 0 -> 8080 bytes target/test/out/c/testForNumber.o | Bin 0 -> 7768 bytes target/test/out/c/testForOperator.o | Bin 0 -> 4776 bytes target/test/out/c/test_calculator.o | Bin 0 -> 19888 bytes target/test/out/c/test_calculator_runner.o | Bin 0 -> 14488 bytes target/test/out/c/unity.o | Bin 0 -> 57112 bytes target/test/out/test_calculator.out | Bin 0 -> 90008 bytes .../test/preprocess/files/test_calculator.c | 502 ++++++++++++++++++ .../preprocess/includes/test_calculator.c | 6 + target/test/results/test_calculator.pass | 130 +++++ target/test/runners/test_calculator_runner.c | 137 +++++ 42 files changed, 1652 insertions(+), 79 deletions(-) create mode 100644 .vscode/c_cpp_properties.json create mode 100644 .vscode/settings.json create mode 160000 Unity mode change 100644 => 100755 build-project.sh rename src/main/c/{calculator.h => main_calculator.h} (88%) create mode 100644 src/main/c/programmingMode.h create mode 100644 src/main/c/testForNumber.h create mode 100644 src/main/c/testForOperator.h create mode 100644 target/test/cache/defines_dependency.yml create mode 100644 target/test/cache/input.yml create mode 100644 target/test/cache/test_calculator.c create mode 100644 target/test/dependencies/cmock.d create mode 100644 target/test/dependencies/force_build create mode 100644 target/test/dependencies/main_calculator.d create mode 100644 target/test/dependencies/programmingMode.d create mode 100644 target/test/dependencies/testForNumber.d create mode 100644 target/test/dependencies/testForOperator.d create mode 100644 target/test/dependencies/test_calculator.d create mode 100644 target/test/dependencies/test_calculator_runner.d create mode 100644 target/test/dependencies/unity.d create mode 100644 target/test/out/c/cmock.o create mode 100644 target/test/out/c/main_calculator.o create mode 100644 target/test/out/c/programmingMode.o create mode 100644 target/test/out/c/testForNumber.o create mode 100644 target/test/out/c/testForOperator.o create mode 100644 target/test/out/c/test_calculator.o create mode 100644 target/test/out/c/test_calculator_runner.o create mode 100644 target/test/out/c/unity.o create mode 100755 target/test/out/test_calculator.out create mode 100644 target/test/preprocess/files/test_calculator.c create mode 100644 target/test/preprocess/includes/test_calculator.c create mode 100644 target/test/results/test_calculator.pass create mode 100644 target/test/runners/test_calculator_runner.c diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c11401d --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,16 @@ +{ + "configurations": [ + { + "name": "Linux", + "includePath": [ + "${workspaceFolder}/**" + ], + "defines": [], + "compilerPath": "/usr/bin/gcc", + "cStandard": "c17", + "cppStandard": "c++98", + "intelliSenseMode": "linux-gcc-x64" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..355d4a1 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "C_Cpp.errorSquiggles": "disabled", + "files.associations": { + "testforoperator.h": "c", + "testfornumber.h": "c", + "programmingmode.h": "c" + } +} \ No newline at end of file diff --git a/Unity b/Unity new file mode 160000 index 0000000..134496c --- /dev/null +++ b/Unity @@ -0,0 +1 @@ +Subproject commit 134496c6c0c34b463d58daef1904a12abdc5c8e0 diff --git a/build-project.sh b/build-project.sh old mode 100644 new mode 100755 diff --git a/project.yml b/project.yml index 4801bd7..923b2e8 100644 --- a/project.yml +++ b/project.yml @@ -91,15 +91,15 @@ :system: - m # Example: add 'm' to use the math library :test: - - stdio - - string - - stdlib - - m # Example: add 'm' to use the math library in tests + #- stdio + #- string + #- stdlib + #- m # Example: add 'm' to use the math library in tests :release: - - stdio - - string - - stdlib - - m # Example: add 'm' to use the math library in release builds + #- stdio + #- string + #- stdlib + #- m # Example: add 'm' to use the math library in release builds :plugins: :load_paths: diff --git a/src/main/c/BasicMode.c b/src/main/c/BasicMode.c index d1e4d5c..a8dcc27 100644 --- a/src/main/c/BasicMode.c +++ b/src/main/c/BasicMode.c @@ -3,7 +3,7 @@ #include #include -#include "calculator.h" + void BasicMode() { diff --git a/src/main/c/ConvertMode.c b/src/main/c/ConvertMode.c index 6e985cf..23d808d 100644 --- a/src/main/c/ConvertMode.c +++ b/src/main/c/ConvertMode.c @@ -4,7 +4,6 @@ #include #include -#include "calculator.h" // Unit converter mode int choice, startingUnit, endingUnit; diff --git a/src/main/c/main_calculator.c b/src/main/c/main_calculator.c index 8bfa480..9ba9aa5 100644 --- a/src/main/c/main_calculator.c +++ b/src/main/c/main_calculator.c @@ -3,7 +3,7 @@ #include #include -#include "calculator.h" +#include "main_calculator.h" double add(double a, double b) { @@ -487,7 +487,7 @@ double ConGramToPounds(double weight, int startingUnit, int endingUnit) { switch (endingUnit) { case 0: //pounds to kg - return weight *= 0, 453592; + return weight *= 453.592; break; case 1: //pounds to pounds @@ -510,11 +510,11 @@ double ConTemp(double temp, int startingUnit, int endingUnit) { switch (endingUnit) { case 0: //celsius to fahrenheit - return temp = (temp - 32) * 0, 55555555; + return temp = (temp - 32) * 0,55555555; break; case 1: //celsius to celsius - return temp; + return (temp * 9 / 5) + 32; break; default: @@ -552,7 +552,7 @@ double ConSpeed(double speed, int startingUnit, int endingUnit) { break; case 1: //kmh to mph - return speed * 0.621371; + return speed / 1.60934; break; default: @@ -590,7 +590,7 @@ double ConLiter(double liter, int startingUnit, int endingUnit) { break; case 1: //ml to l - return liter / 1000; + return ( liter / 1000 ); break; default: @@ -628,7 +628,7 @@ double ConLiterToGallon(double fluid, int startingUnit, int endingUnit) { break; case 1: //l to gallon - return fluid * 0.264172; + return fluid / 3.785; break; default: @@ -960,7 +960,7 @@ double ConClock(double time, int startingUnit, int endingUnit) { case 1: //24 to 12 if (time > 12) { - return time -12; + return time - 12; } else { @@ -1003,31 +1003,31 @@ double ConTime(double time, int startingUnit, int endingUnit) { break; case 1: //s - return time / 1000; + return (double) time / 1000; break; case 2: //min - return time / (1000 * 60); + return (double) time / (1000 * 60); break; case 3: //h - return time / (1000 * 60 * 60); + return (double) time / (1000 * 60 * 60); break; case 4: //d - return time / (1000 * 60 * 60 * 24); + return (double) time / (1000 * 60 * 60 * 24); break; case 5: //w - return time / (1000 * 60 * 60 * 24 * 7); + return (double) time / (1000 * 60 * 60 * 24 * 7); break; case 6: //mon - return time / (1000 * 60 * 60 * 24 * 7 * 30); + return time / (1000.0 * 60.0 * 60.0 * 24.0 * 7.0 * 30.0); break; case 7: //y - return time / (1000 * 60 * 60 * 24 * 7 * 30 * 12); + return time / (1000.0 * 60.0 * 60.0 * 24.0 * 7.0 * 30.0 * 12.0); break; default: @@ -1310,27 +1310,6 @@ double ConTime(double time, int startingUnit, int endingUnit) { } -//.. -// graphMode -void graphMode() { - double x, y; - - printf("Enter the range for x (start end step): "); - double x_start, x_end, x_step; - scanf("%lf %lf %lf", &x_start, &x_end, &x_step); - - printf("\nGraph for the function y = sin(x):\n"); - - printf(" x\t| y\n"); - printf("--------------\n"); - - for (x = x_start; x <= x_end; x += x_step) { - y = sin(x); - printf("%.2lf\t| %.2lf\n", x, y); - } -} - - // change mode int mode(int userChoice){ diff --git a/src/main/c/calculator.h b/src/main/c/main_calculator.h similarity index 88% rename from src/main/c/calculator.h rename to src/main/c/main_calculator.h index 0a34ca1..45cb01e 100644 --- a/src/main/c/calculator.h +++ b/src/main/c/main_calculator.h @@ -1,5 +1,5 @@ -#ifndef CALCULATOR -#define CALCULATOR +#ifndef MAIN_CALCULATOR +#define MAIN_CALCULATOR // add function double add(double a, double b); @@ -13,12 +13,6 @@ double multiply(double a, double b); // divide function double divide(double a, double b); -// get input and check if its a number -double testForNumber(); - -// get input and check if its a operator -char testForOperator(); - // Square root function double squareRootFunction(double x); @@ -85,6 +79,5 @@ double ConClock(double time, int startingUnit, int endingUnit); double ConTime(double time, int startingUnit, int endingUnit); -int performOperation(int num1, char operatorType, int num2); -#endif // CALCULATOR +#endif // CALCULATOR \ No newline at end of file diff --git a/src/main/c/programmingMode.c b/src/main/c/programmingMode.c index 48bc867..b96b77c 100644 --- a/src/main/c/programmingMode.c +++ b/src/main/c/programmingMode.c @@ -3,7 +3,7 @@ #include #include -#include "calculator.h" +#include "programmingMode.h" // Function to convert an integer to binary representation diff --git a/src/main/c/programmingMode.h b/src/main/c/programmingMode.h new file mode 100644 index 0000000..4e800e4 --- /dev/null +++ b/src/main/c/programmingMode.h @@ -0,0 +1,8 @@ +#ifndef PROGRAMMINGMODE +#define PROGRAMMINGMODE + +// to test some calculations +int performOperation(int num1, char operatorType, int num2); + + +#endif // PROGRAMMINGMODE \ No newline at end of file diff --git a/src/main/c/scientificMode.c b/src/main/c/scientificMode.c index 8aa73e3..2dd40d8 100644 --- a/src/main/c/scientificMode.c +++ b/src/main/c/scientificMode.c @@ -2,7 +2,6 @@ #include #include -#include "calculator.h" // get the number which has to be calculated double getNumberFromUser() { diff --git a/src/main/c/testForNumber.c b/src/main/c/testForNumber.c index 06654b6..511de91 100644 --- a/src/main/c/testForNumber.c +++ b/src/main/c/testForNumber.c @@ -2,8 +2,9 @@ #include #include #include +#include -#include "calculator.h" +#include "testForNumber.h" double testForNumber() { double num; diff --git a/src/main/c/testForNumber.h b/src/main/c/testForNumber.h new file mode 100644 index 0000000..e1d9a91 --- /dev/null +++ b/src/main/c/testForNumber.h @@ -0,0 +1,7 @@ +#ifndef TESTFORNUMBER +#define TESTFORNUMBER + +// get input and check if its a number +double testForNumber(); + +#endif // TESTFORNUMBER \ No newline at end of file diff --git a/src/main/c/testForOperator.c b/src/main/c/testForOperator.c index d3a7c1f..4c243e0 100644 --- a/src/main/c/testForOperator.c +++ b/src/main/c/testForOperator.c @@ -4,7 +4,7 @@ #include #include -#include "calculator.h" +#include "testForOperator.h" char testForOperator() { //saving the number of operators in a variable so it only needs to be changed in one location @@ -16,7 +16,7 @@ char testForOperator() { //Loops as long as input isn't valid, enters at least one time while (!validInput) { - scanf_s("%c\n", &input); + scanf("%c\n", &input); //checks every position of the array if a position is equal to input returns the input, which also stopps the function for (int i = 0; i <= numberOfOperators; i++) { if (input == oppArray[i]) { diff --git a/src/main/c/testForOperator.h b/src/main/c/testForOperator.h new file mode 100644 index 0000000..34a8467 --- /dev/null +++ b/src/main/c/testForOperator.h @@ -0,0 +1,7 @@ +#ifndef TESTFOROPERATOR +#define TESTFOROPERATOR + +// get input and check if its a operator +char testForOperator(); + +#endif // TESTFOROPERATOR \ No newline at end of file diff --git a/src/test/c/test_calculator.c b/src/test/c/test_calculator.c index b3f261c..dde64f2 100644 --- a/src/test/c/test_calculator.c +++ b/src/test/c/test_calculator.c @@ -1,8 +1,9 @@ -#ifdef TEST - #include "unity.h" -#include "calculator.h" +#include "main_calculator.h" +#include "testForOperator.h" +#include "testForNumber.h" +#include "programmingMode.h" void setUp(void) { @@ -41,25 +42,25 @@ void test_divide(void) void test_ConMeter(void) {//5 mm to cm double result = ConMeter(5, 0, 1); - TEST_ASSERT_EQUAL(50, result); + TEST_ASSERT_EQUAL(0.5, result); } void test_ConMeterToFoot(void) {//5 m to foot - double result = ConMeterToFoot(5, 0, 1); + double result = ConMeterToFoot(5, 1, 0); TEST_ASSERT_EQUAL(16.4042, result); } void test_ConKilometerToMiles(void) {//5 miles to km double result = ConKilometerToMiles(5, 0, 1); - TEST_ASSERT_EQUAL(3.10686, result); + TEST_ASSERT_EQUAL(8.04672, result); } void test_ConGram(void) {//5 mg to g double result = ConGram(5, 0, 1); - TEST_ASSERT_EQUAL(5000, result); + TEST_ASSERT_EQUAL(0.005, result); } void test_ConGramToPounds(void) {//5 kg to pounds - double result = ConGramToPounds(5, 0, 1); + double result = ConGramToPounds(5, 0, 0); TEST_ASSERT_EQUAL(11.0231, result); } @@ -69,17 +70,17 @@ void test_ConTemp(void) {//5 celsius to fahrenheit } void test_ConSpeed(void) {//5 kmh to mph - double result = ConTemp(5, 0, 1); + double result = ConSpeed(5, 0, 1); TEST_ASSERT_EQUAL(3.10686, result); } void test_ConLiter(void) {//5 l to ml - double result = ConTemp(5, 1, 0); + double result = ConLiter(5, 1, 0); TEST_ASSERT_EQUAL(5000, result); } void test_ConLiterToGallon(void) {//5 l to gallon - double result = ConTemp(5, 0, 1); + double result = ConLiterToGallon(5, 0, 1); TEST_ASSERT_EQUAL(1.32086, result); } @@ -90,22 +91,22 @@ void test_ConData(void) {//5 b to kb void test_ConArea(void) {//5 mm to cm double result = ConData(5, 0, 1); - TEST_ASSERT_EQUAL(0.05), result); + TEST_ASSERT_EQUAL(0.05, result); } void test_ConVolume(void) {//5 mm to cm double result = ConData(5, 0, 1); - TEST_ASSERT_EQUAL(0.005), result); + TEST_ASSERT_EQUAL(0.005, result); } void test_ConClock(void) {//5:00 to 5AM - double result = ConData(5, 0, 1); - TEST_ASSERT_EQUAL(5), result); + double result = ConClock(5, 0, 1); + TEST_ASSERT_EQUAL(5, result); } void test_ConTime(void) {//5 ms to s double result = ConData(5, 0, 1); - TEST_ASSERT_EQUAL(0.005), result); + TEST_ASSERT_EQUAL(0.005, result); } @@ -191,5 +192,3 @@ void test_performOperation_Division(void) { // Assert TEST_ASSERT_EQUAL_INT(4, result); } - -#endif // TEST diff --git a/target/test/cache/defines_dependency.yml b/target/test/cache/defines_dependency.yml new file mode 100644 index 0000000..7c38508 --- /dev/null +++ b/target/test/cache/defines_dependency.yml @@ -0,0 +1,9 @@ +--- +src/main/c/main_calculator.c: +- TEST +src/main/c/testForOperator.c: +- TEST +src/main/c/testForNumber.c: +- TEST +src/main/c/programmingMode.c: +- TEST diff --git a/target/test/cache/input.yml b/target/test/cache/input.yml new file mode 100644 index 0000000..5d1078e --- /dev/null +++ b/target/test/cache/input.yml @@ -0,0 +1,243 @@ +--- +:project: + :use_exceptions: false + :use_mocks: true + :compile_threads: 1 + :test_threads: 1 + :use_test_preprocessor: true + :use_preprocessor_directives: false + :use_deep_dependencies: false + :generate_deep_dependencies: true + :auto_link_deep_dependencies: false + :test_file_prefix: test_ + :options_paths: [] + :release_build: false + :use_auxiliary_dependencies: true + :build_root: target + :which_ceedling: gem + :ceedling_version: 0.31.1 + :default_tasks: + - test:all +:release_build: + :use_assembly: false + :artifacts: [] +:paths: + :test: + - "+:src/test/c/**" + - "-:src/test/c/support" + :source: + - "+:src/main/c/**" + :support: + - src/test/c/support + :include: [] + :libraries: [] + :test_toolchain_include: [] + :release_toolchain_include: [] +:files: + :test: [] + :source: [] + :assembly: [] + :support: [] + :include: [] +:environment: +- :rake_columns: '120' +:defines: + :test: + - &1 [] + - TEST + :test_preprocess: + - *1 + - TEST + :release: [] + :release_preprocess: [] + :use_test_definition: false + :common: [] +:libraries: + :flag: "-l${1}" + :path_flag: "-L ${1}" + :test: [] + :test_preprocess: [] + :release: [] + :release_preprocess: [] + :placement: :end + :system: + - m +:flags: {} +:extension: + :header: ".h" + :source: ".c" + :assembly: ".s" + :object: ".o" + :libraries: + - ".a" + - ".so" + :executable: ".out" + :map: ".map" + :list: ".lst" + :testpass: ".pass" + :testfail: ".fail" + :dependencies: ".d" +:unity: + :vendor_path: "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor" + :defines: [] +:cmock: + :vendor_path: "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor" + :defines: [] + :includes: [] + :mock_prefix: mock_ + :when_no_prototypes: :warn + :enforce_strict_ordering: true + :plugins: + - :ignore + - :callback + :treat_as: + uint8: HEX8 + uint16: HEX16 + uint32: UINT32 + int8: INT8 + bool: UINT8 + :mock_path: target/test/mocks + :verbosity: 3 + :unity_helper: false +:cexception: + :vendor_path: "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor" + :defines: [] +:test_runner: + :includes: [] + :file_suffix: _runner +:tools: + :test_compiler: + :executable: gcc + :name: default_test_compiler + :stderr_redirect: :none + :background_exec: :none + :optional: false + :arguments: + - '' + - '' + - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR + - -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE + - "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR + - "-DGNU_COMPILER" + - "-g" + - '' + - -c "${1}" + - -o "${2}" + - "-MMD" + - -MF "${4}" + :test_fixture: + :executable: "${1}" + :name: default_test_fixture + :stderr_redirect: :auto + :background_exec: :none + :optional: false + :arguments: [] + :test_linker: + :executable: gcc + :name: default_test_linker + :stderr_redirect: :none + :background_exec: :none + :optional: false + :arguments: + - '' + - '' + - '' + - '"${1}"' + - "${5}" + - -o "${2}" + - '' + - "${4}" + - '' + :test_file_preprocessor: + :executable: gcc + :name: default_test_file_preprocessor + :stderr_redirect: :none + :background_exec: :none + :optional: false + :arguments: + - '' + - '' + - "-E" + - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR + - -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE + - "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR + - "-D$": DEFINES_TEST_PREPROCESS + - "-DGNU_COMPILER" + - '"${1}"' + - -o "${2}" + :test_file_preprocessor_directives: + :executable: gcc + :name: default_test_file_preprocessor_directives + :stderr_redirect: :none + :background_exec: :none + :optional: false + :arguments: + - "-E" + - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR + - -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE + - "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR + - "-D$": DEFINES_TEST_PREPROCESS + - "-DGNU_COMPILER" + - "-fdirectives-only" + - '"${1}"' + - -o "${2}" + :test_includes_preprocessor: + :executable: gcc + :name: default_test_includes_preprocessor + :stderr_redirect: :none + :background_exec: :none + :optional: false + :arguments: + - '' + - '' + - "-E" + - "-MM" + - "-MG" + - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR + - -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE + - "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR + - "-D$": DEFINES_TEST_PREPROCESS + - "-DGNU_COMPILER" + - '"${1}"' +:test_compiler: + :arguments: [] +:test_linker: + :arguments: [] +:test_fixture: + :arguments: [] + :link_objects: [] +:test_includes_preprocessor: + :arguments: [] +:test_file_preprocessor: + :arguments: [] +:test_file_preprocessor_directives: + :arguments: [] +:test_dependencies_generator: + :arguments: [] +:release_compiler: + :arguments: [] +:release_linker: + :arguments: [] +:release_assembler: + :arguments: [] +:release_dependencies_generator: + :arguments: [] +:plugins: + :load_paths: + - "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/../plugins" + :enabled: + - stdout_pretty_tests_report + - module_generator + :display_raw_test_results: false + :stdout_pretty_tests_report_path: "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/../plugins/stdout_pretty_tests_report" + :module_generator_path: "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/../plugins/module_generator" +:gcov: + :reports: + - HtmlDetailed + :gcovr: + :html_medium_threshold: 75 + :html_high_threshold: 90 +:module_generator: + :project_root: "./" + :source_root: src/ + :test_root: test/ diff --git a/target/test/cache/test_calculator.c b/target/test/cache/test_calculator.c new file mode 100644 index 0000000..b5bac52 --- /dev/null +++ b/target/test/cache/test_calculator.c @@ -0,0 +1,502 @@ +#include "src/main/c/programmingMode.h" +#include "src/main/c/testForNumber.h" +#include "src/main/c/testForOperator.h" +#include "src/main/c/main_calculator.h" +#include "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + +void setUp(void) + +{ + +} + + + +void tearDown(void) + +{ + +} + + + +void test_addition(void) + +{ + + double result = add(1, 2); + + UnityAssertEqualNumber((UNITY_INT)((3)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(19), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_minus(void) + +{ + + double result = minus(3, 1); + + UnityAssertEqualNumber((UNITY_INT)((2)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(25), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_multiply(void) + +{ + + double result = multiply(1, 2); + + UnityAssertEqualNumber((UNITY_INT)((2)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(31), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_divide(void) + +{ + + double result = divide(4, 2); + + UnityAssertEqualNumber((UNITY_INT)((2)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(37), UNITY_DISPLAY_STYLE_INT); + + + + double result1 = divide(4, 0); + + UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((result1)), ( + + ((void *)0) + + ), (UNITY_UINT)(40), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConMeter(void) { + + double result = ConMeter(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((0.5)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(45), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConMeterToFoot(void) { + + double result = ConMeterToFoot(5, 1, 0); + + UnityAssertEqualNumber((UNITY_INT)((16.4042)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(50), UNITY_DISPLAY_STYLE_INT); + +} + +void test_ConKilometerToMiles(void) { + + double result = ConKilometerToMiles(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((8.04672)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(54), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConGram(void) { + + double result = ConGram(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((0.005)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(59), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConGramToPounds(void) { + + double result = ConGramToPounds(5, 0, 0); + + UnityAssertEqualNumber((UNITY_INT)((11.0231)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(64), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConTemp(void) { + + double result = ConTemp(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((41)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(69), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConSpeed(void) { + + double result = ConSpeed(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((3.10686)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(74), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConLiter(void) { + + double result = ConLiter(5, 1, 0); + + UnityAssertEqualNumber((UNITY_INT)((5000)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(79), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConLiterToGallon(void) { + + double result = ConLiterToGallon(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((1.32086)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(84), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConData(void) { + + double result = ConData(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((0.005)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(89), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConArea(void) { + + double result = ConData(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((0.05)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(94), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConVolume(void) { + + double result = ConData(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((0.005)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(99), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConClock(void) { + + double result = ConClock(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((5)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(104), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConTime(void) { + + double result = ConData(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((0.005)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(109), UNITY_DISPLAY_STYLE_INT); + +} + + + + + + + +void test_squareRootFunction(void) { + + UnityAssertFloatsWithin((UNITY_FLOAT)((UNITY_FLOAT)((2.0)) * (UNITY_FLOAT)(0.00001f)), (UNITY_FLOAT)((UNITY_FLOAT)((2.0))), (UNITY_FLOAT)((UNITY_FLOAT)((squareRootFunction(4.0)))), (( + + ((void *)0) + + )), (UNITY_UINT)((UNITY_UINT)(115))); + +} + + + + + +void test_sineFunction(void) { + + + + UnityAssertFloatsWithin((UNITY_FLOAT)((UNITY_FLOAT)((0.0)) * (UNITY_FLOAT)(0.00001f)), (UNITY_FLOAT)((UNITY_FLOAT)((0.0))), (UNITY_FLOAT)((UNITY_FLOAT)((sineFunction(0.0)))), (( + + ((void *)0) + + )), (UNITY_UINT)((UNITY_UINT)(121))); + +} + + + + + +void test_cosineFunction(void) { + + + + UnityAssertFloatsWithin((UNITY_FLOAT)((UNITY_FLOAT)((1.0)) * (UNITY_FLOAT)(0.00001f)), (UNITY_FLOAT)((UNITY_FLOAT)((1.0))), (UNITY_FLOAT)((UNITY_FLOAT)((cosineFunction(0.0)))), (( + + ((void *)0) + + )), (UNITY_UINT)((UNITY_UINT)(127))); + +} + + + + + +void test_tangentFunction(void) { + + + + UnityAssertFloatsWithin((UNITY_FLOAT)((UNITY_FLOAT)((0.0)) * (UNITY_FLOAT)(0.00001f)), (UNITY_FLOAT)((UNITY_FLOAT)((0.0))), (UNITY_FLOAT)((UNITY_FLOAT)((tangentFunction(0.0)))), (( + + ((void *)0) + + )), (UNITY_UINT)((UNITY_UINT)(133))); + +} + + + + + +void test_logarithmFunction(void) { + + + + UnityAssertFloatsWithin((UNITY_FLOAT)((UNITY_FLOAT)((1.0)) * (UNITY_FLOAT)(0.00001f)), (UNITY_FLOAT)((UNITY_FLOAT)((1.0))), (UNITY_FLOAT)((UNITY_FLOAT)((logarithmFunction(10.0)))), (( + + ((void *)0) + + )), (UNITY_UINT)((UNITY_UINT)(139))); + +} + + + + + +void test_naturalLogarithmFunction(void) { + + + + UnityAssertFloatsWithin((UNITY_FLOAT)((UNITY_FLOAT)((0.0)) * (UNITY_FLOAT)(0.00001f)), (UNITY_FLOAT)((UNITY_FLOAT)((0.0))), (UNITY_FLOAT)((UNITY_FLOAT)((naturalLogarithmFunction(1.0)))), (( + + ((void *)0) + + )), (UNITY_UINT)((UNITY_UINT)(145))); + +} + + + + + +void test_logarithmBase2Function(void) { + + + + UnityAssertFloatsWithin((UNITY_FLOAT)((UNITY_FLOAT)((3.0)) * (UNITY_FLOAT)(0.00001f)), (UNITY_FLOAT)((UNITY_FLOAT)((3.0))), (UNITY_FLOAT)((UNITY_FLOAT)((logarithmBase2Function(8.0)))), (( + + ((void *)0) + + )), (UNITY_UINT)((UNITY_UINT)(151))); + +} + + + + + +void test_exponentialFunction(void) { + + + + UnityAssertFloatsWithin((UNITY_FLOAT)((UNITY_FLOAT)((1.0)) * (UNITY_FLOAT)(0.00001f)), (UNITY_FLOAT)((UNITY_FLOAT)((1.0))), (UNITY_FLOAT)((UNITY_FLOAT)((exponentialFunction(0.0)))), (( + + ((void *)0) + + )), (UNITY_UINT)((UNITY_UINT)(157))); + +} + + + + + +void test_performOperation_Subtraction(void) { + + + + int result; + + + + + + result = performOperation(10, '-', 3); + + + + + + UnityAssertEqualNumber((UNITY_INT)((7)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(169), UNITY_DISPLAY_STYLE_INT); + +} + + + + + +void test_performOperation_Multiplication(void) { + + + + int result; + + + + + + result = performOperation(4, '*', 6); + + + + + + UnityAssertEqualNumber((UNITY_INT)((24)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(181), UNITY_DISPLAY_STYLE_INT); + +} + + + + + +void test_performOperation_Division(void) { + + + + int result; + + + + + + result = performOperation(8, '/', 2); + + + + + + UnityAssertEqualNumber((UNITY_INT)((4)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(193), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/target/test/dependencies/cmock.d b/target/test/dependencies/cmock.d new file mode 100644 index 0000000..6992af8 --- /dev/null +++ b/target/test/dependencies/cmock.d @@ -0,0 +1,6 @@ +target/test/out/c/cmock.o: \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.c \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock_internals.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/target/test/dependencies/force_build b/target/test/dependencies/force_build new file mode 100644 index 0000000..e69de29 diff --git a/target/test/dependencies/main_calculator.d b/target/test/dependencies/main_calculator.d new file mode 100644 index 0000000..13621c0 --- /dev/null +++ b/target/test/dependencies/main_calculator.d @@ -0,0 +1,2 @@ +target/test/out/c/main_calculator.o: src/main/c/main_calculator.c \ + src/main/c/main_calculator.h diff --git a/target/test/dependencies/programmingMode.d b/target/test/dependencies/programmingMode.d new file mode 100644 index 0000000..057dedb --- /dev/null +++ b/target/test/dependencies/programmingMode.d @@ -0,0 +1,2 @@ +target/test/out/c/programmingMode.o: src/main/c/programmingMode.c \ + src/main/c/programmingMode.h diff --git a/target/test/dependencies/testForNumber.d b/target/test/dependencies/testForNumber.d new file mode 100644 index 0000000..9ae49d2 --- /dev/null +++ b/target/test/dependencies/testForNumber.d @@ -0,0 +1,2 @@ +target/test/out/c/testForNumber.o: src/main/c/testForNumber.c \ + src/main/c/testForNumber.h diff --git a/target/test/dependencies/testForOperator.d b/target/test/dependencies/testForOperator.d new file mode 100644 index 0000000..e2b19f7 --- /dev/null +++ b/target/test/dependencies/testForOperator.d @@ -0,0 +1,2 @@ +target/test/out/c/testForOperator.o: src/main/c/testForOperator.c \ + src/main/c/testForOperator.h diff --git a/target/test/dependencies/test_calculator.d b/target/test/dependencies/test_calculator.d new file mode 100644 index 0000000..1d59c61 --- /dev/null +++ b/target/test/dependencies/test_calculator.d @@ -0,0 +1,5 @@ +target/test/out/c/test_calculator.o: src/test/c/test_calculator.c \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ + src/main/c/main_calculator.h src/main/c/testForOperator.h \ + src/main/c/testForNumber.h src/main/c/programmingMode.h diff --git a/target/test/dependencies/test_calculator_runner.d b/target/test/dependencies/test_calculator_runner.d new file mode 100644 index 0000000..4972796 --- /dev/null +++ b/target/test/dependencies/test_calculator_runner.d @@ -0,0 +1,4 @@ +target/test/out/c/test_calculator_runner.o: \ + target/test/runners/test_calculator_runner.c \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/target/test/dependencies/unity.d b/target/test/dependencies/unity.d new file mode 100644 index 0000000..ed190f0 --- /dev/null +++ b/target/test/dependencies/unity.d @@ -0,0 +1,4 @@ +target/test/out/c/unity.o: \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.c \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/target/test/out/c/cmock.o b/target/test/out/c/cmock.o new file mode 100644 index 0000000000000000000000000000000000000000..a04fa7d88618a8d551915d287341146b15d602ba GIT binary patch literal 11200 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 literal 0 HcmV?d00001 diff --git a/target/test/out/c/programmingMode.o b/target/test/out/c/programmingMode.o new file mode 100644 index 0000000000000000000000000000000000000000..8217c85f1bc95e7b93975578606156a869a1ee88 GIT binary patch literal 8080 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 literal 0 HcmV?d00001 diff --git a/target/test/out/c/testForNumber.o b/target/test/out/c/testForNumber.o new file mode 100644 index 0000000000000000000000000000000000000000..2cbf248796c261d6448a3c80854f54b2a87540f6 GIT binary patch literal 7768 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 Rrs?{}IKZE@ECWI9{~t>!nJ@qV literal 0 HcmV?d00001 diff --git a/target/test/out/c/testForOperator.o b/target/test/out/c/testForOperator.o new file mode 100644 index 0000000000000000000000000000000000000000..3ae132c39263bebdd14ddc66fdfda9a659ba9784 GIT binary patch literal 4776 zcmbtWU2GIp6ux)2Q+B)UwzLT4M;K5L(4D2E0tE{NT-c)gL_vMPG}GDHAK9I$^8-{A zjTodM7%(xxLO0 z&pV#GmOtHoez$hB{e14~nlHm<)Yq3B$z9`MTbH|W`1^?jA_yFQI`RvD>Ed2ke5O@2c9SZ|i|Ks+%RV z;w)tAVMa8@6BrrC*WLK4m-p)cPfSC^n<5p3@fe|IVT*}xZ)(yiP5_Ao;#}CYB6u_> zYM6oyGGUX5O$a5@#XjL;U7iBNNAM&(cqN(mM4oKMOj6_s`CH53Yhp;Jk{A~|wO63F z7GXGL36yTZ;Ml1r1ZreVwPJySIOQO7EKuH%M&CUg!|oI)lr zhpV;^Mn5pEeVGx@4QwlLy^J4#BSu9At7`gXX|A{q7_4F)W@2wLC#((I-p=CA5!*8% zjnBlFO!|t651d5%mgyAP&``y9t-ih?f}32o%J!SpN?{N;f0PdAqTq%wa^{y^FVH6^ ziY83VQL*Zp0dq%2HhP{p$^zRDwz!@g9Yte0;hinJH9Px^pMBW&_XX}q)-rvoY&)K9 zm0?zy?^)Rz957ict7I}P_V0sPHuSx0#j&bk!B)ovnWpCUgF?kM%8YH@ym_s@bkA_; z1R*VarY97z=kUsv#){r$M9Y%Jv!??dJh7l+aC2NlPS*7dXru7w9%KAq2cO$IEpZa6 zdmeE3poqKhHWHq zHh$bqGRIllBrHLk!SSXDoF=TZZk+PqxCeNgM^#n=(TK+br4ip?b(Qs2_W+c=51iPC zLsog;P|>VZSw9T~Paa&$Kkr1cjd)yRyjCQCn0VXPx`-G$K#bHc{%f# zyMEQ=3?q+M-7#k&7lU?(fFwf?d8N{{`#uuspGNVZwaqac)8LW z6n-w@Eedbo06?}!N{k=#ZzO)V!dHnOR`~hER}_9f@rM+iAbVNiuMi$n`0bSEq{81v z{2K~?i}2eD{}QO<@s6RKP7xy;k(E`MH&_MyMz4t ziI?@(Mp)Jc^0LM;MD9hIhtjY`)Ifi%Pr0v_DE!lemn(dkaIeCLg!>f!Rl@5P{!PMp z(&{*M;&Be@=bst=Xbo<0(191}vTS*F)ieV8V8D!m8JNr%_I+k}ZUlt2U=N3-p^8&< z!AG>s;bG6-4{jJtlxI368$&0!YQ?c-2=phLNW)PD*m7$%8*Wwu{?%;*t{(WMfL{#4 zB_}lCX9Io{f>FwAmxqd;S+nUw|EJO+9_LWjgG@I-4SB9hp2|l;hUWs-&%ihnH4<1P zAO|DG@czVDq8a|oqG0_XFYj68P_9R6%3JLpe`GP|e~rg;5pzze6~Mp1gYsac#@}-M zlEC^@$Aq@UL~c@y3S?OKjppwq>gX&D4CfEmNcJ!1ZyRuGPM}zc;w~Vl6V(^@tIDCf z{Gne_7mH2R_bK2SjbF!05=6%1_>=Ic<9`-7H78JPCoSmf2i8J949n|T%rCCDIH2E^)c{n6u*}){d1I0Dj6sB>3@j7P4QUY^&;b>J_knG zuJ>D}ZfG*9zIcz}eXZ923X0b$PAWNn5`O~?%&ErjqWCq^k+d5BHSmqr?-s3JH^t%l z;Xjg$mwcnXG31!+pFa35;2PB*a_ZTE@fUGYK=P3qf2;F19W0IFJMd=^MBe)mnz~kh E11_T%EdT%j literal 0 HcmV?d00001 diff --git a/target/test/out/c/test_calculator.o b/target/test/out/c/test_calculator.o new file mode 100644 index 0000000000000000000000000000000000000000..4ed0c1330950e0e18ed0136679d5ba225db4b5f3 GIT binary patch literal 19888 zcmcIr4U|;Hm9FlY9!3Y|hd~5H7?3}e>0$U2afBXb28IX&!hoP4^z`)1^xD%6{UeY? z;e=>JPmHi`(9I;P7!%zj>rdjYe+#o4-N>q&jcax{E*tR}kDjpg8NmIea>#UY>;sX~fTrA{s@#3MQyQRl1C>Vv8Y zzhBqB|E;?=|Ij1azVCml-><3;VTSfQ^r@$6#tS{|RjI*u5QNyxgYEmPTD@1>Z$EG_BY2) z$FVbP5r}&_mNbvxP&kUD(^0Mmp3`NR$*ap)8SO_={&bXQ1J6;ehQy~Sf2KOmx0TD! zrt%fGGQ>Z%&S*bvKSzM-;5 zhohxT5jsx*?&yqRlGMRj%8>>*94%*x(D_He9UZ4I&;i^D5feMP*qqBLT}@|$Dm4nz zk?%hL?aK_Zcky?hpH6W^rbG;02j@uS3lDvA*>g~>kP2Ys)NnjphzC17a84mrR*nu+ zW#xFas}ZH4L@KAsOzyIvv6Y%r06nP6f|^-oQsq4em0}}7gHDD}ty8+F!*yY>>*xb@ z^EmqLad$$r{F|J9XxzP+{sE_tkIP{CIXF}fE4>;{!9#&SE8PBd0i*P>MjuC7$QT`; zqK}jGak7QX(D7z{T%wPy`q-|I2lVlvs)E8)@bN&&t8gyIBCE^s4u*ZNN+3YV?-^Jzt|(h^=s*Mn^j+ zUOVcR;1vk`7^2o;JqkX8cHO+v8lClOC#yj_G`gKp({gM+8BiddAcMI)?qWUe;_C{ZOleS;&YhS4C+kNc|wEcjueZICo=4-Fi_Lm&H zHF7Gn>1{7lxi$siQZudAxpZI83rR14*T+-y?=ay@#ofxT*ISQ-8?R2OO%t-+Ya!trQ6iX#6jI z@UJi)ar5^xE_C)WF8DVwF8Dhb7ks=)=}_R8V)_PyDs?SI0t0^ww-@ceRLB-Wij

}H+60?^-D~h=cdjo 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 RUirt+1nu9AjB}Lv{~wZ%#jgMW literal 0 HcmV?d00001 diff --git a/target/test/out/c/test_calculator_runner.o b/target/test/out/c/test_calculator_runner.o new file mode 100644 index 0000000000000000000000000000000000000000..80868899577e93198c9549cce76ecfbfcd7e70d0 GIT binary patch literal 14488 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 M!1tBp=cfIC1JTBtlK=n! literal 0 HcmV?d00001 diff --git a/target/test/out/c/unity.o b/target/test/out/c/unity.o new file mode 100644 index 0000000000000000000000000000000000000000..d74bb7988cd22843556fdb5b6cee3700979b9752 GIT binary patch literal 57112 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 QtND+c9OQ<{9 literal 0 HcmV?d00001 diff --git a/target/test/out/test_calculator.out b/target/test/out/test_calculator.out new file mode 100755 index 0000000000000000000000000000000000000000..5c3f8d452b5df660eeb64c8b0d013f92182c3b44 GIT binary patch literal 90008 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 literal 0 HcmV?d00001 diff --git a/target/test/preprocess/files/test_calculator.c b/target/test/preprocess/files/test_calculator.c new file mode 100644 index 0000000..b5bac52 --- /dev/null +++ b/target/test/preprocess/files/test_calculator.c @@ -0,0 +1,502 @@ +#include "src/main/c/programmingMode.h" +#include "src/main/c/testForNumber.h" +#include "src/main/c/testForOperator.h" +#include "src/main/c/main_calculator.h" +#include "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + +void setUp(void) + +{ + +} + + + +void tearDown(void) + +{ + +} + + + +void test_addition(void) + +{ + + double result = add(1, 2); + + UnityAssertEqualNumber((UNITY_INT)((3)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(19), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_minus(void) + +{ + + double result = minus(3, 1); + + UnityAssertEqualNumber((UNITY_INT)((2)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(25), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_multiply(void) + +{ + + double result = multiply(1, 2); + + UnityAssertEqualNumber((UNITY_INT)((2)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(31), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_divide(void) + +{ + + double result = divide(4, 2); + + UnityAssertEqualNumber((UNITY_INT)((2)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(37), UNITY_DISPLAY_STYLE_INT); + + + + double result1 = divide(4, 0); + + UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((result1)), ( + + ((void *)0) + + ), (UNITY_UINT)(40), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConMeter(void) { + + double result = ConMeter(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((0.5)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(45), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConMeterToFoot(void) { + + double result = ConMeterToFoot(5, 1, 0); + + UnityAssertEqualNumber((UNITY_INT)((16.4042)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(50), UNITY_DISPLAY_STYLE_INT); + +} + +void test_ConKilometerToMiles(void) { + + double result = ConKilometerToMiles(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((8.04672)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(54), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConGram(void) { + + double result = ConGram(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((0.005)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(59), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConGramToPounds(void) { + + double result = ConGramToPounds(5, 0, 0); + + UnityAssertEqualNumber((UNITY_INT)((11.0231)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(64), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConTemp(void) { + + double result = ConTemp(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((41)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(69), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConSpeed(void) { + + double result = ConSpeed(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((3.10686)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(74), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConLiter(void) { + + double result = ConLiter(5, 1, 0); + + UnityAssertEqualNumber((UNITY_INT)((5000)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(79), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConLiterToGallon(void) { + + double result = ConLiterToGallon(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((1.32086)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(84), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConData(void) { + + double result = ConData(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((0.005)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(89), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConArea(void) { + + double result = ConData(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((0.05)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(94), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConVolume(void) { + + double result = ConData(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((0.005)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(99), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConClock(void) { + + double result = ConClock(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((5)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(104), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_ConTime(void) { + + double result = ConData(5, 0, 1); + + UnityAssertEqualNumber((UNITY_INT)((0.005)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(109), UNITY_DISPLAY_STYLE_INT); + +} + + + + + + + +void test_squareRootFunction(void) { + + UnityAssertFloatsWithin((UNITY_FLOAT)((UNITY_FLOAT)((2.0)) * (UNITY_FLOAT)(0.00001f)), (UNITY_FLOAT)((UNITY_FLOAT)((2.0))), (UNITY_FLOAT)((UNITY_FLOAT)((squareRootFunction(4.0)))), (( + + ((void *)0) + + )), (UNITY_UINT)((UNITY_UINT)(115))); + +} + + + + + +void test_sineFunction(void) { + + + + UnityAssertFloatsWithin((UNITY_FLOAT)((UNITY_FLOAT)((0.0)) * (UNITY_FLOAT)(0.00001f)), (UNITY_FLOAT)((UNITY_FLOAT)((0.0))), (UNITY_FLOAT)((UNITY_FLOAT)((sineFunction(0.0)))), (( + + ((void *)0) + + )), (UNITY_UINT)((UNITY_UINT)(121))); + +} + + + + + +void test_cosineFunction(void) { + + + + UnityAssertFloatsWithin((UNITY_FLOAT)((UNITY_FLOAT)((1.0)) * (UNITY_FLOAT)(0.00001f)), (UNITY_FLOAT)((UNITY_FLOAT)((1.0))), (UNITY_FLOAT)((UNITY_FLOAT)((cosineFunction(0.0)))), (( + + ((void *)0) + + )), (UNITY_UINT)((UNITY_UINT)(127))); + +} + + + + + +void test_tangentFunction(void) { + + + + UnityAssertFloatsWithin((UNITY_FLOAT)((UNITY_FLOAT)((0.0)) * (UNITY_FLOAT)(0.00001f)), (UNITY_FLOAT)((UNITY_FLOAT)((0.0))), (UNITY_FLOAT)((UNITY_FLOAT)((tangentFunction(0.0)))), (( + + ((void *)0) + + )), (UNITY_UINT)((UNITY_UINT)(133))); + +} + + + + + +void test_logarithmFunction(void) { + + + + UnityAssertFloatsWithin((UNITY_FLOAT)((UNITY_FLOAT)((1.0)) * (UNITY_FLOAT)(0.00001f)), (UNITY_FLOAT)((UNITY_FLOAT)((1.0))), (UNITY_FLOAT)((UNITY_FLOAT)((logarithmFunction(10.0)))), (( + + ((void *)0) + + )), (UNITY_UINT)((UNITY_UINT)(139))); + +} + + + + + +void test_naturalLogarithmFunction(void) { + + + + UnityAssertFloatsWithin((UNITY_FLOAT)((UNITY_FLOAT)((0.0)) * (UNITY_FLOAT)(0.00001f)), (UNITY_FLOAT)((UNITY_FLOAT)((0.0))), (UNITY_FLOAT)((UNITY_FLOAT)((naturalLogarithmFunction(1.0)))), (( + + ((void *)0) + + )), (UNITY_UINT)((UNITY_UINT)(145))); + +} + + + + + +void test_logarithmBase2Function(void) { + + + + UnityAssertFloatsWithin((UNITY_FLOAT)((UNITY_FLOAT)((3.0)) * (UNITY_FLOAT)(0.00001f)), (UNITY_FLOAT)((UNITY_FLOAT)((3.0))), (UNITY_FLOAT)((UNITY_FLOAT)((logarithmBase2Function(8.0)))), (( + + ((void *)0) + + )), (UNITY_UINT)((UNITY_UINT)(151))); + +} + + + + + +void test_exponentialFunction(void) { + + + + UnityAssertFloatsWithin((UNITY_FLOAT)((UNITY_FLOAT)((1.0)) * (UNITY_FLOAT)(0.00001f)), (UNITY_FLOAT)((UNITY_FLOAT)((1.0))), (UNITY_FLOAT)((UNITY_FLOAT)((exponentialFunction(0.0)))), (( + + ((void *)0) + + )), (UNITY_UINT)((UNITY_UINT)(157))); + +} + + + + + +void test_performOperation_Subtraction(void) { + + + + int result; + + + + + + result = performOperation(10, '-', 3); + + + + + + UnityAssertEqualNumber((UNITY_INT)((7)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(169), UNITY_DISPLAY_STYLE_INT); + +} + + + + + +void test_performOperation_Multiplication(void) { + + + + int result; + + + + + + result = performOperation(4, '*', 6); + + + + + + UnityAssertEqualNumber((UNITY_INT)((24)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(181), UNITY_DISPLAY_STYLE_INT); + +} + + + + + +void test_performOperation_Division(void) { + + + + int result; + + + + + + result = performOperation(8, '/', 2); + + + + + + UnityAssertEqualNumber((UNITY_INT)((4)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(193), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/target/test/preprocess/includes/test_calculator.c b/target/test/preprocess/includes/test_calculator.c new file mode 100644 index 0000000..56ed68c --- /dev/null +++ b/target/test/preprocess/includes/test_calculator.c @@ -0,0 +1,6 @@ +--- +- "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" +- src/main/c/main_calculator.h +- src/main/c/testForOperator.h +- src/main/c/testForNumber.h +- src/main/c/programmingMode.h diff --git a/target/test/results/test_calculator.pass b/target/test/results/test_calculator.pass new file mode 100644 index 0000000..8999b26 --- /dev/null +++ b/target/test/results/test_calculator.pass @@ -0,0 +1,130 @@ +--- +:source: + :path: src/test/c + :file: test_calculator.c +:successes: +- :test: test_addition + :line: 16 + :message: '' + :unity_test_time: 0 +- :test: test_minus + :line: 22 + :message: '' + :unity_test_time: 0 +- :test: test_multiply + :line: 28 + :message: '' + :unity_test_time: 0 +- :test: test_divide + :line: 34 + :message: '' + :unity_test_time: 0 +- :test: test_ConMeter + :line: 43 + :message: '' + :unity_test_time: 0 +- :test: test_ConMeterToFoot + :line: 48 + :message: '' + :unity_test_time: 0 +- :test: test_ConKilometerToMiles + :line: 52 + :message: '' + :unity_test_time: 0 +- :test: test_ConGram + :line: 57 + :message: '' + :unity_test_time: 0 +- :test: test_ConGramToPounds + :line: 62 + :message: '' + :unity_test_time: 0 +- :test: test_ConTemp + :line: 67 + :message: '' + :unity_test_time: 0 +- :test: test_ConSpeed + :line: 72 + :message: '' + :unity_test_time: 0 +- :test: test_ConLiter + :line: 77 + :message: '' + :unity_test_time: 0 +- :test: test_ConLiterToGallon + :line: 82 + :message: '' + :unity_test_time: 0 +- :test: test_ConData + :line: 87 + :message: '' + :unity_test_time: 0 +- :test: test_ConArea + :line: 92 + :message: '' + :unity_test_time: 0 +- :test: test_ConVolume + :line: 97 + :message: '' + :unity_test_time: 0 +- :test: test_ConClock + :line: 102 + :message: '' + :unity_test_time: 0 +- :test: test_ConTime + :line: 107 + :message: '' + :unity_test_time: 0 +- :test: test_squareRootFunction + :line: 114 + :message: '' + :unity_test_time: 0 +- :test: test_sineFunction + :line: 119 + :message: '' + :unity_test_time: 0 +- :test: test_cosineFunction + :line: 125 + :message: '' + :unity_test_time: 0 +- :test: test_tangentFunction + :line: 131 + :message: '' + :unity_test_time: 0 +- :test: test_logarithmFunction + :line: 137 + :message: '' + :unity_test_time: 0 +- :test: test_naturalLogarithmFunction + :line: 143 + :message: '' + :unity_test_time: 0 +- :test: test_logarithmBase2Function + :line: 149 + :message: '' + :unity_test_time: 0 +- :test: test_exponentialFunction + :line: 155 + :message: '' + :unity_test_time: 0 +- :test: test_performOperation_Subtraction + :line: 161 + :message: '' + :unity_test_time: 0 +- :test: test_performOperation_Multiplication + :line: 173 + :message: '' + :unity_test_time: 0 +- :test: test_performOperation_Division + :line: 185 + :message: '' + :unity_test_time: 0 +:failures: [] +:ignores: [] +:counts: + :total: 29 + :passed: 29 + :failed: 0 + :ignored: 0 +:stdout: [] +:time: 0.001314320999881602 diff --git a/target/test/runners/test_calculator_runner.c b/target/test/runners/test_calculator_runner.c new file mode 100644 index 0000000..c2033f8 --- /dev/null +++ b/target/test/runners/test_calculator_runner.c @@ -0,0 +1,137 @@ +/* AUTOGENERATED FILE. DO NOT EDIT. */ + +/*=======Automagically Detected Files To Include=====*/ +#include "unity.h" + +int GlobalExpectCount; +int GlobalVerifyOrder; +char* GlobalOrderError; + +/*=======External Functions This Runner Calls=====*/ +extern void setUp(void); +extern void tearDown(void); +extern void test_addition(void); +extern void test_minus(void); +extern void test_multiply(void); +extern void test_divide(void); +extern void test_ConMeter(void); +extern void test_ConMeterToFoot(void); +extern void test_ConKilometerToMiles(void); +extern void test_ConGram(void); +extern void test_ConGramToPounds(void); +extern void test_ConTemp(void); +extern void test_ConSpeed(void); +extern void test_ConLiter(void); +extern void test_ConLiterToGallon(void); +extern void test_ConData(void); +extern void test_ConArea(void); +extern void test_ConVolume(void); +extern void test_ConClock(void); +extern void test_ConTime(void); +extern void test_squareRootFunction(void); +extern void test_sineFunction(void); +extern void test_cosineFunction(void); +extern void test_tangentFunction(void); +extern void test_logarithmFunction(void); +extern void test_naturalLogarithmFunction(void); +extern void test_logarithmBase2Function(void); +extern void test_exponentialFunction(void); +extern void test_performOperation_Subtraction(void); +extern void test_performOperation_Multiplication(void); +extern void test_performOperation_Division(void); + + +/*=======Mock Management=====*/ +static void CMock_Init(void) +{ + GlobalExpectCount = 0; + GlobalVerifyOrder = 0; + GlobalOrderError = NULL; +} +static void CMock_Verify(void) +{ +} +static void CMock_Destroy(void) +{ +} + +/*=======Test Reset Options=====*/ +void resetTest(void); +void resetTest(void) +{ + tearDown(); + CMock_Verify(); + CMock_Destroy(); + CMock_Init(); + setUp(); +} +void verifyTest(void); +void verifyTest(void) +{ + CMock_Verify(); +} + +/*=======Test Runner Used To Run Each Test=====*/ +static void run_test(UnityTestFunction func, const char* name, UNITY_LINE_TYPE line_num) +{ + Unity.CurrentTestName = name; + Unity.CurrentTestLineNumber = line_num; +#ifdef UNITY_USE_COMMAND_LINE_ARGS + if (!UnityTestMatches()) + return; +#endif + Unity.NumberOfTests++; + UNITY_CLR_DETAILS(); + UNITY_EXEC_TIME_START(); + CMock_Init(); + if (TEST_PROTECT()) + { + setUp(); + func(); + } + if (TEST_PROTECT()) + { + tearDown(); + CMock_Verify(); + } + CMock_Destroy(); + UNITY_EXEC_TIME_STOP(); + UnityConcludeTest(); +} + +/*=======MAIN=====*/ +int main(void) +{ + UnityBegin("test_calculator.c"); + run_test(test_addition, "test_addition", 16); + run_test(test_minus, "test_minus", 22); + run_test(test_multiply, "test_multiply", 28); + run_test(test_divide, "test_divide", 34); + run_test(test_ConMeter, "test_ConMeter", 43); + run_test(test_ConMeterToFoot, "test_ConMeterToFoot", 48); + run_test(test_ConKilometerToMiles, "test_ConKilometerToMiles", 52); + run_test(test_ConGram, "test_ConGram", 57); + run_test(test_ConGramToPounds, "test_ConGramToPounds", 62); + run_test(test_ConTemp, "test_ConTemp", 67); + run_test(test_ConSpeed, "test_ConSpeed", 72); + run_test(test_ConLiter, "test_ConLiter", 77); + run_test(test_ConLiterToGallon, "test_ConLiterToGallon", 82); + run_test(test_ConData, "test_ConData", 87); + run_test(test_ConArea, "test_ConArea", 92); + run_test(test_ConVolume, "test_ConVolume", 97); + run_test(test_ConClock, "test_ConClock", 102); + run_test(test_ConTime, "test_ConTime", 107); + run_test(test_squareRootFunction, "test_squareRootFunction", 114); + run_test(test_sineFunction, "test_sineFunction", 119); + run_test(test_cosineFunction, "test_cosineFunction", 125); + run_test(test_tangentFunction, "test_tangentFunction", 131); + run_test(test_logarithmFunction, "test_logarithmFunction", 137); + run_test(test_naturalLogarithmFunction, "test_naturalLogarithmFunction", 143); + run_test(test_logarithmBase2Function, "test_logarithmBase2Function", 149); + run_test(test_exponentialFunction, "test_exponentialFunction", 155); + run_test(test_performOperation_Subtraction, "test_performOperation_Subtraction", 161); + run_test(test_performOperation_Multiplication, "test_performOperation_Multiplication", 173); + run_test(test_performOperation_Division, "test_performOperation_Division", 185); + + return UnityEnd(); +}