From 4c58ea605681d12cda339b2e88e398ae41b81ff1 Mon Sep 17 00:00:00 2001 From: fdai7514 Date: Thu, 9 Feb 2023 01:38:17 +0100 Subject: [PATCH 1/4] implement function calculatorGetUserInput() --- project.yml | 101 ++++++++++++++++++++++++++++ src/calculatorGetUserInput.c | 20 ++++++ src/calculatorGetUserInput.h | 8 +++ src/main.c | 10 ++- tests/support/.gitkeep | 0 tests/test_calculatorGetUserInput.c | 20 ++++++ 6 files changed, 156 insertions(+), 3 deletions(-) create mode 100644 project.yml create mode 100644 src/calculatorGetUserInput.c create mode 100644 src/calculatorGetUserInput.h create mode 100644 tests/support/.gitkeep create mode 100644 tests/test_calculatorGetUserInput.c diff --git a/project.yml b/project.yml new file mode 100644 index 0000000..640cb8f --- /dev/null +++ b/project.yml @@ -0,0 +1,101 @@ +--- + +# Notes: +# Sample project C code is not presently written to produce a release artifact. +# As such, release build options are disabled. +# This sample, therefore, only demonstrates running a collection of unit tests. + +:project: + :use_exceptions: FALSE + :use_test_preprocessor: TRUE + :use_auxiliary_dependencies: TRUE + :build_root: build +# :release_build: TRUE + :test_file_prefix: test_ + :which_ceedling: gem + :ceedling_version: 0.31.1 + :default_tasks: + - test:all + +#:test_build: +# :use_assembly: TRUE + +#:release_build: +# :output: MyApp.out +# :use_assembly: FALSE + +:environment: + +:extension: + :executable: .out + +:paths: + :test: + - +:tests/** + - -:tests/support + :source: + - src/** + :support: + - tests/support + :libraries: [] + +:defines: + # in order to add common defines: + # 1) remove the trailing [] from the :common: section + # 2) add entries to the :common: section (e.g. :test: has TEST defined) + :common: &common_defines [] + :test: + - *common_defines + - TEST + :test_preprocess: + - *common_defines + - TEST + +:cmock: + :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 + +# Add -gcov to the plugins list to make sure of the gcov plugin +# You will need to have gcov and gcovr both installed to make it work. +# For more information on these options, see docs in plugins/gcov +:gcov: + :reports: + - HtmlDetailed + :gcovr: + :html_medium_threshold: 75 + :html_high_threshold: 90 + +#:tools: +# Ceedling defaults to using gcc for compiling, linking, etc. +# As [:tools] is blank, gcc will be used (so long as it's in your system path) +# See documentation to configure a given toolchain for use + +# LIBRARIES +# These libraries are automatically injected into the build process. Those specified as +# common will be used in all types of builds. Otherwise, libraries can be injected in just +# tests or releases. These options are MERGED with the options in supplemental yaml files. +:libraries: + :placement: :end + :flag: "-l${1}" + :path_flag: "-L ${1}" + :system: [] # for example, you might list 'm' to grab the math library + :test: [] + :release: [] + +:plugins: + :load_paths: + - "#{Ceedling.load_path}" + :enabled: + - stdout_pretty_tests_report + - module_generator +... diff --git a/src/calculatorGetUserInput.c b/src/calculatorGetUserInput.c new file mode 100644 index 0000000..d38d0bb --- /dev/null +++ b/src/calculatorGetUserInput.c @@ -0,0 +1,20 @@ +#include "calculatorGetUserInput.h" + +int allowOnly() +{ + if( a == 1) + { + return 1; + } +} + +void calculatorGetUserInput(float *x, float *y) +{ + if (allowOnly() == 1) + { + printf("number1: "); + scanf("%f", x); + printf("number2: "); + scanf("%f", y); + } +} diff --git a/src/calculatorGetUserInput.h b/src/calculatorGetUserInput.h new file mode 100644 index 0000000..49e0b8c --- /dev/null +++ b/src/calculatorGetUserInput.h @@ -0,0 +1,8 @@ +#ifndef CALCULATORGETUSERINPUT_H +#define CALCULATORGETUSERINPUT_H +#include +#include +void calculatorGetUserInput(float *x, float *y); +const int a = 1; + +#endif // CALCULATORGETUSERINPUT_H diff --git a/src/main.c b/src/main.c index a3a8e04..ca9e127 100644 --- a/src/main.c +++ b/src/main.c @@ -1,4 +1,8 @@ -#include -int main(){ -return 0; +#include "calculatorGetUserInput.c" +int main() +{ + float userInput1, userInput2; + calculatorGetUserInput(&userInput1, &userInput2); + printf("Your inputs are %f and %f", userInput1, userInput2); + return 0; } diff --git a/tests/support/.gitkeep b/tests/support/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_calculatorGetUserInput.c b/tests/test_calculatorGetUserInput.c new file mode 100644 index 0000000..3fabe3d --- /dev/null +++ b/tests/test_calculatorGetUserInput.c @@ -0,0 +1,20 @@ +#ifdef TEST + +#include "unity.h" + +#include "calculatorGetUserInput.h" + +void setUp(void) +{ +} + +void tearDown(void) +{ +} + +void test_calculatorGetUserInput_NeedToImplement(void) +{ + TEST_IGNORE_MESSAGE("Need to Implement calculatorGetUserInput"); +} + +#endif // TEST From fd006a95acad36d15c3874530bf288f932f2a43e Mon Sep 17 00:00:00 2001 From: fdai7514 Date: Thu, 9 Feb 2023 01:40:06 +0100 Subject: [PATCH 2/4] implement unittest for calculatorGetUserInput.c --- build-project.sh | 1 + tests/test_calculatorGetUserInput.c | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/build-project.sh b/build-project.sh index 43a0588..51cf723 100755 --- a/build-project.sh +++ b/build-project.sh @@ -1,4 +1,5 @@ clear +ceedling test:all cd src/ gcc main.c -o main ./main diff --git a/tests/test_calculatorGetUserInput.c b/tests/test_calculatorGetUserInput.c index 3fabe3d..ff01ef4 100644 --- a/tests/test_calculatorGetUserInput.c +++ b/tests/test_calculatorGetUserInput.c @@ -2,7 +2,7 @@ #include "unity.h" -#include "calculatorGetUserInput.h" +#include "calculatorGetUserInput.c" void setUp(void) { @@ -14,7 +14,10 @@ void tearDown(void) void test_calculatorGetUserInput_NeedToImplement(void) { - TEST_IGNORE_MESSAGE("Need to Implement calculatorGetUserInput"); + int a, e; + e = 1; + a = allowOnly(); + TEST_ASSERT_EQUAL_INT(e, a); } #endif // TEST From 1d6a732010d07e90b6f7da8fbee5c1659e16497a Mon Sep 17 00:00:00 2001 From: fdai7514 Date: Tue, 7 Feb 2023 12:23:18 +0100 Subject: [PATCH 3/4] refactoring: change variable names and attach descriptive comments in calculatorGetUserInput.c --- src/calculatorGetUserInput.c | 23 ++++++++++++++--------- src/calculatorGetUserInput.h | 5 +++-- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/calculatorGetUserInput.c b/src/calculatorGetUserInput.c index d38d0bb..2eed445 100644 --- a/src/calculatorGetUserInput.c +++ b/src/calculatorGetUserInput.c @@ -1,20 +1,25 @@ #include "calculatorGetUserInput.h" +// Note: +/* This Function may or may not be implemented in actual program, even if it is merged to the main branch. + If it is temporarily not included in the main Program, then this has a role in future Development of the Project */ -int allowOnly() +int allowOnly() //int allowOnly() is helpful for indirectly testing void calculatorGetUserInput(). { - if( a == 1) + if(a == 1) { - return 1; + return 1; } } -void calculatorGetUserInput(float *x, float *y) +void calculatorGetUserInput(float *num1, float *num2) { - if (allowOnly() == 1) + if (allowOnly() == 1) //only if int allowOnly() returns 1, void calculatorGetUserInput will display the desired output. { - printf("number1: "); - scanf("%f", x); - printf("number2: "); - scanf("%f", y); + printf("number1: "); + scanf("%f", num1); + printf("number2: "); + scanf("%f", num2); } } + + diff --git a/src/calculatorGetUserInput.h b/src/calculatorGetUserInput.h index 49e0b8c..9ec1d32 100644 --- a/src/calculatorGetUserInput.h +++ b/src/calculatorGetUserInput.h @@ -2,7 +2,8 @@ #define CALCULATORGETUSERINPUT_H #include #include -void calculatorGetUserInput(float *x, float *y); -const int a = 1; +void calculatorGetUserInput(float *num1, float *num2); +int allowOnly(); +const int a = 1; //Just a random constant which has a role in testing #endif // CALCULATORGETUSERINPUT_H From 1ead3924d88bba039f305d1bbce213b88f372b70 Mon Sep 17 00:00:00 2001 From: fdai7514 Date: Tue, 7 Feb 2023 12:26:29 +0100 Subject: [PATCH 4/4] refactoring: change variable names in test_calculatorGetUserInput.c --- tests/test_calculatorGetUserInput.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tests/test_calculatorGetUserInput.c b/tests/test_calculatorGetUserInput.c index ff01ef4..57b4e71 100644 --- a/tests/test_calculatorGetUserInput.c +++ b/tests/test_calculatorGetUserInput.c @@ -4,6 +4,10 @@ #include "calculatorGetUserInput.c" +// Note: +/* This Function may or may not be implemented in actual program, even if it is merged to the main branch. + If it is temporarily not included in the main Program, then this has a role in future Development of the Project */ + void setUp(void) { } @@ -14,10 +18,10 @@ void tearDown(void) void test_calculatorGetUserInput_NeedToImplement(void) { - int a, e; - e = 1; - a = allowOnly(); - TEST_ASSERT_EQUAL_INT(e, a); + int actual, expected; //Arrange + expected = 1; + actual = allowOnly(); //Act + TEST_ASSERT_EQUAL_INT(expected, actual);//Assert } #endif // TEST