From e30f7a66ae355d3ee391bb7f0f614e87520e30b9 Mon Sep 17 00:00:00 2001 From: fdai7207 Date: Thu, 26 Jan 2023 17:39:22 +0100 Subject: [PATCH 1/3] implement the main menu --- src/.mainMenu.c.swp | Bin 0 -> 12288 bytes src/mainMenu.c | 93 ++++++++++++++++++++++++++++++ src/mainMenu.h | 15 +++++ src/run_BankManagementSimulator | Bin 0 -> 16344 bytes src/run_BankManagementSimulator.c | 8 +++ 5 files changed, 116 insertions(+) create mode 100644 src/.mainMenu.c.swp create mode 100644 src/mainMenu.c create mode 100644 src/mainMenu.h create mode 100755 src/run_BankManagementSimulator create mode 100644 src/run_BankManagementSimulator.c diff --git a/src/.mainMenu.c.swp b/src/.mainMenu.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..450d36d58813421c426ec69c21ace50d51d98f20 GIT binary patch literal 12288 zcmeI2&2Jk;7>6f(NEAqm;82dQUE11-lQ`j0C2}N+day*KicdkE((!uMUUhfI+MP{m zlE4870&xWi1QI7CI8lTUT;K?z5)v2wf+AW@J@s0CGrQYvYLb*=q*?3nYBTS?^UgCf zQld<^`Eq-OPR%YbT#qsKzi4^xh|I% zBQAMgL_+GBWRz$T%_Xrn7x6&auN5KFS#RHrF2EUZ2JYR!Bzt;czG>o*RV(zw<1gL& zt1i+Ra0Z+KXTTY72AlzBz!`7`4!i+9oM3NZ6!+yLS?u06`wU*IZu z4{U=?um(~P0v`y_0Mp<&cnVZO1rRs_4ud}*ffuj@Zo>6lqVtHAhw4Y> zdd#nx<>ypCki-+>lFmfKP>qC`-LJnpuRkyP0gk4|HUmkqPM%718j1M7lb8XP%FYt) ztU_Eu#z6M}U#7F6;EABbY9l2DDWCK}kgvi}t($y)Dy`9^GB&Uw3DSyA z;~*}r*ps-ieUGiFphw9-t(yb5wfY8@Up|fbt+12bi@6QtFx3>uH68}N3h8)6ypOZI zm2AS8iQcf^B1}ZKF1GBmY1uRNt12}GrD2b{g19E*Leu;y8VMdJq|kt&c(LFb?PLxY z6ZbrYv&%*Ihc?(D(=i2p4X2LJiZ}|A1nbW{)mts{Ia=$x6?DhPQdYVt+FZr(pYc4A zB-D?&)S`!8vyYhxbZtZNwOi*pPSN-6FqA|sN_4DMShHdqC+zL@p~6lQabv!jZ<#E2 z;8V>T2=8LsZ==00;_S6LVPqyb<=GRDOKimBNwr}Uj%~bRoehN-_#+yr6l)*lERq?D ztuRzrZ1`FJ=nZ&0g^9=X7v*KU*)(K7Key0aMYLU6c(H9_?aIm)Kxy)0q0?B}lJoTA zYv#75JlM|Mj%cGp$X-#7kznhi%}tsrH&j}5veP_S$SDh_6Q#fgS>d*4JFIdRblp`d zq`M}d= 18) + { + + return true; + + } + + else + { + + return false; + + } + +} + +bool checkIfInteger(char* input){ + + char *end_pointer; + + strtol(input, &end_pointer, 10); + + if (end_pointer == input || *end_pointer != '\0') + { + + return false; + + } + + else + { + + return true; + + } +} + +void ageInput(){ + + char input[20]; + char* input_pointer; + + long age; + + printf("\nPlease specify your age : "); + scanf("%s",input); + + if (checkIfInteger(input) == true ) + { + age = strtol(input,&input_pointer,10); + + if(agePermission(age)== true) + { + printf("Access granted!\n\n\n\n"); + + showMenu(); + + } + else if(agePermission(age)== false) + { + + printf("You should be at least 18 years old to create a bank account!\n"); + + } + } + + else + { + + printf("input invalid! try again!\n"); + + } + +} + + +void showMenu(){ + + printf("\t\t\t\t\t\t\t Welcome to Bank Manager!"); + printf("\n\n\n\n\t\t\t\t\t\tPlease select one of the following functions!"); + printf("\n\n\n\n\t\t\t\t\t\t ->Login as an existing costumer."); + printf("\n\n\t\t\t\t\t\t ->Register as a new costumer."); + printf("\n\n\t\t\t\t\t\t ->Login as an Employee."); + printf("\n\n\t\t\t\t\t\t\t\t ->Exit.\n"); + printf("\n\n\n\n\n Selection :\n"); + +} diff --git a/src/mainMenu.h b/src/mainMenu.h new file mode 100644 index 0000000..f62dda9 --- /dev/null +++ b/src/mainMenu.h @@ -0,0 +1,15 @@ +#ifndef MAINMENU_H_ +#define MAINMENU_H_ + +#include +#include +#include +#include + +void showMenu(); +void ageInput(); + +bool agePermission(int age); +bool checkIfInteger(char* input); + +#endif diff --git a/src/run_BankManagementSimulator b/src/run_BankManagementSimulator new file mode 100755 index 0000000000000000000000000000000000000000..44db5061d4cff47e5bd7164e534851c4e0a7d1b9 GIT binary patch literal 16344 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 qNK Date: Thu, 26 Jan 2023 19:38:30 +0100 Subject: [PATCH 2/3] remove unnecessary files --- build-project.sh | 5 +++++ src/.mainMenu.c.swp | Bin 12288 -> 0 bytes src/{run_BankManagementSimulator.c => main.c} | 0 src/run_BankManagementSimulator | Bin 16344 -> 0 bytes 4 files changed, 5 insertions(+) create mode 100755 build-project.sh delete mode 100644 src/.mainMenu.c.swp rename src/{run_BankManagementSimulator.c => main.c} (100%) delete mode 100755 src/run_BankManagementSimulator diff --git a/build-project.sh b/build-project.sh new file mode 100755 index 0000000..0ded56d --- /dev/null +++ b/build-project.sh @@ -0,0 +1,5 @@ +clear +cd src/ +gcc main.c mainMenu.c +./a.out +rm a.out diff --git a/src/.mainMenu.c.swp b/src/.mainMenu.c.swp deleted file mode 100644 index 450d36d58813421c426ec69c21ace50d51d98f20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 qNK Date: Fri, 27 Jan 2023 03:02:41 +0100 Subject: [PATCH 3/3] implement unit tests for the mainMenu --- build-project.sh | 1 + build/test/cache/defines_dependency.yml | 3 + build/test/cache/input.yml | 242 ++++++++++++++ build/test/cache/test_mainMenu.c | 299 ++++++++++++++++++ build/test/dependencies/cmock.d | 6 + build/test/dependencies/force_build | 0 build/test/dependencies/mainMenu.d | 1 + build/test/dependencies/test_mainMenu.d | 4 + .../test/dependencies/test_mainMenu_runner.d | 4 + build/test/dependencies/unity.d | 4 + build/test/out/c/cmock.o | Bin 0 -> 11208 bytes build/test/out/c/mainMenu.o | Bin 0 -> 6992 bytes build/test/out/c/test_mainMenu.o | Bin 0 -> 9952 bytes build/test/out/c/test_mainMenu_runner.o | Bin 0 -> 9680 bytes build/test/out/c/unity.o | Bin 0 -> 57120 bytes build/test/out/test_mainMenu.out | Bin 0 -> 61120 bytes build/test/preprocess/files/test_mainMenu.c | 299 ++++++++++++++++++ .../test/preprocess/includes/test_mainMenu.c | 3 + build/test/results/test_mainMenu.pass | 30 ++ build/test/runners/test_mainMenu_runner.c | 87 +++++ project.yml | 101 ++++++ tests/support/.gitkeep | 0 tests/test_mainMenu.c | 145 +++++++++ 23 files changed, 1229 insertions(+) create mode 100644 build/test/cache/defines_dependency.yml create mode 100644 build/test/cache/input.yml create mode 100644 build/test/cache/test_mainMenu.c create mode 100644 build/test/dependencies/cmock.d create mode 100644 build/test/dependencies/force_build create mode 100644 build/test/dependencies/mainMenu.d create mode 100644 build/test/dependencies/test_mainMenu.d create mode 100644 build/test/dependencies/test_mainMenu_runner.d create mode 100644 build/test/dependencies/unity.d create mode 100644 build/test/out/c/cmock.o create mode 100644 build/test/out/c/mainMenu.o create mode 100644 build/test/out/c/test_mainMenu.o create mode 100644 build/test/out/c/test_mainMenu_runner.o create mode 100644 build/test/out/c/unity.o create mode 100755 build/test/out/test_mainMenu.out create mode 100644 build/test/preprocess/files/test_mainMenu.c create mode 100644 build/test/preprocess/includes/test_mainMenu.c create mode 100644 build/test/results/test_mainMenu.pass create mode 100644 build/test/runners/test_mainMenu_runner.c create mode 100644 project.yml create mode 100644 tests/support/.gitkeep create mode 100644 tests/test_mainMenu.c diff --git a/build-project.sh b/build-project.sh index 0ded56d..4247c59 100755 --- a/build-project.sh +++ b/build-project.sh @@ -1,4 +1,5 @@ clear +ceedling test:all cd src/ gcc main.c mainMenu.c ./a.out diff --git a/build/test/cache/defines_dependency.yml b/build/test/cache/defines_dependency.yml new file mode 100644 index 0000000..64f9ba3 --- /dev/null +++ b/build/test/cache/defines_dependency.yml @@ -0,0 +1,3 @@ +--- +src/mainMenu.c: +- TEST diff --git a/build/test/cache/input.yml b/build/test/cache/input.yml new file mode 100644 index 0000000..e0eb2fd --- /dev/null +++ b/build/test/cache/input.yml @@ -0,0 +1,242 @@ +--- +: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: build + :which_ceedling: gem + :ceedling_version: 0.31.1 + :default_tasks: + - test:all +:release_build: + :use_assembly: false + :artifacts: [] +:paths: + :test: + - "+:tests/**" + - "-:tests/support" + :source: + - src/** + :support: + - tests/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: [] +: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: build/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/build/test/cache/test_mainMenu.c b/build/test/cache/test_mainMenu.c new file mode 100644 index 0000000..c8bdf9f --- /dev/null +++ b/build/test/cache/test_mainMenu.c @@ -0,0 +1,299 @@ +#include "src/mainMenu.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_agePermissionValidAge(void) + +{ + + + + + + + + + + int validAge[83]; + + + + + + _Bool + + validAgeResult[83]; + + + + int j=0; + + + + for(int i =18;i<101;i++){ + + + + validAge[j]= i; + + j++; + + } + + + + + + + + for(int i=0;i<83;i++){ + + + + validAgeResult[i] = agePermission(validAge[i]); + + } + + + + + + + + for(int i=0;i<83;i++){ + + + + do {if ((validAgeResult[i])) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(44)));}} while(0); + + + + } + + + +} + + + +void test_agePermissionInvalidAge(void) + +{ + + + + + + + + + + + + int invalidAge[117]; + + + + + + _Bool + + invalidAgeResult[117]; + + + + int j=0; + + + + for(int i =-100;i<18;i++){ + + + + invalidAge[j]= i; + + j++; + + } + + + + + + + + for(int i=0;i<117;i++){ + + + + invalidAgeResult[i] = agePermission(invalidAge[i]); + + + + } + + + + + + + + for(int i=0;i<117;i++){ + + + + do {if (!(invalidAgeResult[i])) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(81)));}} while(0); + + + + } + + + +} + + + +void test_IsInteger(void) + +{ + + + + + + + + char* inputIsInteger[] = {"-10000000","-2000000","-354698","-66667","-7878","-987","-64","-5","0","1","2","10","201","333","4321","56974","698751","7878989","88954621" }; + + + + + + _Bool + + inputIsIntegerResult[19]; + + + + + + + + for(int i=0;i<19;i++) + + { + + + + inputIsIntegerResult[i] = checkIfInteger(inputIsInteger[i]); + + + + } + + + + + + + + for(int i=0;i<19;i++) + + { + + + + do {if ((inputIsIntegerResult[i])) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(110)));}} while(0); + + + + } + + + +} + + + +void test_IsNotInteger(void) + +{ + + + + + + + + char* inputIsNotInteger[] = {"0.15","3.141592653589793238","5.3254f","-6.264","-7878.3261","foo","Bar","FIZZ","buzZ","joHN","jAnE","foo-bar","3,15","2k13",""," ","-","+","/*-+.,/=" }; + + + + + + _Bool + + inputIsNotIntegerResult[19]; + + + + + + + + for(int i=0;i<19;i++) + + { + + + + inputIsNotIntegerResult[i] = checkIfInteger(inputIsNotInteger[i]); + + + + } + + + + + + + + for(int i=0;i<19;i++) + + { + + + + do {if (!(inputIsNotIntegerResult[i])) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(139)));}} while(0); + + + + } + + + +} diff --git a/build/test/dependencies/cmock.d b/build/test/dependencies/cmock.d new file mode 100644 index 0000000..7d1cf5d --- /dev/null +++ b/build/test/dependencies/cmock.d @@ -0,0 +1,6 @@ +build/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/build/test/dependencies/force_build b/build/test/dependencies/force_build new file mode 100644 index 0000000..e69de29 diff --git a/build/test/dependencies/mainMenu.d b/build/test/dependencies/mainMenu.d new file mode 100644 index 0000000..fbd8a70 --- /dev/null +++ b/build/test/dependencies/mainMenu.d @@ -0,0 +1 @@ +build/test/out/c/mainMenu.o: src/mainMenu.c src/mainMenu.h diff --git a/build/test/dependencies/test_mainMenu.d b/build/test/dependencies/test_mainMenu.d new file mode 100644 index 0000000..5ee8500 --- /dev/null +++ b/build/test/dependencies/test_mainMenu.d @@ -0,0 +1,4 @@ +build/test/out/c/test_mainMenu.o: tests/test_mainMenu.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/mainMenu.h diff --git a/build/test/dependencies/test_mainMenu_runner.d b/build/test/dependencies/test_mainMenu_runner.d new file mode 100644 index 0000000..0ac0cdd --- /dev/null +++ b/build/test/dependencies/test_mainMenu_runner.d @@ -0,0 +1,4 @@ +build/test/out/c/test_mainMenu_runner.o: \ + build/test/runners/test_mainMenu_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/build/test/dependencies/unity.d b/build/test/dependencies/unity.d new file mode 100644 index 0000000..e42504d --- /dev/null +++ b/build/test/dependencies/unity.d @@ -0,0 +1,4 @@ +build/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/build/test/out/c/cmock.o b/build/test/out/c/cmock.o new file mode 100644 index 0000000000000000000000000000000000000000..76192cec6c4735e57d9a7940b3d7f35064337676 GIT binary patch literal 11208 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 literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_mainMenu.o b/build/test/out/c/test_mainMenu.o new file mode 100644 index 0000000000000000000000000000000000000000..c7879b12ccef6ccb2f4394e277409ca230376c0c GIT binary patch literal 9952 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 literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_mainMenu_runner.o b/build/test/out/c/test_mainMenu_runner.o new file mode 100644 index 0000000000000000000000000000000000000000..1666f416dcdd533bc3e5619a89bc299c101acf08 GIT binary patch literal 9680 zcmbtZ4RBml6~1pbZ?ow(e@$D`ADayVt(Dzv(ppM^cH1;*0%;l{!M0MC{dq~&Zr+Bs zZ%b2(?MxJ@z)*(4!I=ukh%&>VGU}j+GZ|2z>WqvaQ?Y|6qG1#V2hFCh5G~P4IVp=tah_Nz-f3R--e~{v zH=Z-OzEbM16i@7bhMCoibErOd`rNs5bFbp#YxqFSN1yuvfIhi@<}cCy-};%5(jc*J(}b$!6%8hdtYWyVq(Il%MRbRU5$CPt~gZ!@r@{tyTLh)JiY+KLZrk zD!Hl2bl%=&+2wdv$?0)x*m5TGrBc3VUz;xEbKAzPDpdpa!FiPfr2*Tu#w|y22TDUl zmyx@ILYTq`Lz|)rA0NSoKYh=)-s-R-(6MMUWc8nf$CdC4?Hef|k3Fo(ego%GBIQzltP zi`3&|v5;qh${Wq5be!yab_kBlNNn{ujsr6i*wiSXRQXl@OLS zzfnSq6wWB2T?(%nOSXbeR0_W}+EG{|h1Zm@P71$M!X_#FUI|Glysm_PDZFVkJ_imA zi_jvlvlN{Qy=8P<4?=?!%vs19U}dNz!TM@oxITnR9`ig@2)%2BW+9hoi+ncAXOnz3 zwnLo=y<>!K1#cG0u~;Ude;A?VSTJJ?XCZqStMMU1IHOWIBA*LafGmt5a~5+-U!vSN zxe`l8cOwDfQLkn>s4qZi%~jxc;O+@2Y?gC#_YG1Q#<30Dy+=s(i`j-;oFEt{CH_&y zFQ9^PGJ+-V?U51ygv)**LBkg#hH0(JfG>;-L?p5$5`@<=&?tgUn>$07nU_We+BSi5 zFfO((L(I4=a%pGd>SdS1*wrmXS_BYa!T3on5>YACEFzs@tg1JRfi?pQ;Z8BomVmm3 z4YCO|2g+NQ1z>s>n1pq9BZyEW?$NN-R%20pvi&f$z0d?hLNw0vE5wW=z-VeUE^KOx z1UpuApjrzolIAue5>XDLGc9dKu*na!(h$J5wCEyfzm2*m2SUDCtHJaVsc3>Fz|qoD z*&8WhXK--NBhMtbdf7l5g6(lb4kLk=FGJ;J^O?w7?(txFlrl0`cua!Tcwlc=#-T5& zYn4Gj9f4~}zJEgQwlv{F_%~P&gu+YkGl7c-ieVVE9;LKh~rm=S`6d_BR zE5c>7^D%S5<7T^SnvaF|nGJi*a5!!@4DOxaf@$vCC)vT7H^Qgz&s-4xDIkFWIKHz` z%%lsuot)+LI!=*JrFn;&?*!{9JC0?$BXA%Nr6(;hIy5k{H#IsiG_rAnP^PZ6oc!3d zG$?isjYfOAE{S$^#n;EzMPrk0*|x42w`|~KK}Ud6X*)aN z6zyWU6f4^|lU3@$ps>6sfuhNU7Fx(IFq3wJLZ!` z3eND-fz(auQmT|bXywGHop+~u?VP~=42;`F$0~_~(tkui0gi52*_SU^qGY+FQ^Gd{ zN+kyedD_`gyve2!=sh$A4)zqwa1@ReifNa1c35sYU+5Mou=JV9DN(jd`ElFIMY9uW z2U-IxQyx==6qdGSijLdo;7FGypcwTu@R;q{Rm>hpsqt2QL9hGDcGiXND`dMhp0|Zl zwo@+lC|4}QV2Ux|2n=WxsnTM~O^=HLj_SOY<_XeS*%EZ7j6>!dl0Lv-WU;YSCDKvL z!#!@g`pJ6$LNB6jxlY>uuOm6Jgm zR;)|SP1k3;yW{INe2icjXJQC~aVTtYxSP-77B2U4$T^NM4qq*dLoLRNh4tYRucIUPqiSmg^EV^TPqJUWMC80R6* zvK%A8))D>*(qMcG;rN+{N%lzP>T~-Bj^Q@jHo=QLe}{pNI~^s zHxJ(lQmb553YOsj6!#L&GUo>f=g5WgBY-c0@kv6CNv;9NZ-pO+%!qTk3kucndjUr~ zIU+LW!5aLp*TBD71D^#P?RU@=^T)zZYVcpEf&Z}vj$s-53=}V|s)5I9;P~-T&5k-V zKD-yHvqzpb^Umh^XOedqt9Z#DEmVo1^zf{5bb3(->}n8~_~I5B*LYEel;)kPm6KnE z2dSNdySHx}OzrOLyQX&}HL`8{U~fuwvigxH_u_d~z8H}X)Pb6}9MT~SyB5&QV9<*n za%bVj1{3d}h{Jc6hj&036XMPAWBvewknsIzh2ICt%(?vtLPC5I{20FnK}cu^+roNG z_p8jqalga#u*y9A0+PR71Ajup`Tcxa!+CA}Qo{#HeuZ-M4=*p+|3CR~f4|-(ocqOg zKJfAVb{b%PV?z7>aclSCcp<^IET!?Pvc)h{D*veyfa|_w+P4aS>?ldK5_lZ>lnx} z@f`=^cn0zM!#To)IF13HW0-JkF)^+rH6~cb=5ee!t)&9;@y97a1;nu3d&uuy8s0|6 zMl^gC1uhv4UrBb3X?Pp)@6d3Q?0;FqzeslQoWR6>{#l9QJCrkil$Z_@B?!k24!isViW|0~IBH2gL||GI{Ek^HuXe}&{A>9IfO2v>K&mG!oZ@Rh_z zk>7oEh}Rd}xk`E|M3;|`=NhNYTDy$*`S^I=aoVl%d4Io7!ws63jD}xJ@`Q%t8Gy;w z@YQ6;)$mtn9KN98caVHS!(HM(s^K3e{BaH6LHH9I{vP2^6OJMlI|%=k#(#tGGaBE; z&O&-e_HWksuaf;^8lULimlBQxpNUwk1%^`Vrr#Ywzu6LA~vl;d!f19!@B$4oNZ zfW_gqdCGF!X|iigq{ifREcNvN%c7u;a~jgjBuUo)7eULxV`D6gv1!snRACtZ!2#*} zv?vxs8Fl#`#TXqEzITYz>y401-u}k`<$C)U1CBOz{j)^meSpny`z&`s0jd7Ai*>A@ zN5Pl$_Aw69F{G!-;60jSI`>lGRvW)C1?K91=;|90=ZO91@x%Q`P|^v_T* zhwIy)Sda6sLM4~|ys$sG^Hu2F$Ds~~T3`RHANA>Ck;jkWQ&2#gy8aq!|11+J*Y$r4 zc(wUEfgih&9#NURBf)Q2)^8`gTH9C^rC@cA9K$;Y98z5$*Q7SZfB=s^nESN>(?oe^ SQB8jnT@<}2tyLbn{(k_snkdKs literal 0 HcmV?d00001 diff --git a/build/test/out/c/unity.o b/build/test/out/c/unity.o new file mode 100644 index 0000000000000000000000000000000000000000..ca4de30d99d89972d27963c03af8476d1728e47a GIT binary patch literal 57120 zcmd6Q3w%|@)$cy%WWosvISC2R@Ho6hNC=<^5+NW50)~e`DpG6+ke5J$$vHe!gc7W# zsTO=xv^wa=WD9B9AZdw+L+ zu=k$-{AbOYHESMw_TDEOLWNVk9*@Jp<4ka(F-9F{@w?IMe0`bkbaT2o=K_8HUQ|$j zs-W)Uw1WEe=L;G_=L63>c^krg__FUE8FU$Vsj>c03+8UE;?z!&uKO1OqT&5DeAPOW z2_0hyRW4z;m2EAfl&JtpddUl50hPDq@XMB_LC~}Xs4WHcq4NcG>(4vkKCS7P7x_cK z{PN3!y3lzK3ESKlIoVGB`pC%`5rNGwLV>5ZW2ygt8X>k)VN>B@p_Xx>lYzSmpw_Xq z)a_Xx`LrSQY2AsmI~xO=e++f|`ub0|!YOd)7C7!70tel4XvI4=Wa6ps9i7ks+|tE} z#cSosm>92x2gPgQn5K>D&^iyx|xD?Tp}*FF>+W z@L2>r^L)~pW1x-&)gLH$;f*6E6x25reD;Te1801(a)ur#sDHh_xvnuc+TpYXqB$WO z7Tp3lsRu+J+R{!{>(AZ|&hdQcbr}G?7n*huMNVKOW&cPZm;t71w3S;s?q9%o!CNcO*M&ay)UE%t?;X#JG8dl< zq=%kZR?v_z=rYKFg^p}I7f1^|feHJ{0)J@?j0o*p-8b6gn7R)Roq+EIZa5Gn=7jd$ z+DB)Bt4LM%~1b12k=r-DPF6Li*Q0cl1CR3q?>harg(RQzabPl(RM`e@dTItbt{`XHfRVd zbS`i?T18j+T;OX5&?akMGkK57yhkCg2S6zAvL+BX^JuJ~z=#8DUeoE27=r9z=+l=$ z7jbEap*+Zm5=I;deB&XZ^f6s`cNZS4HcM)WS8nfQEr7j&mR|A5(I zX!E#G)9oD^LQS6?YfUm-7!m42M;by$JfWu6flz$G(&mE7x68}Q%3z!d9{9WW!1=!Q z2kM)LHlf&+M?mZm=Z>6)nZP_yP}yjhEx`llz4dP%_@eL7v-JmE3k^L`|N5P8hj$+e zHKP`-iyMj{+d+}-9h2=qeG?kC2@LxdWNf;pAh#jZe9s(DeNl7$>jm5Hp07?^Qo;4F zIFUyn+xXCtJML?}++0OE?$3eZb%&~3*$j4TF4z`$eu_E~9nB~!Ku^yd543i_Xg&V01xMLs1;fm^ z7*@LKF-t15_^Xec)#EYE{rj)xS^;{NhdvwCzScG&b|x~ijf0t4Q_s$K;5sdKRE>(Z zB~VW22AKtP4gI8`UKie4z}TIQk;@B=e=}6C3+mFgpw`YziApLsqy<8iVc2yq_jhC) zY`Mu^gPKag>c(bbkMB8s*K zWWF|H&N|^(F;UNOmy>P8#3~uow;G^iebL9VJgw)Ds74Jy!R4sCqKhWADW$C}P_~V% zv;UN=I2sq!7r|}E%oEyt<3nd79dLo;v{vIv*oou-4(W$lE?j8i-H>zwlb(mscaL5~ zUJaSfTA2>T&-8USlhOso^xj;yCu>(&AA*Ia>7CFoQli)4%$KleX({aAqe1flu$%D9O1MqZMjF^iFXf{Qs{0El&-5--qdi?>4d13}Q|d#8r z8Y;Yo?O*bFo2F?f0-3gxi5i)7%W;6MoB0gN`d8|cukT%9U0e@E*3WE)mTH<(Kl9k3 z&;|6Pf3apQP_q+})P~S;y-o<+Sprtox*^^Hgrb$9E%hB>c&s+T_)yCo={idSG&Per zY5i=SSds~K>yJAT2{shzJF{qkP<%5g*ZuGRVv8<@7KLg>8taSpL5n^E zExH?8bWcNQAGm5mXpg>|I&mm;@?UM>y7l{<$W%~lH!Aj{^KGmKNzY)?GBoJLy%4BP z;4F=S%|6&zDQKAa47BO)f`&+=P5~jQ;L5m5@H)EC#f8%Ka$6TI7A{ZTM(MakMP)5QjnYFGNYaJXntj1l!rZxY^2a6_>J)QhkMYn2DB;4b zqxGem?$%)q-a!LrMCfCqJZRg&Ox9-JjadZFfvykJWTd&i=m>QEM(Fx`pzDL}kJN{7 z*#e2$UtnZGKlMwPb*AVb{m4<4gD$WH}EeN`v!RICrPBAFg%nU>BgNEO19t;Idzq1*#fbw!yju zo$f(sOW^A2oH*B}I$*J3p^q=taj>8UN6Q3J?JQu<+o@!o>(FqQ>NHKBh=RSg_43S>+DNpGCO7nuXW_}8X(0SNQ3taXV?5*gU z-3-ekSg+wQdIB5%`A^!h)cJTufKAY75-m`sqpdG)0c#|H>aD`+Jpq;41&+O~zG%1D zPjkmJm@awf0zY>zPed{>z-vP=H|~C`1;q%zM>0Kb_Qc}`sjC!Iy39ThMJB&e31Rh~)wCWMH9nIEscG@<8K6z3yb42B`x96Q zECd}}7uyg5FFDk55`|yF$w2PKw;*!C=gx!AowaXbU^G4YuXsp9=%`uh;@Uya`gh=i zELe!ZP0P^cf^qP8>po+5JzTYxLMqJYaKqAG>NK5#3|RPHTu`rz35r%Buo*W%fqM)M z_s)N{Z56OnL($QTED*pTF$)CldZxJ`FQnTG3>r%&{^in*6mwU(7#c(`Y@tE+)X#hl z7q*4awyC=@VwlUzYWDU)Y#w={1lQ}T{X-Yc_ z+eTW<>U6r63)_YeGyy!>3!}521tYX*XSdwBsjahvK<)}66`dXOf=cA<@dcr?#}#Bd z`(MG?wVMC#id%ci4_n*wl%|GATHL|vxl63au_E#Fqh0M(TKRv9dR)qry1Q%fMza>* z)6QDF0hUK{fq?^I3k-xOpx?nLF|#>p(0^jPqi%hR6J7>m`w1s}6YVOr<~9^v&`suP z4m_XMFcTvu3OsnLHufMqUyasfOY1dtuxnuR9e9Gi-vE#Y1R(GfJ^=+EfPIE=vXwuo zYj_3_nz3Qdo(6OA4uTojW}pRW5Pba1C9N5|M9F6ZS$inaa{pNytuQt!{h!!qnzm8s z!uZhf+VRp>KbN+8ytSKaE8Eu4@KLqH_{Ibbw})B|w0!xc-f+^pjNl1xBKjg)i3}P> zgGSrz(z|GLz+&J^ZEjQ!h4egrDD<(O&JTso()qkT|4U1=Bi0Se7k>f;W9KE%y%FoN z2Woc--GO=x91Ct(>f_w7ECFM{xYzd*f?&}JdlOn5+=s!+zTlorTr=YQ3ytzI zV}`UykJ#j6Zt_|16WB(^E(M$Y(51A=uuI|Cd{*}e=u#LtAHPerK$nX0sY_9wm@b9m z`1yEU>Sicp4_fijkG}j89=&;1_Y`KvT0pv~B)p-38k#QmTWk|*gwc3?aR;gkeGE^= zK87b}flUYHjse^!*e(UPys$Wc+uxZu>4Kv{q1sjP{-#M!a(cA|Tg#X3oq7OE#OI27 z?@L$rsZ(+NsRArKzDRGGqy7UdOxwk)!yR{(qEDWb`!gr>|9t>{G)DtniKJBQ|rFgqLW+jF8XjA_koo@zMAqWyoK^<-FZLk#hv$W zmcaqXdQ=8nR)6*CTumYkHlj7y{H%{x@SYT?y$oHSGM#h z#eEY_KMein-IhmkTtk@-_vjzmIDj5Q0-NuJHi|y$T2`gc)YEE+>tDHsb|h&fI#EJz?tke+LzIt7cl^%{`WsgZCeHyI9({x=J9fyTsOTu`#NXNqDyxVs%Zh^p;4;3QV`eImEB34#%bkLn}&GmR5y9jmhi6rEZ?!%+i(B zHS2;iD{EJlgqK#}i!pWxex+nZq_j3T3k2R!8Lp_T3Qj3q5iSW5DR^UbBsi&dIaF|F zX>fjZ@Y?E?t4eB0F$0jxhX-${s9aj1>prKtvMP)Kr>;-NPl?2wPIR8hcp za2#*n&iFo(x*iTQ;C}~waFYF6pJcxt4f<{LsibO1?F#=LUxzMu4VjROis?)NM+@}% zefVB!fB5e-CG_++!dYia2nMu^nn=GSOvpEp{%I(sz!{LBz+D|5CTU?R*yk8rs|GmW z2&@ZooMcl)A417qqiKRUc@hBwQ0tv+V!kw3fF>v4V@t=^3$Ok9nrfGvrenIm#9Mo# zP~SDcGQjPXbq%s!Mb2YCqgeGdy9rV#}L?7|^8c{UL z(Rwy}#pE(*7ZT_`ep0-6?1*re?cLhp52qs zAUbFbz6HhUKI(ORx5IU6M>zCHR1km0#01CpA4u#9hXII2iK*zG17k5=$|r#9QW72C zAK*GQ2M&V}jb_%vz>uui+#0+rs~vqpFkWbp9Ub45aIKj`vk;ET)P+|wQ#rn3W?r6! zuwXvS%uL6JOI0m%SQf&9`7$%p9p6uxIXnwt!Td8bQyky#n3J|RHioFkC-{e@jb%K(OC!!=22$$ za(u5a^NK8l1@jALc6WUL#mp}zx|Y2iUj|&KUJb;FhzepM6Z<;8JS0v9Vm_i#V(MJLCbg5fo-=oIeCyy^ z+j4Ri!qME?7(ZoZ2gmmVW?q|xaFnUDPZ3>EgQ4~uc3OL2fyh48?+GUQOOqTYvvRD{ zKQXNshRw{%kzp*Rtrd9NuiySQ~!xgns3qn!N zAj-e8w%p0+(3i^9c{4g({e+gh*y)92pPTo`Zr+q+%IoXU$Ik2PFfJzV@3p^Rw%%Gc zmRrDif1lXP&inhst2nP-HqS_02TTqF=)$udQGZorr86TjcYs!Og_Cv%fH^u_ZcH}5 zh4O6Q&)ISlN4==C8O!A+PM@x$%Z#Z$fT7%kiQ3aptd})3r8z-^t9@XYhv%#1v+|$ql=uhzkvR_*|)fLndjDJA}mL=c3aeyc3rlr5t!uN zYU*;Ix{~Xnb-!Qb#OVHj8XKeggK7-w?%TR&L!i=mh_zV|xY^mpkwsdGhm~H&LA3%U zOT*419IbHDumr7mg{$}|tt&RdURJz94L5$XK&Mr5bdHYRtVW~a-mQgN@8z6os~V@O4d-9^LoNn*i5d|{F3A3G)EGyG7a^Zak4iOa!o^RGfwqpg6__~ zty@g|R|)x5&<@_M#tWJg#u}gV>&AIIfxN0vM}M8r8E*!>Tj%KLQI5_}*J{JzYdQfa z2%JvHz?&%7Cpo&BFykb~D|Q&Ga>w17Fy0tpiYfO9wS(iVqxyKZU!O)Ta>SSWCKTb@x}7ZS zyWCiqEc&MJ3e#eDlZAa_yXvm6ZG#r}mM(ztLDEkXn*$>E?p6#!*vcE9Odbh67R(XM=X0Y4K(Pi35`%F#PrC&4^fz~z! z)w>1ZeJ%#i_F8C49jW&f;5A$Hn;bR$tig9h%<%CoU$(Is4So0c^kDA}efRpVyT90YAs7zDd4O#vV@?AL{7S z?&;gQ%kYzZ)a$9&ruejjy7uYh8*NVw0XC26rfI&IZko=~XgB>a8AEG6*ca1Hhj27b zH!bwZZhDLi;5cu)MqUmZBRX=-n`io^vFf`VH68IiZ)h*%=HdB$?^yH;o^_6UC&vta zzw;KDep;YQ{J@*k2(1gwZ5;GvSC3|DbkFvqtjEjVY%Z#Nb1}RAYhFDS zgX`-$9P*AcZpO3% zCl@7qzGc>+REo31E$&e+?pxl`X5Kbk`W}v&;_mh82@dL|tNCp&&6RVUE+}fbTajm7 z$t^5-xp$(`%}8FsQ6qV!cdD6K7a37zN`0- zZrF_;3iK`)X2MaisO57(Cn0vfK>MFk5bhX98~LdAFL0po@n`9bJd6o{p%v zck6Pav2l2m_%t3Mc(xDkPOjm2Xw70)>0Vbw2N;g?-*~`~XHJl{6cS)ofwUnsjB4jU z$8|FqUn0JfN%it<-@zGQ%Aw&%i+O3T8OfHJjN3TlM|9!Yev&h83z{ylKxf=G-gNi* zeOE25a2}!FVWezgDfzCHUhwQg=i5ZLybE-`&75x(GCgx(5pTke=J?$8gYBY*=B zQ+)myxk)*mi9NWieu+bRqxF1OAq}53@ z3XTQQolL2OOze>d)=0g=nU;aYC6DWuY3dOGTC4_X0VlbiAFGm{?7`B(id=oS1{qqD zek2`sL!kVq7{}?7<8dp|DYg<_wW?GJ)U=z@hU*@!IjARU-Xp;?p~%(BdLPtPf-;jpwm%a@>k1{UL9q%9vv(3g$#<&sT$SN3P`#T}5|&n_((&Y-nxVSl zh5t$AiOf!Pwert^da2}@DlJzH+o}3Og$_hUtyKKyVMXo`Ko8A3@m2`g-ECsr=tl zNxM*6zkilW@=t*DFPxK5-OU>osHCSL`ge$?`tF8kC;tnkwf_cC7vH@IMO5l)mEueK zMD_IdR~fIX=~!NlT7)P60@d4;ItEYg7|(e@Wt21Rt3)H08jQ3iHPEm#7pg4KDE%GP z^B9W04#_#{Ym}#b(L0%T6VXUC+QG9!4Z_nq3PktxC4mt#4y$f^Rpu6zaZKf6jvO@s zPbbwJJV6b5VvZRq^C>l;MWt?0*)vpfo=SU3rIc~nx2UWf6)0Cd{2xMAPa+hZco#a5uJ|U^X{YMuzeT02RGpx` zcd7IW)f4*4B9-|)l@U=_<*MN*Dra%GbxA zw|D2>ou`!N`}s}!mJo`W}I5-#}Y4y&%FDdmAUn|dJDrva# zd^8yt<%Ie(EQ&wF<@lhr{Qjqm33n*}8W6V^%G#^^Yu(F~HOh0NFC_=$odWZD6JLO% z?*)~W2o8vDzi{s<{|NZE7y9|JDU#+#TGB4yWWYbo@g?P{B=3L>r6RUK%^Zd;w8OM! znF9MvGe8=2eHfPtRgQ`G$5WY_1t;$el@e(mPklfQfYcdkD$*CIt4*#llPfiHu~f7M zs10tGf!>;pS!bv&r{YCYP8kjif4ZXizHGt{?yt5U16Xf~m-O@;D% zr*=_E??YR_6tUU=d)3E(zv>lMed^#?r_v*;&&b$#uTf7vsqxXOSDETl4##rUJ%Uim z0M-4NN-I-W7>%1Aq=sz#$0_9Wk2h z-vq}_{uyvgMIcRIrXwLkr*-jTyLN@yFY!iSk};PWUS6lvX236DFz7??tKcUpb(2c* zKM`9&ZyxwuivO7EQK2#x!VGcC0+r%crblp$QqVGX866Y-6QL!Zfbo2H^XzzU+TclS>0ss^K3z&bc?`QCv83}rZ*B__hefM;l} zug0>_E^S$tkHU6?xunM^HN*(r0z@C0t}VL4~@s4kzO(q^dag)z9G zbzX~uargT!-my-BkGNgy)TvYGda`5vctf0?^??(-68hEC(6a1L3Py;Ddh&zSBn*MD zJcQ-U;3k#Uq=pu%bZBVbx}cezb9q6b*KAD+XI|e7y@K;KDOg~o_&VjNLAzAyGrDya z?zM*OcmMT5Cu5der3c~}dieEi(lID)JftPeP^0h^Q?}oCOA{=aGJ>qajqZ$qo`C~c zJAHnlN)m%)A@tC9RceLmau=+TWrX=~UgAzTyF+p6T=Xm>P z)Tz#(e9t`HMLB2f%|}6YUC+3 zu1uxp!5zXWSi+y96HxufZiLn5@&zhw3)HOJCd`@XTL$BxJH!nM`nuq7odIi>`?2?C zma9ScufpFzGzZm z@%-72PRBQd`So9eKo0$KH_@lf4NaOKnp-@-VA3o@m|i=(s&rCKP06}hkrgYP(zUCq ztKg+_r?R# z%_*F8WAVKCHx`D9r_Y){)+t+2QeI2RQwwKLnqNG9Uhyo@=GsV24HS%3pck5*NL6iR zc@@0bjPK>L0p^z0MplGt^~=!lih);ZG<{NSZD~z-a%H&ISy@uMoMe>hLZ()7t>)B# z{8^EeOG;~ss6@B4X<;X-5$jz9HE|iUYp6Z&wQ?}`oRV7LVMNQF87((lL%Q<|+)k-^ zgP-LZd(59ZY5M$PC_p!GtO@6{nc(GjG`p(>z4UGxNVl710Ii_;D!|PE0^DnCdHq^@ zY0cE?8uNNS7o=SZih}pz+f%3@v;f{yidNT{v7mIVqrIoNvT7Mz$H_U?WVEvLrxlZ` zmKim`pzzXttbx#BX3sC46`BSvHI;;8o3JLP*>$arKE#Ro8)T1WoiukY_~`uE#rnc2 zE(WiwEe#igfpimC&C+g7pk#P&%jQm>^_5A5)29^crUaLV4-p)A-2=L9F?^eVoeVx8 z(U)YI*+r8JL(YoIs!~=M9cXfCd1aN`O7m8gEG?yuXSwWTaJqHq%34>~GqK$)cQc~G zr6n~}s@GIGE2^u?Z(g~|Dbt-m=R^aJg~|h5jL$`uRhDDFk#01-Dy&Bf_7CHTBZ0oU zvbMU$sfw&D7H&On{_MGvriIX@u~yngYt5G@1~L8JTwfolT)LdTIB`~mYl^{Gjv0g6 z_W~Tq+UY6LJ{qcG*PSIASBw}%eXU{bgg)6Wyted_{57q8irS0I<>MrL}^|W9L#a^c;91?%S z^!WwTX&!-cV}}v$%C4YLO$~QYAVbXk1jnVoTQv$h%{us;T zv%KDTyy;aeOY_}0{hA%Wjg`S+;>13(-P|H#OdAPz^YL*wp@X-~F zRb|{8Sq=J+ioh3;&M0avBfYCAQ7r3=`_t*{EQm#TH9%_<6BJMyaF$dNgtb8>^(E5nhh(rd~~t4eDsmqN6pW@*JWYsZes9&<%7 zyF8d(R#LmJYH3AHbyanwHak+a29`kCVf?bN77}a2B}CnVlU*AIBIYs) zOIMWCR&X+Y!1EtoXdH8`!d-Q`qqxTM?}QBl3JbVOuH zq$(U4v81GG`O1c6PYXxpC!GT2lor z%ZSdotg;%;&a`W-RlEscGNvUfU_r`#oToG=B3X zA0=@58l9~3EdKchmJZE5On3jd8kfltMx;!1MIOYRKaG3noS)Av!jeuE;DsdefBCeTUuly`A#wmvY_oeO?rR z_T5hD`gLG8J=@K{kJ9xk&Tjh0Zu)Ub*Y8?$y7wJdzYCPEUmWLj-zvBKUernS3+-n{@A^zLr{+bLatDB-3Lbd;CN?#Y#{;Q((r}P1K`a+$o-xceH0|kWM=qD^6F7d6Bv6S{>xVF=<-R4u;N;}QF z%q=%e>Dyz{?|0K5pmhDA6_jEl&4_-TX%>U4QQ7roU96LWd?r5k2t&~qysgH{+=80AmQ-(mkwj# zh&aEzqu($DY%<~baK->H$LcT>j>unZqUJq6xL!c`TEh9|KA2=Qe+%I(2Ym?T>?Rz( zK+~Zfj)?0q2Cn&wv+oez2xkoX{X#h7ScUu(aK^wN)BO~#5r=~gSDBOZD&hHr>kq{M zJ4yIr!r6ZKq7uqkM>yNL6X6>P*RLvpj2?vJoQHw+yo~Vg6HYGWTtWD5!r?0~9Z)|k zw~=seXM7P8@r^XrVBf)TGvV6^hbdJD{H6f;y9noYe~9pB2xt30MR=pY@%smq(=6n? z132u+Q)x7}L+ljsKPEoc_Y=a;3j9mLKNWZi#8Lh~$iR!Jr2d58NQzG;Jdf}ks^~Vt zam+(GuMv)ZgJCt{%gONUciRc?O^&SRG~lDXv_9}|AO`-lEI_P$PWETuK|RoK|T!p=J*wa=Mx^(sg5(1@Wp~ZA8=fM%CHFV z&d>tCf-?qwwR;uedd&%VJ|;rAjqo!jYSxr+T~By3>CZ1!e~<8!q)#5@dzSDZoH6i= z-@hb$7CF9N6GHlXgdZfFzacmSczgBwocP}*Ki6wJkkbkBV}0>cNDTZjN^ij1lQW3; z-yv6NHrbp!!pi~%;IDX=5I&aP-scaUZXXDW`K#9% zgpU|#_U_r-=PD26s#7H^JNu0KExMTzH7cGGODKFXe;7=#yQ_#yc>aA-abP z1-5ydhubd9Y-hJE<`G{TZDY6YC+SC3t~7U79*T9h?9d+84jx8%Qyi}Cr;BkOO#+Lz zXjyIAkTm;l0(3XI1*nMd zQ|K)=^YqzzGH0Qvqm?qL{oT-uZg!fIE=qCtL&c+eU9*^deT~FCP}7Lpu-5Z|=u>O3 zS9Eg`BKE^Mh_?IOCianuVbP-uU7|r?$K2gaL>Je!G@GsXz*sXiW?j0KwaD%hPa(w0 zW~9bG&DRp5kK=XJJm`TvbljFLURtrdxD21@XjR%i`7s;w`gH<+fU23+hP^4+2r%$P zo(#&&)A`w|Opp(YjO4a$ZQ=Yl(-LKL|a$(R7CC*SQ-0 z!{2YwVMZK$ejI#x9Gt%il=8nGhu;tf|AB>%hilezEUn|D{Mm8v8{^=s;^4Q&!M_m) z=lepb58wYGZtI^w>rKh;9S6^igI^s7pBV?gAr8JY4!$xDeustI^}5@_ZNK`Cg-^8F zkw3deJLFsV3l`s&^GY22cNT8zlLYH*4ARa$EIc35*{>e6aJyXm{WA0JQ^;Ppp2ooX z^dfwtz`32wPh=b2ZGG^!*=#v{|MhAd{9S<$q;fwNcnj6*g20*Ig*M1o|I0|ul>+B| zk3|A!`L_z3^}ko(T<-S-&hmdEaOS@$aMrU`;H*zN-N19bSf3jN&T?)RIP3EZfe$D9 z9E^h>6*%kjfxub*Cj#evq-5HlVEq}tKsfrd-A^-VKS|;_aqtOo@R@P&<8koMEc{x~ ziThU%y1$qGZh(c``j4=1dz>6+;Wj^?aJ0`z_>bjaD6sf;|C(#zwwx704(q?k!mj|i zjDORTW6Q^1FT)`1|F|Uw^_-$vj`OU*u?!3^#=&0`IF^m!ZGrbPu=B3KS^riG$F&gS z=LnbWb;07J{=-Rrhh%fX_Gdg*;A4s3L*V&@4itgme4y-cWCgZ|gZw@Q3Ky zfIr6JUt{5RxzjD&mOszJZT=#{rJlnhxj>HXpv0*FowDKjxr=^q<9opGWs0 z6><0v3jQMEKN^Ssdy9|#4sC?tjKHTD*!f)Gg@pTP9~$+a3jevih7iv6Wq%l9@$Gh* zY~hnEIn#w4Zm;VtzAa~&h1+u0SaPtwJU-tgaIV+4Ejf0*ej)g5w^s$uc6&$QEdTd$ zOgT*zTPpR)M2-S!LqB4`5)hvM*$ z34YknofC2Re-`|25&y4o_=)L;fc3TO)q`-fkKK+#1tiuIU9p?p$Z`=P3i$4;$+^>Hpa4z?hCC9E;PkO*F?Q^-nS zPb@jMoev0{?Q__YW80@UE%4Yryq_>c;JlwOLEy|U5IFN+7C7&d{2>nRr3IwaCq>{a zzuLml4rn_Jw+VcTft_y&obB@f;nIJewD_2If#m$m;@j=jWby5GIVNx}_k<lZn3hZX2Dc0RF@N?e;f;v)#V1motH7r~*%-braMu4vgiHPZX7MqN z$2WfQkL$(b5B@$I2F95`Rp89uB5>wEB5>xvF7SP1hqD4_|2a=M>Tb7tVo$B6t7nAd zq!KRqedFMRg&g*`oH+ceE!_6EnU);e-)<5(w^ykp$L^=MTDZOM_d_8EZGqvZ0-s`F z=M{l-xkoJdcDWY>pXK+=G6K;bZ2t_!!I#FtZ;pe1!@{x6j+6fP5-!_ur-j?=hsTAS zUL@x!i;s2Uaelvr+j3qLa@Zf}8|`+t_jx8+=J;kKM> zEIGEH%oI5LNs%ST_LJR$k7Z+cPT*4v?7S*)mj6Z^`AI>Ok=vd9aC#hkzQ9?Z27$Aj z?+Tpt`2pc*W4pdb1fS&}6FArRw7^;Ze-kd{XZLe-koAqk!RrLh`n)J`uJ0QHXMKJ{ zxYQ@uKUN=>KV0Bk-)jWU@cMvAl5!CXL}s{hXQANzG~rUhsVecZxD`{ZHHqPo)2kkpD!#qwtZ3u z8i8IoAv!1I3KE;T2?h-i5|2E+XLjF@0AJZ<7oaZgRUEjkN->%oY z0_So+wB*?J>N?02#CG8J8Z2;@lS6od(0_@=$FzN<|IHTP)_;xQKSulwarpOHcs_8s zeIFKbo+3Hlv-ozo&sn%FXRnaci{!j)@ohQpS-3rqd?@7be0194+j7jGfi!cMEhl5J zQ9!oK0D*J63?p2&%T9~$1CjjR|KoA+pT@yoh=U)BgTEOEe=iRHVI2G)aqt8(EZWDe zS3e8Keu1{ekS*{j26iS0ob5T4aB0t(g3o@q)WWX-*^Do@X#^Im0aNBP1EBQL04BHOLgv)-EC2(%{0hXMpAdA~^g5a}X%@Ft$qlWWUfwTOj zapd1D_+0Kr3%}CR=Wa`mUEhZ-+_ujT;^0qPxGm>-!r5;5RIk?r&h>iJl4INLwBU2S zzO-;`vk$Q#2pxu+vuwxi7H-$8e;ho=!tHvEwQyU`O@woOv3v}b0`FyDXO+MQ5`J48 ze3QWa#J@-2^cc(8CUCa%F2Yg28{t3O^GOR|XyGr!k#o@E+j4$o;a|1n9JTN%7XDvC zKI`MZ97qt@o{R?sZdmYrtH8Tc!XSYM3C|Tcxsx+q;JL(~DsW!sTrco^;x7_7w^zBq zxxF?Lj_qRm)m;`J({3j}|F*@q{qtc9x8>}z$Ynx8?uC z!fm@H4AaH9e#rGov+z+sVY_uF9Lu!j_p|u+{5~`ef3$_$`dn?vvF*(M)e*|gHY)2Q zy=J2SuKNf;@b6+_pvSEmM<1u#9ETpKxVR?6p(kB<;7q2}2$@aubBKc{EDHnbgV*I~ z5C}8P$;Fo-0m6K9a`A3S23R6+et&4Az;DJy9E5L~lPl+WGQh(Ee?b}Gae@Da%KfRp zyOW-82>h!gzg6H1$j+Y${O2hK_(I^HQXKwRhYoDF?Zi(J_(#;>{70LZpO9$s_Z9rT zWS?OI&m#T#`%spX*ulsdC-{q~+zA5zDzz_vKf-dpPVyHEKEFS`Lg0U-c3CU%>qwt^ zf%l|(Jt*+IsU5#3aQ^<}S%LQ>{a+S1{(*B0M+N>{Di^=!$H4Us>KOD9>LiSJCx7q@ z{AuE+3cM@H%@p`uRBlg!CsDfx1>TGFA1rVWwaajU4?=|@j1u_Q$q&a0`~|Y}1cARu z@hJkIKz5iR@cyLF9D&zS{3`;#m-veW9wzk0LCxP^3Irw`67?K74 zdurby0e;*;7x>w2}d`>br*+6EgaW@ z9PoD>Fd%=lzA}gRES%S{nBt>)ARq73IiwKIcDsf2>2C2+WF}?kC-{G-_Q)3e9>nMG z*I51-vhxjsA0&Q6$R9xZaDPSpQJ-PN-zoUjNPzHTAwOTEj&oS>r;_~N2>xQ?pA&rk zy^Jpfe=YI-B#-M$u#-tR>%WB(MhSi;*=K^_?I-D_X++9;y)w!KgWU~>=S(LsDQsG_}``YM}nVE?U+FQiS?gP{XLCvwkNOu zdI#_se;u{gUj(1mJ?91gSJclF zs2*4x>fcE6I}y(MbHDB(_|3#G6Z}7-FbK64ABR-_-Kg6IKScaZ0)K$wd|$%)~{j|5hL)5Fv`f&Z4;>$iln9R9tde+WLy=|u7{8TU!H(zuX8ILqPRQyM4uEN8mFH-an- z^Msr~4L0~j!Ox}mHwB-6_vsnI|1Rm-DDaWgkNEfGSbzRqDgI87>w6W+`B=!=Mfm3e zA4lz#Ozq5ac9Z>w3H&6jf5r>E$(X^JA@IMFoErtcj`~-Hz<+}kgs?{7wZ#9Hz#k>Q zy^nCV5C0z5e+oX^XOF$6JW+`d}`&U)?=_+?b?(*oyqe@Wo%&u<8v z+vT{xE6LAW31>S5=sm>?f`5eiV{#zY4hIPDNjS?1_c6R-g3s&EYXts78aJ*La`^Z3 z779MMOQpcMUDgVm+vPg~XZ!z$z}fyk6ZrLHx4ndOefjqQ-xho>_Y;A0xn6pZ#D2x) zb{6>GX&&zCoE`JZmcIN&#m^KU&13BEck^q4!U z`&h6e;-~*|@Un6j~ z|4f0i{TB)R&*aZ51kU@pHH5Q0`S)7u1)u$Ao4{HB=LODszAA9m^EU#|MFk+dPdMwt zzc>4d;B&ipXoHUJ%zCB?ob}8RIP1yZZ?c?uMjdAc@mU}KedZD&hs#|ha4vU)z`5KV z0zZZdKzNLBE|-5VdavMfxvvYH%Y9ei+`mo>{5Z`!e<7U9<@=39dI5~>!{v4nIF~y} z;#99;gtL79-R!x7UrTu<%VEaEp^FkWoXirq-Q)5|MpY$f2^=J7L1&+USk0B)F@P5=H!RPUf zzn^9KZ0B1gpX~pT!1?*;qoQ1X{`8#Sv;3C@ewOC1w*|h=RLl8L;Q0I582($}Um-hu zMmXD(fB!9&UNDpO?JaO_mu!Kbrgj`fILkjtem-6Bi^*;`2%POuCh#Px*K#4hnd-Gk z@LA3lf%81LQ{aE4dH*pX|BNxGvsdtMrurThIFIwE1iqB|(HSBCM!r9Iw#{CNfC}%i>aHi$IBl-P_gZy0hUrO=80>7K$mkazL#d8FHisGXLo=WY7 z?~-BQa`NRgiF_kot$MQ@P`L-mcU>3%&Dn1 z5uLiMbV;Nf{uWXsVaxR1!!aXZ*WpNl*hRdhTmz2IQ*Gg z{F8}JP8IwW%^diXeDGH^;pf{a4u6O+2mZe1D)__i>qu^CMRA$_tMtae|K>3W`LWB< zwC768r>p#7E~GE0d%7TgPLC$fcM)^3alJWj!N~^#-UeY_nvVHrJ@jW`h?CpFl?fX~ zxs1#5aV|ue@$v^nh9C=~^GG-&1^vzrT>e-gIB1jL8oy-|MQFwznmDJ?e9qYQhVjErSdB%1D2l*|7H2;rbuBu;ZldL zv~YNZ)@6)y`Fy?`657lE9^H7=F_8ptl+WAZKw5k4cjBnY#P0`U`{C9g z=cna%yJcg}U9@0pp$xbUfPG!&PXbJI5kMU0?lt=4d_woVCf3$|>5$NF{$nNwxglq7 HWB>mRg#p4~ literal 0 HcmV?d00001 diff --git a/build/test/out/test_mainMenu.out b/build/test/out/test_mainMenu.out new file mode 100755 index 0000000000000000000000000000000000000000..b4dffd7492a1d13649579369f2908cbf2096606d GIT binary patch literal 61120 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 literal 0 HcmV?d00001 diff --git a/build/test/preprocess/files/test_mainMenu.c b/build/test/preprocess/files/test_mainMenu.c new file mode 100644 index 0000000..c8bdf9f --- /dev/null +++ b/build/test/preprocess/files/test_mainMenu.c @@ -0,0 +1,299 @@ +#include "src/mainMenu.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_agePermissionValidAge(void) + +{ + + + + + + + + + + int validAge[83]; + + + + + + _Bool + + validAgeResult[83]; + + + + int j=0; + + + + for(int i =18;i<101;i++){ + + + + validAge[j]= i; + + j++; + + } + + + + + + + + for(int i=0;i<83;i++){ + + + + validAgeResult[i] = agePermission(validAge[i]); + + } + + + + + + + + for(int i=0;i<83;i++){ + + + + do {if ((validAgeResult[i])) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(44)));}} while(0); + + + + } + + + +} + + + +void test_agePermissionInvalidAge(void) + +{ + + + + + + + + + + + + int invalidAge[117]; + + + + + + _Bool + + invalidAgeResult[117]; + + + + int j=0; + + + + for(int i =-100;i<18;i++){ + + + + invalidAge[j]= i; + + j++; + + } + + + + + + + + for(int i=0;i<117;i++){ + + + + invalidAgeResult[i] = agePermission(invalidAge[i]); + + + + } + + + + + + + + for(int i=0;i<117;i++){ + + + + do {if (!(invalidAgeResult[i])) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(81)));}} while(0); + + + + } + + + +} + + + +void test_IsInteger(void) + +{ + + + + + + + + char* inputIsInteger[] = {"-10000000","-2000000","-354698","-66667","-7878","-987","-64","-5","0","1","2","10","201","333","4321","56974","698751","7878989","88954621" }; + + + + + + _Bool + + inputIsIntegerResult[19]; + + + + + + + + for(int i=0;i<19;i++) + + { + + + + inputIsIntegerResult[i] = checkIfInteger(inputIsInteger[i]); + + + + } + + + + + + + + for(int i=0;i<19;i++) + + { + + + + do {if ((inputIsIntegerResult[i])) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(110)));}} while(0); + + + + } + + + +} + + + +void test_IsNotInteger(void) + +{ + + + + + + + + char* inputIsNotInteger[] = {"0.15","3.141592653589793238","5.3254f","-6.264","-7878.3261","foo","Bar","FIZZ","buzZ","joHN","jAnE","foo-bar","3,15","2k13",""," ","-","+","/*-+.,/=" }; + + + + + + _Bool + + inputIsNotIntegerResult[19]; + + + + + + + + for(int i=0;i<19;i++) + + { + + + + inputIsNotIntegerResult[i] = checkIfInteger(inputIsNotInteger[i]); + + + + } + + + + + + + + for(int i=0;i<19;i++) + + { + + + + do {if (!(inputIsNotIntegerResult[i])) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(139)));}} while(0); + + + + } + + + +} diff --git a/build/test/preprocess/includes/test_mainMenu.c b/build/test/preprocess/includes/test_mainMenu.c new file mode 100644 index 0000000..fb4dc93 --- /dev/null +++ b/build/test/preprocess/includes/test_mainMenu.c @@ -0,0 +1,3 @@ +--- +- "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" +- src/mainMenu.h diff --git a/build/test/results/test_mainMenu.pass b/build/test/results/test_mainMenu.pass new file mode 100644 index 0000000..d5c35cb --- /dev/null +++ b/build/test/results/test_mainMenu.pass @@ -0,0 +1,30 @@ +--- +:source: + :path: tests + :file: test_mainMenu.c +:successes: +- :test: test_agePermissionValidAge + :line: 15 + :message: '' + :unity_test_time: 0 +- :test: test_agePermissionInvalidAge + :line: 50 + :message: '' + :unity_test_time: 0 +- :test: test_IsInteger + :line: 87 + :message: '' + :unity_test_time: 0 +- :test: test_IsNotInteger + :line: 116 + :message: '' + :unity_test_time: 0 +:failures: [] +:ignores: [] +:counts: + :total: 4 + :passed: 4 + :failed: 0 + :ignored: 0 +:stdout: [] +:time: 0.0009556771256029606 diff --git a/build/test/runners/test_mainMenu_runner.c b/build/test/runners/test_mainMenu_runner.c new file mode 100644 index 0000000..129fa89 --- /dev/null +++ b/build/test/runners/test_mainMenu_runner.c @@ -0,0 +1,87 @@ +/* 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_agePermissionValidAge(void); +extern void test_agePermissionInvalidAge(void); +extern void test_IsInteger(void); +extern void test_IsNotInteger(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_mainMenu.c"); + run_test(test_agePermissionValidAge, "test_agePermissionValidAge", 15); + run_test(test_agePermissionInvalidAge, "test_agePermissionInvalidAge", 50); + run_test(test_IsInteger, "test_IsInteger", 87); + run_test(test_IsNotInteger, "test_IsNotInteger", 116); + + return UnityEnd(); +} 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/tests/support/.gitkeep b/tests/support/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_mainMenu.c b/tests/test_mainMenu.c new file mode 100644 index 0000000..be1fb40 --- /dev/null +++ b/tests/test_mainMenu.c @@ -0,0 +1,145 @@ +#ifdef TEST + +#include "unity.h" + +#include "mainMenu.h" + +void setUp(void) +{ +} + +void tearDown(void) +{ +} + +void test_agePermissionValidAge(void) +{ + //Test case : 0 + + //Arrange + + int validAge[83]; + + bool validAgeResult[83]; + + int j=0; + + for(int i =18;i<101;i++){ + + validAge[j]= i; + j++; + } + + //Act + + for(int i=0;i<83;i++){ + + validAgeResult[i] = agePermission(validAge[i]); + } + + //Assert + + for(int i=0;i<83;i++){ + + TEST_ASSERT_TRUE(validAgeResult[i]); + + } + +} + +void test_agePermissionInvalidAge(void) +{ + + //Test case : 1 + + //Arrange + + int invalidAge[117]; + + bool invalidAgeResult[117]; + + int j=0; + + for(int i =-100;i<18;i++){ + + invalidAge[j]= i; + j++; + } + + //Act + + for(int i=0;i<117;i++){ + + invalidAgeResult[i] = agePermission(invalidAge[i]); + + } + + //Assert + + for(int i=0;i<117;i++){ + + TEST_ASSERT_FALSE(invalidAgeResult[i]); + + } + +} + +void test_IsInteger(void) +{ + + //Arrange + + char* inputIsInteger[] = {"-10000000","-2000000","-354698","-66667","-7878","-987","-64","-5","0","1","2","10","201","333","4321","56974","698751","7878989","88954621" }; + + bool inputIsIntegerResult[19]; + + //Act + + for(int i=0;i<19;i++) + { + + inputIsIntegerResult[i] = checkIfInteger(inputIsInteger[i]); + + } + + //Assert + + for(int i=0;i<19;i++) + { + + TEST_ASSERT_TRUE(inputIsIntegerResult[i]); + + } + +} + +void test_IsNotInteger(void) +{ + + //Arrange + + char* inputIsNotInteger[] = {"0.15","3.141592653589793238","5.3254f","-6.264","-7878.3261","foo","Bar","FIZZ","buzZ","joHN","jAnE","foo-bar","3,15","2k13",""," ","-","+","/*-+.,/=" }; + + bool inputIsNotIntegerResult[19]; + + //Act + + for(int i=0;i<19;i++) + { + + inputIsNotIntegerResult[i] = checkIfInteger(inputIsNotInteger[i]); + + } + + //Assert + + for(int i=0;i<19;i++) + { + + TEST_ASSERT_FALSE(inputIsNotIntegerResult[i]); + + } + +} + +#endif // TEST