From 1f9f4613a5f0b192f8410a18674fec750a1f776f Mon Sep 17 00:00:00 2001 From: fdai7057 Date: Fri, 13 Jan 2023 17:35:04 +0000 Subject: [PATCH 01/38] Initial commit --- README.md | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..3fcae1b --- /dev/null +++ b/README.md @@ -0,0 +1,92 @@ +# Bankmanagement-System + + + +## Getting started + +To make it easy for you to get started with GitLab, here's a list of recommended next steps. + +Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! + +## Add your files + +- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files +- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: + +``` +cd existing_repo +git remote add origin https://gitlab2.informatik.hs-fulda.de/fdai7057/bankmanagement-system.git +git branch -M main +git push -uf origin main +``` + +## Integrate with your tools + +- [ ] [Set up project integrations](https://gitlab2.informatik.hs-fulda.de/fdai7057/bankmanagement-system/-/settings/integrations) + +## Collaborate with your team + +- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) +- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) +- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) +- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) +- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) + +## Test and Deploy + +Use the built-in continuous integration in GitLab. + +- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) +- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) +- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) +- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) +- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) + +*** + +# Editing this README + +When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template. + +## Suggestions for a good README +Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. + +## Name +Choose a self-explaining name for your project. + +## Description +Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. + +## Badges +On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. + +## Visuals +Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. + +## Installation +Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. + +## Usage +Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. + +## Support +Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. + +## Roadmap +If you have ideas for releases in the future, it is a good idea to list them in the README. + +## Contributing +State if you are open to contributions and what your requirements are for accepting them. + +For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. + +You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. + +## Authors and acknowledgment +Show your appreciation to those who have contributed to the project. + +## License +For open source projects, say how it is licensed. + +## Project status +If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. From 45b8bb3d7aa4761417cabefe925fa15c6ea8f8d0 Mon Sep 17 00:00:00 2001 From: fdlt3817 Date: Sun, 15 Jan 2023 14:37:32 +0100 Subject: [PATCH 02/38] Readme Changed --- README.md | 91 +------------------------------------------------------ 1 file changed, 1 insertion(+), 90 deletions(-) diff --git a/README.md b/README.md index 3fcae1b..0bff946 100644 --- a/README.md +++ b/README.md @@ -1,92 +1,3 @@ # Bankmanagement-System - - -## Getting started - -To make it easy for you to get started with GitLab, here's a list of recommended next steps. - -Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! - -## Add your files - -- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files -- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: - -``` -cd existing_repo -git remote add origin https://gitlab2.informatik.hs-fulda.de/fdai7057/bankmanagement-system.git -git branch -M main -git push -uf origin main -``` - -## Integrate with your tools - -- [ ] [Set up project integrations](https://gitlab2.informatik.hs-fulda.de/fdai7057/bankmanagement-system/-/settings/integrations) - -## Collaborate with your team - -- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) -- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) -- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) -- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) -- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) - -## Test and Deploy - -Use the built-in continuous integration in GitLab. - -- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) -- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) -- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) -- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) -- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) - -*** - -# Editing this README - -When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template. - -## Suggestions for a good README -Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. - -## Name -Choose a self-explaining name for your project. - -## Description -Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. - -## Badges -On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. - -## Visuals -Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. - -## Installation -Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. - -## Usage -Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. - -## Support -Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. - -## Roadmap -If you have ideas for releases in the future, it is a good idea to list them in the README. - -## Contributing -State if you are open to contributions and what your requirements are for accepting them. - -For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. - -You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. - -## Authors and acknowledgment -Show your appreciation to those who have contributed to the project. - -## License -For open source projects, say how it is licensed. - -## Project status -If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. +Fdlt3817 - Can Hacioglu \ No newline at end of file From a47838c0b228c12a259d5e54d7860eae0bee7503 Mon Sep 17 00:00:00 2001 From: fdlt3817 Date: Sun, 15 Jan 2023 14:39:38 +0100 Subject: [PATCH 03/38] Readme Renamed --- README.md => team.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename README.md => team.md (100%) diff --git a/README.md b/team.md similarity index 100% rename from README.md rename to team.md From 60fccf55dbc37c025bd25f9e67eb16162640e3cf Mon Sep 17 00:00:00 2001 From: fdai7514 Date: Sun, 15 Jan 2023 14:47:54 +0100 Subject: [PATCH 04/38] User Added --- team.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/team.md b/team.md index 0bff946..e337ab2 100644 --- a/team.md +++ b/team.md @@ -1,3 +1,4 @@ # Bankmanagement-System -Fdlt3817 - Can Hacioglu \ No newline at end of file +- Can Hacioglu, Fdlt3817 +- Atharva Kishor Naik, fdai7514 From 2ef504e012f0eb63b59f63d3b30d69dc9fe10556 Mon Sep 17 00:00:00 2001 From: fdai7057 Date: Sun, 15 Jan 2023 14:50:28 +0100 Subject: [PATCH 05/38] add user to team.md --- team.md | 1 + 1 file changed, 1 insertion(+) diff --git a/team.md b/team.md index e337ab2..7c0085b 100644 --- a/team.md +++ b/team.md @@ -2,3 +2,4 @@ - Can Hacioglu, Fdlt3817 - Atharva Kishor Naik, fdai7514 +- Julius Philipp Engel, fdai7057 From 57f6991b2ec051de9d6ff3d0f2ff8cc55bb8821e Mon Sep 17 00:00:00 2001 From: Shivam Chaudhary Date: Sun, 15 Jan 2023 14:56:49 +0100 Subject: [PATCH 06/38] add shivam to team.md --- team.md | 1 + 1 file changed, 1 insertion(+) diff --git a/team.md b/team.md index 7c0085b..915e69c 100644 --- a/team.md +++ b/team.md @@ -3,3 +3,4 @@ - Can Hacioglu, Fdlt3817 - Atharva Kishor Naik, fdai7514 - Julius Philipp Engel, fdai7057 +- Shivam Chaudhary, fdlt3781 From c91b72d8ca3c562748e510f32d1e5b37993bfd37 Mon Sep 17 00:00:00 2001 From: fdai6618 <74294567+fdai6618@users.noreply.github.com> Date: Sun, 15 Jan 2023 15:09:45 +0100 Subject: [PATCH 07/38] Add name --- team.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/team.md b/team.md index 915e69c..c1afa74 100644 --- a/team.md +++ b/team.md @@ -4,3 +4,5 @@ - Atharva Kishor Naik, fdai7514 - Julius Philipp Engel, fdai7057 - Shivam Chaudhary, fdlt3781 +- Mohamed Yahya Dahi, fdai6618 + From 9c312b37edc72ecc53d2a887f12be83136a2a232 Mon Sep 17 00:00:00 2001 From: fdai7207 Date: Sun, 15 Jan 2023 15:14:44 +0100 Subject: [PATCH 08/38] user Haytham Daoula added to team.md --- team.md | 1 + 1 file changed, 1 insertion(+) diff --git a/team.md b/team.md index c1afa74..02580e9 100644 --- a/team.md +++ b/team.md @@ -5,4 +5,5 @@ - Julius Philipp Engel, fdai7057 - Shivam Chaudhary, fdlt3781 - Mohamed Yahya Dahi, fdai6618 +- Haytham Daoula, fdai7207 From cf022ccd04889c0a5a6c4ef0fdd1a73ca9e39c65 Mon Sep 17 00:00:00 2001 From: fdai7514 Date: Sun, 15 Jan 2023 16:04:48 +0100 Subject: [PATCH 09/38] Initialise source directory with main.c --- src/main.c | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/main.c diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..2e0147f --- /dev/null +++ b/src/main.c @@ -0,0 +1,7 @@ +#include + +int main() +{ + + return 0; +} From 38af5afb432da4f5dab2f63efca2348969ed58fa Mon Sep 17 00:00:00 2001 From: fdai7057 Date: Wed, 18 Jan 2023 08:18:35 +0100 Subject: [PATCH 10/38] build script --- build-project.sh | 5 +++++ 1 file changed, 5 insertions(+) create mode 100755 build-project.sh diff --git a/build-project.sh b/build-project.sh new file mode 100755 index 0000000..fbd6ce9 --- /dev/null +++ b/build-project.sh @@ -0,0 +1,5 @@ +clear +cd src/ +gcc main.c +./a.out +rm a.out From 24ec8ae3978d4c47b5b76eda58b9378e682a1622 Mon Sep 17 00:00:00 2001 From: fdai7057 Date: Fri, 20 Jan 2023 17:22:16 +0100 Subject: [PATCH 11/38] implementation of checkLogin() --- src/LoginCustomer.c | 5 +++++ src/LoginCustomer.h | 3 +++ 2 files changed, 8 insertions(+) create mode 100644 src/LoginCustomer.c create mode 100644 src/LoginCustomer.h diff --git a/src/LoginCustomer.c b/src/LoginCustomer.c new file mode 100644 index 0000000..c9b956e --- /dev/null +++ b/src/LoginCustomer.c @@ -0,0 +1,5 @@ +#include "LoginCustomer.h" +bool checkLogin(bool loginSuccessful) +{ + return (loginSuccessful) ? true : false; +} diff --git a/src/LoginCustomer.h b/src/LoginCustomer.h new file mode 100644 index 0000000..7f0f8f9 --- /dev/null +++ b/src/LoginCustomer.h @@ -0,0 +1,3 @@ +#include +#include +bool checkLogin(bool); From 0155f61c652177b4aa808f297d5d4f32d67b23e6 Mon Sep 17 00:00:00 2001 From: fdai7057 Date: Fri, 20 Jan 2023 17:41:54 +0100 Subject: [PATCH 12/38] implementation of unit tests for checkLogin() --- build-project.sh | 5 - src/main.c | 7 - team.md | 9 - tests/build/test/cache/defines_dependency.yml | 3 + tests/build/test/cache/input.yml | 242 ++++++++++++++ tests/build/test/cache/test_LoginCustomer.c | 297 ++++++++++++++++++ tests/build/test/dependencies/LoginCustomer.d | 3 + tests/build/test/dependencies/cmock.d | 6 + .../test/dependencies/test_LoginCustomer.d | 4 + .../dependencies/test_LoginCustomer_runner.d | 4 + tests/build/test/dependencies/unity.d | 4 + tests/build/test/out/c/LoginCustomer.o | Bin 0 -> 2804 bytes tests/build/test/out/c/cmock.o | Bin 0 -> 8152 bytes tests/build/test/out/c/test_LoginCustomer.o | Bin 0 -> 5684 bytes .../test/out/c/test_LoginCustomer_runner.o | Bin 0 -> 6640 bytes tests/build/test/out/c/unity.o | Bin 0 -> 39856 bytes tests/build/test/out/test_LoginCustomer.out | Bin 0 -> 57036 bytes .../preprocess/files/test_LoginCustomer.c | 297 ++++++++++++++++++ .../preprocess/includes/test_LoginCustomer.c | 3 + .../test/results/test_LoginCustomer.pass | 18 ++ .../test/runners/test_LoginCustomer_runner.c | 81 +++++ tests/project.yml | 101 ++++++ tests/test/support/.gitkeep | 0 tests/test/test_LoginCustomer.c | 63 ++++ 24 files changed, 1126 insertions(+), 21 deletions(-) delete mode 100755 build-project.sh delete mode 100644 src/main.c delete mode 100644 team.md create mode 100644 tests/build/test/cache/defines_dependency.yml create mode 100644 tests/build/test/cache/input.yml create mode 100644 tests/build/test/cache/test_LoginCustomer.c create mode 100644 tests/build/test/dependencies/LoginCustomer.d create mode 100644 tests/build/test/dependencies/cmock.d create mode 100644 tests/build/test/dependencies/test_LoginCustomer.d create mode 100644 tests/build/test/dependencies/test_LoginCustomer_runner.d create mode 100644 tests/build/test/dependencies/unity.d create mode 100644 tests/build/test/out/c/LoginCustomer.o create mode 100644 tests/build/test/out/c/cmock.o create mode 100644 tests/build/test/out/c/test_LoginCustomer.o create mode 100644 tests/build/test/out/c/test_LoginCustomer_runner.o create mode 100644 tests/build/test/out/c/unity.o create mode 100755 tests/build/test/out/test_LoginCustomer.out create mode 100644 tests/build/test/preprocess/files/test_LoginCustomer.c create mode 100644 tests/build/test/preprocess/includes/test_LoginCustomer.c create mode 100644 tests/build/test/results/test_LoginCustomer.pass create mode 100644 tests/build/test/runners/test_LoginCustomer_runner.c create mode 100644 tests/project.yml create mode 100644 tests/test/support/.gitkeep create mode 100644 tests/test/test_LoginCustomer.c diff --git a/build-project.sh b/build-project.sh deleted file mode 100755 index fbd6ce9..0000000 --- a/build-project.sh +++ /dev/null @@ -1,5 +0,0 @@ -clear -cd src/ -gcc main.c -./a.out -rm a.out diff --git a/src/main.c b/src/main.c deleted file mode 100644 index 2e0147f..0000000 --- a/src/main.c +++ /dev/null @@ -1,7 +0,0 @@ -#include - -int main() -{ - - return 0; -} diff --git a/team.md b/team.md deleted file mode 100644 index 02580e9..0000000 --- a/team.md +++ /dev/null @@ -1,9 +0,0 @@ -# Bankmanagement-System - -- Can Hacioglu, Fdlt3817 -- Atharva Kishor Naik, fdai7514 -- Julius Philipp Engel, fdai7057 -- Shivam Chaudhary, fdlt3781 -- Mohamed Yahya Dahi, fdai6618 -- Haytham Daoula, fdai7207 - diff --git a/tests/build/test/cache/defines_dependency.yml b/tests/build/test/cache/defines_dependency.yml new file mode 100644 index 0000000..9f4fffc --- /dev/null +++ b/tests/build/test/cache/defines_dependency.yml @@ -0,0 +1,3 @@ +--- +"/home/julius/Documents/Studium/Informatik/1. Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.c": +- TEST diff --git a/tests/build/test/cache/input.yml b/tests/build/test/cache/input.yml new file mode 100644 index 0000000..fb9e794 --- /dev/null +++ b/tests/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: + - "+:test/**" + - "-:test/support" + :source: + - "/home/julius/Documents/Studium/Informatik/1. Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/**" + :support: + - test/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/2.7.0/gems/ceedling-0.31.1/vendor" + :defines: [] +:cmock: + :vendor_path: "/var/lib/gems/2.7.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/2.7.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/2.7.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/2.7.0/gems/ceedling-0.31.1/lib/../plugins/stdout_pretty_tests_report" + :module_generator_path: "/var/lib/gems/2.7.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/tests/build/test/cache/test_LoginCustomer.c b/tests/build/test/cache/test_LoginCustomer.c new file mode 100644 index 0000000..5149d92 --- /dev/null +++ b/tests/build/test/cache/test_LoginCustomer.c @@ -0,0 +1,297 @@ +#include "Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.h" +#include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + +void setUp(){}; + +void tearDown(){}; + + + +void test_checkLogin() + +{ + + + + + + + +_Bool + + test_1_to_true = (4==4); + + + +_Bool + + test_2_to_true = ( + + 1 + + == + + 1 + + ); + + + +_Bool + + test_3_to_true = (1==1); + + + +_Bool + + test_4_to_true = ( + + 0 + + == + + 0 + + ); + + + +_Bool + + test_5_to_true = ('z'=='z'); + + + +_Bool + + test_6_to_true = ('='=='='); + + + +_Bool + + test_7_to_true = (0x1A==0x1A); + + + + + +_Bool + + test_1_to_false = (4!=4); + + + +_Bool + + test_2_to_false = ( + + 1 + + == + + 0 + + ); + + + +_Bool + + test_3_to_false = (1==0); + + + +_Bool + + test_4_to_false = ( + + 0 + + == + + 1 + + ); + + + +_Bool + + test_5_to_false = ('z'=='x'); + + + +_Bool + + test_6_to_false = ('!'==')'); + + + +_Bool + + test_7_to_false = (0x1A==0x2B); + + + + + + + + + +_Bool + + result_1 = checkLogin(test_1_to_true); + + + +_Bool + + result_2 = checkLogin(test_2_to_true); + + + +_Bool + + result_3 = checkLogin(test_3_to_true); + + + +_Bool + + result_4 = checkLogin(test_4_to_true); + + + +_Bool + + result_5 = checkLogin(test_5_to_true); + + + +_Bool + + result_6 = checkLogin(test_6_to_true); + + + +_Bool + + result_7 = checkLogin(test_7_to_true); + + + + + +_Bool + + result_8 = checkLogin(test_1_to_false); + + + +_Bool + + result_9 = checkLogin(test_2_to_false); + + + +_Bool + + result_10 = checkLogin(test_3_to_false); + + + +_Bool + + result_11 = checkLogin(test_4_to_false); + + + +_Bool + + result_12 = checkLogin(test_5_to_false); + + + +_Bool + + result_13 = checkLogin(test_6_to_false); + + + +_Bool + + result_14 = checkLogin(test_7_to_false); + + + + + + + + do {if ((result_1== + +1 + +)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(47)));}} while(0); + + do {if ((result_2== + +1 + +)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(48)));}} while(0); + + do {if ((result_3== + +1 + +)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(49)));}} while(0); + + do {if ((result_4== + +1 + +)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(50)));}} while(0); + + do {if ((result_5== + +1 + +)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(51)));}} while(0); + + do {if ((result_6== + +1 + +)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(52)));}} while(0); + + do {if ((result_7== + +1 + +)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(53)));}} while(0); + + + + do {if (!(result_8)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(55)));}} while(0); + + do {if (!(result_9)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(56)));}} while(0); + + do {if (!(result_10)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(57)));}} while(0); + + do {if (!(result_11)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(58)));}} while(0); + + do {if (!(result_12)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(59)));}} while(0); + + do {if (!(result_13)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(60)));}} while(0); + + do {if (!(result_14)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(61)));}} while(0); + + + + + +} diff --git a/tests/build/test/dependencies/LoginCustomer.d b/tests/build/test/dependencies/LoginCustomer.d new file mode 100644 index 0000000..45e2415 --- /dev/null +++ b/tests/build/test/dependencies/LoginCustomer.d @@ -0,0 +1,3 @@ +build/test/out/c/LoginCustomer.o: \ + /home/julius/Documents/Studium/Informatik/1.\ Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.c \ + /home/julius/Documents/Studium/Informatik/1.\ Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.h diff --git a/tests/build/test/dependencies/cmock.d b/tests/build/test/dependencies/cmock.d new file mode 100644 index 0000000..82b64c9 --- /dev/null +++ b/tests/build/test/dependencies/cmock.d @@ -0,0 +1,6 @@ +build/test/out/c/cmock.o: \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.c \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.h \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock_internals.h \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/tests/build/test/dependencies/test_LoginCustomer.d b/tests/build/test/dependencies/test_LoginCustomer.d new file mode 100644 index 0000000..1a634fe --- /dev/null +++ b/tests/build/test/dependencies/test_LoginCustomer.d @@ -0,0 +1,4 @@ +build/test/out/c/test_LoginCustomer.o: test/test_LoginCustomer.c \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ + /home/julius/Documents/Studium/Informatik/1.\ Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.h diff --git a/tests/build/test/dependencies/test_LoginCustomer_runner.d b/tests/build/test/dependencies/test_LoginCustomer_runner.d new file mode 100644 index 0000000..1649170 --- /dev/null +++ b/tests/build/test/dependencies/test_LoginCustomer_runner.d @@ -0,0 +1,4 @@ +build/test/out/c/test_LoginCustomer_runner.o: \ + build/test/runners/test_LoginCustomer_runner.c \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/tests/build/test/dependencies/unity.d b/tests/build/test/dependencies/unity.d new file mode 100644 index 0000000..02f2997 --- /dev/null +++ b/tests/build/test/dependencies/unity.d @@ -0,0 +1,4 @@ +build/test/out/c/unity.o: \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.c \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/tests/build/test/out/c/LoginCustomer.o b/tests/build/test/out/c/LoginCustomer.o new file mode 100644 index 0000000000000000000000000000000000000000..8cb00aec5296a1fa79d354c6f99e9afe806a462d GIT binary patch literal 2804 zcmcgt+iM(E7(Zubce8fWZ7ywXjNm9OjmXaK28p#AO*Tnm=xR!nLIcV=JDJQ*vpZAf zQWL3)mqMi|2!cLDTA@!Of)Dy6_)rx51AO*H!3SRi-;BiHclMm_WEJ$OADsDp_wStV zT;`31`WenSQ^c9hdJ<#r40J7z3z%R>*%4vSLB8r`E_@1Z!b$RHx}~O7j_SQ zy|DYkog10scWyzK!N8Zl1&6_FV8?}mu?Hn;nSml$jpvr(qVfDJfi_?hWCrp=nY$vC z*&hLVChPez)ACu$pydZ15T4mpK;|!~xR%=?6NrlN9g?zDn7MY8c* zilYU+I9?p)Be|jbVLr|Zg=e5bEy?DQ+T_oU>BZB9rwUINPL3^&lKafDk7{Fl6zQ`} z*_KANV@OP;H4N1P;z+0HGcY=PA79S@EFQ#H>;lcQ+zL8Q`BKvMlBhf%*h$CnYFYKCu*S!@E||EV`*8M={92Zu)ilhl9r&&xKGgffk383R)(sNw#cX3N zF}f#}(3f(5TkMu&Zwe(7E!emGUT6B$Xzfa3+fEd1B<)_y?3NWW@wwa1MlA^1ENTT| zZ0t)SyDYpHU$|h*Ri7}b6?4+88k3dDYNcAO7^O~}_|CNJ_)h5A5UtQ|O?y+Pri_wn zls2qr+qYX`;0H-mO8i$mf4vl2&9)QCinNDpac=IkF){BnJh*a7sFvaEYB~0 z^*rNO^L%_TlevyVOGjHBZ-KML{57q1FnjSkcrZ2u`_nSE`zA;s1#}-3W!Ud~iYL_N zWl}m_zAQaiJO@gIKfO>r(wTh7q)KP^^^D+jcA!rl?33x0>X9y1l$M8k0yv!=>XSKB z9@L)^tVi{W97nVqn@mMezy5JQQwOop*g7?3x=!4sD+rvl&H9D9nHFoJj%ePBU>E9^O}k3EpZpL+1)hS*_6WU0j}&s_prX3P62k z+Chh&US|41?3lQ@r6{)S&2Eg-YHWm72N7-L1#dHg1Fo=FePpRjW4{a8?DE|oziqSEME_UJWSLJ&Q8uI@y zzY2WB{HO?s@}=JdmG2z%iYLDpF>VthN!jX<)9d&H>$n9St%Gho<)(R2yov!Ugf+o* zKguS~X-dBagOQSz-zDhMbw8A6mg>@LqUyd0Ud4cA+Yr7WMv}6<205MYHu9Ar< literal 0 HcmV?d00001 diff --git a/tests/build/test/out/c/cmock.o b/tests/build/test/out/c/cmock.o new file mode 100644 index 0000000000000000000000000000000000000000..162be594be8e993b0d9cd86d186661c8be1c8c4d GIT binary patch literal 8152 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 Cqqzpi9`7#Rokg>= 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 IKW^NA0Cv(lyZ`_I literal 0 HcmV?d00001 diff --git a/tests/build/test/out/c/test_LoginCustomer_runner.o b/tests/build/test/out/c/test_LoginCustomer_runner.o new file mode 100644 index 0000000000000000000000000000000000000000..1efa0098329f45793f30fa73f4997cbedd2b4014 GIT binary patch literal 6640 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 QoqTBr45LUBLDSLy1th;Nf&c&j literal 0 HcmV?d00001 diff --git a/tests/build/test/preprocess/files/test_LoginCustomer.c b/tests/build/test/preprocess/files/test_LoginCustomer.c new file mode 100644 index 0000000..5149d92 --- /dev/null +++ b/tests/build/test/preprocess/files/test_LoginCustomer.c @@ -0,0 +1,297 @@ +#include "Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.h" +#include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + +void setUp(){}; + +void tearDown(){}; + + + +void test_checkLogin() + +{ + + + + + + + +_Bool + + test_1_to_true = (4==4); + + + +_Bool + + test_2_to_true = ( + + 1 + + == + + 1 + + ); + + + +_Bool + + test_3_to_true = (1==1); + + + +_Bool + + test_4_to_true = ( + + 0 + + == + + 0 + + ); + + + +_Bool + + test_5_to_true = ('z'=='z'); + + + +_Bool + + test_6_to_true = ('='=='='); + + + +_Bool + + test_7_to_true = (0x1A==0x1A); + + + + + +_Bool + + test_1_to_false = (4!=4); + + + +_Bool + + test_2_to_false = ( + + 1 + + == + + 0 + + ); + + + +_Bool + + test_3_to_false = (1==0); + + + +_Bool + + test_4_to_false = ( + + 0 + + == + + 1 + + ); + + + +_Bool + + test_5_to_false = ('z'=='x'); + + + +_Bool + + test_6_to_false = ('!'==')'); + + + +_Bool + + test_7_to_false = (0x1A==0x2B); + + + + + + + + + +_Bool + + result_1 = checkLogin(test_1_to_true); + + + +_Bool + + result_2 = checkLogin(test_2_to_true); + + + +_Bool + + result_3 = checkLogin(test_3_to_true); + + + +_Bool + + result_4 = checkLogin(test_4_to_true); + + + +_Bool + + result_5 = checkLogin(test_5_to_true); + + + +_Bool + + result_6 = checkLogin(test_6_to_true); + + + +_Bool + + result_7 = checkLogin(test_7_to_true); + + + + + +_Bool + + result_8 = checkLogin(test_1_to_false); + + + +_Bool + + result_9 = checkLogin(test_2_to_false); + + + +_Bool + + result_10 = checkLogin(test_3_to_false); + + + +_Bool + + result_11 = checkLogin(test_4_to_false); + + + +_Bool + + result_12 = checkLogin(test_5_to_false); + + + +_Bool + + result_13 = checkLogin(test_6_to_false); + + + +_Bool + + result_14 = checkLogin(test_7_to_false); + + + + + + + + do {if ((result_1== + +1 + +)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(47)));}} while(0); + + do {if ((result_2== + +1 + +)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(48)));}} while(0); + + do {if ((result_3== + +1 + +)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(49)));}} while(0); + + do {if ((result_4== + +1 + +)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(50)));}} while(0); + + do {if ((result_5== + +1 + +)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(51)));}} while(0); + + do {if ((result_6== + +1 + +)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(52)));}} while(0); + + do {if ((result_7== + +1 + +)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(53)));}} while(0); + + + + do {if (!(result_8)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(55)));}} while(0); + + do {if (!(result_9)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(56)));}} while(0); + + do {if (!(result_10)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(57)));}} while(0); + + do {if (!(result_11)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(58)));}} while(0); + + do {if (!(result_12)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(59)));}} while(0); + + do {if (!(result_13)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(60)));}} while(0); + + do {if (!(result_14)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(61)));}} while(0); + + + + + +} diff --git a/tests/build/test/preprocess/includes/test_LoginCustomer.c b/tests/build/test/preprocess/includes/test_LoginCustomer.c new file mode 100644 index 0000000..8d24aa9 --- /dev/null +++ b/tests/build/test/preprocess/includes/test_LoginCustomer.c @@ -0,0 +1,3 @@ +--- +- "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" +- Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.h diff --git a/tests/build/test/results/test_LoginCustomer.pass b/tests/build/test/results/test_LoginCustomer.pass new file mode 100644 index 0000000..bd31688 --- /dev/null +++ b/tests/build/test/results/test_LoginCustomer.pass @@ -0,0 +1,18 @@ +--- +:source: + :path: test + :file: test_LoginCustomer.c +:successes: +- :test: test_checkLogin + :line: 7 + :message: '' + :unity_test_time: 0 +:failures: [] +:ignores: [] +:counts: + :total: 1 + :passed: 1 + :failed: 0 + :ignored: 0 +:stdout: [] +:time: 0.0017807170006562956 diff --git a/tests/build/test/runners/test_LoginCustomer_runner.c b/tests/build/test/runners/test_LoginCustomer_runner.c new file mode 100644 index 0000000..f847d37 --- /dev/null +++ b/tests/build/test/runners/test_LoginCustomer_runner.c @@ -0,0 +1,81 @@ +/* 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_checkLogin(); + + +/*=======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_LoginCustomer.c"); + run_test(test_checkLogin, "test_checkLogin", 7); + + return UnityEnd(); +} diff --git a/tests/project.yml b/tests/project.yml new file mode 100644 index 0000000..7245e5e --- /dev/null +++ b/tests/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: + - +:test/** + - -:test/support + :source: + - /home/julius/Documents/Studium/Informatik/1. Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/** + :support: + - test/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/test/support/.gitkeep b/tests/test/support/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/test/test_LoginCustomer.c b/tests/test/test_LoginCustomer.c new file mode 100644 index 0000000..fc23e10 --- /dev/null +++ b/tests/test/test_LoginCustomer.c @@ -0,0 +1,63 @@ +#include +#include "LoginCustomer.h" + +void setUp(){}; +void tearDown(){}; + +void test_checkLogin() +{ + /*arrange*/ + + bool test_1_to_true = (4==4); + bool test_2_to_true = (true==true); + bool test_3_to_true = (1==1); + bool test_4_to_true = (false==false); + bool test_5_to_true = ('z'=='z'); + bool test_6_to_true = ('='=='='); + bool test_7_to_true = (0x1A==0x1A); + + bool test_1_to_false = (4!=4); + bool test_2_to_false = (true==false); + bool test_3_to_false = (1==0); + bool test_4_to_false = (false==true); + bool test_5_to_false = ('z'=='x'); + bool test_6_to_false = ('!'==')'); + bool test_7_to_false = (0x1A==0x2B); + + /*act*/ + + bool result_1 = checkLogin(test_1_to_true); + bool result_2 = checkLogin(test_2_to_true); + bool result_3 = checkLogin(test_3_to_true); + bool result_4 = checkLogin(test_4_to_true); + bool result_5 = checkLogin(test_5_to_true); + bool result_6 = checkLogin(test_6_to_true); + bool result_7 = checkLogin(test_7_to_true); + + bool result_8 = checkLogin(test_1_to_false); + bool result_9 = checkLogin(test_2_to_false); + bool result_10 = checkLogin(test_3_to_false); + bool result_11 = checkLogin(test_4_to_false); + bool result_12 = checkLogin(test_5_to_false); + bool result_13 = checkLogin(test_6_to_false); + bool result_14 = checkLogin(test_7_to_false); + + /*assertions*/ + + TEST_ASSERT_TRUE(result_1); + TEST_ASSERT_TRUE(result_2); + TEST_ASSERT_TRUE(result_3); + TEST_ASSERT_TRUE(result_4); + TEST_ASSERT_TRUE(result_5); + TEST_ASSERT_TRUE(result_6); + TEST_ASSERT_TRUE(result_7); + + TEST_ASSERT_FALSE(result_8); + TEST_ASSERT_FALSE(result_9); + TEST_ASSERT_FALSE(result_10); + TEST_ASSERT_FALSE(result_11); + TEST_ASSERT_FALSE(result_12); + TEST_ASSERT_FALSE(result_13); + TEST_ASSERT_FALSE(result_14); + +} From d13b024635dbef37e247251cfec3121c08976352 Mon Sep 17 00:00:00 2001 From: fdai7057 Date: Fri, 20 Jan 2023 19:08:26 +0100 Subject: [PATCH 13/38] refactoring: replaced variables with arrays and the consecutive use of assertions with for-loops --- tests/build/test/cache/test_LoginCustomer.c | 270 ++---------------- tests/build/test/out/c/LoginCustomer.o | Bin 2804 -> 3008 bytes tests/build/test/out/c/test_LoginCustomer.o | Bin 5684 -> 4140 bytes .../test/out/c/test_LoginCustomer_runner.o | Bin 6640 -> 6640 bytes tests/build/test/out/test_LoginCustomer.out | Bin 57036 -> 56560 bytes .../preprocess/files/test_LoginCustomer.c | 270 ++---------------- .../test/results/test_LoginCustomer.pass | 4 +- .../test/runners/test_LoginCustomer_runner.c | 2 +- tests/test/test_LoginCustomer.c | 64 +---- 9 files changed, 74 insertions(+), 536 deletions(-) diff --git a/tests/build/test/cache/test_LoginCustomer.c b/tests/build/test/cache/test_LoginCustomer.c index 5149d92..28f8ec8 100644 --- a/tests/build/test/cache/test_LoginCustomer.c +++ b/tests/build/test/cache/test_LoginCustomer.c @@ -1,297 +1,87 @@ #include "Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.h" #include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" - - void setUp(){}; void tearDown(){}; - - void test_checkLogin() { - - - - -_Bool - - test_1_to_true = (4==4); - - - -_Bool - - test_2_to_true = ( - - 1 - - == - - 1 - - ); - - - -_Bool - - test_3_to_true = (1==1); - - - -_Bool - - test_4_to_true = ( - - 0 - - == - - 0 - - ); - - - -_Bool - - test_5_to_true = ('z'=='z'); - - - -_Bool - - test_6_to_true = ('='=='='); - - - -_Bool - - test_7_to_true = (0x1A==0x1A); - - - - - -_Bool - - test_1_to_false = (4!=4); - - - -_Bool - - test_2_to_false = ( - - 1 - - == - - 0 - - ); - - - -_Bool - - test_3_to_false = (1==0); - - - -_Bool - - test_4_to_false = ( - - 0 - - == - - 1 - - ); - - - -_Bool - - test_5_to_false = ('z'=='x'); - - - -_Bool - - test_6_to_false = ('!'==')'); - - - -_Bool - - test_7_to_false = (0x1A==0x2B); - - - - - - - - - -_Bool - - result_1 = checkLogin(test_1_to_true); - - - -_Bool - - result_2 = checkLogin(test_2_to_true); - - - -_Bool - - result_3 = checkLogin(test_3_to_true); - - - -_Bool - - result_4 = checkLogin(test_4_to_true); - - - -_Bool - - result_5 = checkLogin(test_5_to_true); - - - -_Bool - - result_6 = checkLogin(test_6_to_true); - _Bool - result_7 = checkLogin(test_7_to_true); + expected_test_values_compute_to_true[] = {4==4, + 1 + == - + 1 -_Bool + , 1==1, - result_8 = checkLogin(test_1_to_false); + 0 - + == -_Bool + 0 - result_9 = checkLogin(test_2_to_false); + , 'z'=='z', '='=='=',0x1A==0x1A}; - - -_Bool - - result_10 = checkLogin(test_3_to_false); - - - -_Bool - - result_11 = checkLogin(test_4_to_false); - - - -_Bool + int length_1 = sizeof(expected_test_values_compute_to_true)/sizeof( - result_12 = checkLogin(test_5_to_false); + _Bool - + ); -_Bool - result_13 = checkLogin(test_6_to_false); _Bool - result_14 = checkLogin(test_7_to_false); - - - - - - - - do {if ((result_1== - -1 - -)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(47)));}} while(0); - - do {if ((result_2== - -1 - -)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(48)));}} while(0); - - do {if ((result_3== - -1 - -)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(49)));}} while(0); - - do {if ((result_4== - -1 - -)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(50)));}} while(0); - - do {if ((result_5== + expected_test_values_compute_to_false[] = {4!=4, -1 + 1 -)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(51)));}} while(0); + == - do {if ((result_6== + 0 -1 + ,1==0, -)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(52)));}} while(0); + 0 - do {if ((result_7== + == -1 + 1 -)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(53)));}} while(0); + ,'z'=='x','!'==')',0x1A==0x2B}; + int length_2 = sizeof(expected_test_values_compute_to_false)/sizeof( + _Bool - do {if (!(result_8)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(55)));}} while(0); + ); - do {if (!(result_9)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(56)));}} while(0); - do {if (!(result_10)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(57)));}} while(0); - do {if (!(result_11)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(58)));}} while(0); - do {if (!(result_12)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(59)));}} while(0); - do {if (!(result_13)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(60)));}} while(0); + for(int i=0;i<7;++i) { - do {if (!(result_14)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(61)));}} while(0); + do {if ((checkLogin(expected_test_values_compute_to_true[i]))) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(16)));}} while(0); + } + for(int i=0;i<7;++i){ + do {if (!(checkLogin(expected_test_values_compute_to_false[i]))) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(19)));}} while(0); + } } diff --git a/tests/build/test/out/c/LoginCustomer.o b/tests/build/test/out/c/LoginCustomer.o index 8cb00aec5296a1fa79d354c6f99e9afe806a462d..82cb77b53f1898426f37bd91e324cb4ef976af5c 100644 GIT binary patch delta 593 zcmaJ-O>0v@6rDSnc^^qyUn({&Rfv6w1$j`bRj?McRir`?H$oRyEU}nE+GvfNfPz9q zQL&G^aABz1ETpyuT^EXi;vet_2yVJ4bZ1L?=J5nqF7DiO&YXMa&fPh*kzLNoYfd|l2-VY8TCecK@HP^sef!eLh@UE<@A5r3mblk`ZRJfBSbFd1>VxHkJiCR z3SpK-Nh~ww?_$2rudG19aI5{vIz<%lV|9>sZBIY5(2FyUPi20nvRrgLpc!XKmr<)C zU(@k)1?)4gJHBqAVvTY5Z&3_?%m!caxrKU6Cq^PYl0u3f>AICf`WzV6cnue2ZCAzuTez9C^iR1 zh#(?1(LxX+2zHj1B7%QFNGmuOl7ZcM^XAPwc3+aMzSA5(Fsu3L{E;#AT4RhEbm)c( zFc$R*X4(W}+3MjWd{mpc{2wvEWzcPeWe`?kf`)+i2bh53Ak3#DJw<2MnQ^@Iav~1B zvXr`5NJD~@Sb^bKwzDBjxA*`zob$#O_W{9Z#$00OItl~JRuWxhHKM`-V7MB|U`ZB~ zNdivFC|=2v_&!y@89NTM&DbTD%|gRB#{jbUXld~y7<2K{(y)f0y!M^Ml5z=^l_xf6 zu#S65ixw$scuk1Wqt@|VX;{Z!CD12Mr5$_G#rlo&q{j6j!QjENtNK*$h9#F;c?@e3yN+}BsL7!yC7 zd(Qct|2^;C+k5-jhBMLGDD5}qy7x}qB3BYWq1{IN8SNLeJ7~X>T4GTJfLh`jjxbzH z+yuCiSU_;M!Ivceee+D})^uWteAjj!+Rk6BE*dZ2{cCx7xq8Vwda=@8UDQU+nW~if z9JSRqmiT0?mZ(FYZ1KcQ>e_Uo{$DMsb<*r&%~V&d=u*cnbv}7%R;&#?H}whuP~=BI zA!ji*Zg@#!c;LrWQAaThC@f!e0khqxq(qxQNU3_*%Xo;&jDd6-8gil%BL`1R&U` zVPis)mXzoZLDK5gv8Q-}_p~-o9=kyuM3v7T471jGWVWr9x9aW6|FYM!L^4<{mw)Y3U+bC&80Ur zgE)ALEjYyyZx3G3+(^Vj=|0CPfLCbB#KvGa>a8u4voo)H3v4K|PUT?1hGE>0*cVE5 zmUB+Y_1gFcB|j(r2(1?pJsXjC6n3_1$7o**>#qjr_m{sm6a~(`tIra89Yn0<-eYg0 zM!{=v0)3DHoRT@d(W^dR@cA7O2ik5wjt{CuUNrPur8fY!`+k?t2mCxm&aH00K*$5} zm2Qc}4wIh_0t|wnRyW;2#09-eY`07q4p=d^1Epi9`7#Rokg>= zU{Yx8n9@{;HhrihYEmUqAAh1&QPoscQzeoEN~Knn+T=&n5C{Z9z#+VnR7oUyzB^~u zvx_6Oz1H3DeBU|u&VAn*KibvPttg6clOp_Lk_pk%;CPxPEESDnp7e)^BW@byzVDs8 z@cGS~H-iwK*f~B0-#Rw2NXCqg`zYu{*C)z}u8%2yMEM5g>y)oizDoHD`9Gw5neqpe zCn#T{d{NANvFnquiJJRlRb#K#J>K;`NgtO>7fAZ3TzZeB8|Bh@lCGCa=SaF%F1<_A z)pF@9Nmt6HGbDXjF1JU!TO$YG7sdLqiO}xo z(J>lP;f%@1!3!)mmCNt394nX4vm7s%&#}C`Tz;43=5qNg%PYJxwfW5073I(?PAglF zjy0BANxpYHzP1YAX^(GZh3}Ndx2nSTw#Ro*h3}-tx4OdjmdDrb^*wQ9=jVSJ4|fgk zF_N}15boX5*A?ET7sB0Zd$x9oNr&XpgAj2fuxR|q?Tf}AqqQEuce zsec2V!*ozRj!)Q^a1r5(4|bb zslNtY#`J#m1<f!=CkS~o)A>ArjV7VtKI+v2& zc7AQW(xBGeM)SHzR9AnEBwBZD(t#eBEBv*qs_&^@S-oKvEe}n(x6u_)a?QM-b~GyF zQJX!1zIoIRO-zO^X>@{*bzsNePMHRYlCu+Fxl12*FZIAL9wkdrKC7KUzw$Ohzigvm zi|Ah6ie@wY(Ug%ZMB`ek*5sH;!x+eB%v7XFTOQM5(Y=N_khh{mGh^?M7ObQYD4*!b zr!wZcV!_Vm3`e+&pmJJNf5JB0{IlZ2i|X&Qj&?qW7mEJQo=$zskh?Lu^`T^z_1bI}dvVBX5vk;O=1f2{+F)BnLs&+kn6(qJ zrjivaS@Dv!yks?dDsVbcFzmiPj@mNWHQCkH(qkk|rj6u~oO>~d=Fp@UGAWY|@nl-J zoGRkwMI?2elg*o{aH#~&Wo~<16w-Oip3+xp_zE|=#Wk8;qs=u|ioQ)7dbcO~Hf-u$ z9(UR!XG@Nh>_V)fhs(WOw>tCt%*kG%jk49ZHeFUG3s2T9N6XV!SqgQ?(Q*3d>2}OB z=A}yHbl5(`Zi_reS50M0G2fZqKx| zwS*(7aAZ&~>^GBXD{tnDg-FrdmoWz-w%(sL3Qh+H@#8vPmFxxy{qIp+8O!FPO|YC*XX%1G{^3GF9Rnbeq;fSOlI z0de(aiICx^KX3AjpqG+YUKu6LFRDs548On||77yZH-9gmK1s;(i<$~Pqk_+@;Pn-p z?io+=muAEf{enMCIHvro1<&`1x$MK(HIU-Y8{`IGNW|F>K+M+}-S}@34^zfGp}bDE zn;Lx6#QiQIM45dR+}Sjh7m#y?B@)AJEn3R36MK>gJ6$w~G<{ek*7t1gSlg4>+}*vk zt2fcRwxg#jLDleXuRPhNsHA^b^x+2V)-zc&2kXa2Ly7OS>9nY^uEB9NgD(ZAHv)}$ zfiOTf`eDYW7@uc+neiWt=NSLZSWSx%s#U%J?(JXBp*ND7EKB=EoUdXFSVzjS(+vXfM82fD0Hk#&*UY#)lX&|A^nu zh_e;^7~`)PG4Ie{W&9`O8OE!Oc!fjUOvXDIG0)KP;RM{sxRbG;F$1J*GsnDx%lV_D z5BnSZ`;1{iAMrJeyBH4vsnC-^9HClae~zv%LfdjM?OK+R)of$f7TSPr>q6@<6oh8w z9Ri0o#RjKSLKd3JN1Ibf(A%`(7N9l? zEt${ZZBJ-s-ZnJ4&?5y~PYyX{jC5kq(sNWIW#x-|sH^{N!W#0P_RYj`yWqUWsgE-Y zxiSv-svAc~Rw-@)*|ZEwHyHMc_Y(s?r1_L_4z8h$begWD5pv?WxE=9K)W4WA%0NR} z=o$`{KA3k?M!f6(qPQlCL4CAbWI~+x?s41KMqbz|2li1M+T)t+d!r`OXuphVQ_MNKO*khaOt!k!Z0|w zKI|p$bHlVKu+Q*Zye+uT{UzCM88XEv)rWtJxXCr2Bf(o=6V>Og7rbq_^}Rqg%3xlQ z-lTmxhsMTD@FBm%=*C^9!C2}Bu@7dM@e%N>OrE%l*R2L;iB|7 IKW^NA0Cv(lyZ`_I diff --git a/tests/build/test/out/c/test_LoginCustomer_runner.o b/tests/build/test/out/c/test_LoginCustomer_runner.o index 1efa0098329f45793f30fa73f4997cbedd2b4014..f839ac15db6dc490a724e363b3356e2a82b4c553 100644 GIT binary patch delta 14 Vcmexh{K0s`OGZZ4&94~QBmgtQ1)~4} delta 14 Vcmexh{K0s`OGZZa&94~QBmgtc1*HH0 diff --git a/tests/build/test/out/test_LoginCustomer.out b/tests/build/test/out/test_LoginCustomer.out index 8a1d6b840aca594c50b2cb8af06caf8d3c8f2c6a..3c7dca5801f8cdc804c4dffb9f5d46be60fb1cc1 100755 GIT binary patch delta 10958 zcmaJ{3tUvy*57B(oHK(A%j`* zc(8D4`G~Tn^S69|uRkOm^7mo8J)YbZRqJ=vZ?HYX`S-peI;d+xyClY{_S&kh8)wNY zsvJjEo!143``bS}9*Eo%lEj>#A+8J3{_Jn?{TAPg_+G;IGQL-&#_a1R##m$aY5cP3 zjoIfI+n?PGhFjy`A^x?VD@I?a&b}iZwQgnBt-GqOTXNkWYuzu|H7}s*x_OpuMO9Y{ z!JV9du%KI2c1J01Y|OsN#*vE$R*XJfoqe;7i&F0hZc4hBpcPevRWH}#$;(Z6xv7-z zt*NQbzxQdw=w+84#c3{8jCidcD)8*D_6@^*YC^HP)-uPLFNueXZHnYr8*ir<)Wl!nDK&+J~WNv;)x+mf7WuezF? za<9g4Xtabl^S%aB<<;oyP1SuFQbizguMPS4M)w!VTbhi$`a4;_}e zzy4V~7SS!H5gCR&tj5TGOoAU28W#4J~;ry+$r{;&Kp}9BzR9_SMrh)tX zC^BNA23@=DO?)$RHCC0mnRQ76DxP!;-A8nxTOXPG6ODB@-+fK(xU>81+v4vr%lby^ zx^Q%+W<}x86DQ@j)ch0(D;qXUQ61B)9{s5$pS|7R-Vz0|cHVePJQM41ymdg>fUZ;0JM({G3~&P4ON8>D!4lJJd-@A%;2HliF=8|dE-@)(=m%Lxmv%n;|PhTxW$E}-lnW;DC>P=g|pK=^WrOH zwP%dz&^e87xh(QK59iY_i;bPLc-&=iqw@{kVcT)MoKs%5WasEdEHz;>XU{XZ84BiJv|z(o-|dUC)u`6T?-9Pn{L(Q}@{4 zJ=4}-u)E7y(kdFJYCU;IY)Ct5f9>l(YdK(7*^r+jsvqdj2Y)RNJusZ#JuM=8_2nO) zuAk7$De=`!qCDMcW~WJWz{BFL^fcbHNt{oAl%G2#QZusnE2rugWLPA=;-q-C_d}){ zXv)D4iQ~O_30Gs*UF|A?aGE@gG5;0 zH0zx&TPa`pQcUa{;W(u6T9<3E+d@6<89PYS_8l6Kt!X^FYo1?q{vG$ilj3?``#^gO z*G$|3jLUtz^}M@N!ID3GP+LrEDzF6AsLO{tk_4|kD2DW#6X-rp@pXh2txxUTrN_m= zehxnVxVYMH0dM|7{I!23|K}ItwfO$-0b*%ZPg5ICqZorV=o;-z@YhuJ)Uuji?Kh@SOmu5Bj^xx6;ibqboeoJ2>L$e#ex&% zW|Tu0(0`%eb3va(X_kP#*yQo71!Y()wtv9e9fLZs{91gF8PH_VCeU2aVQx48&AICFtOk7y^aIcZ zpkIRi0eT1Y02cl5c8qnvlAaDa6?7cv8qiYEw?R|ZqHzF?4?&wjPl5gl`ZH)O_Ly*A z#wtLkfmVW+inqtaNgKuCF`cDY@ynRFkYOKrJcw5PMB#T7zLg?nY>c!@jKHr;Jc-|8 zQ9CwHS|qlh{iOH`?GECXu{}eEpx!X6>IW|tY#NSV=^|@fkknC(9v35pi+ST>I+&sL zHR)veo1f(a{p3Ma27Y{BgT-iMv0$Hp)y_}E$K#wlZ<{zbE}B2RP5c4$(01V*@8tPA z#9)v`JH#xIYdgeBkVkil%^=Es1owIt>wH}Rfq*I7$yJZIdL1_-a9WsCq)l@2M+*EX-oIR?t3eR_A8J--&)SA zTD;K%#hb;LNzn>DQ*Skkg_G>c88k09V}3)$`;&~yJwU?+@i8P(sKAg5;xw9l(Db<= zenm46P4fj|FR&|%s6;P_-e}gL`D?S7faW%hyRcxe!;B{;7-tH~7kw!5DDWikj94#k z_=`KUqqsS%KCpO$6#bj3r2SBOI4eXMYnAK@7RTlUcS!<^u`d75;CzexZr}QV zCo3hs)mXp!sW6G3FpEud7sTWt79*QVztW3Xb1l8GaJGk^B|(h+#>9gqm9AI7l4Rv| zaOeS%>f)iUgb>$kqBgG`uT&BAQ78mnJ58Z=TJrTuM=Hw+TD;Q9rdx0|5SkVkn`bh~ z+D@}8Vm>{CwatRqfhv0{ubshIyHx1X*Ea!%3gZ%A1E-dSVqve5zSITpG!DD`I+S`iPqrOtQ5vW+lM71iyjS1t{xa z>pqypTh0FH*%|{Kr*)GbaX!Pwk!1}LHPsfBzN1)7_3!Y^4 zM@l)foc9&So{mP9iCa%^&7TTec^eP9i-?1MBzN1rAWaR=3)WEhJH22NWq-F9#E^qM zUOIf%vk`!l9Qlpv|7YU7;4eiM?42X9kL^(NB*V?wvk|iMeKy( zQ6F&`WU(y#$`kkqS)`V4ho9uM`w!3R{Ti)x}7 z?Qc@XgEd!W4MOT2Uy$eiCdWZ4`dTbq?^1vnCS?HhXib;uidytCOmVti^gv4M@HmsQ zE|al;s)}@&aQsHejWcyQsyTEVA-ycqBI7Xl({LR!yvc|fQE{0S(CR`>j$;!i-YPTgU`f-|;^Rn{61B`XWb0yUY1nQt< zfSpXx)9g`Z(S319#sNxZjjX(siqO;`hog41 zAZz5bHbK_P-ATx6jTBVb;^;s%sMT`17L*M^iA{?;@n`%*)8d4T6I6vWWMyejtOw{; zs{6FX_YAps#EKf*~RF{cG$#H;Y?Nei#7OvOHL1Qm%ltwL*&vZDnYkX_N4U(K`u6c6F|g z8w0b{Ql4QCq)Gcy$J62ql5wJdFZ))S{j0_xb!VxaY=4LFcRJ3CpN>oNj&NcRr8yL* zmiT8}qq=(8sDyT7Y?hk1`j#BLY)o#GgIA2*UxEtF>?$7-^K5i)b!e~Zslv?C&|WiU zY9k9~(Z8y>F(|h>GnSwhPL35RhWUbLz14cekgD}!_GZSA{=1qOi#?BmJ7x$V8(urg zZlzNB!eG_LH_h%t)qPyYMfRPtxbkdF#xpdp9~qPcbb3f#F&d~-bzVO*B)_GO!8@-X z>sTFA|L3BIs$<%&2W4Z?Msl~zp!7&$>_;_4kK6RxT4oqRpydhun~v4ufAhI$m+EeX z!MjdS@x$9nLz*_(!P;ck7+NNK293Ga&_#1Q!(L7J1szXgzD9~aVKyapvB5F~<4eYz zay78S6qq{B#fDCGG|nfmcBpH~Vnbh*p-!G^`>2M^_H251mKXvwj5TQhIX4-U!wGmR zQ)lhd0DZ(JLytC(yIIHTi2vt#?}&X3-si_#6c&SC6j}!S3_bNVNnLZS_cNfDyUozH z+yitxEq-GM#tJbut=u~p+Ln8wMQ7y2_e>NMmfAD=((`hPE7o|%cBpw85s2XkD%MlH zk5<#(CALY&M#sc>@o zwfsJ!?$lXm;9c8vw^zqTZQ0nzy=#?OTQ>Idc<)+n(VmV*o}qP&!hDrV>0PdrJH_l} zjzG18_jrd^&*-{k(SK13a5L}Xjh}V6PD|Z#u9nW(_Ka;%V=TjwSBr5u@7ZRCSLoP? zn1s*YVqEXjbND#-3xoB3)p}ox_2az%{nZv~MLPEGSx@l6-aU&YUZlM*m-~&4#VvyB z=l2#rxx7ysKe>FQhH)vASV{q;albcXaQ~qiCg3!#r7(?qS6-}jJLutYaK#ULFROZq zAynHT+;2DDOoyqg$uM=O+j$7@>s|0z;yg0_PV##cdb3r%wWQY_<}UEN>%pmp-$^-| zp^-&@P1TkwDHS-?9H$woI}ifHlTU)JSmSjTBi30zIF|CHz>icOFG@{Bo;{ET9wK?4#2NNCDC|(F9Yw@z zi&^weQecvD9q)8P^}D0RFHU7%zjl{8UM|@ds)j|ZQw|lwE#+<4J*e9K2)oY9X$o&8 zdLQU8HM}418~sS@zz(Gts=eVzs_O{z&Z^dqZeF9#>W;Z%r1nf3Stkacanf3)3>mzw zc2z`H*Qlu0#(ImcGY&t$u5g4;RA)^Y0A0MnqlXQeuIRqfF{lp-bN%Qwb+;<)HfQP# za5{RO;KmSaBTGZFy|1<#VA38;{XSr%s98C}m4wYxGAUQk1-2LTBCn?vge&iQRijic zAti!zc__7cZHfM(%?`o9$lkc$lMg&mPj}&T9qsm5A-U1?74l>-$}?xf)M!$V_L7)f z(p{9T3Uy_}x8Yb=0{ONXtBDwmbcJ9tmH?O+K+gSw={YyoVZY-3T6+$)ty(*k+BU8I z9JK?q_A#;z)Y?ahAEdRXAWj~vwj<5o5eU%)FHk#FYj3xSt~Fa+lVB%B#n28T8zxuc zeu1u+Bu7jIB9aa9AePOf6Yb@61jlbBW$duBZ~&erhGv~#4q5F}Cbw|>3rJ^sDAd^y zaOsXrs`LLB>1|QDN#MG$#u0lyu{Wvg5U?@*;9B1x7q6Ng2cka*^ia8Lka?Sd^j}S@ z00-+53%E?0%T@a~ps5wsS<>7`!7m@=)wHOFE5kKdVsV9#c$F8=Vb&bN^HoPf;Aj#$ zkm?dp3ASU@<@|na9F^*ZmJt-d(>@d`)sQuo{0vq7l=oxopz7yk@}mYcw7=%Z$!s37 z96DLUMlHZ$Ucb{Umu#Z)g{TLIkqI_P5+ zyH^jd?6_vEa1h57`DilSK1tHUL8Ri_o;@7Y-4|sb zj;xIkgI0&spIn`42xI*t4E~xac^eS^(m<@0vS_!~Au078*PiG6CKEod)D#5E{s&}R zUpe4_EcKI3W~Z!}H_4{?AVG4w1u`#@4c+lrNQ(J@9Eb*2JTfQ7P`TaA*5ccL7E3d^ zN#xbtf6UeP}^Y3E%dpIfNz(9X@B0L>ff88YP0@g2g2n%3+vmyK*u)Y`)-UmFRLQg^j zI|-cJg2UPO^jEV{tr!x{0b8($&?k`lvoK)&<3yteu)g0?2lV=*@2P}yfc5Jv!efB- zqY2?z!20zK;Yt@6Q59MjHcZn>;0x)DO#q7&>VWl^5yE?b^-nAs$AF7+u>_zUfK8XK z+F~mJ@Cm@$at+uBIWn)x=`DL&g^nYb%Yx%V1sHo(g$PDB2Kp^Gbr=b(e*)3y1-yO$ z{^*D{$sYpNU;YSB2G;My2~P*6JtxMiUkJ~li6uR*S# zrbzxgMo@uW;Q`1A)1~y}kr*{FWnd3=&}zh=0_)c{q<;mts6x+xD}wzDMs5ouoZUk% zX)TL_A2RU8iEbR^^r3*lfIDD~9s^8rx-Zr@O2TQtiy)^D)exNs<1!grNEq^QzzYXx zdw8G=4EhVGzFm>R65!MdJ;HGIGVqXA_&vgK5Y9A*jldPi04)WSfvV$qlYtl#UBobKb(F}XNw zs{ZJ9TYs-2c?IyW3Uz=kbP&$gkb%Zf@kZc^Rw>*Ayr?%8TCc++z~y)zKlkEu!1{$F zb?_^&2?3;ds9&S1ya0RuA`yqj`qJ92FwdP!F zNs+Tk>TDDso=bmty%2f2CW^U1z1{be1HJCz{Tc5ayg%Xn5$|ohx7dMRH}U>}_Xgft zyw~wwWA=}F-7Bi~$@Xkblnt%wbrr0;lJ%Ow@__ZTWUVn+--C5WvX*Kr_o`l3!23z^ zatyWa!1__Lh8wKQVBMCio(Ag@ShplA*!xId8>|ap{UBM53|0+THzez>TMN{x zUgyE9mAp#^s~W89l2v7}&VhAJvUVD*vjxkpvIPM}wYJ>klA<;gYEM!N#tN2sbaslt zZYtT|>+DowyGfl%{uQ0y)=#w&Q3Gf8^MOt7mIEw zD|c&drk4~wD&1Ta$J`{m&_LMH5awwWYZ}Nh3|Y1&JKsRo$&j_zWYrC1oef!-COcOz z>zC+f19&TGb{0GoZ_VIkX7sId!{-DB=er47>}*s~w9!b;0j(Y#sf$W*<) z%!L$Bv<`jAkCC3BpT+cM(Y8Ud#tTzKS+i#R^E(w=n!Rb76n9&T?yMT6Wca?~UNuS; zhSPAss!NyEF!yIgnCJGDl?>}3%ue-OyQL3|$LO)=8;x~utmnFHJJGZMmiW-Qns>S- zy1SZ3E`z+Va_4wyf`+gPQIN~GPi`lV_oi6ta_~zx#mg?IbKgxVYS?SD$1V*F8ZVB! zlAVkHn?@y=g_Wl9!Wps5S^dL*u@NsdW{eXbM{Ke!fkt8Fwy|P*WTf-<4Z|Dq?aey| z%5CX6c|&ZBOy_^QAt64}JuL#Ku(EQL)H--g ztcWRcJaX+}tzgd{a0)AxQ6eHXfqSo3^ow1rIG*-AtQPArT_v?gMv8NB8N97WgtZvJ zFMThjx9Gt)d|$D-#bAXGxFUXU*~vN%2(@ylXK`~be< zvN#yugLk_unk3xh122gO38}WXFOlN)A=1}d7saT=634`ge|F+LIE9rFLxj?LD!+K4 zBB%96#gSR_u$tNP2{?t7_XkO1-t!gxk`fiim(>re#d@;OlUnIOQJS2=-PPhq@&KMv zEgUI5_>FTFV^e-s_}y>Cu(q9Tea@2R>VDGTns3F9wtF3i&pd1|*wg!4(puG5YL%Q3 zJKI$`wx9m9RtD-7Rxary-fZ8EPdY6;?FaCn(;_{s3;*g=#lo~`g}?WWSl=Pq7JiB} z$2=zXbx7lbz7fB57|QRT6xr!L_{S$JM7oc{-}+j-*6}gx7HC>hdWoAIvlE6>`E(Xz zr+e8>ugg*xD=DDgv31+QqOZyB$632?}>JYP!CFpq;ht*G_A^LvVSI`?%?)HI&ny}-A4>>bZb=nHlzZxt4l;sJL` z3O8YK$zDC+&gvtc4t1(FQe6sF&xwXP<;e!i@>LIQ z7G{o1HN$XWWfsJ=j5YSGJ#KWNq-XrJE`2GtN5W?qPv*N_O6WmhZX2);8{ex-@2f!(pYk1RV)0i zu8KdXb$=v@&yu)+1VtXR#_vx2ec*p4`DV!UfVCjW=08iOl};;-pr7HM(am!!fV&K%c~_R0?_-YuHxM z>*u}RQ=qk2Bp-nOcERh7v@sTT84(5Tb;aw=0sRN)DmMx{QP>1p^S#%*5A<2=4K<(& z)_HRyLp zPz*3V;dqDPT`e+3MDUkC5#vTW)U{wd`-xaS(qY+(;v(_Nh!|z1*f}CXSt8D%oFtTy z?c%eMaTr(m_~Um9*3#|`cw~DqcqwA+$Ot7;EE^fo!XNTak%g>>pY3Vh)7O$!WHNos z_gDIu&5>ZAh5p++#om$8y!S3~Wu%Kw-6hl~qItVdMFL2l-C`g}&TcUe_TZ}qi!6r{;1 zkqhEECDwqPI4wQ^Ir^xtoO} zxhznKXs9r{PJv}YZiYOpp?p}qd<^6d;DDo{{PBAEQ;^^NU*x?RgyndDxhVcQ{!ym~ zMIW?zb7MSXKcz=TVFVy?NpxHCJPpXyl=IOjFRb)M2we<+1HE5<6MCHmx0 zaeQuY>p@O~@oqP54n17qr#ktOZWRH4DOC7}mWs9WnkxM3M&h0Mi(*!w4KtezuguCz zDErKV{U{h&8N?Vluv!sOYkG?p^3&XZ#iFZN)s2wQ%u&im;a7bg6_h4cD)X{A>c2?I zM~Ac3&Ls8K;Vdu{zznV`Q8bJb@^IY5UqRCgeWgLIsuZY6QB4yUWp zBn{EwG<5<=Lv=V+wG(Wr!zt=Qf?+zGtoEh4&2%_P9YxTo!-?uXQg&J0S{Em%#|TI0 z;_<47V5APmsV50W>2R!io?x^N$EdH8=@=c3R&SFuPKTq^`vhC)@Ch}EU`rj2bgLZ+ zx6<(lwI{)N9X_to-l-($aJc$7!9*PnV_e}I(YCcMIbc!OVh||>m2xZXwTfA#0oOQe zcT-A=3-w9S#|KG)mrV|3tbaVV*orq6_$j=dO?5R*g|8nM+Yu4uvZ7oNm8kU_{O4o$%f$DsH(JV{uV-FF+G*dSkp^Z@#2$le1@Oc z2J(6%Q3LXgMOc@{@dJ%S($cu#i||Bg)BF%QWZFlSHk-xtrEx9FDH6%eIfleyswKfJ zIH067zbNhhLYy+Y_yDF3o5g96HNG!C700*wh?Y;q1(%?nlGc2$tiEnAl)E+-6CijM z!BILk|4j;ZkYIzacm)-|Xe@Sv6sqETkZe`>E!)DQe8i4raeZf#mya|bK}l%(&k$7d zBl}s++ep866DJEvqV&=oK1!U~6p+Vs&MD%wvWUdx{oTc|qa>-OkEFeboylY;$lB={Y1hmm>7=PDCaXFjQ!I5mM@R*eHKR`9 zTV$3}t*Tu*GZuqdO8FRYG{e;3(XT1`>=be1@uxpHZI&s)@W9T{tb`Kgo(gupqI^v+vSs1*d> zxrT6!fz8fT3d;pcN`Kf<5h&*bn|P(b@NMA;%H9tYX+XcnwYPkbFR;5m`W|`(hl%ddOZLR zIcG+Zo28bthuki+B$JevnaRr$g|0y9zuPMQEENWgF zRvP%Blpm7D$##yVwJ|a>Br^<5ArS#9T>O|-q^@wr*HVCbSk#&AL8XyonAPIi!xCR_ zL@d%Oy}ZKN=Pl~iA+tIq6$>BjH07N!w9e0Hd=Ht^G^;!H{J+-6GIgl^KLl9TKc1Is=&d)n1k zI5%<+8R@u zHtfOLu$P+ZhJ8Bqxy;mBGn?ahuCciAbclNv1#*SSr#Jc&oPZXkBge=Q*{>C*1UjD7 z^=pNxi-z_5TwxljVVfh1=Eh1>fQGRMbtBtWllp#3oSNhy9SSfyXf?H^JP)nwp-p4x z)4BK=J<*$(^!cGDfse^Z00qRL?>UQj6KCOjTKrhE2j-?c8+Qy zo_*FeN{-@L-m`AWqH5=OZ#~f+DU>7Uc_SJgEUe5GMU$|StEp&iugt-1)SS$@O5Ucv zIpKZQl_@XD zT3n~oUXz|I!|_@3mg$;^Qr1J#Wx*#v!&iT(o3T1*OX+#5qXxlru5V5nVIVhrB=40PHE1V`vir& z{9p(wo}?tnR^s=|o-)S?ns_6W&_S?mG1-P9rA^d_k&0^pR4gVlu`-DDgu!COI!lJe zD1qCgp}g1#d}8~f9mg7KIbR8(?-gE_6EmBMP0#s6(+!idK=IYGae`womOo{ofyX$$ z@ewDVi+F4#%q)d3Yv8P-FX^mM99kR0So{rLx`m`8DF(%cG@Hfd;%j{(>Y|>=ERJgI zr37uGs5c#Ada=_jJ#M4uu{Aq7QrD9e|0lH`#LU1kND0v0X0FYY0zry8*@3GZ8Tn`M z_2!gTf|Nvkgq(LN4na!SaA{?XBY+wWQS@1tQlGp{rF%aaePRhe(wyI=4h_Ra zZzp)5l()jyX`)oym8927lzZf^A==b7vji_K9qZJIQ2kLhl}DAX(a5fg)N?LTu953H zYjeijdhX;L?AigEG>;{Wl7pwlq9zW?OtF=}rWp~9N}P>4lQi2G_b|yN&7wCz!OZ?Z zis;uU8z7DX)3}!TNaU6b9=e_mKwK?vAW+H)S;DaCC_I$Pye!}NT4!|MZDu17aNTY# z^vLcJT=)D9+sYIXxn?|XtRGzgC_>xK8+Jy2H(kD%SaVwzBh8>Neo zD$a-kcx5rgg82NEbX+>86*#_sq3$132lhnrLr*F9O`=-+)%JB9zn-MCGZgA999+7z zQ_B5Tk=}=r`+E;86?E4J_7lW@N3ySiO;?0UxqUU6_`7u`(8u7mmE6B_O#CZSl2!l? zc4ZcDi172W{*%y@2~d8HG&cp3Bum%ykrmg3X)xc%{R=hxf{y1hdlIQHl!n4#i0(p_ z@;D5u|5nmm*!3Ypi;apt?a6^9jmT9>2yE@ZeWjft-5EP9?NB~x4)yJ(*@sO_-PaK=1*l3w>ErX=dONb&$vIOe&+I>E`i$9{e%m@Xq*y}DsP0ys2Xzjl8J=`73hj+T zN28FTS(lw2BYP>$r~b*ib`9~wd0BH7>266ueLeKT2%Zrwy}P3N-56)R?S=tOXXAU$ znUhyB;yrhhiXXRcOt%rd1)eHzl#qI6Mgq5DAUD){q6Yio?`R)RR!?Cmr6-WvS$muqjE{Sg_X9RQ&I zyMc|%D8d5RSg;Ad1)NhrI~Z0}+-+@Fu}Y-WF~Zn!C=6?WzXSdd%OX92+>g;spYcSa z5Q@Wqv8Pi5^v6_Vex*0RBg@`c~3gHD>6aLsz<^dbmO(ZV> zHa>0$zX5DKktonLL0&dCHk1Q!eZChsvH$>201snd0GlD#BH+)e-C#^9Fc{6)E#Ly+ zeN+JGg`Zjk;JV538n4nG1Lm!l+q0Gy8q(jW)8VXz5~$i{ht6k>smClZCOz{V9b$sYsm zh+)L%gpAM-;M-87BOuAA0QWC2dKku*kbVP9f4eWxBj~0Oz5&LBOvc{S4SWDRDVDJ> zbi5bXxS^y5s)4O=AXS%pfQ@@8k~18{=@X8=;0XHz8wU(2pFA&re*S`K(~>4vcn_~q zD_%d|%*Kbe6}wKmR9c&`YF|7(L}@M3&O|iYf=r+{vtsO-7ZhF@C4Tre+H&zl{H0Zd zoQ+YJzk*~57G2Lqt6#mt*ug+C?QFEAd^hq=l$?#R)E>njjKqg$W5WDS;lEMf++sXN G@qYlX7%#g3 diff --git a/tests/build/test/preprocess/files/test_LoginCustomer.c b/tests/build/test/preprocess/files/test_LoginCustomer.c index 5149d92..28f8ec8 100644 --- a/tests/build/test/preprocess/files/test_LoginCustomer.c +++ b/tests/build/test/preprocess/files/test_LoginCustomer.c @@ -1,297 +1,87 @@ #include "Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.h" #include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" - - void setUp(){}; void tearDown(){}; - - void test_checkLogin() { - - - - -_Bool - - test_1_to_true = (4==4); - - - -_Bool - - test_2_to_true = ( - - 1 - - == - - 1 - - ); - - - -_Bool - - test_3_to_true = (1==1); - - - -_Bool - - test_4_to_true = ( - - 0 - - == - - 0 - - ); - - - -_Bool - - test_5_to_true = ('z'=='z'); - - - -_Bool - - test_6_to_true = ('='=='='); - - - -_Bool - - test_7_to_true = (0x1A==0x1A); - - - - - -_Bool - - test_1_to_false = (4!=4); - - - -_Bool - - test_2_to_false = ( - - 1 - - == - - 0 - - ); - - - -_Bool - - test_3_to_false = (1==0); - - - -_Bool - - test_4_to_false = ( - - 0 - - == - - 1 - - ); - - - -_Bool - - test_5_to_false = ('z'=='x'); - - - -_Bool - - test_6_to_false = ('!'==')'); - - - -_Bool - - test_7_to_false = (0x1A==0x2B); - - - - - - - - - -_Bool - - result_1 = checkLogin(test_1_to_true); - - - -_Bool - - result_2 = checkLogin(test_2_to_true); - - - -_Bool - - result_3 = checkLogin(test_3_to_true); - - - -_Bool - - result_4 = checkLogin(test_4_to_true); - - - -_Bool - - result_5 = checkLogin(test_5_to_true); - - - -_Bool - - result_6 = checkLogin(test_6_to_true); - _Bool - result_7 = checkLogin(test_7_to_true); + expected_test_values_compute_to_true[] = {4==4, + 1 + == - + 1 -_Bool + , 1==1, - result_8 = checkLogin(test_1_to_false); + 0 - + == -_Bool + 0 - result_9 = checkLogin(test_2_to_false); + , 'z'=='z', '='=='=',0x1A==0x1A}; - - -_Bool - - result_10 = checkLogin(test_3_to_false); - - - -_Bool - - result_11 = checkLogin(test_4_to_false); - - - -_Bool + int length_1 = sizeof(expected_test_values_compute_to_true)/sizeof( - result_12 = checkLogin(test_5_to_false); + _Bool - + ); -_Bool - result_13 = checkLogin(test_6_to_false); _Bool - result_14 = checkLogin(test_7_to_false); - - - - - - - - do {if ((result_1== - -1 - -)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(47)));}} while(0); - - do {if ((result_2== - -1 - -)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(48)));}} while(0); - - do {if ((result_3== - -1 - -)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(49)));}} while(0); - - do {if ((result_4== - -1 - -)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(50)));}} while(0); - - do {if ((result_5== + expected_test_values_compute_to_false[] = {4!=4, -1 + 1 -)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(51)));}} while(0); + == - do {if ((result_6== + 0 -1 + ,1==0, -)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(52)));}} while(0); + 0 - do {if ((result_7== + == -1 + 1 -)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(53)));}} while(0); + ,'z'=='x','!'==')',0x1A==0x2B}; + int length_2 = sizeof(expected_test_values_compute_to_false)/sizeof( + _Bool - do {if (!(result_8)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(55)));}} while(0); + ); - do {if (!(result_9)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(56)));}} while(0); - do {if (!(result_10)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(57)));}} while(0); - do {if (!(result_11)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(58)));}} while(0); - do {if (!(result_12)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(59)));}} while(0); - do {if (!(result_13)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(60)));}} while(0); + for(int i=0;i<7;++i) { - do {if (!(result_14)) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(61)));}} while(0); + do {if ((checkLogin(expected_test_values_compute_to_true[i]))) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(16)));}} while(0); + } + for(int i=0;i<7;++i){ + do {if (!(checkLogin(expected_test_values_compute_to_false[i]))) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(19)));}} while(0); + } } diff --git a/tests/build/test/results/test_LoginCustomer.pass b/tests/build/test/results/test_LoginCustomer.pass index bd31688..730ed0b 100644 --- a/tests/build/test/results/test_LoginCustomer.pass +++ b/tests/build/test/results/test_LoginCustomer.pass @@ -4,7 +4,7 @@ :file: test_LoginCustomer.c :successes: - :test: test_checkLogin - :line: 7 + :line: 5 :message: '' :unity_test_time: 0 :failures: [] @@ -15,4 +15,4 @@ :failed: 0 :ignored: 0 :stdout: [] -:time: 0.0017807170006562956 +:time: 0.001912861000164412 diff --git a/tests/build/test/runners/test_LoginCustomer_runner.c b/tests/build/test/runners/test_LoginCustomer_runner.c index f847d37..f061ca9 100644 --- a/tests/build/test/runners/test_LoginCustomer_runner.c +++ b/tests/build/test/runners/test_LoginCustomer_runner.c @@ -75,7 +75,7 @@ static void run_test(UnityTestFunction func, const char* name, UNITY_LINE_TYPE l int main(void) { UnityBegin("test_LoginCustomer.c"); - run_test(test_checkLogin, "test_checkLogin", 7); + run_test(test_checkLogin, "test_checkLogin", 5); return UnityEnd(); } diff --git a/tests/test/test_LoginCustomer.c b/tests/test/test_LoginCustomer.c index fc23e10..610a847 100644 --- a/tests/test/test_LoginCustomer.c +++ b/tests/test/test_LoginCustomer.c @@ -1,63 +1,21 @@ #include #include "LoginCustomer.h" - void setUp(){}; void tearDown(){}; - void test_checkLogin() { /*arrange*/ - - bool test_1_to_true = (4==4); - bool test_2_to_true = (true==true); - bool test_3_to_true = (1==1); - bool test_4_to_true = (false==false); - bool test_5_to_true = ('z'=='z'); - bool test_6_to_true = ('='=='='); - bool test_7_to_true = (0x1A==0x1A); - - bool test_1_to_false = (4!=4); - bool test_2_to_false = (true==false); - bool test_3_to_false = (1==0); - bool test_4_to_false = (false==true); - bool test_5_to_false = ('z'=='x'); - bool test_6_to_false = ('!'==')'); - bool test_7_to_false = (0x1A==0x2B); + bool expected_test_values_compute_to_true[] = {4==4,true==true, 1==1, false==false, 'z'=='z', '='=='=',0x1A==0x1A}; + int length_1 = sizeof(expected_test_values_compute_to_true)/sizeof(bool); - /*act*/ - - bool result_1 = checkLogin(test_1_to_true); - bool result_2 = checkLogin(test_2_to_true); - bool result_3 = checkLogin(test_3_to_true); - bool result_4 = checkLogin(test_4_to_true); - bool result_5 = checkLogin(test_5_to_true); - bool result_6 = checkLogin(test_6_to_true); - bool result_7 = checkLogin(test_7_to_true); - - bool result_8 = checkLogin(test_1_to_false); - bool result_9 = checkLogin(test_2_to_false); - bool result_10 = checkLogin(test_3_to_false); - bool result_11 = checkLogin(test_4_to_false); - bool result_12 = checkLogin(test_5_to_false); - bool result_13 = checkLogin(test_6_to_false); - bool result_14 = checkLogin(test_7_to_false); - - /*assertions*/ - - TEST_ASSERT_TRUE(result_1); - TEST_ASSERT_TRUE(result_2); - TEST_ASSERT_TRUE(result_3); - TEST_ASSERT_TRUE(result_4); - TEST_ASSERT_TRUE(result_5); - TEST_ASSERT_TRUE(result_6); - TEST_ASSERT_TRUE(result_7); - - TEST_ASSERT_FALSE(result_8); - TEST_ASSERT_FALSE(result_9); - TEST_ASSERT_FALSE(result_10); - TEST_ASSERT_FALSE(result_11); - TEST_ASSERT_FALSE(result_12); - TEST_ASSERT_FALSE(result_13); - TEST_ASSERT_FALSE(result_14); + bool expected_test_values_compute_to_false[] = {4!=4,true==false,1==0,false==true,'z'=='x','!'==')',0x1A==0x2B}; + int length_2 = sizeof(expected_test_values_compute_to_false)/sizeof(bool); + /*act and assertions*/ + for(int i=0;i<7;++i) { + TEST_ASSERT_TRUE(checkLogin(expected_test_values_compute_to_true[i])); + } + for(int i=0;i<7;++i){ + TEST_ASSERT_FALSE(checkLogin(expected_test_values_compute_to_false[i])); + } } From 3e7a7d3c89873307b7cf5bc02f28bae148a24956 Mon Sep 17 00:00:00 2001 From: fdai7057 Date: Sat, 21 Jan 2023 15:02:45 +0100 Subject: [PATCH 14/38] Implementation of functions LoginAsCustomer() and Login() --- src/CustomerData.txt | 6 +++ src/CustomerProperties.h | 4 ++ src/LoginCustomer.c | 92 ++++++++++++++++++++++++++++++++++++++++ src/LoginCustomer.h | 7 +++ 4 files changed, 109 insertions(+) create mode 100644 src/CustomerData.txt create mode 100644 src/CustomerProperties.h diff --git a/src/CustomerData.txt b/src/CustomerData.txt new file mode 100644 index 0000000..3ac070f --- /dev/null +++ b/src/CustomerData.txt @@ -0,0 +1,6 @@ +1234=example +ID=1234 +forename=Max +Surname=Mustermann +password=example +balance=0 diff --git a/src/CustomerProperties.h b/src/CustomerProperties.h new file mode 100644 index 0000000..2bbab62 --- /dev/null +++ b/src/CustomerProperties.h @@ -0,0 +1,4 @@ +typedef struct Customer{ + char *ID, *forename, *surname, *password; + float balance; +}customer_t; diff --git a/src/LoginCustomer.c b/src/LoginCustomer.c index c9b956e..5c2a7a4 100644 --- a/src/LoginCustomer.c +++ b/src/LoginCustomer.c @@ -1,5 +1,97 @@ #include "LoginCustomer.h" + bool checkLogin(bool loginSuccessful) { return (loginSuccessful) ? true : false; } + +void collectCustomerDataForLogin(int attempts) +{ + customer_t c; + c.ID = calloc(15+1,sizeof(char)); + c.password = calloc(15+1, sizeof(char)); + char digitCharacterFromUser, passwordCharacterFromUser; + int IDLengthCounter = 0, passwordLengthCounter = 0; + const int IDMaxLength = 16, passwordMaxLength = 16; + + printf("Enter ID:\n"); + while(((digitCharacterFromUser=getchar()) != '\n')&&IDLengthCounter='0'&&digitCharacterFromUser<='9'){ + *(c.ID+IDLengthCounter) = digitCharacterFromUser; + } + else{ + printf("Character entered is not a digit. Aborting.\n"); + exit(-1); + } + ++IDLengthCounter; + } + *(c.ID+IDLengthCounter) = '\0'; + + if(IDLengthCounter>=IDMaxLength){ + printf("ID entered is too long. Aborting.\n"); + exit(-1); + } + + printf("Enter password:\n"); + while((passwordCharacterFromUser=getchar())!='\n'&&passwordLengthCounter=passwordMaxLength){ + printf("Password entered is too long. Aborting.\n"); + exit(-1); + } + customer_t *ptr = &c; + bool loginSuccessful = loginCustomer(ptr); + if(loginSuccessful ) { + printf("Welcome to the menu!\n"); + //call menu() + }else if(!loginSuccessful && attempts < MAX_LOGIN_ATTEMPTS){ + printf("You have %d attempts left.\n", MAX_LOGIN_ATTEMPTS - attempts); + collectCustomerDataForLogin(++attempts); + }else{ + printf("Maximum number of attempts reached. Program terminates.\n"); + exit(-1); + //call error() + } + +} + +bool loginCustomer(customer_t *c) +{ + bool foundCustomerEntryInFile = false; + char *searchForThisString = generateCheckString(c->ID,c->password); + char *lineFromCustomerFile = calloc(40,sizeof(char)); + FILE *readCustomerFile = fopen("CustomerData.txt", "r"); + if(readCustomerFile==NULL){ + printf("Could not find file. Aborting.\n"); + exit(-1); + //call error() + } + while((fscanf(readCustomerFile,"%s",lineFromCustomerFile)!=EOF)){ + if(strcmp(searchForThisString,lineFromCustomerFile)==0){ + foundCustomerEntryInFile = true; + break; + } + } + + if(checkLogin(foundCustomerEntryInFile)){ + printf("Login successful.\n"); + return foundCustomerEntryInFile; + }else{ + printf("Login not successful.\n"); + } + fclose(readCustomerFile); + return foundCustomerEntryInFile; +} + +char *generateCheckString(char *ID, char *password){ + int checkStringLength = strlen(ID) + 1 + strlen(password) + 1; + char *checkString = calloc(checkStringLength, sizeof(char)); + checkString = strcat(ID,"="); + checkString = strcat(checkString,password); + *(checkString+checkStringLength) = '\0'; + return checkString; +} diff --git a/src/LoginCustomer.h b/src/LoginCustomer.h index 7f0f8f9..809765b 100644 --- a/src/LoginCustomer.h +++ b/src/LoginCustomer.h @@ -1,3 +1,10 @@ #include +#include #include +#include +#include "CustomerProperties.h" +#define MAX_LOGIN_ATTEMPTS 3 +char *generateCheckString(char *, char*); bool checkLogin(bool); +void collectCustomerDataForLogin(int); +bool loginCustomer(customer_t *); From ec3e31a0cc7eae17a78081c05f0a0fab274260c2 Mon Sep 17 00:00:00 2001 From: Shivam Chaudhary Date: Tue, 24 Jan 2023 20:35:05 +0100 Subject: [PATCH 15/38] Create .gitignore --- .gitignore | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 From fe8b90a6031986c43e296b13c5195e193bf3dbe7 Mon Sep 17 00:00:00 2001 From: Shivam Chaudhary Date: Tue, 24 Jan 2023 20:36:55 +0100 Subject: [PATCH 16/38] Revert "Create .gitignore" This reverts commit ec3e31a0cc7eae17a78081c05f0a0fab274260c2. --- .gitignore | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e69de29..0000000 From cf9f3827c68aed1ea8648acb354b62850257a41b Mon Sep 17 00:00:00 2001 From: Shivam Chaudhary Date: Tue, 24 Jan 2023 20:39:58 +0100 Subject: [PATCH 17/38] Update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..496ee2c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store \ No newline at end of file From e30f7a66ae355d3ee391bb7f0f614e87520e30b9 Mon Sep 17 00:00:00 2001 From: fdai7207 Date: Thu, 26 Jan 2023 17:39:22 +0100 Subject: [PATCH 18/38] 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 19/38] 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 20/38] 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 zcmeHMYiu0V6~43U^=o6tkGxC(uNxpVuy4PXB*aN@vZj!N69c6oW_LZd7u&ODcQ!b& zF$Blp;L_S^60Ft*x1}OT6onrkD*CWgPy#<_8mg97AVCEvZ75AetELT*o^$8inc3?N zRIU22N7}jPeCKt~ojdp5nZ2*|hAj?7VS*HPEwdznGUlnX_!iE#u;pwS`)Ki{|Llk! zcyH>CpXXtt`#v}U(Ym6O1(#n5UeN=sXM^*{#si<8KaW9EUXlN^oCOddk) zz`^l3XvR3GjBz_<>?f$|8vWI=@n&E!!fEd$=fQ73_c(Cu6ylSI&?1^RIkA6f3lD@c zM8Kwf^wneI>wrPa)BZ`$M`sp4zu$$n`{%PuetI>iqK~-HB1$pGxE;hm*Y?rlQ_;!R zvt7}vjM{V;PyC8G4p97{BTw;DpNQfQ0ylg9{CO-MQ7j%YDBc4p#yAMYBL-=)sl?)E zfWeMo@yPSy(ZejBqrCVz(2sE|h=8z;#m|Zep-Ijg#dF&;3a|fWEL^T1-5?A$`smA_ zU;haRBHes5=J=gZxh3`HNP{`jkX>rM-*jr7u-GY!ow3+Ci#=koM=kaRi=DUF;}(0u zV&AaXw=MRR#h!tA30>v424)rV(V6Jv{+D^F=FQ=_F*CtpjN8GeB3w0k9A>612J$pB zf#Y{Z%Xeqc4q{*fG5&vNaH;tp-Whmoa_`I-JvNh{dvh-I*mzop2GxYFc6oNRceHwL zjb%JrHr}wkm01cda}Am>Z!lmG^M(WyZm4gJG&64_P!sbuH8+6}X$H2jo_QNsfCX8I z1p_P;2(oZE%<99TAZuuhG}SY3Y-$KH^ocY_SaWj(f`K;R3pTK@FIXRJh=dv&!VS%l zrbsvxZe|U>aHyfa8-n{n7$02$Y7DaORElkirP-FY+iz#_?B3hiU8(3ccGpI&6?NV? z=)zY++)!UI4BHFyva6VXjrS_w)&BMD_fE!KOew}EX)#_d!Hb=)=PR>;D8)s{D8(GB zC~ze;ohgR5;xKdtMxzvRO9!_s?L#jEa&x|*zz9SQw^Ay&vU~CxMNmwp{J(?>^nXVKz1ya4S2g(J!CE5pFf=_8}8gyV48 zN(`tcNd5FEj6C)l;}!aVsbVhd+hdl@J9jJjvTuO`Nts;8TOkm$jvDpk{h%*l`zIUt$cx{ln%kHB+c@ zu!2+@DAoR9W}0jwlOu-7Rx+6w&O4G{CiT~bVI(mf=I0}+8zXtjlC24jDL$b*%IqQN zI`93`63$Lf-OI)0r9VK;^wAM0riO}{8!>w-ifIQcC}t&f<%yAn#bgbWRb+Bx#45%% z@@q)_^avG$`FSzzMlsJ>ayfS2O*NQ|GRtxP_}LAVS*BdZ-0o}LPB3uPGiUKNb;??I z#NAfySOG->Ql5hpxRpw!sz|AZt|&@dH8O>DtgYG)NsC;-z;okMHq;2ey28~p=+Uxb zqy~*ki~#V!E@tk!VzhT(!QB=uh>ZgVZi_Kd3v8Z>znO-ceN6&A1K zT1R2=HA1f(E>2>?Qju^Ox(8gP*g!%a^==oUX2M#-gy${3&9wqWD7yOH~Rl)(Z4ch$rKtnf}pln5D^y2qga7G;1x!|%RVz;2?gvH zLt+c)SPpklS2KENtVg{`O%Eh9nPf_9({{)DlU*BoRMw#-^*vi+$$r+ct!>9wIy>67 z?SRdf`?O`+G+pgc(`@Uu4$tOblP4JTg?#~!cRiQm4Q`5-=h_Q5{cl}UvBb*C7 z-X4#)JC@m_C3@2-EtSo9v)VmLt;?&&;{9p{lo>si=<^PyQ#u?`QfY5S2SfBS6p8*= zrdOz;x1dOL+hmqe^^QT7G>d3gGueKfb@!)YI?HOAWRC_1pF}U53i>gy3E@_r=}o2e zT*w>@s(M>W7lm6%Sk4Htu2dGPfpLnZuS?ydS!po`&$=*mQX9k=FOwBlIqOYx6RK;_m`@*SliL>%05|`zc)3Y`m^z@ zrf2=}nASHC(_pLyR89A0_GEN*fTzj$d9s06QoB*rvcAN>?a2JQV`+bXGVX_{89z)w zU%+4!s@m0`)Ox%DUpVLs`gf~ZS1Rq#;+*zp(g}t?Ijt;n>rNOAHLb<^GrnGC_OTaE zHJdkIZg9hE)&O#R~Z0Q4by&T#DxrgKdq|5^9yb?MxY} zP*yG~DxQKR^kTsAhs5{1*7Ax69h=JvH-Q0Qs9T3hpbP1D8fs(T7ygdF@&M>RLVAA4 zG4+2p^|PesCorLRPAh1D{y!!?KR%lJgIq5{%PsB>1?(^U9ah#k#c4}YIQi&FAc#)J zPumL=PHC$X22S(PAP}Q<8b{<@5F{t#M~fUB57||=ev0!5?8Y1yvS>YoFM}3IoWa%t zkMlyNHURSB+b@830gnBt=G!g^)b0~F?Z4s_J#~RNkCXimX<~|3f(6ftvC^80+-EEo zxvQhKt8{kqMZGi8+t=BR+swikw%v#;%@vX*dUKX7(pswpBwfL;z`_#wq;R5Mx z!f{xzRDqu&9PROiN#JEPo`~aY5csqW&xudCh`$tkkWSg`bK=wek>l4BF5>u%Fl>{A zixc@x626h_cS$(TFQk46zsZ2vJraHk;SWgoR|$Va!aE6{k?=U--|F{$dNd zA4xc@znor@@IJzSA>k>)e<$G?!rzndA;Ql{IJ~xUIw#@dgcs6tgKA_SA>2ne-d|ih z#QfPS*$eyuo4tLWJZZ!2^YAq(&SA>?ri6c+@IOlUQNqtk_zQ#=V#k3*T|YBKRw?1H z5`M9Szef0K2|r1ANWyouR0=;b;WGLn zA&&3Rn^6G5|4fh&N8eQ_0EvA};0DUrMa1ATM~?_c))0>N_T4&Y!!hs2B#ZS7?Gdk{ zU|UEpaB&}Rl<;y|XLm@rO1N0JL>#f6#wGicWUop1i-hl$aIt^vlkg6*pOA3;+=cWF zqcO+7k?Ixum+0qevcr8EN#Hxk{&@p7@ifJMQNo>M|4RwqM)subq{$-kB2l+(KTv4rCnGNg+skBD!ejMWj2Zpe!BTeD;@>fb8iVx3G#an@2l z9+dD5;ZI5UbAL|_<34faK0O2TN$ZHLEwq3$^6TVx* z#eVd>6n`hhe^Ig*=Wnq;ihhcD|GH#PY0WhX?P*GJl{k}&{tNpr5QFx(PDV(+Lc({F zyhg&~B>NSi1FtLUr(*bEB5hC5b148Z3iX!W$w_6jbo_Q!m>I;1mSS4@vFUp$jxzI4hE zxVB4;XM5m{zB>groR7uhX>~W4p)*10nAW4BtA)Y01XZ{|KEWakuQ4DeQUmy1gZVW0 zcIAUteE4<+-?B*VfzKN7Rcla9>w74!+S}Qkjt!_(=zrOGz#s3OeQ(8(EqDQvKl9S# zVkqId5`H+(Ti|D>p(Tb?L5Bqt(HG|+(h8$tIL{HM$B9tJ9=0DcOw@cmH4*$gjWPdI ze>_KEewseO86@&Ak_whYz7EM4MmS6Z`o7dL*%qJoeB(C(U+j^tw2dEzl*jLSz~q?d zH-Zl~5PU+wNxy<9`b?_7=qx zjqnrg%mw^URu~>QzwIRaMEhM(3f^w_Df!zmCp e**yIDhJ@o|Ckkgmm?ocp)MJ>uZdw|Q?Ef!S=LzQk 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 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 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 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 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 zcmeFa34B!5`8R&=+&Pn(Y?BoNVHx%{8#}Tkz`zg_h%5?-hLB7a$wHGE78QsDl>A~W zxKfKi?M5rObg>i^f?J}cHd=oct5vjM2SOErYO2=!zt1`6-nlab+xPeWKkw)Ld|oc( zo^zhm4Jq-ZP^O!-j{qxrs%uCo@m=k(I|N2gl{ir*K1Nwt4o`2GEa>!9 z#~bw(2)q)OzLg;0dTQn)-_%zLeEr7Iv{U-UvsJ)#J^~Zp4#~Ge^6BXX=?Fd5{YgHd zze&=c;b|stbm(a~U%BK9PiG4@MNg>?Iu@PrmHbcYE0BEcHwii6=~U?#J=N>G0es|_ z|MZBHgbQVTS8IoQS)ZOt_bM5c6{{wU%cv|#tE{N@uTNV)X+qkBap`q6>0`KL(#wTE zimAEtmnaa^LNMt@#ZoWIx;(-qNj%Zd`h4hRmi5e}!4C|0Gv~qk-=FmIV`W4`dJ_-P z&_VK~io8tu82k~9@W)*oPB1#&@V+i1N0h_Q`2fg}4MDlC0)HHE!i68yUAmJ)T6YI8 zy$U?#D)6I#yYLr&koUWjPk!qTKK&~2-vjQ#U-+Q{FfbfQ<-)?^^+koH71c$R6}Nkp z%9`r3+p5+mg>_yZPYV$+#f5dgqFP^JRZ&H?Qs=An)l@2L{JuIcSJc%MPo7*@S6ozG zO0eScqFR7KU%a}oxO{bCX;B4;Yb&aKr3#6nP@AC4&6_uKR^gcRiAHXmksBM#j!7S{ z6wX_mUs&R;^_ErC`MkA@^JhUv@8Y6Wm0na-R#j6iwJQ{)-4eo33t~>i*@{04&sh-V z1ffF(oB~YmUp*@-VyG9aldvRSwkmhY@~?J2j4;)dCRz6PuD}RwQ65H_4t-qI$0L_) z#O-q2)8VJ&d}OcZY>E!o%dRl^${PjU@G$r;3C|3Jw@CP;F!)Cjo*f2P67jSNF2*;3IAnrT9s1E?g3GC& zquNaHNSzpIy9pj;f?vyC^T0I^T=T#+4_x!W|4SaYTpLLiFW?xp?-&uCA^fyi61R#j|f1Wm0;{1?yOWt3^czj*dLdKubGhFBB|xXSHO#>S>;K7H;WEt^?)e z(sXD4tuO)(Zl0!+pPSj2KzJs1`jX-L8z~RhJGxFe`_~iQi!ufM8-#2g{~9GDzVS3( z@EreShUa*v=22hqyzz}M2?B;l0rsv_rQ8oXKebQ&G*Vabk6Pksm}a4@r}2z0+S4@6 zhC<+H-*j~aO5ogASQX0ZE#NikC;qeRfTYY4@U^mhl7OR?&6PP%E6bMI9k;xwQ+A&X z)WI!*laLsApH4rb(_+9(U7p5`ot{Sj1yAFWfTziglm)O6K{kNwKX{gX zPDw+H3P=ZKTUi?tI*@%?W&>G}jt2OQC>mP>|NNJ*Zd;2#D)1W7Hn}^|2b$R*B*mYC z6p?{nf+CPYTKA*VChUZEylNN?u7gvB+@l$aa@a}on%U1d>=oo_{YkaDzQueENQiVT;K(ZutfUCw8> zGNRqu;!ip{8aTM-i7CS5@==P?!08}^SQl<;+d<7(;u$4u^Rd8ZUv+hv8tSg|Yv9f+ zjNgH_rixp)J&4?Hv;!GWP%@riFy4hK8aNQf6AaZ-5>LkOLWZjj<0;RLCk`0@k90Dg zL%H$$fN$VbkU(G`8NXYXFs6y;h4GyBg39f`LD>J&b<+NkWIwS%3?;rzFJEc@mtpp| zLr9qY@M$BLxossZM`@cVm5WlnD6J8t+eK-;DAnga*^GEY>~+BLUx(R z?nAafWcMRGS7e_?cDl$OLUw}4wji4!vTeu?7g_4114Z^EvVBGN6tcZUHh^pok-dPp zgsQx05LJ}-?D8~ieVLnz##xufBa`4FGLdWGbnq&XCv0j%WFn)>puCJs`YMJ38OD!`{WT|EPi!8NFFOj8|NfcRX8HdPH%P1mCE%U`B zat(&^6tL2x**# z^KpDC!rkWPptD0hMtIaz&(69&-~8Df-A7(B`ynCw37yvGBpL#^cP+33IApliG5_$iA=ZTF}xJQxv_hk;f+U-%K3osM-UA;e8qc66g|+#EeSxoKc0i+hEvW)_ty;@zjka+XhKHU zq!gNT#Bs<(q1$3W>NkF+Y<{Y{>anmrbqL<5CpBB$m&r37v$=~0q4%O`hseSyDnuX4 z0zp8bT6&09zI+k+$YV=sO7g@pyq=MCkw0(ImSI80X^S&UD78mWNyTxQz`?GyAn<>PJjVz|`t)fvrf| zDDkwqPsubuDWtKNNgB*>-u*oZ`6VEv_*)&lL6A@Oupe^RGGS0dRa;~eTMQ5xbjdjq ze{nJOoaENyBy8O)g7+=rU2Woh3%n|TsBd`NCFipIx0;yKB*>X@eBCP?52PFHaP-;X z=ps$*^f+GMtEdm0Bq8It^X^Ba(%%3})F*kxq7gpfuv?|lZc_S(p+ea2ILR_Y;JO!t z;wMS*UkD`UKiS}xieGZx>OR@TmY5`w*3gT$J&;`M4nK(~<09hS?@8?FmPU6Ayhc{! zliNts6+**~5lu^48r#u%)OMBVfX*jIHo~OHd*s0;_UEyRGTGg7=Lsoe8C3yi$>LHl zk8Z&puknTB=lZMdZ*(@gUutr{)No2g&loJ*&HWN8ha=P3?;!5>7-U{R#&2z?dP!|^ zx2WJ@mAs~x?u=<-USuJMT+y(xP1)S5Dfvc#4q++XHKKj8yY0@1CU@HxCp#QXY#I<4 z5gOemn%pN;cU#9`RPQNn_f))DR$5w$amsc4OUv=j{*A{Q+efsK*s2o{dqUZi-jol@ zZT>S(y_8>3D{l;V|!b$9dB$S z$F{+-Z-B9_*^}AiZf`D78<(^-N%righ^;(J%|(CfG!DriPfgO7V;^w9Uj0wAsDW6jPx`mzd-pW_I*kkc}2;h zqDooOFKMZf0FwPgBCe`DM%h;OI1)OL-7B-l=q_8J>U{Wx8(|byKZ<7w6BxSrnUAS3LTBz8}UckixV!T8v71>IE zL%us_Q$s?Y5VNubJH}i?<6g7ZjfqbCVFm zBjXlBOpY!lTJp^VDpX0Ae$}gS$$3=pDS8iC)=N|XmktveeSQurJCMLy(UcR7THXbU zEBh14{2r~6n%R@G_*3S)D7lf=1P>5>2tIJw0nRftn6^;3Iy2kudyalGX zFZd&9funTPa0mO-0mrtaHSqP!2h&NNCif{qJ&V!z5MM-I$2ANxwF;*GlF4CW zy31f`jsPB^{-z;i*>%0Che)%T>GJ84Jw^ zVL6Goy#u8wugC{2OOk@8LNM21iu;s5w#oe-Une-X z6+sIF9s!}G721;T0DY5yIt6D0HpO!mE1Fs-(oq{1aFhiox8(1biZ-W+4|pcOu(mr^ z16wDs#H|a)HUg9AtK2wu8#T)*To;0aJF)wu;=l{k0JKp$C3`t}oJ=AyG$4H(L+t{=Mbt*?n8Vxb*j~US~hStiITl? zs>lZ$c&x1FX4KQL@j1mm2a4^dntzVD7e+iTjX00R22f8Es)QWc%Ko|}ROi2;OlT)$ zfwT=R-{Rb=(WQi@{HM{T`#nwm7LEZ`EJB&C61+ws)XE+X6ZWVS_QDxb?3CTNiq7lq zz*+U#akltIbX1WrTr{F<7aqD6hBaxhcmX~jpGvadfb3Y1%qS8WUHs`F)7v~vut7)? zSwheHTUEAaqq>5_HzqjlmX+@8}VI$4_ar zKA~MO-(O=j4AGt7@AM4dDo{#;A8(Lebit~b{dS1(GOdWv=A#g}SVhCG*1%B&8YrBS zVlq)IIYj!1xSLOHh+AfZg@j%PUXC>BrZ%pp+FDuHqR=+h77N}{r>R-uR6iE5u-p`__EQ>HF3^ zA|R@mp$5TdGr=gnZO(89oR82}xA6s8K8j;B%l7yK8@z!m0=GZxFea1MfUU^ z5>Jk%QqtFJIrZ11#Ll76P3+ut^m&1XO>r@`K{S=!U!#VvZy(FEgkME? zzBw;PZXNBQL6hM=FO-M25n{3y^KS6w6Yky>pzC9r^tU%IIf1U!6vrLNtSk1kJ9=x-Mqwg%`TEOmVn0b$<{6Sh|h zYyFT5>x7HqzYCq}u?8y#mG*4vOSzcm0(2GzL_s;d? zxK{RBL8y0LN143y`6=>ro9bt{wtB%z7g()L?(@8>oF}bgv2_UPDs;=12O@PBI3j+@ zWqm?N^Olla*}SVnKG?j=WTkhZQg|!>GEVMJTugHge*@Q6xMjCtc?5nMMo*D~&x)nU z>n@>hCuV&NMx4}2W;U~<67?63y3A2$$$N5vGLL+X`^5`FJ#YeLs^Ibm;nUd~GVcJ4 z+K0g2)wpDT*!48jxtBX0(`7UJk;u}mkS9czZiW0rWCIu|u`WUEw_%}+t@MMK3|dgc z+_?XZ0F9AorY4p_%1F1368WIp21-qHp=ra${SnT4B2-+c*tp;3YfY$!BP!SIEqG37_GjeQB^cDVccV^6 z5+<(}s6@;8To<*dyPc-HLzwQ`oLjdOrpdjF8oH8}IL&NpKcZ?4JV{FeehGmVMy>q? zbeC8tpiO4K%ojuV5CHczCD(cso80gaI^kB)C-;%G(DDK zjAT#t1qj6ytgV3RY+CY`SRkYc|G(Zx;5#wN14lIpe2l>VR^m?@c)7s%yAXJagwLSG zNGm&feP|=SfHI-ay&FCftkf5_*i{~C%>NZFZ1WoP_cghH#TT}5;S1X`5+z%ySmcAP zv|QG+1@$y+{FRv9_EF7mh>`47X+$E7fQ5XC)kOYjWs%@Tr#H5Xu~OCq$O35#!u^nQ z>$4VA-;|Fc_v62;JMlobz+Y(&ZLQ`nq4q4c?m=?B&uClOga-#`wXU|8$egRGh@L)HEbDI(D zzndq6-P9F=*n@m!izl9R=`9IKVT+RR86*rHRpV9>< zJZscjwwPFtv^DwTr~#F~a_k6+{T;9fRr7j0ok9!zy#)Wy1b;yCx6oRtnN><`lfYh( z*vG|6iihQ8(xa8tc|s#;9m=H0-jftbDaKm7MXbdSb+Z<4!tyA5fstvfC>pUz#Weyr zG@3-qu4NbbVAtxJE9xDFdNHU66kiFFQ;P2vc~zk!vuVlKyvfvd=d*E5`BXUNQE96- z=>^-eNX*2#rp}kmPn%nlWF5oK~hZ?04u zu1#=p7+$fm_cSNHEG$E0;;ua(cRTqOpjRmRq=CMGIKgFP>QcBejV{GqMqP@A_Y1s7 zpi5DqGo(u`mYVS{6+o8?(#tL-c|y7rjpLoXOC?Eu#7GPo1%q!xC5Onm$1w53H-aNf&`eODgL7w7+R?@Llei!t4AG(&)5~!8^ZDyz`9VnA2iIB*3;_E*BKPO%Q_rigk<7M8WRrXb!0W!!MGLn%N#n z^}L`WMa@(vh)M=UKXP&_dkhlb24k`H1C&YNt8V~}ZL-RrLqcc-x5<|fAGr9W`0bFz zn;%mHM+e~5ZLeMtK6vPv9!;TWU}U^_5Ui2?LV%t?61-+3x9+&YgB<&=AlV*5g3yk` zXxWL;5<$!!$c6?oY`-h=!LYrX0C3Hd?c_x^jEb~|5*_X_v7Y#6oFJO=4*3sbh;!?G z3hpTLo2yBJ^ItP~E&P7rU9#n)h`xz^L@3npHBIhK>|IGo_Y2D;<%a^*A}QabVl%s6 z*83vIif8#;zQ|)PR36y<2a<*X3z8ovf>!opu&co7^Y723xHmwmKl>i$oV7w3eygHZ zZ+N2=oHrVBOUkv>k^Ln>UG?mt~}W5%-)2P_~tQGYvk+f$Ud$wpq}jZN{M`tqo@Dg4s2}Y*jFO zTQFM|%nlA_2gt0ca^c6M-@~M4mM>$qCsr;3@zn{km3=)`SUE|=^fXELDPJY9k0rLZ zzz&nxHw3m_V!x)w#k0H;`%7R&9gm1Q_7NQ%91o(|F`~ZvK*Vn^PmzF)23L{bx(!^x zfu(UHJuVl&DdZ|m5G~^)aK*K>e3~c&ha)Kf#5!*w7mxUv><(ZVz^5227jPAtqNIcI zi_tW-<2L|F{Pzv`4Zz=j7k)A2ikjFDL|5Zt0w=)WX{L*e^y7`k&8W`|RBK==u79HL z3Qse3As{y^`ZJ>A_nF-%5r-Es$b&Q$;%=0kdM+qLb=a>f9b;e&QMS=+K~FCGTp*q) ziF<>Xd%Q*h902T~z%~Ea!3v=1su3PeFsuIgYrLhU1X1-z0``EJ?sWnCjTv@W!2W24 z{Y1dd30PpAD1IV~I@an2%Np0rdU|Ps1sUynIcWi8^{-ka&C!FNbIbY#!eH1e*$EvLI&2-Bo%y^ zGX2j(1RiOLIn8auRgp%HSPnbM$oC3y)}VJ!`x&Ha%-x*7(U|CX63De$wQLlgEx3J4qRzK6cFbaitKRK8EBI zD?k&nl+v0SWhUO@HD})P<;p7m?aP(hYCQ9m+j6SigiBim+}P2OJ7#s(SVeIuY04-i zV`SQ>^wAk|o2MuXu2%|j7A;cd?1RE>^j68$B{z7&#T5O-70(=q&mucZ&{JAVy)L@Am$g%2XeL-va9g+H=kE0 z<*5vR*PP0lBA;ttU=y2yP}TX%vKUYjDn!&(qO%d zn|xJbgMN06AHrM(wcg?i>aRf#A#cLCv{e^TtDNVmgE9zP2gr6czM{w$bw35QJvRShXJLcbc1U{jlb4~G0SzGOBqt9 zdI^Ul_k_|&}1aW=gOMo+Tbm!t#j1?fe0$*{mE72 zT2)lN+Er9sT;s3y4S+Ftb)Tz340!`wJ_LSI8D91`Kyiq}<+{mRSzJ@)B_T73H@~PF zYSj)9)ho~>QjqEfcq=g^x@xMuu9{MGQLn4Crn0hT9kqU`bZ*@M6Q7G8Y18v+%Fvk* z&gk*p^?2tWaTM3o`QZLqqlf6V2`-l_ZTdp_fqKNmnt$r7H`)K7VcX;__O5fv@%|G`w>|r3x`5r7MCNX442I zsxtbQtY#g?P?x`2SJG9acQ?$!emGA})uzz9Q*p0UDLB;CMen#cg>)Cv3rL?vy5_fC zT}zQJJKWXPhO_}`0O@^5?V6%|4=Mea{CT7vq`ya6j&%KzuCDD!W1s8l+K;ps(l(@n zkp_?scpm&#q({Mz^vE&rBVBqN{75Y?fFJ2hr2CN$e-Zphr@jP!r0bE|nW7AP8T?3p zg4Bbw_bcE>x&+s>wj+H8>3*b_khUSc8&?7YNc-U$sojQm=O7)9)K6EWktX75cRA8e zkZwnM6c>N@Bi(_!RBcF?;F4tkX%jB0+A%oQ<0|QJq=j^20qIHH`zc3Sf%{3@k$#Bl z#`}?4aNnX0={P)35kPtm?hD!Nit-9>8V*M~gYMuWU4^t9>1N!G-imbOxvs8#NFPDk zf^=+0SJx?|`A8LqqP&LGg>={XuC8pPzd^bZ=@2~sQ;#(E6YwMbKGGJX6Fvn$Qr89W zW1wq9>O$I%G#hCIekQOIX%D3JNVAacLpld(3(^%xPa&lPHxBus-o8*#*T<=;(Gm6? zxP?IQKKP6KO;^`YqL>|l%fx7V{Efrk$zS6d9|2y;V3uNygb@IV3+ z{|fwNKik#C83~Ak;6D6K0=yoneo$R>^{f%~jU=EuHtufAtQcDn6he{k2k`d*@KHz& z{LCQ!1i+iV1%Dp+3gF2Gga76re>Ci_0-o!u*FQIi9}WC1z&~N;w>-`XNWVPb1HeBV zf^RnPmB8PMK6y3$?*)F|x8M%|KMweRg~-2b$UgymJo>tV)UeO;g@Hd0_-DXBYQ}3j zRU#n$qcJ9|MxTEy1plCc9}Ro}egEen_5Z+-p9g#`#)ND$ejP`1`IW%m5B$ewyyY(j z|GmI3#aNOQQh$_D{{i6hFvd(Z^VbFCp8&ob_@~Tx%TEmX=YjtMc)sA!+t;$zz(-?D zyRii?(+S~UZQw@(|8wA{VC*sctBqkqz}p}AmobK|2;pC3@K*w_Vr-jf#&6(g&VMiP zgMfd)jJN!k!G8ewhk@S}g8#08KLLDfYggBgL-4x|{CVIX0R9&t_@5d0XpG52+Pb>- zgy0`C@S}nMA@KBT5yO7Vn+84)_*-A?>S_Wb z$&jx-XCVRP-vhvVF~&~_;ZHO8PXK=h#{7ST;LjWQ^S~Fp(be@qh<-H@LL{5zOi*2B+1{cAK`|4QJqFvkoC;ZHI6?*)F$pS!xo zgy2UQ_yfSt#@w_hM88}^zZ1Z(!<;oE1V6#Rp9lWo4`5%2{cD2uV@~`O_(5j;a*kF~ z02>YbMd16I^#h!69^fuvo(vfq0jGAO7rAf2edQ|T4Zm1QjC!{M{|DfAhu|MD@IM0n zdd$7O&G;LHUL^k|;N8G)G~+Ekga0(}^pxW3A^4XKycKhK0p|4nX8eso`GbL90DQF> zZ}A%Zvw?pM__HDSQwF{S_)RidiV*xt1AiL$BH-tm@tZiBw~rMQ>~`RBJ0#dX)j|AV;P(RWG~?$4@w0)y5BO9w zeqj(_0(>Lzcp57xKQD;i3j8ME@lae4pC82k2zcLB@WgWMxaNUt9=PU#YaY1ffomSP z=7DP-xaNWXTRotE??(T=4Q-|9;Cmya(Y%C{yl94}Ecr2eo=AJivi=<%zUBrDOJsiV zJrZ*I_jG7~M2C+5$2VOyRDPQFs5r1CAEQ$I=o&gqU+rz9fixD{Lt&~C(AnBS6#wB zkaG|ospR%%N_kyDJms-T^tio+Izbh*%eQbJWT9%&|vo?(xlb$(lgaj+2A&IVF=s`OI&!W@uYrU_CqHz}V z4oF^7n(Cg<;uj~0@}WVq}c8(xBeI0VCkQLhe4GHynjN;#h;x{5s(p42w|$7 z-G{oI^%`?faI-#O(IS$0peqqXOTCjbITh=lL95xdr2xgzrL#6`Z+i<0>@F0nE@wLO z3hThhI>6C_B%56i7VE$`lHyU~tqgbK6)Ro7X0CpJ1Tdlrr@!Kl*8z=GJADQ~wM6Wt z#2QgTYN|Fr2Qqr^tu2c3s_jlB2|RDL-bf(3l?j^~L8Zo7@o_Q5if8;4+v6@W#hMC$ z?Weuz9Uh6taI$?@jay3TEjT45XMrt6wY{y{|An&U16%|=sm4=Yv5;x+h=Sb`4LR?M zLY!p<@b8I2isd$lcwbGP0hr4|cho*mQ>ZZ9LNRbk6f!Lgpbtf1k|hq9k3=EcLht?j zt0;IZ52A2ZjcG;Q1&S>Jr5>N+Wc$0?|5l`q*;HUHKs&VU^+<3yuE!}t0`ILS5P)>D zN7#r-+fh#?Md|r9PPWUctp%w@xBKF>fjB$0cmQIxGswrJyg_wbQf+sm6wQ6ni|!EG zK38qMR|Ch=qKW^;bn5Ot?-6!P%ww|e zJ^?5l>h9j~a^x9chhLAAWoLQhFxYV&Z=0PfBkNIF0r}RlbEy&&kId+1DMKIW)ZH;T zpc+&m;e&-}$c}mh@V>W7cvKMn3&`oc=t?-5mZbNxkp{i;5tO7Zc@lh1-X-}pSrCK| zE++vC?RIgZJNySBAGw;CMaW0-{I`UBG===*E{fP_iuj-QrrQKjbge$J7AGjN9N?H^ zbb1{C`im&V2~}8L2Q+>tPL?|?$$uxzlXUtSp=0s@k0x>z=0;2#{j28 z-MtAp?QYO-h~n9u?VGfpqIgH-eT3Qh^d{@wa%z^Nq(U)msZch@kYH`+{!NPGHAym; zOXcY85`AD3JWpDaJX<<42?`_K_5{mziszd?lS>bNHwy&n?o@!aUC?GlP`U4*cxzC( z^ZXhkE~A5ij<1Art4zveN~3iW=)T&doSnMSn9uZe4EX6#cay`k9Mm@1!LvJe+^J=v zI3@BVVRr7g!*ZK4%^{pne}}b~RDY5Xplkybs+u9I+Ioj#y+M-9lqCBF$y`aY{SL+P zfFv<_a)CtOdj~v8)lvQ2lRn|eK(K5-gS_*y?7sh!^{Bfag5uf`6q6l1yK~1zZ46*N zBY#YooloBhV|qzr_T6diBi*4Jvk+7;CRM8PqdOJrVo5SnR^k^VgCxoRI~B*nlEmcs zkrI92PH7C)&y86qjQMr2982R;)LCgvu=mH(s1>1i+#p<;g^8bf`Cs4!7w_fEWOIfu z37!WOuSKI;vJw*ygfoDUZzjHoXM#~nkL?X=83n5dE)KS0f*@m zZ;z0PcaRuqv=&fA%GviM@~jD`0RDJI@QIjxH3CJ6DL6_@!BJugjYEqAWBTZu#TqSC@}>``mlhq-QJgkYSTa!`TbY`?(F*&0p=4RArgR%eJzwfY)5`m zUkBxF1mE1Zg$UOXz%-jj{x=%P_CpsrI8x5++d-r4Bf?o!=lSk~+Qt%OV6-=?FV0)EhEwy5Bv>wDc!Fm|`fF$d? z5SwCUI1jdtgjoZubEEN{SnD4^KiK*uR2*)N1!azPIv_Kxvq3Z4`W6lp;FYPFzpi}hYOMzi)qwN|SNEVCAHnmwpc zRT3XXT}M@|4$K-!7(x%VL|Dll+i^8E5|XTU0;E`N&_T84B5$!y0<&iQ1b(qvx1kzl z{Tun;T7+sMtZ#wFt|S&f&l9TFLZV3y*Rx%nOd_{Km|}eZgsOEFgjtlt^GM!OHEJJ? zXodzCS!YpAx~78O#WB+7rliz8DB?9iStQ+`jUOj5K)qEvAjl}ccT)?%i7QKyVo zv|kcs3X~t6N??a}%1rrpoibX{{z8<|IHjc$*r9bwO50m#oOD@H+(MJv>4rBq)1hd6 zkhlE?W@e-k*r5%Vl(rYp{+X%5pJR03adet2sZzFCCSBOzGJ7f78j^V#wU0?9utQsE zru?~1IYH4LCCcAmOc|R>V1$R6k~%S$*+uc>m;S^DX>qJ!SGKr`!oauugI=wX*AM4hk;;HDuErEvPihj_A2z8ENzdIKpyXR z>g<}LRT6tTTz6e6fgRdFGv!Zo$|yy9m?)oso>Ni@49}Y>+jYuBMQb6-+d(-smB0=y z+f4bTPU%v#bI8ZuiY_pnpm4mIa1f1*xiF@$q9r09dmRX85ER=iGhv=i*k94665$*W zW)l={mxQqk0m~80r_9WaI&)7&+km`nEqpmMmB8@jVpACYQm2eiv>y`XE{L3!N??bU zA}MW?VE1g<1zkF@3Qggb0h_4KwzxtJ zn@JT}6O=)=c-kf=Rg4{@47SD7ES^+>pGyq2#nZ@}RH}@yMbWIRSWdvf={9Wuq&T!g zcL}?C(^}2dn^tE1N18UAkAbQuos_sHoJN&_nN5iKtq$(lLj0p!(GTsTEzwkJCmdyz zw6Aee7l>{0qq7Jkwn3C)dqA7s84-OYVk1FuV6%!SR0lx}kTe%zQ>vu?3I3QIp-E!> zvZ}g!o=!YDVvtVkxDEOYiYS{YB<>aoBtJ;R3(&5EB1Y32ej!=Cz-gxo-j(VPK{6;} zVJmnnJ69-I;R2ib$L1(Y3D+98>tXEwMQHc@P9pI8zDt##awTK0h_X&eH z8ZtSr7SYelt3^yUcxiL^zHLmlVCoBzbf~*MI`8|oK4#wcZ4-6gzBA#gT-ydvI59L0r*FC2kXd>3uVyekNyoc!r?oPbML&?mnioW!lC(&)Le=>)?V+ z+q`+aSfV%{M8to=>Sl$QvZ!DcE zw(MMKS%wZ4(2M1k9|L=qCD57}S2Zk)fIX)dS156xLTN`ID71rFrwCj46JFew8SoLe zWd|E?wq+;FAe3ciHrM@rHeR=d>;3>s57GTWHYr5+hu8$tUE6tRv$H~ZMAv4i^EPFd zURYsy2sM0<@%0(ZauyZ)lt=Yqxe`Y;IKF|+;fT zjv(VP*KVC8V$RN^>P@SRsyqut^dGGWv>CAMEU?T&kiDfB7spSWAS}2Qvgok<6Epr< zYa(r;C?;twa856-jNd&`kc|%2EY+IiQXi@XVvu{bL2iPROA{-Tf=wGmly` z$ul(MQG0yfnj!k}O5Ps3_2N?A9*0xc8@Gv||-S~BFoM^G_(!<)M9=t2;+H5%iMc>fk zNfu(kG7&-crsgE8si#=Rpx6IVFYn)MvA}C@>E)+4D~u{C0yAGdXo}+xaMEwJf=r?8 z2O@!!UL$2Ge10pGwd}0qPCBd?%eg5>^kNBj(sRNR3TZOrd0_}zTX8H!MUC3cwAI2v z7Zd1Ech|+^Ozv;gJe1dm!vE5XV)$s%#)S+Y_iAavXL9Ik*7#s=41M=$5MjziK&Q~apG(D@|kOwQS&jih}% zrbTYT7Hyg+iXOd1TO^8$E#E`zZ`I;O5racLLM+(U=%a~Vp|208+BSIS^dg-Cf z+|hQu411}UI3W=q@KM_YD_>ZyHWs zod{PPgz6_PQ$@cNUVTR|7N}1lrv7YkAK}A~7@ps?OcLEx4A1XbW*UPZx#2GskLaf! z%Qi57VBxom5ZsExi>~sb<>)Y>N4rQ6pl^{L6re9!()4+r#?6=X;z}O+FI)IrtcU(9 z7Csdt^tt<6Et5sPd5WVIee_AoUx$hs-Zd(kmV}CE7<cbTXgAWy||M1;rlFn zf`eV$%^0#HrX;w&KFAZ8945oIz$q$Fo^$~h-)C} zoSLC4OuXmR>jm#h#W5PZ1?suJf{FiD16g%xkA&OpJnYEQz`>SUF_R9UCS zk}U}SerIK64+2fc$GE*=se*_tYH!lWvU9f5Z%==Ld`Kip6fu7fPHfVNa1VF9OJMzy zh)emNPLKyEqszk6!OJH%r{Wla<#(F8Ryx`z8P(knlcTAprKv+jt6*q>m(o<(zy+3O zSe2p1(WN@X4c1(lD&Ip|c4Aro3FIcKU-S_I=^is3>h239mjorMqjb5wU~8f}oi68D zb}qI|fj5&?ebljh3?qA}k)*g~=W4}4KRQ%YkCglrmrIgIr%1_)D%UJaxq~c*ib~26 zgwIG}U0hsgIFgc9cNX1LKZA!{0C~>q?ZXlDO3LWb1J;X?)N7LnSlt4r1 z(S>3pD^XGwL+Y*s$@sD01LJ98oC>WzVMv8_v z^+y~GDSZIpQntt~?^4dURp%RXEBMrc82wJj&kfG8BwsBUu2U)$XmlHeu4YBt0=mBX z^cDW3L_E#x@)-sF8Gw)n145n%z+DG=u0TG`psj{vd9&0(d4Biw9%Q1@aY`gQ{)B+I z531Dy$SCBaKZYfiU#ro7LAn%xBlxor#-_wLv0Am1sL=%fV-OzuHfXhH;tK(~MBqp1 z)JZ3zRJ2l@7-5_}AVFPZd*4lPMQIiZ+9}RPn9;U>%od=t2BruOv$ms#^vHDpq9a>7 zQObxSsp#eL_yM`1W<^r%SgMC@BZmg4o6IX^DP$kb*h(}y3pFeKy2Qbo^+nV~NB9FRpP8Cf+yRUH zkMDs;*=3tXmqW4|asxc3KRl?t(KDSevUSDHr&xOpV3r$zkJ(MRaZn+a=ji^dljlxg zksZf#{Q!&SxhKGpz;oq*CGy-ifF<$V7H}lj#H#VbJZiop&h^} z3RffRsf6;gI7K_O%z7%J+=5e#Lz`5O6o>X2PO-QqSx+UD-@?i1&^+~2Liv51;v8B* zJ(W-n;1uuBmex}V<%>8aIJA}ZR6_Y{oDv;cc|Da-rsqJCFkjX4qT-x|^bNq`$bS*_ ziuH4t(x-n5K)5`4m!Psf0$|_%TTpUnarF|I3+MEcz!V9zm%~rLA3aZy$ouFB9D4xp zmwQ|Rw@n88c@nHjT(V#Vk8LJu{Wak}_6T5V5SIwtLBjn>;vk0~>h6eo=IZK~cT82bGsehPehqJo*E>1*YCRTQDrO68n8AqO{U_5Sn~f zmdcfgzoNL7%eo+iR2Z^uAz9T#Fx@O`z0PeN1<4y6qJyqfA`XExm&>wAS?3H{bU%XY zl{-Vo^00Tnox4($vbmOdhUC8jmoFtRO{iIQ8y?HiE3ys+a)B%rD2d-gQ60?d)qC;x zjd~efU>iKmtp8BG7GhJPqNYb_7+NebiWYm_0NWHcIci=azrmQU%;-fhbxPFa0WrgR zO~w3T?LlNwfPe}naV}XTCJc~K1MGx~P}O;fDl+x~%Dlu3;2h(46(kPKGkRH4(D`r= ziB~aT3;_v*vEN*4yqXY^opL+s#*H2l9226KZCEcsaVIEZEPBAi=wdVq zDu^K`k%-vtTb0_~d1b4{1zRoN@EaOtSg(6jG=*@29$LI1$xe%IxdG9Hme%12Il5dM zG+!s>u}aJlx=2o5qzZzIwpGPK7;1-o4I6n$B2Lx7?`wR;!d&YKc}u8%~*zi4E$c6~$eNfcB9 zE!g`7!@IxkIRsz4aHi|Z=o%0@W(*7;GX@2t58G`T9fnxZ6{kl)yipbSQMlkRwM3 zRyZrOJJg-L8L~p924#-vZXm*aZQfDjfK=plU^G7Z(_{#b)PWDv&l(sB$3IB0jAnOX;vn0Ov$Cd(7d zl)?BEeof>()kK}tJvEJm$=~Wz;X)d02VkfW;|GR&WBiDrR_MmjR}2++98d3Ykkuoo zG3gK?)#II>N1d=;1du(1)ffzk(Q#!XMg|)(3ZZ}@I9jx2Oz5x~OGujioq8L`@ixYF zh2R7r+sxb&3E?e~cy-?@w0dWFbm}GwRaN~eHiiB$bmaWj!gqz!H!U$so74{(ZOcqHAD&$hX!w70r*k6$FdhJVD3KfGDa-H-FOF8z+ z3h_OH7|UPO6jE*w@n^9Cl-PYj|4()OVl>ANBC=!wZMI;tPN6$`1abQRISE0OBK%LCW(05vo}T`h3c?-R)nakBCV(61qB z?YR69d6~fxlV z=e;cXc}kA$-OFO^NnncK0|o2Sk&8LZlC`z4s+8OP0yhbDIw0Gg1kv0e$2tlOlsC*We$wuvE{bA5y z7G1_-%I$+$lD76DX;L~LhD>A84>0Cqy)s$!7S?w;i`&BDmmg&@#~7Jx*~f-aqSfTG zM5-_soQb7cbS~N}L5n)g>_1?ReWb13KA$=4(}Dj64@<;oTQ@Idjwez462(|;JBl&( z!=kl62Pj#)k3fDFyOu?3j*G0feIQGGjm@L_(%A}1&mu&OpxZM%m8h#S6z z#q4E0?cZV1RWyFb?PKxftT+0~3YPQ(mgr{_GudbomAaG-*unazv)*NFupuhZwwfY1 z)n3cgO8aWYw0`!fNA@1sdxoixXES!mz6`m&*(|n!28h_@thbLPy~am_<@N@+qz6m& zvA$2Seg_#tRPD=V_DjsMmL;5H(U=UDpJ6@DP(P1HF6LwA_#0E7gJ1+W9N<{H_sCJk zKGyS0{SkAFX6nZ?K~W~5_CynjJ<*`i&{}r;lfs32n0+0@9YI}3n0>vGjb4W-REtiB zyfbj0#da8H?J!HVApj}tmmfJ}&%pm9=;tSAhm+Zf%&`wNiTKZHG{;otunbCM%x@OR zDMwKY?Gde6%HW^50uYC;k8vrFrHk@FN=n&$B$iwj?e88Q`yd+xY%ZHas+NX!|=XrJVJc z$`bNe+*FpT&CV6wqg0GcJFwnZzX#^LqPVmH6b$7g-e$juMB``1&$c}PL>$1$L8nM6 zM%lOE9D^TCTCA}Ih~wFKB1q)8WUQDi)*hJsY|Aut?0D3al%kW>oJ=R69c7a zt(!xs$S+q?jT}SmhPkBI7&c4@-2p;er0<5juB%mb9`)1{P+dY z^&U~tjhJO{h{-I8(;NLB!_EJ>evmYXdTLxAOWVih$7=Anna!(z)>@;z94xo83yQ_d17w_f*G64uV#UxV6MQX5OlW61~M1o(@_a;Pp> zNzz}m7zp|++QZ_=U+51BPm6h&=EeAO^r$DvaS0ex9NP7$QPn26XpNq38JO6>5}_SkFhxkQ%*UXa)!+*Wy#nF>|UMDw_cspCqm?sz z9t(nZuPS3L_7LnjokR$Z(1CkrVntQP1|4Jrma<5{*!E))z8viyvg>E;W-L!~SUlqB zU^YuS!cxI=ko7vqQVz172U*{P`ohY-9IK`VtjmU>Voa;U&X|%jEEWrW3|h;v9%E-& z&mX`C{KCO|*eTMUaw^hp_msG+B`z4yg%G}%v_3@}MSh~)qUA81SRY*V(C<(8U=dF; zXT=>%UBL!qUSuqQbq3$v@My%8P630M$Oj2!Z?>IgakjOG8SB8p&tcz3OD|_0#+N5q z6z06Vj}eCndsw9Qopja*lh;(1m=93&X_h#WsR3+=DlnPar|JK&DE-)?!J_-1+`qSv z;erS~i7xE>7um;8<$$TT6M}Dv^_y?nVBC<$KEO|l%IIax=3@!VSmYL3(qL9((G{$p zMjK)uOQ%H+o4tqi@bgWcdi^+N>ttAV+8@I2e7PI=;tPvsi~{?_B2I2!IV|!A_5qmi zhHquFa#;*Eh!6zVl~LeejhBQ?$8COgH&$=`d~9+qTa?Rgn98E3F*OfW9b@^T624yY z(Pk0?24g$v$z_gQX7h`I!Y8(gL{N^98^=;EvBYf*gI?4amR!#gKVy-%Gp_v+#xGR( z#0m-=<)1Tk`8XCySF^@37ZQ8oIMx^G!EvkyB{O;QE8Ze=D{EF2RW6|Sw7Y9-YvdP5 z@Ek+%LnfxLmCW+j*5ZQ}^qqtGMO9v9$^3bXmlZCVH-9mHw<1K{=&i-K1-L+E?))XL zSy>b1OG#X5RX)6heOj5f8Z^Zy7S$G)Pg_4}0zN|GN-J}vl@`@)s4gzAt*Nf@*QNQZ z@k0NSG#`EQp$^D8Us3Vuv^BLgKD_+DrZ%n42SVZ!h~mnkx^f*&FVasdEiN^cmBPZR zqPo?E_?kswUC~;6MuLCm!ChUVkUiq%^mWQwu0KJ*fEUCobza|+HHyh{`85Z8tEH%R zcFnqKX}EY1{Ve+Efl^9ew$OR-84P?6VvJGHB6 zRruzDzy_--^c9tH>*vTXR_Ho&k$}NVB%v_)g&NW1ixw|fm^0U1xLCnwF1$P-AeFn7 zds$R8tERfR(qG~wX=cfJ71iGP{;E~pTBQ=%Li%Y-CAB3#1&y2yzS^1%(&TygEQli5 z7L=06I_Vx_kXqskCG+H`bf8W}8FVX@$dH)E7gof_d3cQ_{8J#hhN8W)Ou;RzAs^vu z7KjPXy3kwauk@J!N=OYRgF>2*e-6WNry&I2$O!rDPbiuAh=!R!G8UJ6i&xJpHEf<) zQ&TClUF55UGu-sO8fl69h9x<9g^L#$c>YltiJZI8owL}zuyC;_XTBhqSGSd9^ z%ktcX7&IoKqZF0ZNfqYgEy!71IB!wmd|d_DAndFY%`IZ@3NiRC9q-CHb#>la-^>aG z1}`rXfjI|ZEC2TSESJdp_;M9Cl$yvA%p|W^EAV{q@Zi^1=ns5Y z7heP6S!wlxB{TEfd_dCmlP$DpO;It1s&MDcL~LxJ(Bk@{YC%DvYKjUm6w@$6V}B`+ zMPt^Kjy1UkJ(>48rKDnQMIGkjYJXKBz70d42a-X^Bc)D!7)n$rW+ain!Cz6lT7D2p zS>vlMgrSP)s@=B{bvCY0XuqOKT_P6c=j7#uj159zuE-+#m=MO8ifVlShqP2y;agXA zylVQfTS#LpDxB?>ZW1Eqif?c&sLjKthh)Fgz0Z~6JxN%GK$AnWX-t8Z=>FA+UsR>{ zDE_&nZmj~j-VGoQA5#l6alyhuK1>?2@-Ta%&8qoohvf6#!!1|pc;p+Te3%sGQYcF~ z+=`p#E%wZl<0|S6?X`N3G6Z2EW>OL*<5O4$35Ir&H+5#&lSx(Kei7pOLdO)BA|@#~ zM2C=0fOCxAgS-q*=nEBu#kz;-`(AYwx65HwG^J>^khnC(HRl(RtqXxv@eMAeRID_F z@AR3-XbM`|$Q6Tv&qUFe&I~^+2#&<`i8TQ?MW>-oFqrrZgZ2rFM5#Vk(cHI8Hoy}Y z>7)^10_8|Yx|$j$&x<7&rxe54lKI!qUvN_}5N0C$SJNuUTV3WWSBk~*x)9$TL;o)= zmApC^h5{^^3Vk(&YiJ@foPf`+iF`gf5j}z|suZz~MNnZ$MH!zIrOr8X7hPpmk}G-M zLRT2B;8Sjeb@-+dB1(J?tZu`^T zQenP?)wHfPbmA*VZv1R-X%SY9yf6BzF@o?3M2=g!rnJ_=?u5&pwIIJBXW_g>3+AKA zeC4%Xc)n6@U8rY@nL)wwk?$tDb*1RnCG-hF{_QzFeDVb*t-NU!F4&9(7|p_R$}mM+ zH?~r|V3_Cz12526VvLxxXs=U>;RaJ$31*C{qDt9jypf~~W75Z@EkRU;F)D?6dX^_= zq2Xh>NaAME$n3*HxUdjYXz}F96o2R=-s+OVHR6khVnJ<`&}rt;XX+H*u}Uet*X85G zo_vtQ1_Iv>Bb;|_1vaLI6+Um3+>^}p`|1i&H4Q#>OX?7re0wHFiUoe(f>NoM*tO~8 zb85ZbIruPQrCH2euMdHa7Oulm&WwPF`QCMA$+PhNG_l1Fm5a^nf>O8|J3TzZEEjdP zHJB_y>8So3Eb2|lV(E@gAtD6BNV#RRim(JiS1~hylz$X5R5B+g@n%x}Lzkg0ljg6+5#`vY)m>EX-&Ro`LHuh4`i=1}6Xd zw6bb{24+Tsk|=Rnu_VCJg-K~2R~__iZ?B7^53 z>VH*NLxN}$-U`LVS2k}}mfrLVX9@8m^e^$2LjP|&aN$+4DxYMT7fw`AojaC$w zB*4>x-O|$!EG8;e)3kc~)#}fRhN)O|G z-5iM1o%kd9`uoCl_;zGeymecD|F;hRDKg#JdlYbzqd!JCQZl?M;o&bueOtoAU!r<7l!G-Iii=w5WW6-ummY*v4ra{1H(@+`B5U_aSKIRm&4y!3_1GSzwnD0 zer%KU`U}7!B>a8}&z5rZdg)htq|ZtT*IzKiZ-xL~FX8&nn~qER776bw<)4!9Qxc9R zXZgWzIzW!``Ys7~(0vHNl|=$T{eg~T3D@7(1qyx)mT>*;TviFslyLoBT+tFfRl>8S z{3Hp#QNoqQ0zl7c(@`qn`fIH4(;9xl4buebXH60X0@O85WIB|KZw>u`FtG})`a z(n^=}Cg9XB^k)-)F6;eJ((AwP*6sa7!u4N+>+r86T>tI34!0wKN&b*QLhuSHzn_GM z{}6tXgoppoeu0FC|9HPv!o%MWK(D{0dc)sHa6rO`qzOgz*KHgHoW>>n#az1oFM_PQ ze%%iG?%*e-oR+(Ue0#k}&vAG!B~F%g`4ED7dnqYl@T-l(iJU%3X^3Ho?g@c)%|bs=_LRroZtf>`K8tu#T)&`NBv9;Q>P!BCjV+?eeBoRo`*>_$1~P$D_}ktByy9Zhvq*KBfI<$D^}=e*u?%o(c8; zAbx;8jG9IdCzFEj+h6hh9jyN$myaH-9#Nc9P5ijaM;AXs$FDqOvUJ3BX^(t<;PTN| z-D{4==Xieud_UHQOC!r4(@DeIiXW)%8`&|(@maXYdinqlbdK9gok| zf6DRb#c$g2=r-bn;#SA<`<%;1?{QB6m-!aw|1&NhJ=I-uJbKvq8Su%nKu^B`T&|<+ zq1ExXG@o&WcSL^Qfr{%XCB&bv^k;NL{viy6hj10aj4ggksTBNClXT6xGwz% zxb$0mCBl1-$H&(1#0}VP>*xK7PgKzn zF7&thy?SbQiFAIjHb`AD7D(8<+T5wmi}_0GU0hw=fl6_NZHU2EOH_7mcG=IeJvue| zu%w&3*a1yLvW-hCm%M@FWDGXmjGgnH_L9-XxxDeN`_%xH7o2b)emCdo~#$9 ztkzKK<)s?^8BwWYab^$B>86yDm2^{)%sK`08m*0zq?xjmwzk-O?ilW|du_Yn#ddii z#~taEPCPn0e>@#Ob1bDQ9sA0e+4;^Ku27ijrQ@gk?5SgqR_WyFvqxbsboRuF$Bx5_ zWfsN}soeT5*$vKt#!?0oq(xjiK{a#obm!4Cd$LMbF;OsHPVqVVwc7msk1Pjnx$`Heohv?1+g)-B9IYCWmI>VOP9Lp z@=_XLm0i)$F)G%w1Iw0Xso(2@fGY+?c^$A3T32h@_zWnGm@-WjTbHewioS3fLkNqa zfYSa(SM9Nr){~eLYF3$+R=$yhpU=H9J`|DLx29OXb2e`XV|_knl7~MKqV3)xO*L*= zI@ZpHg0cE%%Bkt9eCg@5XgEHVD6afs)`)$Sn{AF)y_k%?p5xaOLu?b+`n6$-^xYE%)T|8U(?xYB!_zer>cuS&8=$eKZ??P)|6%# zR@uTtxfpzskSQ$=Vb&}CW`?ds4cok`TVl2PQOl?CM4^dcl_@yJ)B@jwag40tO<7gt zi?wWwF?s_=Kdq&s3f7&4s9tioMoWG>H|g`cjZdaKLDDe&MxL{zsMnjf>!o* z5c8qG48s9kPI(_WzL-L>G^o}>+D5@Lk?e{^S2_8c($aQU7AIKRKGo07k~Kr`9<6q! zRT90Ly*EJ9cD*$Qp~V$z+GfkMnN64rE$v|%w<)f3*gC#FM}(ZO>fz2ROw|$NI@NfE zDJ3vBs(KBU>ou6y8aC`3uvFbCAZ2eqGw3-qd$a??_vK2(S76v))xDiH6k##AWjzC9 z^&w2%TL%f}Hv1R4qTs0w*eTa?-(A&6*2}O5(8RF6RMlHTh}Uuh59xLNjjH=Ae#^en zLvB2>JnY`xG?+$F-PHjyGj&{xRSi=uA+mw>7cVYDvb(m7e;9r^SUbPYba!zPrWHI= z%NdtK50)@4@J;`Z^nN1olP7;^{cl)xmv6)}{&>i|y^DfZP2jxz_oe<}*JnHx^!dM$ zuy`yf^;cYH=HX&?EfclQr2!$owut9RKg*WT`*tdWvR0MPs~`}n^cC$@&M`I z;Uo2@K6y08!vB^bmj5FWbXR1k@>~Tu75)shrn)Rxg5uz;+%+3pYKT@t&0}gqu&h&R|$*{ zy1t>!_m8~%8x5o>>Jh$w5B+b;!iw<9A&dDP^&j3t{|nzWjXSX4T!yGWw}*b`Wz%}j z`4Z+4_0PI~?7!c>ZW>SfdJy%Qk2v|3bky&>X&TRk>yLV697I&{_t#ASx?CIx_u_L5 rAI=|H%OyznaPBDJUstYM;)49R7J=mwlIHEE|Ixpg#MgsDIIR8$K~CBk 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 From 4375112d6cdfb25f577586081f0ca82606bbf35b Mon Sep 17 00:00:00 2001 From: Shivam Chaudhary Date: Fri, 27 Jan 2023 11:13:51 +0100 Subject: [PATCH 21/38] Remove unnecessary and duplicate files/folders --- tests/build/test/cache/defines_dependency.yml | 3 - tests/build/test/cache/input.yml | 242 ------------------ tests/build/test/cache/test_LoginCustomer.c | 87 ------- tests/build/test/dependencies/LoginCustomer.d | 3 - tests/build/test/dependencies/cmock.d | 6 - .../test/dependencies/test_LoginCustomer.d | 4 - .../dependencies/test_LoginCustomer_runner.d | 4 - tests/build/test/dependencies/unity.d | 4 - tests/build/test/out/c/LoginCustomer.o | Bin 3008 -> 0 bytes tests/build/test/out/c/cmock.o | Bin 8152 -> 0 bytes tests/build/test/out/c/test_LoginCustomer.o | Bin 4140 -> 0 bytes .../test/out/c/test_LoginCustomer_runner.o | Bin 6640 -> 0 bytes tests/build/test/out/c/unity.o | Bin 39856 -> 0 bytes tests/build/test/out/test_LoginCustomer.out | Bin 56560 -> 0 bytes .../preprocess/files/test_LoginCustomer.c | 87 ------- .../preprocess/includes/test_LoginCustomer.c | 3 - .../test/results/test_LoginCustomer.pass | 18 -- .../test/runners/test_LoginCustomer_runner.c | 81 ------ tests/project.yml | 101 -------- tests/test/support/.gitkeep | 0 tests/{test => }/test_LoginCustomer.c | 0 21 files changed, 643 deletions(-) delete mode 100644 tests/build/test/cache/defines_dependency.yml delete mode 100644 tests/build/test/cache/input.yml delete mode 100644 tests/build/test/cache/test_LoginCustomer.c delete mode 100644 tests/build/test/dependencies/LoginCustomer.d delete mode 100644 tests/build/test/dependencies/cmock.d delete mode 100644 tests/build/test/dependencies/test_LoginCustomer.d delete mode 100644 tests/build/test/dependencies/test_LoginCustomer_runner.d delete mode 100644 tests/build/test/dependencies/unity.d delete mode 100644 tests/build/test/out/c/LoginCustomer.o delete mode 100644 tests/build/test/out/c/cmock.o delete mode 100644 tests/build/test/out/c/test_LoginCustomer.o delete mode 100644 tests/build/test/out/c/test_LoginCustomer_runner.o delete mode 100644 tests/build/test/out/c/unity.o delete mode 100755 tests/build/test/out/test_LoginCustomer.out delete mode 100644 tests/build/test/preprocess/files/test_LoginCustomer.c delete mode 100644 tests/build/test/preprocess/includes/test_LoginCustomer.c delete mode 100644 tests/build/test/results/test_LoginCustomer.pass delete mode 100644 tests/build/test/runners/test_LoginCustomer_runner.c delete mode 100644 tests/project.yml delete mode 100644 tests/test/support/.gitkeep rename tests/{test => }/test_LoginCustomer.c (100%) diff --git a/tests/build/test/cache/defines_dependency.yml b/tests/build/test/cache/defines_dependency.yml deleted file mode 100644 index 9f4fffc..0000000 --- a/tests/build/test/cache/defines_dependency.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -"/home/julius/Documents/Studium/Informatik/1. Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.c": -- TEST diff --git a/tests/build/test/cache/input.yml b/tests/build/test/cache/input.yml deleted file mode 100644 index fb9e794..0000000 --- a/tests/build/test/cache/input.yml +++ /dev/null @@ -1,242 +0,0 @@ ---- -: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: - - "+:test/**" - - "-:test/support" - :source: - - "/home/julius/Documents/Studium/Informatik/1. Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/**" - :support: - - test/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/2.7.0/gems/ceedling-0.31.1/vendor" - :defines: [] -:cmock: - :vendor_path: "/var/lib/gems/2.7.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/2.7.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/2.7.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/2.7.0/gems/ceedling-0.31.1/lib/../plugins/stdout_pretty_tests_report" - :module_generator_path: "/var/lib/gems/2.7.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/tests/build/test/cache/test_LoginCustomer.c b/tests/build/test/cache/test_LoginCustomer.c deleted file mode 100644 index 28f8ec8..0000000 --- a/tests/build/test/cache/test_LoginCustomer.c +++ /dev/null @@ -1,87 +0,0 @@ -#include "Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.h" -#include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" -void setUp(){}; - -void tearDown(){}; - -void test_checkLogin() - -{ - - - - - -_Bool - - expected_test_values_compute_to_true[] = {4==4, - - 1 - - == - - 1 - - , 1==1, - - 0 - - == - - 0 - - , 'z'=='z', '='=='=',0x1A==0x1A}; - - int length_1 = sizeof(expected_test_values_compute_to_true)/sizeof( - - _Bool - - ); - - - - - -_Bool - - expected_test_values_compute_to_false[] = {4!=4, - - 1 - - == - - 0 - - ,1==0, - - 0 - - == - - 1 - - ,'z'=='x','!'==')',0x1A==0x2B}; - - int length_2 = sizeof(expected_test_values_compute_to_false)/sizeof( - - _Bool - - ); - - - - - - for(int i=0;i<7;++i) { - - do {if ((checkLogin(expected_test_values_compute_to_true[i]))) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(16)));}} while(0); - - } - - for(int i=0;i<7;++i){ - - do {if (!(checkLogin(expected_test_values_compute_to_false[i]))) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(19)));}} while(0); - - } - -} diff --git a/tests/build/test/dependencies/LoginCustomer.d b/tests/build/test/dependencies/LoginCustomer.d deleted file mode 100644 index 45e2415..0000000 --- a/tests/build/test/dependencies/LoginCustomer.d +++ /dev/null @@ -1,3 +0,0 @@ -build/test/out/c/LoginCustomer.o: \ - /home/julius/Documents/Studium/Informatik/1.\ Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.c \ - /home/julius/Documents/Studium/Informatik/1.\ Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.h diff --git a/tests/build/test/dependencies/cmock.d b/tests/build/test/dependencies/cmock.d deleted file mode 100644 index 82b64c9..0000000 --- a/tests/build/test/dependencies/cmock.d +++ /dev/null @@ -1,6 +0,0 @@ -build/test/out/c/cmock.o: \ - /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.c \ - /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.h \ - /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock_internals.h \ - /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ - /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/tests/build/test/dependencies/test_LoginCustomer.d b/tests/build/test/dependencies/test_LoginCustomer.d deleted file mode 100644 index 1a634fe..0000000 --- a/tests/build/test/dependencies/test_LoginCustomer.d +++ /dev/null @@ -1,4 +0,0 @@ -build/test/out/c/test_LoginCustomer.o: test/test_LoginCustomer.c \ - /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ - /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ - /home/julius/Documents/Studium/Informatik/1.\ Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.h diff --git a/tests/build/test/dependencies/test_LoginCustomer_runner.d b/tests/build/test/dependencies/test_LoginCustomer_runner.d deleted file mode 100644 index 1649170..0000000 --- a/tests/build/test/dependencies/test_LoginCustomer_runner.d +++ /dev/null @@ -1,4 +0,0 @@ -build/test/out/c/test_LoginCustomer_runner.o: \ - build/test/runners/test_LoginCustomer_runner.c \ - /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ - /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/tests/build/test/dependencies/unity.d b/tests/build/test/dependencies/unity.d deleted file mode 100644 index 02f2997..0000000 --- a/tests/build/test/dependencies/unity.d +++ /dev/null @@ -1,4 +0,0 @@ -build/test/out/c/unity.o: \ - /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.c \ - /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ - /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/tests/build/test/out/c/LoginCustomer.o b/tests/build/test/out/c/LoginCustomer.o deleted file mode 100644 index 82cb77b53f1898426f37bd91e324cb4ef976af5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3008 zcmcgu%WoS+7@yhoi#m0iq%93WVyRLQM7_2n6iR6zab835f z-iEDfxOI8^W@2RfTlgfRJPH0O0{U)17>*Q-of4=d(mAjSPc6bl;h8A{C2bNU(wRt^ zx)v#ucL8c5*>nP?WRjFY$)q2OJd-Pc#9Mgqbn0PP4rB1!$v+8{)K>r^vhdp^rAp+h z93x)&013Hr85+j>`N`a1R?Q9P`uRZW@Pjaqux$2Os8C(7Xj4LG&kd=$GudadPiM(> z^7u#PA;ywA@9G~LS{U53@j;YLG8wZls2oQ@nv#Mcn?;=L4)I@NsO)__Ilq@Xh-dWv zX!Zr$ZCiz_VXGPXg&Efj+m;jfh2uO%tNwnf63;{Peh%Z)o{d!{2mF+jAW^ z^z)(fYSXFb1Ebcmd@&n(zifVb`iwR@W7V35BTD4QAMY)Ot$YN7h+jX?_-h$H+?Pmf zVN26tpg|PjR4#KvDIZK;{1F}<-C1Fy6V9Z)(y^2766rymyQjm)pLEJ4CD`3v$rGyL zC`z5$lSO6GwIj{&r<<`$Dob|-a4LJCM?TOa_w~rQWMZU7_gGhbhAC?9f@$jSW_vuPm0Q zD%Higx#iiF>dI8PGFxTlzidP5l7fP?`U6;!CghVsrmk{0k)5Muv}(em0&&mc@@DK& zLbP~P=nDeJ1x^T@5qM7Ed4X31HUv5XeSy~rQHMTVRR5NcKNIpd0;BojK|Lh@PXuZ} z1@ff8D}=O#bbqsr^8*aL4%(9Qtd<^F8v)bnIJr!(`96yj`agGHr+~Uu3merYZhVAA zyiu!p)-@Kh8lK@aaA0GqR@1R$0O~W{bldbXV7lW5mX6yZ?+1pt)`_v~>Z)h75z+A6 za2?C|zw`qf<2#rBFX&eTU&N?qbXI9Rf=wwX_!xjQG@RSej zj&f0c+D{atVi4IK*n7%+Pe4Qd|K(SN55=UY2#E50;S)}NH7YW zB^l(z2$FJ2qlf*-vTNivMib9^1^SO@*2(K=}Vk{_*$^2%Ib*&i?z np``B`-N@ue{iIxSPl074c)xXG1j+eP?zrC;>i#61fYR?Tlt#Mv diff --git a/tests/build/test/out/c/cmock.o b/tests/build/test/out/c/cmock.o deleted file mode 100644 index 162be594be8e993b0d9cd86d186661c8be1c8c4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8152 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 Cqqzc3qmQSrGh+|D&i%T%y(w) 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 Y>2T~z=gTadbQ6Dxf77Fp!0E^T3A7N^asU7T diff --git a/tests/build/test/preprocess/files/test_LoginCustomer.c b/tests/build/test/preprocess/files/test_LoginCustomer.c deleted file mode 100644 index 28f8ec8..0000000 --- a/tests/build/test/preprocess/files/test_LoginCustomer.c +++ /dev/null @@ -1,87 +0,0 @@ -#include "Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.h" -#include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" -void setUp(){}; - -void tearDown(){}; - -void test_checkLogin() - -{ - - - - - -_Bool - - expected_test_values_compute_to_true[] = {4==4, - - 1 - - == - - 1 - - , 1==1, - - 0 - - == - - 0 - - , 'z'=='z', '='=='=',0x1A==0x1A}; - - int length_1 = sizeof(expected_test_values_compute_to_true)/sizeof( - - _Bool - - ); - - - - - -_Bool - - expected_test_values_compute_to_false[] = {4!=4, - - 1 - - == - - 0 - - ,1==0, - - 0 - - == - - 1 - - ,'z'=='x','!'==')',0x1A==0x2B}; - - int length_2 = sizeof(expected_test_values_compute_to_false)/sizeof( - - _Bool - - ); - - - - - - for(int i=0;i<7;++i) { - - do {if ((checkLogin(expected_test_values_compute_to_true[i]))) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(16)));}} while(0); - - } - - for(int i=0;i<7;++i){ - - do {if (!(checkLogin(expected_test_values_compute_to_false[i]))) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(19)));}} while(0); - - } - -} diff --git a/tests/build/test/preprocess/includes/test_LoginCustomer.c b/tests/build/test/preprocess/includes/test_LoginCustomer.c deleted file mode 100644 index 8d24aa9..0000000 --- a/tests/build/test/preprocess/includes/test_LoginCustomer.c +++ /dev/null @@ -1,3 +0,0 @@ ---- -- "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" -- Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.h diff --git a/tests/build/test/results/test_LoginCustomer.pass b/tests/build/test/results/test_LoginCustomer.pass deleted file mode 100644 index 730ed0b..0000000 --- a/tests/build/test/results/test_LoginCustomer.pass +++ /dev/null @@ -1,18 +0,0 @@ ---- -:source: - :path: test - :file: test_LoginCustomer.c -:successes: -- :test: test_checkLogin - :line: 5 - :message: '' - :unity_test_time: 0 -:failures: [] -:ignores: [] -:counts: - :total: 1 - :passed: 1 - :failed: 0 - :ignored: 0 -:stdout: [] -:time: 0.001912861000164412 diff --git a/tests/build/test/runners/test_LoginCustomer_runner.c b/tests/build/test/runners/test_LoginCustomer_runner.c deleted file mode 100644 index f061ca9..0000000 --- a/tests/build/test/runners/test_LoginCustomer_runner.c +++ /dev/null @@ -1,81 +0,0 @@ -/* 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_checkLogin(); - - -/*=======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_LoginCustomer.c"); - run_test(test_checkLogin, "test_checkLogin", 5); - - return UnityEnd(); -} diff --git a/tests/project.yml b/tests/project.yml deleted file mode 100644 index 7245e5e..0000000 --- a/tests/project.yml +++ /dev/null @@ -1,101 +0,0 @@ ---- - -# 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: - - +:test/** - - -:test/support - :source: - - /home/julius/Documents/Studium/Informatik/1. Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/** - :support: - - test/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/test/support/.gitkeep b/tests/test/support/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/tests/test/test_LoginCustomer.c b/tests/test_LoginCustomer.c similarity index 100% rename from tests/test/test_LoginCustomer.c rename to tests/test_LoginCustomer.c From 2349682970fe5bd7e11905fdf8030ef8761458be Mon Sep 17 00:00:00 2001 From: Shivam Chaudhary Date: Fri, 27 Jan 2023 12:02:39 +0100 Subject: [PATCH 22/38] Create file with function getAvailableAccountBalance --- src/currentCustomerAccountBalance.c | 45 +++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/currentCustomerAccountBalance.c diff --git a/src/currentCustomerAccountBalance.c b/src/currentCustomerAccountBalance.c new file mode 100644 index 0000000..f11ea54 --- /dev/null +++ b/src/currentCustomerAccountBalance.c @@ -0,0 +1,45 @@ +#include "currentCustomerAccountBalance.h" + +float getAvailableAccountBalance(int user_id) { + bool keep_reading = true; + float balance = 0; + + char buffer[MAX_LENGTH]; + char stringID[MAX_LENGTH] = "ID="; + char user_id_as_string[MAX_LENGTH]; + char balance_String[MAX_LENGTH]; + + sprintf(user_id_as_string, "%d", user_id); + strcat(stringID, user_id_as_string); + + FILE *file = fopen("CustomerData.txt", "r"); + + while(keep_reading) { + fgets(buffer, MAX_LENGTH, file); + if (feof(file)) { + keep_reading = false; + } + else if(strstr(buffer, stringID)) { + fgets(buffer, MAX_LENGTH, file); + fgets(buffer, MAX_LENGTH, file); + fgets(buffer, MAX_LENGTH, file); + fgets(buffer, MAX_LENGTH, file); + strcpy(balance_String, buffer); + + char *token = strtok(balance_String, "="); + while (token != NULL) { + if (atoi(token) != 0) { + balance = atof(token); + break; + } + token = strtok(NULL, "="); + } + keep_reading = false; + } + + } + fclose(file); + + return balance; + +} \ No newline at end of file From 8d0693c329ba5b76e9d30a292e1b81c350e6edf1 Mon Sep 17 00:00:00 2001 From: Shivam Chaudhary Date: Fri, 27 Jan 2023 12:03:06 +0100 Subject: [PATCH 23/38] Create currentCustomerAccountBalance.h --- src/currentCustomerAccountBalance.h | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/currentCustomerAccountBalance.h diff --git a/src/currentCustomerAccountBalance.h b/src/currentCustomerAccountBalance.h new file mode 100644 index 0000000..76725fe --- /dev/null +++ b/src/currentCustomerAccountBalance.h @@ -0,0 +1,7 @@ +#include +#include +#include +#include + +#define MAX_LENGTH 100 +float getAvailableAccountBalance(int user_id); \ No newline at end of file From 73cd6f96219d7366e073ad760b92c586c68c08dc Mon Sep 17 00:00:00 2001 From: Shivam Chaudhary Date: Fri, 27 Jan 2023 12:20:03 +0100 Subject: [PATCH 24/38] Create function fetchBalanceFromBalanceString --- src/currentCustomerAccountBalance.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/currentCustomerAccountBalance.c b/src/currentCustomerAccountBalance.c index f11ea54..1f87d76 100644 --- a/src/currentCustomerAccountBalance.c +++ b/src/currentCustomerAccountBalance.c @@ -1,15 +1,28 @@ #include "currentCustomerAccountBalance.h" +float fetchBalanceFromBalanceString(char balance_String[MAX_LENGTH]) { + float balance = 0; + char *token = strtok(balance_String, "="); // separates string to two parts + while (token != NULL) { + if (atoi(token) != 0) { + balance = atof(token); // converts string to float + break; + } + token = strtok(NULL, "="); + } + return balance; +} + float getAvailableAccountBalance(int user_id) { bool keep_reading = true; - float balance = 0; + float availableBalance = 0; char buffer[MAX_LENGTH]; char stringID[MAX_LENGTH] = "ID="; char user_id_as_string[MAX_LENGTH]; char balance_String[MAX_LENGTH]; - sprintf(user_id_as_string, "%d", user_id); + sprintf(user_id_as_string, "%d", user_id); // converts user_id to string strcat(stringID, user_id_as_string); FILE *file = fopen("CustomerData.txt", "r"); @@ -25,21 +38,13 @@ float getAvailableAccountBalance(int user_id) { fgets(buffer, MAX_LENGTH, file); fgets(buffer, MAX_LENGTH, file); strcpy(balance_String, buffer); - - char *token = strtok(balance_String, "="); - while (token != NULL) { - if (atoi(token) != 0) { - balance = atof(token); - break; - } - token = strtok(NULL, "="); - } + availableBalance = fetchBalanceFromBalanceString(balance_String); keep_reading = false; } } fclose(file); - return balance; + return availableBalance; } \ No newline at end of file From 0abe0442747c81de05a334b05718c627ec552457 Mon Sep 17 00:00:00 2001 From: Shivam Chaudhary Date: Fri, 27 Jan 2023 15:54:10 +0100 Subject: [PATCH 25/38] Refactoring: add function for making code readable --- src/currentCustomerAccountBalance.c | 36 ++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/src/currentCustomerAccountBalance.c b/src/currentCustomerAccountBalance.c index 1f87d76..9d2e365 100644 --- a/src/currentCustomerAccountBalance.c +++ b/src/currentCustomerAccountBalance.c @@ -13,20 +13,12 @@ float fetchBalanceFromBalanceString(char balance_String[MAX_LENGTH]) { return balance; } -float getAvailableAccountBalance(int user_id) { +float readFileAndGetAvailableBalance(FILE *file, char stringID[MAX_LENGTH]) { + float balance = 0; bool keep_reading = true; - float availableBalance = 0; - char buffer[MAX_LENGTH]; - char stringID[MAX_LENGTH] = "ID="; - char user_id_as_string[MAX_LENGTH]; char balance_String[MAX_LENGTH]; - sprintf(user_id_as_string, "%d", user_id); // converts user_id to string - strcat(stringID, user_id_as_string); - - FILE *file = fopen("CustomerData.txt", "r"); - while(keep_reading) { fgets(buffer, MAX_LENGTH, file); if (feof(file)) { @@ -38,11 +30,33 @@ float getAvailableAccountBalance(int user_id) { fgets(buffer, MAX_LENGTH, file); fgets(buffer, MAX_LENGTH, file); strcpy(balance_String, buffer); - availableBalance = fetchBalanceFromBalanceString(balance_String); + balance = fetchBalanceFromBalanceString(balance_String); keep_reading = false; } } + return balance; +} + +float getAvailableAccountBalance(int user_id) { + float availableBalance = 0; + char stringID[MAX_LENGTH] = "ID="; + char user_id_as_string[MAX_LENGTH]; + + sprintf(user_id_as_string, "%d", user_id); // converts user_id to string + strcat(stringID, user_id_as_string); + // Now stringID is "ID=user_id" + + FILE *file = fopen("CustomerData.txt", "r"); + if(file == 0) { + printf("Erro: file cannot be opened!"); + return 0; + } + else { + availableBalance = readFileAndGetAvailableBalance(file, stringID); + } + + fclose(file); return availableBalance; From 54ca0a053d09bac8fecef8e5f63426cc113ad7b2 Mon Sep 17 00:00:00 2001 From: fdlt3817 Date: Fri, 27 Jan 2023 16:14:46 +0100 Subject: [PATCH 26/38] Line delete function --- src/CustomerData.txt | 7 +-- src/TempData.txt | 5 ++ src/a.exe | Bin 0 -> 269557 bytes src/updateCustomerAccountBalance.c | 95 +++++++++++++++++++++++++++++ src/updateCustomerAccountBalance.h | 9 +++ 5 files changed, 110 insertions(+), 6 deletions(-) create mode 100644 src/TempData.txt create mode 100644 src/a.exe create mode 100644 src/updateCustomerAccountBalance.c create mode 100644 src/updateCustomerAccountBalance.h diff --git a/src/CustomerData.txt b/src/CustomerData.txt index 3ac070f..782579a 100644 --- a/src/CustomerData.txt +++ b/src/CustomerData.txt @@ -1,6 +1 @@ -1234=example -ID=1234 -forename=Max -Surname=Mustermann -password=example -balance=0 +balance=500 \ No newline at end of file diff --git a/src/TempData.txt b/src/TempData.txt new file mode 100644 index 0000000..f81d5a8 --- /dev/null +++ b/src/TempData.txt @@ -0,0 +1,5 @@ +1234=example +ID=1234 +forename=Max +Surname=Mustermann +balance=0 diff --git a/src/a.exe b/src/a.exe new file mode 100644 index 0000000000000000000000000000000000000000..25d0c588eaca7bdbf95cbee6f46f9623fe60a8f9 GIT binary patch literal 269557 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

XP@11vk-?txH=`4yE&0~vtXR8>&J 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 +#include +#include +#include + +#define MAX_LENGTH 100 +bool updateAvailableAccountBalance(int user_id, float changeInBalance); +void deleteLineFromFile(int lineNumber); +void replaceBalanceInString(float replacementBalance, int currentLine); \ No newline at end of file From 59cc6670da4ea2223b859a518f4d99218a60db0b Mon Sep 17 00:00:00 2001 From: fdlt3817 Date: Fri, 27 Jan 2023 16:45:53 +0100 Subject: [PATCH 27/38] Functionality of the updateCustomerAccountBalance has been completed --- src/CustomerData.txt | 7 ++- src/TempData.txt | 5 -- src/a.exe | Bin 269557 -> 269211 bytes src/updateCustomerAccountBalance.c | 71 ++++++++++++++--------------- src/updateCustomerAccountBalance.h | 2 +- 5 files changed, 40 insertions(+), 45 deletions(-) delete mode 100644 src/TempData.txt diff --git a/src/CustomerData.txt b/src/CustomerData.txt index 782579a..05ec80e 100644 --- a/src/CustomerData.txt +++ b/src/CustomerData.txt @@ -1 +1,6 @@ -balance=500 \ No newline at end of file +1234=example +ID=1234 +forename=Max +Surname=Mustermann +password=example +balance=1000 \ No newline at end of file diff --git a/src/TempData.txt b/src/TempData.txt deleted file mode 100644 index f81d5a8..0000000 --- a/src/TempData.txt +++ /dev/null @@ -1,5 +0,0 @@ -1234=example -ID=1234 -forename=Max -Surname=Mustermann -balance=0 diff --git a/src/a.exe b/src/a.exe index 25d0c588eaca7bdbf95cbee6f46f9623fe60a8f9..4083994a33269e5e2e3ac93d883afcbc797f6ad3 100644 GIT binary patch delta 23329 zcmdUXd017|+xA{-a}W^Zs33wMhe1U}1XELU!1UDm_8Lno&*dBBc7~0T6mj;n#3V^F7aANAJ(b!^7JPFD^&_IGRy zW_75-8gymfDcu@$bk2hP0fkQ0o=RGS&h2Jy5H^$9R5VP=0_<-n|e+F;+R`;?KG$S6uw~&|Esxjuwg%DP#!jXCMY)r3Izjee(Yl|9EgS;uil$1iLUmt)=3%e+LA>o$*zC- zGy~6EWLURSD4jrQwOTq}y;;d|YipdX4vG92L?|qcQ4YJc;vXd`RUqz3N|Bo{zdu_g zpR2^~&AIm?9fatv;2fb+ zP*f>ne6GKO@2Gej+XL4KKF<{cG8%JP7iqbhd1dg7DX+B?1A z;B@{GFj0`q*+qt@D^#@|Lai`gB}Jb1Rq%NA=d)C1sb*6UDQg~Vey;N!VG~-aPqb+@ z#P3{#P@(GLxqK0DR-n0Xy&7_1zOXQ)pwe9Axl6T>eY`sNac%97e&(XFr7%>-FVa0s z13OO(7-m#QNFZ#yCy5NfX^4n1zandOy+9lUrkN8WzbA^SmZl+Kq1)Zjim(;gnu)$} z0&y(|>nlZTb;FP}Lb9zMO>+nqqn||YX#FJeXzi!p+#BZ?qxA*rG5sa;p=q&6u_0yAgzG>zokr@^tkaP?ouJbgoz4{W^uRPh65M~O z_|1Ki8bE^CeQ5=T258C&bpQ`6O>hsX)KZ_CFQUO%epK7JR!w}72<>?F5Rs;$vBtuD z5kG|0q5s};O?);cp=i6L>~7pidB=6_q|^D+#VEqZ3=0Da^K;Z>c%I4AG?x8^w8Eab zC_hIC!9{z7jC^)cZHkGtRhQjALkQ$gfQ36vm=f01cTf(XJk4ob>N)p^tDym<>+z|P)&gp{huwa?0 zMZC~-dwZEA9sUgCs9GfU5Kv6pQ>G~=i}iKQkPbv!?*rYv{Rd!muf%fqi@HpYbTSu4 zI++VRtCS)SU;a#i@{UJu7N^|x2x+|PxSAoylkP(4v|+9iu^IcgL|e&M;wux1_DSIVMh-G=W3`s0Q==3k<|qON`x z^*b50wYBd4kudGoHW&4{y83;=e*tyy`sXUlYZC99t4#3shY!ZXU?CD6!4MCS?g;!BD3m z1y{`lFBoe*&6T39EpZUMWb+-V->``uAk`y;clxhUT0KU1UoPVPIU@6^80Q%;^Xe55?%-8w)K zQg22jyo!A9hZ0ZW-2mGX(O^)ZY0Rp=%;I0Z7#=lo2icTm6i| z8&z|!qLHBN=PxPPoDEqk!vlnX8W_{2lXPc6H&?*XxbZsvkC zr>KIPwVpH13T1~KYpPP;TOcT%zMN$2h9u3|15K4p`jDl zV(r+EHl8+^P!lOUB)-HH{f{=W@*c@qKNcDc7NxH#!0Xn#>cAUUXt;us$YnVO#wlfi zDX4b^5c6rndJyqBZBX=5t>@L#m>e@PBCB7;D)8gB1l!@J$gKcUwVs!iuS~Bunm+I5i9Z|YJr?8On^Ut{%c>2Wh>yeQTtg_s1U{l62%OeIYXRM_B-NDZ@-g%V5hfHDL zDltR8Wmn4wJl~M9Kg&lB?IH8$hLx`#-k)*LDCOdaHlCM;O46_H6Agk6a5sPUtNR2) zrQ$Zy#6D2MMo#2ohbsjmC$aC9+ao)&o#h^*HZnePh_YvNb3S~Ca%OZF_KouQ=pf!= zh!XTdSLbbJVb18cZQHaL7+YH&H)g8LUl^dA93SM}6$_x)1kWV6cRcR?VurI=o5#C# z9H7*W@5J6wI!y>=$I7E8EOTIwm0Ob&+2Qi2DZ3eO*h_glbt0=S9~+&;TJ(5M_24Gx zQS?Zwq z{LUAB^8uEuzT^9j>pQmZn6cv(msuICPx;bW&aA~)aZ{0B>%M#v{0=L)XD;e6ElVV* z!~4qXvzN7Rg9^_oLA2vgs`XsG80MB?!N3@gI9t6Fhpi!T1A?9MdOcM}B$?PKB`s+< zdrkQusi*0tI1lI7X8Py#8kh+)?)iCQ6Do2`L#@{HO{GP08_!pSP{Cji^XUd?p7i5B ztXa#H@yXfj`|``liwyzJ?M1Vslf~kLF1pjszJ6B8%y^F7QOYt>*;d7r`HW{G?xV0; zVtd5LTyVzxqG4RJGBa~EcgQUNBlAnf?kVTz_Q5jaHjjAl9OcbZS`N#-a7xEbdZi)>2SS1?!QN~Tm3f`{+H#mYyX!GTJ2do zr?%Bc=qr)ocXj%vPB#eJ7>pGp6K5o*#3pHyb}}ik$?*YFs~J){CWG|IrN6a3#`4^ydCYtM(%RZkT&I@c$ObwY zR}!wC<$gJFtW{}VZS6lVCmpK<73F7?H*(u&C%#i#JK-(u%G1lGI4K8~;t3ts1P@6_n0JFr~gih{#ixP0JjIjF$GaS6rksGq{+0UcrdwyrC9+jP15POW93FM4rE zNfS%<4!_y+J(QdI+03NG zuE=f@+1j30=3oBnieH=*R{TzOypJRuzzvR|(JdsY0%bwJz$SJMWkG9kT|rrDDM>wW z-9|YQ^le=CP%Z=g6xTzPD?vZU^#tWAP;5<-bWxIwpe4ARP%Z`ChRfq39#)j0u)`!t z&A})GEyop(as_C+07>eMayaPPKsZIY6!eQ$*uzk+0u5*_Nz;W4Xir>8D5JsBqc)P1 zhO&gcb`GxjDCdB(wvx0GWh3azZL=k5BPyk+EW^&T9pz%sBe-^1S0&12pebRJbV-!6QTP+r6;z~- zlGFj$ZIr`7{lk%7lue-Xa6Ldd2ec*v=|x#k(=!O{GmXwb*%#$BP`}OyP~f1!-C+;q zaL@xiv1g)O0cz?kN!c+%2!;3hN>Zj^fNtq0Ny||#1&zdFRE)BqCY%a333<@sf#^1r z1^svk45M5LDvw3$Q8t1O##M##NYHb*s)Y>bJzNh^t{IE|pE@1`2bCDmt~fFoKZi3= zu_=d&GH4#Io+uZCCZ+*HISq6_t|*i%M0t)RjS*$g;B?qSIUMu`u9+xTfo{&gI6%1+ z^e>!Jaz01@OIecSh$GfUFpQurap>EHvI%r1t_qaXK)c`=dkW=9(BU{_UqX2#=vbVY zuA>|Sx(rt}%Eh3EaNR?>0`xmvH7H}lk{;uFfU>kik{V{?>me%GsU&fa{RCy~PST6G zq)RXaid{-_LRrvPm*GE#$27Q z*6Ajl?$GJGIz6M)>pJ~jrw?@cw@zJ@rV|B>+;gF7^Z$f=5~3bw;vhU1jV_mjZ0~1Md_K+%F-*PO7F6+ zvT>)WJfrM9o&_m=_oo_gK8R%0w?OtR33pT~_lG+Rlfv}Lk^nEoR6f!fCju3CD1hQ} zqoK@HU#Frx+@(Sw(D5{2nNW-ejLtX;sK{iY6nP*VFWu%G=m@7<52UhUrSZXzxM%2l zFx9y%OcNX|1S=03A#xMUaHa9P9hp(-i|-g^4!$Fmt@tihE~?+m($N_!x$2{pP#tM8 zI%@YHRJBR=5Ut6v2x}!4Vdpr$P0D>}VcAx-TBwm7GJ-kkkZ_obZ)5qsLpAO2ob2^) z2ReA;Af<}>>r;qrI_V%uO+Rh9w%Q-@n5ug;Dbht2g5k+VJIj)iRP6@?tE&ARd1Xsw z=g+?h^4c$Vc~#5uRW+$H-f%zqErFFPu@9aCQ(}G}iWiu>emC(_f91mOixANBe++hs z)YFbN`_(@tvi$Pj{}|6X&WgkTiV#%EecZ3Do1XXy9J2$L%to_LQj@Ma+(Cs#Im-`~ zdyiN1GLy3KiN7GPKKYebn9A2Y4RGV7fwbR+MKM3Bbzz&EoY8x3s;4A5h!&Y?PeazC z;rl^aGWh#Jbg3bWv;htP{9Rf17AJLy-fz^26$*4tK>*V0vpO?*Y?Tcg9aFFtMubX>I8vx(m3=G(N!N)2(gRmXrW9aXREEJ^Bq z7;TH8BzG3(wIx`Co4N`U6S*+&@lBv*pF3O2SU3%6%qB7;z1Em@WCQ3zW9HRvc%Y{8 zcS9T=ChHZOpF=i3ZpGx@gn3Ol8lcH1!G+sRz0w~QKeeky$t7jk4r~H<3YXlL)ic-A z+LJj}lMQitw{KMp|)^lVe+$J)`@rYx6NwX$4k%Jzunzv#)@u%5KnlZ64MZ#>z2=1UWru^(8Z zCDMz1>B=I>E0|@s-=g0g{f35p;-(GhZnAJCg>2V(--GA+O=~(H%zUzc*TDvjG~v!t zTmLp%^L#Z(-o{2tu2DKD40qFIRm0&@<7ql?s1=u77uOS?VTDB;;gV}fJswSJ#f*Gc z8%k=$d^}I+oc+4SbCT<|HuNf3{MR;QX~nXbWa-eFoip&#w)D6?o5DP4Vkqn0sB=3l zW-_2{|Dn=Q=HKu}TMc73+S13NtVPp%I?%-#!^^Z#JjA1ip{%7}ysoV>B*))%xqiaf z5_+ZsTZ+NAzXO}lI#Oqy18caGnldq19W!)X^}m?H!&q0ALo>qI7;XunqhZX)=Zg?6 z9HH6*5n#0us;)I5bU%#wGKm^>WI@Bb>0;Jp^KFPW+lg4mpgTw6a_p%~1i_GFU%k=@ zmDVrl72UMt)`GG-GA}mALLJ#*#)>VYBG~MPysQHq>&dXBb)cwT7*i)Y(BfXKPs0Zt z^o%{|Kp*vDDa=G&db61zul2^v3#SXcS)|JttJD~3-iJ-&RiU)F4+|Fb^**dUzaL7U z_F-dK8U;tPIUpM%St!e;laXu^Y_#l)RVUU}9Gm8ITHistW3m4Z7Zz>NE6(49 z(e-hxBflF)ZsS=J#@)j4tRFUhIy!;Hz-P;eY$Xe~yfu;SYs4#uSSHP6@r-X9MaL7F ziIaCbq&V6)i$%Kb)d42$9Y#-Q zArXI%p$@Z|pZ8sTMP+P)T#|#^AE{vzEGm~qQrv9Tmp>j!Z_Z}@8~TjWEHcT59?WKu zY&LaCVu5X@>$o2VRY$D4jA2*%r%k?=mL{?0VJ*(|0Xidil%{;0)P_xJ{k0!Td<~8I8-6jJcHr4f=H;dAgBs_m`@DL2Gar`BnaVZq5 zv&z8gj8^maq9_^Wcx@D|NM=FIo!(AnEmvMg8rh68;$D7+S!ygQw#_253`>D<^1OI6~el$g;W1mQ)S?R0|FYQN4I-A80_oLc$ zOrmT3sCW)*#UJ;hv<$2(4pfxEyi6VYYtBTsX5#r6dKKM(obwC}&2If^SQhhhPDo0P z&6IjOM$+93#6OM3Wg`CNRGP`!@yh;mE)%=;uevGGX3?8YCcH7(-k%z0!JRvW!4PXs zQCTdMSM;TYSuBrDqQA3Pkau1`Er>a7@%qHq8iX`-3-y?bUoVp{mB zvra6E?k`3sAMI!vxP(P<4E(j(Yz2QDPChxTE$cu7a#;Ju!y~jvbT_-hDJO>o_5Lkf zgS%r+W?=GZlV6NFJp1AKx{??UI2GuFNl#OQ4|hQOPpals%=Y9Oi8~whZSML}6Uc!kf<28>F_g{r+GaBa?=~fXAFC)qQC6}M` znVPmRK0P%QrZYM_syePc=b5Ba{r);4N9Q3tmJV|3&dob~5T(6E-c_m`yhf^%jX z{rCzC${wS$cH&ISy>;DHsO-bNo){Y0z@OLg2;h}A9Ai)}*@UCQOg+=1!LGKkCB9b2 zg>4Vq%fOtoocx9s3$z_d%Bbj7<~;P4E;t*4p_-uZ+vxOvG+86?M&48FDtxq_+6QRS z6ioxSU3`Bu-F%h#@``Ax1r0y1i;2kg)fwi0)KfoGr=CPZH{qzWic&Y>7AtEYeFJfycJGE&)1lLi!gm02@B`6L!LuP z)lx^yKN|5G^J@EHJ%PWi0;LdWbVKL#LfZJ_>9poGSZ_(YUSk2+Yc7EBZSiy;C_glV z+_&H))|fhOVP4UF^s%-Qnm668LqlDpBtA@M&H%HvK2zO!EQwl+h0_3|rn(e^VHEZo z+>?h({9+=#v4xq2-qIyMl_e=wm&_KDs+|WqS9rLw|BBn*~Z?+gO^*{8TMaKA(1M!!i?T`E?uf z5w~(~Z!kAUFVkBZKVT~|-%oBd#t}C!aur3qgCl^+GWi{5Vl0N1?7}muk@WE{_I1M@ zi!>FsV-c0_W?gvgBD%X9ec7Cx_OLE2iF)tB#vVyC_poDLw-;*C-N)nHJVmdtDb#B( zMAIx8ds!347Sf6`me=U=d`;F9qK;nVwGV%8Vx)KXv73!X%&TL$ETlK~V?%yAkIwFg zCy9RB&y+^eo0^FCA5A4`5v?o7A+{=u-Y>`SXY@@uTGDjG0p=0$LzX7^G2C!*hk~h0 zI`%o*F9q%a=Y)>16InFy01M(*vS`);*0SODxtcoLK9>~1I5w9Kfx%DCr7H(mr)KAM z0nrR$KLRFQQpt1>JLr2^)aM}c^nXs5@xr=w3>^E#{$8xDmr}>94TCSzjhC}Rk z+~ux5%m(m3Q|YtAEZEy6O_Lpq=LD1Rq)9}B!>)^w+}~qf?R|B2Pq4vqmhrw(eS#%P zeS6|0P^}L#R-Hmfh}4El9)Ifa zCIlz75Pe@Uhb|n!{ZiE&`r`;X-;sQdqVt34xudK_vmfSYQPk`Gmfy^wq@%1kuS%yC zN7*y{yL5X0C_-pR&c_f!euf%?x699ZPKE9cZ)*sS<7vt{T|InP@4iq`8dIN`;nGqR#)#CM?%_W>+9cdREg%qHaAoBCd0 z&HP@_xxSEvx&g=EAj}89g{T)(<^>GzGfU{@3oM}Zm-P&NZ8PL=eWdTGdfP%(Fzdai zo~)0H7FmC($;l<;{wYi4HA^fxpR%7FP@uF+tS4H(`w|Oxk(cTXl<9{{>>^H7hreJa z8Pc)jG7G^o%Qr8x1UxlyyTayhpxIxsEBtacO}vIZq+_@9A4_T0b@nW#(CgP(G}b+S1Ho;iJ~vozzH=#M-++6g z<@*~fS-2ll#WGrin-EvAfHSfY#R=q;xBevn(w?nin>wR<<0lDlNnxO(7Hgr9WNxPM-cx4PoFJ~ zgLzkmR}z*Xt$2tmo*-w0a96RXnQVj<*o!VoT9@Uczyl^`FEiG=|;zvw3r2uOyil zaA>wj<4s+WfsTuLzL+uZ3W}NX%M#w4_AJ4+aCo(d zr-~=l&%eY|BJfijb@dE|XYs)jByGf;!_RV5+^nLKgxeAoH`1M#c(ylwoujhn>ujr9 zIOVS4UZe0M9hE)%A8hXlXs_Ci08ex0ENG0oe2=y)I zgV6;A#e4*sezh1)H<5D*YB@BqgumsCpYf<>!s+50+>1XX_UB$j}W`qdz<)hj?KtrGeQZcIh*-BvBTWm%zI-8r*^OLJxIpY z*Z5_`vTqB2%NswlQJq=)QUpu^JI7_8 zJ8;f+{;XJ4-`>ur!jkhF`~#4)Z=ipQX~CO_QKG-zM23u(t#9#bgZsv8)!Mhk;V?VL zT;xbw{T#cFdYP?$o!vuyrLBICJw*L`%h6x>i-D}tGO&s4Hwj^vq{#k;FAy3AgeX2m zF;XkG!b|ZAnv)E)KZ-^br6$R8Gg_A{n+(eVR%)V~P(+TCnjL z`aW46$*MF1<5J{i$i3<<7VATrD0ZPvsj@GXCCd(uhX6{N74|h1rN}`BN30Z;!hQ=H zo+|rb5fSRR%fFZk?kI38XdjALIt0V=AXPqr<&Z8ekb^8=rQ=O2JcL-p@9c1b9;M zHrb%ruF8^wxzuPwhU`P8xw22wNO7ZO^V1pnIcg(ZqN6o8WsN9(t{jMsVf|crFJl#& zp_%hxsIrmerTH>mdDIASFzSSQAoW}*KS9SuEJ14~FH!|nkK!-Qh0>dgB(~jF#?B*>Y$=sf}yR zMU~nzk&Bbah=EFW$)1!}A_vo&U zC1<%jlW}81D&2z?x~`Cep_;o0!wC}OR>-s5Mds1Xa2SbF0~+}k2ZLLR_)q^=gV zQdNssfl;!0rR?NUCTh~UqUqTiMqSeg{bCdSir6XRCF1Ug}vJXpxM z(79Fe1zxIij}@XB6-H~~47-u0aB8qx#tlUi>b)8rSxm93F$_y->-z{EvTv`J@oLH9 zS%mK8mAawomqZVEqT5uW*>?5u6w2WIL2 zir2zSWHVduV|}~2R$hbbCo1v`b;z$nlBMR>h^gCpIRwKXcD)?b%82uKU6+UB^j~U2 ztof2GJJ-vfixau(u$17i*hlnZC=FVOVeYySor#2raGYL7h{cu;FN+W{Xa$z`imD-6 znmrpXD#V))wM)>Kl6VDd#80E@kTpQc?2uhR!m-}g$(#ZrR^~e7GLR}e}8CT;#V;S`fZUfU_Lc26$4gf zgwl#q`Bx+oIzhB)E81Ar($)TgD z3JtGsp%EEv4a4dp(&D#QOq^1oFqjud+os@zeR7CLT1@@sx5jo<5ku?t$%BSe#9B>> z7L5fbd|G`Z4oH<9k_@CYuD;BCAQA=bmxHn;JdP3lsrBiLU>IlA7hMO$G_yYP8jv(Q zWG9fwS@mVgfsDk7SL-ej=usdsNmj&~g<|?}zg%umgP{9ckkqp6vV&z)IhJi!NjDFO z)Fjy^4i=AL2Su7C8g&#sZL%QE6?J@+Ewe0QVufo0Jr6^mMhLW|oWrsMO-sTdLUbHO z9h6-x`wz>@#4@N_oAACm3u6z<{`{#6)rdoi+Q$;zgf~m|``Cl9(m{AI#+Q&Yw862U zN?prw1cOwe*rHWy#UH>LPS%j}8Ud-|OJSPHU1anI}XJOmzPjw6@PFxji?g)FshqS#wGxaiqo{u}W@0 z(>{Xp@D$Z~hk0@7nW@Rsqzc`eb_!~NN8ZNNe>NiA^65uns^rue!-LZw&tN6Pv#qlr z#q^9I5{(zcNQ+cr*>YB>m1%057s(AUcOov}oHzfD+=QBck1vmNa+9WJ?4ekzF+i;i zoUh3}s+OCu1C)DC4r&_nFCiRdgt5gCA`UxbJP%`Y|0TClll%Jzh~x;lmxSEvf63t{ zK-kL>a(@ds*9(x_^k2zwA-5Q&XqAxL@h`cJn!V+sosWc^)2EPo_g`|Qnw+DMn-5d8 z0&=toCALFlu`~4D1goDtAi;#KnFPTG{ z%q5DhgrTKE=_-cX@rjMHFdxCXW zupSClv0$CiShGaBW(suf=lE(QO7DFlccp5<_+C^WfWbRCQph>%(Fr1L(}igICBQu$ z=}iIO7Vs?r*9dr!BL$xaJWb>`1_-5m0eHA0nJxgX67bgoz9-;uj`W&(7o)T;p2Qh@+22;jN^Hc^910HRQ)NnZij zPWb}(SO8Z9u#4m`0GLsxan}I6OSuC0NC1}rP?9Jazr;^v2Z-wE>kzs?OTL8A2?10J z;0iq!KqSgE{04wqwBRy;V*)q_fToL*(-oNMDXPzZjjvk*TOqLb1a?MXF{0#f6<9Y> z9rO*pz82UrfxRoRQ^2@K1FE?yPoU01pkEabQv*u*3dnweR0yP91G*=Wa8#)GO(2~c z(5!1f_6X#NKzcWzYJr5JLOpH)F*l%u>p}=h;^kM76abNKvg#|rjqUfSu5ZjVvTrLlv2KyyRy|( z`vY`a1K>sjUH@7h#8%RhYGB(1h94$R`Uco?dMvO&td#tb16>hV4lTF?tW;pv9cWw? zu*LMJz*=H?<{vrGC4tSSth>NA32cu8jlKyilYSGJ&s|`zI8dd)aO?jgu#Ey+>OjM9 z0ZXD^1lA1A;zd z2Xe&DoOtsbY$r1lh|$i@0w51FH{6#4yP0sb*P_eFOph0TpImI$g3lp3#%3-$DK&03 z!a0*clkUr%(b;S6%R${j?5v04c|cvGqvPV|C&FYI-hpX}nHQIl6p!;pMJC<7k6tgf zabQ^zKcBis{eQ*5t1}gXw9Y|hv=9Zq51v1)wgn`Rp+K%=(!*cnKo7~*9Kp#3=K-g% z-{im{&Fz{co?^J#S=kMw($3R|K*R@!dUQ;3d~#gc0!f-c@BD@lDQYYcv4|qP_*%|35c;V?SO34 z0d}%?!KtDf59FZM>+D(+gh7{Mm)EX9j84@0cVx+=-w9~uGr+0Jq{-k6nQmu(FF0wc z73&B*1!SZx$Fb8=)6qDo%FfewkSV6qzsrN0CfNnm2akZmDc}#>td-ephz#d|5o4G8 zVjxjA<@9**m+Xjz7X2Z28S>E1-C2mlf9Ej=+MGeHWm^(rP#9Db-N<=7DTmAXJ{I$Bxh@&zFGY?fb0 zijPl&Tul>I%^K-62$^X2pK_Ohn{2YeUJ)20?dI95Ku+2B7ZCBO^LduKKSUG10HeyT z({BTD&{tJ$7~BV9g0iS-h_eSaGStut9q|SdY3n*P9RKk4)~?|_AQNMgfvPki8&FTX zNHc&e1`9F4bVlL~{09d3n@~GLOCdACCWC^s9*Fp80l{}lTymOJYNz!UWbE_wu16Ov zKX$|GO9)-EOYgTp!tJ7Vpf!KVp4nw~*1bIOm&$f6i2(Az&Qxz81MH9?KumT4j0dvI zPG&j~@u^Gy5`kpftuvbh1PSqf00=?+;W&^nb^(0~WMzhRu@y2mfVkTAwfGB|=2`W( z76&|aoNuSq9LQuDzfjUfQ-b(!D`3oI%Li7(jCj;yY>03c1T_ykXPtlms2B8LASNJM zKcXOw6VB|KkqqP_#9@IL&-4hiAWma;Ba9 zX&|9?@?QX{+jgU)=O;$T{&OCD3z;gr4*d&Ar5c;HXWYE7i`!+?Hw4gPJNE)9L;C^h z9ohqk6ODQz`#(DZ#oKn`2|%zI)k|eIkdeUZQdvT8J;9XU0>%zI_iqDPZfEWY5b-DL zbqAL7Kq~E~!Pi2|ERMrp5(|gj2nz;s%Fa*(kaKoOZy>8}Att0{ zWyZlwIIVvw`)9uZCiXjhKSn`{0kX~}E|3f$zIG<_fK0bTih-b~^tDH5?F14IS{MI8 zAeZbcf7Aoeb~{6tftc;a<1HYiFa$BZJ0Ah5pya<1e`7pSudro1VP1M-CI)n*oq-mR zd1B|JEsz?!9_a?8N_QY4#$P`H5udtcA>m)hylg-@c7|2~sj(ZyTY;pB-^jz5W_k}0 zF}}2gS~xicM07(P@-+~XU0?qU#Mf>ScvC+l_WXAA?MGg-u8pIu9t#F8RL#aj-MZ@b;sdU1Gg} z)MZH6=?-MEO)EMpMLnWlu?u=2WJ*WdxgP^a^eaFlZ?1l-Ib@4EAw3?06Ygz@s7;4f mF{sw}S(e$%p|q)`nWw{t4cwFQUlz@aj!jF8&RmcdFZ~~rj;bO6 delta 23466 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 U*NXp5X;D&&!H`tA*pM##FMse1IRF3v diff --git a/src/updateCustomerAccountBalance.c b/src/updateCustomerAccountBalance.c index 48ad5e8..6ee64e9 100644 --- a/src/updateCustomerAccountBalance.c +++ b/src/updateCustomerAccountBalance.c @@ -1,51 +1,45 @@ #include "updateCustomerAccountBalance.h" #include "currentCustomerAccountBalance.c" -void deleteLineFromFile(int line){ - FILE *fptr1, *fptr2; - char file1[] ="CustomerData.txt"; - char file2[] ="TempData.txt"; - char curr; - int del=line, line_number = 0; - fptr1 = fopen(file1,"r"); - fptr2 = fopen(file2, "w"); - curr = getc(fptr1); - if(curr!=EOF) {line_number =1;} - while(1){ - if(del != line_number){ - putc(curr, fptr2); - curr = getc(fptr1); - if(curr =='\n') line_number++; - if(curr == EOF) break; - }else{ - - } - +void deleteLineFromFile(const char* file_name, int line, const char* new_line){ + FILE* file = fopen(file_name, "r"); + if (file == NULL) { + printf("Error opening file!\n"); + return; + } + char current_string[1024]; + int current_line = 1; + char *temp_file_name = "temp.txt"; + FILE* temp_file = fopen(temp_file_name, "w"); + if (temp_file == NULL) { + printf("Error creating temp file!\n"); + fclose(file); + return; + } + while (fgets(current_string, sizeof(current_string), file) != NULL) { + if (current_line == line) { + fprintf(temp_file, "%s", new_line); + } else { + fprintf(temp_file, "%s", current_string); + } + current_line++; } - fclose(fptr1); - remove(file1); - fclose(fptr2); - rename(file2,"CustomerData.txt"); - + fclose(file); + fclose(temp_file); + if(remove(file_name)!=0){ + printf("could not remove the original file!"); + } // Remove the original file + if(rename(temp_file_name, file_name)!=0){ + printf("could not rename!"); + } // Rename the temp file to the original file } void replaceBalanceInString(float replacementBalance, int currentLine) { - deleteLineFromFile(currentLine-1); - printf("deleting from line %i. balance will be replaced with %f", currentLine, replacementBalance); char newBalanceLine[MAX_LENGTH] = "balance="; char balance_as_string[MAX_LENGTH]; sprintf(balance_as_string, "%g", replacementBalance); //converts replacement balance to string strcat(newBalanceLine, balance_as_string); - printf(newBalanceLine); - - char buffer[MAX_LENGTH]; - FILE *file = fopen("CustomerData.txt", "w"); - - for(int i=0;i Date: Sat, 28 Jan 2023 12:15:17 +0100 Subject: [PATCH 28/38] Refactoring: minimize code lines for easy understanding --- src/currentCustomerAccountBalance.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/currentCustomerAccountBalance.c b/src/currentCustomerAccountBalance.c index 9d2e365..9f415f9 100644 --- a/src/currentCustomerAccountBalance.c +++ b/src/currentCustomerAccountBalance.c @@ -25,10 +25,9 @@ float readFileAndGetAvailableBalance(FILE *file, char stringID[MAX_LENGTH]) { keep_reading = false; } else if(strstr(buffer, stringID)) { - fgets(buffer, MAX_LENGTH, file); - fgets(buffer, MAX_LENGTH, file); - fgets(buffer, MAX_LENGTH, file); - fgets(buffer, MAX_LENGTH, file); + for (int i = 0; i < 4; i++) { + fgets(buffer, MAX_LENGTH, file); + } strcpy(balance_String, buffer); balance = fetchBalanceFromBalanceString(balance_String); keep_reading = false; @@ -49,7 +48,7 @@ float getAvailableAccountBalance(int user_id) { FILE *file = fopen("CustomerData.txt", "r"); if(file == 0) { - printf("Erro: file cannot be opened!"); + printf("Error: customer data file cannot be opened!"); return 0; } else { From 09f153678101862aee97403481e6ac5b6f7cb6ab Mon Sep 17 00:00:00 2001 From: Shivam Chaudhary Date: Sat, 28 Jan 2023 12:32:02 +0100 Subject: [PATCH 29/38] Add missing headers in currentCustomerAccountBalance.h --- src/currentCustomerAccountBalance.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/currentCustomerAccountBalance.h b/src/currentCustomerAccountBalance.h index 76725fe..0b4a148 100644 --- a/src/currentCustomerAccountBalance.h +++ b/src/currentCustomerAccountBalance.h @@ -4,4 +4,7 @@ #include #define MAX_LENGTH 100 -float getAvailableAccountBalance(int user_id); \ No newline at end of file + +float getAvailableAccountBalance(int user_id); +float fetchBalanceFromBalanceString(char balance_String[MAX_LENGTH]); +float readFileAndGetAvailableBalance(FILE *file, char stringID[MAX_LENGTH]); \ No newline at end of file From d9925a3a948531bddc70e48efd8451fda91b4f8d Mon Sep 17 00:00:00 2001 From: fdlt3817 Date: Sat, 28 Jan 2023 16:28:55 +0100 Subject: [PATCH 30/38] Expanded the function to work with negative balance changes. --- src/CustomerData.txt | 2 +- src/a.exe | Bin 269211 -> 269210 bytes src/lineReplacer.h | 6 ++++++ src/updateCustomerAccountBalance.c | 15 ++++++++------- src/updateCustomerAccountBalance.h | 6 ++++-- 5 files changed, 19 insertions(+), 10 deletions(-) create mode 100644 src/lineReplacer.h diff --git a/src/CustomerData.txt b/src/CustomerData.txt index 05ec80e..d5c417b 100644 --- a/src/CustomerData.txt +++ b/src/CustomerData.txt @@ -3,4 +3,4 @@ ID=1234 forename=Max Surname=Mustermann password=example -balance=1000 \ No newline at end of file +balance=2000 \ No newline at end of file diff --git a/src/a.exe b/src/a.exe index 4083994a33269e5e2e3ac93d883afcbc797f6ad3..f28e6b38fe554253bb67e09ed3c5a78bb7a8dba4 100644 GIT binary patch delta 19365 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 E07b-3B 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 diff --git a/src/lineReplacer.h b/src/lineReplacer.h new file mode 100644 index 0000000..999855c --- /dev/null +++ b/src/lineReplacer.h @@ -0,0 +1,6 @@ +#include +#include +#include +#include + +void replaceLineInFile(const char* file_name, int line, const char* new_line); //replaces the line at "line" on the file "file_name", with the new line "new_line". \ No newline at end of file diff --git a/src/updateCustomerAccountBalance.c b/src/updateCustomerAccountBalance.c index 6ee64e9..764c317 100644 --- a/src/updateCustomerAccountBalance.c +++ b/src/updateCustomerAccountBalance.c @@ -1,7 +1,8 @@ #include "updateCustomerAccountBalance.h" #include "currentCustomerAccountBalance.c" +#include "lineReplacer.h" -void deleteLineFromFile(const char* file_name, int line, const char* new_line){ +void replaceLineInFile(const char* file_name, int line, const char* new_line){ FILE* file = fopen(file_name, "r"); if (file == NULL) { printf("Error opening file!\n"); @@ -39,10 +40,10 @@ void replaceBalanceInString(float replacementBalance, int currentLine) { char balance_as_string[MAX_LENGTH]; sprintf(balance_as_string, "%g", replacementBalance); //converts replacement balance to string strcat(newBalanceLine, balance_as_string); - deleteLineFromFile("CustomerData.txt",currentLine,newBalanceLine); + replaceLineInFile("CustomerData.txt",currentLine,newBalanceLine); } -bool updateAvailableAccountBalance(int user_id, float changeInBalance){ +bool updateAvailableAccountBalance(int user_id, float changeInBalance, bool positive){ bool keep_reading = true; float availableBalance = 0; @@ -71,19 +72,19 @@ bool updateAvailableAccountBalance(int user_id, float changeInBalance){ fgets(buffer, MAX_LENGTH, file); strcpy(balance_String, buffer); currentLine+=4; - availableBalance = fetchBalanceFromBalanceString(balance_String); - + availableBalance = fetchBalanceFromBalanceString(balance_String); keep_reading = false; } } fclose(file); - replaceBalanceInString(availableBalance+changeInBalance,currentLine); + float newBalance = (positive) ? availableBalance+changeInBalance : availableBalance-changeInBalance; + replaceBalanceInString(newBalance,currentLine); } int main(){ - updateAvailableAccountBalance(1234,500); + updateAvailableAccountBalance(1234,500, true); return 0; } diff --git a/src/updateCustomerAccountBalance.h b/src/updateCustomerAccountBalance.h index 3a4d6da..4af3f89 100644 --- a/src/updateCustomerAccountBalance.h +++ b/src/updateCustomerAccountBalance.h @@ -4,6 +4,8 @@ #include #define MAX_LENGTH 100 -bool updateAvailableAccountBalance(int user_id, float changeInBalance); -void deleteLineFromFile(const char* file_name, int line, const char* new_line); + + +bool updateAvailableAccountBalance(int user_id, float changeInBalance, bool positive); + void replaceBalanceInString(float replacementBalance, int currentLine); \ No newline at end of file From bbc6c7557faa882a28ec76c29401d7f838597977 Mon Sep 17 00:00:00 2001 From: fdlt3817 Date: Sat, 28 Jan 2023 16:34:16 +0100 Subject: [PATCH 31/38] Refactoring: Removed main function --- src/CustomerData.txt | 16 +++++++++++++++- src/a.exe | Bin 269210 -> 269210 bytes src/updateCustomerAccountBalance.c | 10 +--------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/CustomerData.txt b/src/CustomerData.txt index d5c417b..f847b08 100644 --- a/src/CustomerData.txt +++ b/src/CustomerData.txt @@ -3,4 +3,18 @@ ID=1234 forename=Max Surname=Mustermann password=example -balance=2000 \ No newline at end of file +balance=2000 + +1327=example +ID=1327 +forename=Max +Surname=Mustermann +password=example +balance=1500 + +1666=example +ID=1666 +forename=Max +Surname=Mustermann +password=example +balance=240 \ No newline at end of file diff --git a/src/a.exe b/src/a.exe index f28e6b38fe554253bb67e09ed3c5a78bb7a8dba4..cdc9794dc47303e7a5866bd11fad42ff524ceecb 100644 GIT binary patch delta 16720 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 VJX>cxH9G}4z{S!bFPF8U{|Doarknr( delta 16617 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 Date: Sat, 28 Jan 2023 17:41:48 +0100 Subject: [PATCH 32/38] Bug fix: A line would get removed after the replaced line. --- src/CustomerData.txt | 2 +- src/a.exe | Bin 269210 -> 269210 bytes src/updateCustomerAccountBalance.c | 7 +++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/CustomerData.txt b/src/CustomerData.txt index f847b08..911b18e 100644 --- a/src/CustomerData.txt +++ b/src/CustomerData.txt @@ -3,7 +3,7 @@ ID=1234 forename=Max Surname=Mustermann password=example -balance=2000 +balance=5000 1327=example ID=1327 diff --git a/src/a.exe b/src/a.exe index cdc9794dc47303e7a5866bd11fad42ff524ceecb..7bbd2e2b2e539e9c09675796307396823a7f961f 100644 GIT binary patch delta 17702 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 Date: Wed, 1 Feb 2023 21:20:10 +0100 Subject: [PATCH 33/38] Add file to save information about customerData.txt --- src/_file_information.h | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 src/_file_information.h diff --git a/src/_file_information.h b/src/_file_information.h new file mode 100644 index 0000000..1cb5200 --- /dev/null +++ b/src/_file_information.h @@ -0,0 +1,2 @@ +#define MAX_LENGTH 100 +#define CUSTOMER_DATA_FILE "CustomerData.txt" \ No newline at end of file From 33ea6b25e75876cc8e15355c4661b39568076c61 Mon Sep 17 00:00:00 2001 From: Shivam Chaudhary Date: Wed, 1 Feb 2023 21:22:37 +0100 Subject: [PATCH 34/38] Update header files --- src/currentCustomerAccountBalance.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/currentCustomerAccountBalance.h b/src/currentCustomerAccountBalance.h index 0b4a148..2795450 100644 --- a/src/currentCustomerAccountBalance.h +++ b/src/currentCustomerAccountBalance.h @@ -3,7 +3,7 @@ #include #include -#define MAX_LENGTH 100 +#include "_file_information.h" float getAvailableAccountBalance(int user_id); float fetchBalanceFromBalanceString(char balance_String[MAX_LENGTH]); From 2f729d8ff0500162c77bd1248d54528366d87ae9 Mon Sep 17 00:00:00 2001 From: Shivam Chaudhary Date: Wed, 1 Feb 2023 21:23:43 +0100 Subject: [PATCH 35/38] Refactoring: Use created constant name for file --- src/currentCustomerAccountBalance.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/currentCustomerAccountBalance.c b/src/currentCustomerAccountBalance.c index 9f415f9..a91e306 100644 --- a/src/currentCustomerAccountBalance.c +++ b/src/currentCustomerAccountBalance.c @@ -46,9 +46,9 @@ float getAvailableAccountBalance(int user_id) { strcat(stringID, user_id_as_string); // Now stringID is "ID=user_id" - FILE *file = fopen("CustomerData.txt", "r"); + FILE *file = fopen(CUSTOMER_DATA_FILE, "r"); if(file == 0) { - printf("Error: customer data file cannot be opened!"); + printf("Error: customer data file cannot be opened!\n"); return 0; } else { From b3688bbd1c3391bd76420fa5ea6ef1af85a7148d Mon Sep 17 00:00:00 2001 From: Shivam Chaudhary Date: Wed, 1 Feb 2023 21:24:02 +0100 Subject: [PATCH 36/38] Update .gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 496ee2c..2608ec2 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.DS_Store \ No newline at end of file +.DS_Store +.vscode \ No newline at end of file From 87a32f9bf6fb620f2ad8c3595ef63f76bd46a1d5 Mon Sep 17 00:00:00 2001 From: fdlt3817 Date: Thu, 2 Feb 2023 14:30:26 +0100 Subject: [PATCH 37/38] Function functionality change updateAvailabeAccountBalance no longer increases or decreases the balance but rather sets the balance to the input value. --- src/updateCustomerAccountBalance.c | 13 ++----------- src/updateCustomerAccountBalance.h | 4 ++-- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/updateCustomerAccountBalance.c b/src/updateCustomerAccountBalance.c index 566f2fd..2040a6d 100644 --- a/src/updateCustomerAccountBalance.c +++ b/src/updateCustomerAccountBalance.c @@ -44,10 +44,9 @@ void replaceBalanceInString(float replacementBalance, int currentLine) { replaceLineInFile("CustomerData.txt",currentLine,newBalanceLine); } -bool updateAvailableAccountBalance(int user_id, float changeInBalance, bool positive){ +bool updateAvailableAccountBalance(int user_id, float newBalance){ bool keep_reading = true; - float availableBalance = 0; char buffer[MAX_LENGTH]; char stringID[MAX_LENGTH] = "ID="; @@ -73,18 +72,10 @@ bool updateAvailableAccountBalance(int user_id, float changeInBalance, bool posi fgets(buffer, MAX_LENGTH, file); strcpy(balance_String, buffer); currentLine+=4; - availableBalance = fetchBalanceFromBalanceString(balance_String); keep_reading = false; } } - fclose(file); - float newBalance = (positive) ? availableBalance+changeInBalance : availableBalance-changeInBalance; + fclose(file);; replaceBalanceInString(newBalance,currentLine); } -int main(){ - - updateAvailableAccountBalance(1234,500,true); - - return 0; -} \ No newline at end of file diff --git a/src/updateCustomerAccountBalance.h b/src/updateCustomerAccountBalance.h index 4af3f89..29f5b75 100644 --- a/src/updateCustomerAccountBalance.h +++ b/src/updateCustomerAccountBalance.h @@ -6,6 +6,6 @@ #define MAX_LENGTH 100 -bool updateAvailableAccountBalance(int user_id, float changeInBalance, bool positive); +bool updateAvailableAccountBalance(int user_id, float newBalance); -void replaceBalanceInString(float replacementBalance, int currentLine); \ No newline at end of file +void replaceBalanceInString(float replacementBalance, int currentLine); From cd78a96c0306c5a278f1c6b2500c889d199fd44f Mon Sep 17 00:00:00 2001 From: fdlt3817 Date: Thu, 2 Feb 2023 17:31:13 +0100 Subject: [PATCH 38/38] Test arrangements --- build/test/cache/defines_dependency.yml | 2 +- build/test/cache/input.yml | 12 +- build/test/cache/test_mainMenu.c | 299 ------------------ .../cache/test_updateCustomerAccountBalance.c | 63 ++++ build/test/dependencies/cmock.d | 10 +- 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 - .../test_updateCustomerAccountBalance.d | 5 + ...test_updateCustomerAccountBalance_runner.d | 4 + build/test/dependencies/unity.d | 6 +- .../updateCustomerAccountBalance.d | 5 + build/test/out/c/cmock.o | Bin 11208 -> 9016 bytes build/test/out/c/mainMenu.o | Bin 6992 -> 0 bytes build/test/out/c/test_mainMenu.o | Bin 9952 -> 0 bytes build/test/out/c/test_mainMenu_runner.o | Bin 9680 -> 0 bytes .../out/c/test_updateCustomerAccountBalance.o | Bin 0 -> 3448 bytes ...test_updateCustomerAccountBalance_runner.o | Bin 0 -> 4888 bytes build/test/out/c/unity.o | Bin 57120 -> 50192 bytes .../test/out/c/updateCustomerAccountBalance.o | Bin 0 -> 10240 bytes build/test/out/test_mainMenu.out | Bin 61120 -> 0 bytes .../out/test_updateCustomerAccountBalance.out | Bin 0 -> 82546 bytes build/test/preprocess/files/test_mainMenu.c | 299 ------------------ .../files/test_updateCustomerAccountBalance.c | 63 ++++ .../test/preprocess/includes/test_mainMenu.c | 3 - .../test_updateCustomerAccountBalance.c | 3 + build/test/results/test_mainMenu.pass | 30 -- ...est_updateCustomerAccountBalance_runner.c} | 12 +- src/updateCustomerAccountBalance.c | 27 +- tests/test_LoginCustomer.c | 21 -- tests/test_mainMenu.c | 145 --------- tests/test_updateCustomerAccountBalance.c | 34 ++ 33 files changed, 210 insertions(+), 842 deletions(-) delete mode 100644 build/test/cache/test_mainMenu.c create mode 100644 build/test/cache/test_updateCustomerAccountBalance.c delete mode 100644 build/test/dependencies/force_build delete mode 100644 build/test/dependencies/mainMenu.d delete mode 100644 build/test/dependencies/test_mainMenu.d delete mode 100644 build/test/dependencies/test_mainMenu_runner.d create mode 100644 build/test/dependencies/test_updateCustomerAccountBalance.d create mode 100644 build/test/dependencies/test_updateCustomerAccountBalance_runner.d create mode 100644 build/test/dependencies/updateCustomerAccountBalance.d delete mode 100644 build/test/out/c/mainMenu.o delete mode 100644 build/test/out/c/test_mainMenu.o delete mode 100644 build/test/out/c/test_mainMenu_runner.o create mode 100644 build/test/out/c/test_updateCustomerAccountBalance.o create mode 100644 build/test/out/c/test_updateCustomerAccountBalance_runner.o create mode 100644 build/test/out/c/updateCustomerAccountBalance.o delete mode 100755 build/test/out/test_mainMenu.out create mode 100755 build/test/out/test_updateCustomerAccountBalance.out delete mode 100644 build/test/preprocess/files/test_mainMenu.c create mode 100644 build/test/preprocess/files/test_updateCustomerAccountBalance.c delete mode 100644 build/test/preprocess/includes/test_mainMenu.c create mode 100644 build/test/preprocess/includes/test_updateCustomerAccountBalance.c delete mode 100644 build/test/results/test_mainMenu.pass rename build/test/runners/{test_mainMenu_runner.c => test_updateCustomerAccountBalance_runner.c} (75%) delete mode 100644 tests/test_LoginCustomer.c delete mode 100644 tests/test_mainMenu.c create mode 100644 tests/test_updateCustomerAccountBalance.c diff --git a/build/test/cache/defines_dependency.yml b/build/test/cache/defines_dependency.yml index 64f9ba3..217b8d2 100644 --- a/build/test/cache/defines_dependency.yml +++ b/build/test/cache/defines_dependency.yml @@ -1,3 +1,3 @@ --- -src/mainMenu.c: +src/updateCustomerAccountBalance.c: - TEST diff --git a/build/test/cache/input.yml b/build/test/cache/input.yml index e0eb2fd..bc8023f 100644 --- a/build/test/cache/input.yml +++ b/build/test/cache/input.yml @@ -77,10 +77,10 @@ :testfail: ".fail" :dependencies: ".d" :unity: - :vendor_path: "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor" + :vendor_path: "/Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/ceedling-0.31.1/vendor" :defines: [] :cmock: - :vendor_path: "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor" + :vendor_path: "/Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/ceedling-0.31.1/vendor" :defines: [] :includes: [] :mock_prefix: mock_ @@ -99,7 +99,7 @@ :verbosity: 3 :unity_helper: false :cexception: - :vendor_path: "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor" + :vendor_path: "/Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/ceedling-0.31.1/vendor" :defines: [] :test_runner: :includes: [] @@ -223,13 +223,13 @@ :arguments: [] :plugins: :load_paths: - - "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/../plugins" + - "/Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.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" + :stdout_pretty_tests_report_path: "/Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/ceedling-0.31.1/lib/../plugins/stdout_pretty_tests_report" + :module_generator_path: "/Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/ceedling-0.31.1/lib/../plugins/module_generator" :gcov: :reports: - HtmlDetailed diff --git a/build/test/cache/test_mainMenu.c b/build/test/cache/test_mainMenu.c deleted file mode 100644 index c8bdf9f..0000000 --- a/build/test/cache/test_mainMenu.c +++ /dev/null @@ -1,299 +0,0 @@ -#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/cache/test_updateCustomerAccountBalance.c b/build/test/cache/test_updateCustomerAccountBalance.c new file mode 100644 index 0000000..5b6d44a --- /dev/null +++ b/build/test/cache/test_updateCustomerAccountBalance.c @@ -0,0 +1,63 @@ +#include "src/updateCustomerAccountBalance.h" +#include "/Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + + + + + +void setUp(void) + +{ + +} + + + +void tearDown(void) + +{ + +} + + + +void test_updateAvailableAccountBalanceSuccess(void){ + + + + int id1 = 1234; + + int id2 = 1327; + + int id3 = 1666; + + + + int newBalance1=500; + + int newBalance2=800; + + int newBalance3=700; + + + + _Bool results1=updateAvailableAccountBalance(id1,newBalance1); + + _Bool results2=updateAvailableAccountBalance(id2,newBalance2); + + _Bool results3=updateAvailableAccountBalance(id3,newBalance3); + + + + do {if ((results1)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(29)));}} while(0); + + do {if ((results2)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(30)));}} while(0); + + do {if ((results3)) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(31)));}} while(0); + + + +} diff --git a/build/test/dependencies/cmock.d b/build/test/dependencies/cmock.d index 7d1cf5d..58d1e9e 100644 --- a/build/test/dependencies/cmock.d +++ b/build/test/dependencies/cmock.d @@ -1,6 +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 + /Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.c \ + /Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.h \ + /Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock_internals.h \ + /Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.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 deleted file mode 100644 index e69de29..0000000 diff --git a/build/test/dependencies/mainMenu.d b/build/test/dependencies/mainMenu.d deleted file mode 100644 index fbd8a70..0000000 --- a/build/test/dependencies/mainMenu.d +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index 5ee8500..0000000 --- a/build/test/dependencies/test_mainMenu.d +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 0ac0cdd..0000000 --- a/build/test/dependencies/test_mainMenu_runner.d +++ /dev/null @@ -1,4 +0,0 @@ -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/test_updateCustomerAccountBalance.d b/build/test/dependencies/test_updateCustomerAccountBalance.d new file mode 100644 index 0000000..506a323 --- /dev/null +++ b/build/test/dependencies/test_updateCustomerAccountBalance.d @@ -0,0 +1,5 @@ +build/test/out/c/test_updateCustomerAccountBalance.o: \ + tests/test_updateCustomerAccountBalance.c \ + /Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ + src/updateCustomerAccountBalance.h diff --git a/build/test/dependencies/test_updateCustomerAccountBalance_runner.d b/build/test/dependencies/test_updateCustomerAccountBalance_runner.d new file mode 100644 index 0000000..e38698a --- /dev/null +++ b/build/test/dependencies/test_updateCustomerAccountBalance_runner.d @@ -0,0 +1,4 @@ +build/test/out/c/test_updateCustomerAccountBalance_runner.o: \ + build/test/runners/test_updateCustomerAccountBalance_runner.c \ + /Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.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 index e42504d..931f713 100644 --- a/build/test/dependencies/unity.d +++ b/build/test/dependencies/unity.d @@ -1,4 +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 + /Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.c \ + /Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /Users/canhacioglu/.rbenv/versions/2.7.7/lib/ruby/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/dependencies/updateCustomerAccountBalance.d b/build/test/dependencies/updateCustomerAccountBalance.d new file mode 100644 index 0000000..5f06f3b --- /dev/null +++ b/build/test/dependencies/updateCustomerAccountBalance.d @@ -0,0 +1,5 @@ +build/test/out/c/updateCustomerAccountBalance.o: \ + src/updateCustomerAccountBalance.c src/updateCustomerAccountBalance.h \ + src/currentCustomerAccountBalance.c \ + src/currentCustomerAccountBalance.h src/_file_information.h \ + src/lineReplacer.h diff --git a/build/test/out/c/cmock.o b/build/test/out/c/cmock.o index 76192cec6c4735e57d9a7940b3d7f35064337676..7a4b51190c03599aecbf4c63e331f9d7f6e343f8 100644 GIT binary patch literal 9016 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 literal 11208 zcmcIqdyHJwc|Ui?XLr0W@58Lu@#{JmFo>D;!tyY&Va>Akc=0O`S0+H$vom*gCZ30T z=iaqV6CU0|SOICEN`rz!NcueUX~EDuWGWDDRZ%0x1dp|4h$*VLm%%_q{2jLpxSYfV2m7j$DgJu}yuo;kOWo`v=! z5+&1*T%@YY&!o4G%}t(T9G!|25^>4jxF5%k49)`)3f0j z2=A;2mqQq5-g^~Qfo`4dWXoH}&iZXC_V>Q4xn~-`BNQv2OYj<&WvKTPOme4cGm;NaaiR21#!O+Mlkj|TFinj z8sKTQND>g*mzP3C0$gB0sgEn8d#l+aZXr{1{jlOz!@#ZP-LhA%`X^HEfs&W0d2Xgu zs%A5R=K|`bw6#$Hy_`bapjh^5ZcxZnT<`c%FB^C{k`jXC^4>AeZ!Sm@UdAsKQKr!h zaZBKSDINt~^>dyd`Q1HLfnay|Q*KsAI_c#BaK}`DDRG+@gns2S1wT9x_)Ewfs1_^e zwperb9o(}gCA2bhTa!2vJHtvgC{`J2A~$rYomKNye09d&1FlM*-EB zfm5`iDz&@gudl)>Aj3|#;&dgdfGPK#r?}M>wN^x}?x@uhwR)pgU({L|wJwTU{ZVTb zw&LG{KW)q7@K=@iUqRJw(9Z+iVbF6xcN+9R1KnlNZvef*px*|%+o0!x?lI_J0NrcQ z9|7HG&@FIFt*p~4MuGo2VBI)=t@jHxa%(rt0aTY#;JOVbLBs;rTcBD9KLt5e`l)tK zDg0$3MIBeO{306WqAn^RoKuSTwxkO|-Y)*dFhK9t?|k*9{wEpK9N_apms5 zn^tdI4f|tQ?CQH=qk~{)Y(R)*S_*;o-F=8isq_q_B_(cJjkc6p|7ELp_w_ivts?{X zfW_97Q)jlDJO?_GXi#mrY;|36d5?2RS6_R4!ZC?Q$fvtL}*bQbn z`!S|=9VBc}WFo%8ad!8ipYDwyHwa_XL*XdddNiM3jZ(eP*#w)xzV#OR!}nT)f+$?KsYFx;n7}5ED~qY=8w*FEM9BY=xS5l+d}WYQ>}@ zmTSL&$2U2$q^0e#^ zWm{s8bZ#A%Eeo>am`r>{ZWFO(P9T%I>MF>@Gx7#aTp3|)-%M;wTr4;Li5wl5o#V0x z3olj21q#x+V^|JckbMuz_(|D*mAvSF+4rGryGKX=139EcFC&e@ucY(Y zVc9mL6kVtieZz7c)Xxsfeyna*)%Rm@81h>29&aKLa4QF5*S>@9=+JfU&`|2?)D|~c z4&b)lKIK(BznBFw<7W%ok6(Xn^4eiHIprqvnc9g;w%}JQ)v%TfE60kJTr$W^mLTOx z=4(MFdn9?(uLh9zRQ+Tv072B!jBF`WD=-_ggk(OOH)wIx_ojiCtk( zo7n4>Z$1%twSzS;r}5hZzgU^t9|rsLz=ZtF65r{2-p*nrQ!?>gUa%vV^SxSaXVn+^ zQZ*9@91T+jtnKrTi4q1LR%*qm3S>B#5Y!4)KWKzhggO$;%=Tl>W!W05VozI`Pl*AgVd{T1cPfbR->7tnQSqj zfzjHahsl~yew*l^Lv2gT?=9BKnIKzeoEhqc8Y1;4iXe({cTM>*T-+Sy^PYb@j`QC@CxiJ`RM*B58rIYAAunM#SjXzCweQ0!NNE$Nk z#Wwar4s8xS4j)XAno8=L5j-T}GX3E3NI9WSU!^J;1 zo$&`t#mPZ{YlE;iQ(JU1>v_2nEdAt`)YU_&p}}ddlB@cI*)qIb25Wv+w^CX0|LH^w zhBXQ=n;nGnVdC21Bt#V+Pfk_B!J(nSVkKJ&bDmIfK{O3Dj19abU~|?|1yKufIWG?l zv1@en26yv8H7s-@C5QAV4c&XyRjDn*mlMnv2Hq6i@DFc)ILh#1nnR55l$FrN;@oqa zaE^C7YdTsJUxxc+EnxT$i^?I!y1E~Vjdr%go&X8W!wU{I%*{ z6*}u>{@yx&+sE+9^r8w?mWdC4yNCe*Ts_TTzSMcti*NR+rYv%o@2=KdmqQf zG3;~7GDJAjT%*zW5?=}8q7B)LN?fS7UK5;i|3+3^t=LBF79e|sdRZt2$8#s)OmqE5 zgyY)B!uS`Vjdmc1Q-$%T33oLd$$y{l%@+O|;ae;mpLuBidJDfm_=trkV9HTGZQ*MO zKVad5fcF~fMD0zG*+Dqd{N6Z7_=8Ym;Wtfz@c$v4-%Sq?ehp=k`~dqJ;U&U(=AI|~ zj|s>1gym<1|2g6OI{YufzehN~C_f_nB@2&^#YGpTd94^%ry<9ejd8;)N{7rVtbSRU zsJaFX6Z*O{ZrBFlCbyuG^k~ugHD{Qur!9@3nI~v3K_qu=T> zh9DHi`GmYn!;A1EOW?kNqYbt{W8mnQ?LWQ*{_+y|yG!7|HgMB#2kZ|l*e?^m#=y;Z z4j8y8UtR)#%D_!Ke{JBVowp3!ly_TJZ`rVZqLgh12^qIWZ-C@?L21TsDtI3 zOW@C2xRw^;CrjYW$L?Xy#D(t(#`%2b`-Sntq`>zJ<0lDssb>5cqWOMdoO2t#Ul>12 z^6a1S1;R(DW}I^vzF!zmVgm}_FN}{6&i%z3-MrQLCP%D;{y_zIk}im&%*90W`OY}O z;uF+BcQh3Wxq@(%htD`s!F&V@;^_Ahij&8I@qZ&@J5d-4<0naeuZAQ1I>J9=;in0| z)52HbVuUiOtH{n1=8s?e8aMg7lD$5T7qSgtPoxs0^jwkjEzHg_m3Mr^sK*lIQ$#hb8}Q zWnGAIOP=%8yDfQ+J8#KzzI(!we}m#VX~}cm{1r?7e<_}CSn`~I^Zmu+^8m@cY}uJ0 zzh^8voZtW4lAok`;r(sfj}xEqFOq(*g`XyTE#VjjLj2yi+L9k8`5hL{{o?h)e!oWJ z^M{uFDY8?r{PO$fK1-ha`CErQ?<$KwV-z9mRZklq1j956&`(X>`b$Gvp^S*e-!g=4#Svc?Ca~96$ z06)n&PCidu>L25LE^(g4_)FZmRP96=el8HHTHx!tz%Ab^Wl{lt#!cliK}Mt|;R9{T zuWCYZv6+Ha3jYU237Dvo^CrV7_@bDvf}(0?CMV&Cga&rT&s3&7v{zSw@0A{_KoHzS zctX+HY8gMtic|%D&`81eMfgDje&8S)K6Iwwr;ekZ58v3eU9T{a_cLW)g*2GIN9BSJ z4lVBoHZejC`^Pq#1{PCq6Wn4f&x}{;66JRZ-nFR9_Z8ozxPK6*?F%hk1_m=B|WUN+2T{i9ZgZU4AGo5lYeojZrvAl0@$?)zrr=Tc&y zApbaiI7h6{<99n?R)~Or96h@9{{&Hx`eV!P1GJg{&1;|`9_rjJzml@e|Q|?d&$bv{j z2eXUU7f;?kb@KMWvmF=F`Ubs-oWpO)>g=fxSa$K`QXzY$ZT@4FS8EotRzm6*UH8JJ8TSWPyH1Ll>vtg(ki$+6~m9R#f8n{H?qQe9m*;V4gdH5Qb;TBX49HZwzpZbCM`jV;)w zA21IpLXTO#ZH7?K@}_%~nU>|%+%QEPcdiyP$313NoI;9){sP1_9XCZfBVp{TcE$3l zHagjbwzH-S&GJ)Gcmgfyim0*!cEz?r=D9ZWiYzSKtmsuL-f_n*v0}}&LdSE1lw!xY zq<8N1N{-9SfSE3{=ba!#3(E__TGjS5A{^MshDp2qb_vKfj24(O*FL_?Nausq@=(*& zxr(=7+nKuS&Q73A&pRPPAnX9|611CbCs$$jP+}yoJsp_bg^4QhSVJ=soMW^_S!8C! zgw~EkBgWT5qK!Ik2#&cHKZ-R5Cv;-D3zKicFNq^DD0#wv+y{`p07*CeNbDB|&ksTQ zm#AY+JL!Rx#0o|?;#aX8;k}5*UmwUp_7TEA#N-wx$RzP1Bou4`N;uTO~e@Q!sxN{S+W9hVytd|8ILI; zuE>oS5gkO$SUns$IKj!T!b0SHRspB$?cqjKf&K ze9S+Yz+*?gPhV1Mba@~tnVF6#z%%n28s?u)GSRQf9;DcFg}t&l`vim>0`4-;WD^c9 zA9B81cnK4AgVaGN`~`lLB*?>%8;0?5Zx3d;4B!WakvJ6V5;I0(eSGfuLg5LI7NhG( zXMGQ@q8+c%KId!Hc#5XRKBRPs4keD!#2%U=u{NVf@5U^o{j)&9;*;&~(f;;hmnglF z*g-oJFVVy$+P9Z>Ctjn;S831Q_o)$I@gv$5e>y|gy-GVDrh~Hpb-zakH&SDX_9q-l zPbYTBzw6X^KNg1$R6ID)c!E0}4sAbVH8*fdu3dmLI3&vyel(NaUpmO9#vf$k$#!kuu|PF_tGr`=+t&2fEi7GP>7p4dxK`QsT(1_SYc3qSg>-1({sKT!V&HH=^z9mT16FB#SF@_8jrhl(JCrB;f-I`%0{1-!QeRbDkQK>w@7k1 zC-AI^iCm=CiB{S4iB-0(qcg=BxYpoS0TrAV zC{+^p)@T*3L$u9UvbzG}bE7(LaSBgPcaJ)>JKwfe3P$0Xfrna;D5AxQC z*-no~jT?V<^XAOhmJI@qb^xw?JaqB8fJK5E?J{C=kMQ#kbmPQ+V$Am&!`&T;bFfL) z0fs*mejZNu_CFt+>S_N95CFqE+<++j*p>A$n-j49DPBtmKjiE6*Xs4phNu0oe+(hEhm3c=^obW4i8IBk3 z3Zr7o|s4S@4YbD0-H##-Qy3P1A7l^5)u7W^-_z>l=RZNRbp$HY*}IO+mk zz8$rlE4F+t$Ip_SRX&<4nofo2yHYz1V7~^9{Yl7vXa@?eWt^4UpG1Oh9~8uKtR?<4 z1VQk?$F(o@$?G}7_Lg89dPq!Y?Z^ZHQLC!CKE`yFZ+I|jxD668ZjtiCGd4z)DaV<*O zC<^FDJw3-29OM2*=-V_rCG(+^p`aJL!rN-;kShTD-Cx zH$;vZ#+4%1B=YfWm4bT>MdyDug6r#lv(WF=@Pk6%sNqitUG6iCi~Fl6@ClJi{Ar=@ z)NuJ0n$qyoLYM1bZ$A_DI0ouCOlr8Cmm?Z3*TdH}T&^pU2^OmGVE{S2)p=f)CEu=? znb4jONv2?iCduT3fMk3xQh05_&euvg$1Qrm;bk+Q_w8dqLt_EKf2&G1nl`YCjYy@Nxhh{@H|2aFTK1D2gvO^p98Ms)F}AuFpvogz~-~0f-0sN>I^Op7-({g6k7;L4#5xQ|cm+Amn=d zO@N`#|JNSRd-SP?%L?EXEud^am~g@MuTeODQ#9z$TBW8E+*eJ!xe&>y9!advsL+&tMejsB}R!{ZzAA*`@?JvVWUr?ky&Og52^!DR9qWc7h zd{M-|hKeFOw*qy|;$IN)FAH0YkMCAJ{z<^lr)(z_xjZ0<-_rt0Rp#FUb~F1+*jW&H zE=5|SuhRYkR5Y{SjR!3Vu5VSOoy=c`N?BHUfv{IGEbH9Y0mGrz*Z;h*XHch#96yP@ z0|oS{+g}j&*gsWt``&8_4ParDtR3E#VY^+ diff --git a/build/test/out/c/test_mainMenu.o b/build/test/out/c/test_mainMenu.o deleted file mode 100644 index c7879b12ccef6ccb2f4394e277409ca230376c0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9952 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 diff --git a/build/test/out/c/test_mainMenu_runner.o b/build/test/out/c/test_mainMenu_runner.o deleted file mode 100644 index 1666f416dcdd533bc3e5619a89bc299c101acf08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/build/test/out/c/test_updateCustomerAccountBalance.o b/build/test/out/c/test_updateCustomerAccountBalance.o new file mode 100644 index 0000000000000000000000000000000000000000..fda3468111bfe00107b0802e29bc2347ed72555d GIT binary patch literal 3448 zcmb7HU2GIp6uz^wGcDb+EiKZPs$COQOz6z+w)_+YTe>A}S$@)P1H|YsJA2)Z?9Oav zX8R*VYS#y1G}y!kLt=s&qa;4?Kuk+CV*0|15s5K8_<%9Sz8H=AAVS4+X704xr2?Mh z+;hHj?>+b2d(SN7XafGZ~*aPU{ff3QWVX0EZxX5gQBeT=lj9JK*UMo{VR3pV;y=C_I6i#ynBD*UO1LXIkiny2y3Er( z{F&*OH0-X7?;`WJiMgp=!<1$5-|-bxt!95o*Sh++FDu72tv>FDvT=(i_MC^an87oN z^i33~=Fm(eH8j!}Ijq`|y*i0vgKJQd4dG48pM@Gv6BSYsDVb(ubGf) z(6G$LpnVSb3__r@o^V?%RDoTfeg({Z6zB(W9o6^wpFmVqd#*r5g){$vHc%Dxt)B5F z8bg9#OYoGrd;mSyiGi7uTTolK7Fs|PoroG3a&{nU^w635XAnKaP;Eb=4GdMM5H&GW zbqrApt|SJ|h$flo!BL@ajN0pI*1F14~TPG^AzV{@@@hNRzy~$k9+f&` zQVix98Pk%BhVD$twxxNR0?A7)L(SRJD6an?j~LG*7$9qw&ZR}*Y8nNy-xEnetogH4 zdaYCvq@)lR2Zj1+q3V(#iKQhpy#fsi0r53)aBx~6yas@OSBA<5g`S?;<4674KGlHW4>EVE-S!Jd!tBg; zcGt0m8(TJ&_|XU~wGoXHiIzTagxXX|t2BueS5#H2Dy8iY`uGtA`XWElS1Q$;%Aw!6 zb7#G*ohH5VneU#*J@+y9oH^@j@4x%OD#j#+Mvow97d@gNv{uk7GViYVc)s2fAEhy9 zK3|7EQ3DClG_7ck6}`U45A8oXw8ZhmLMxp3t?Tip; z+MWJ^WWyK%qA^EOunwBrFn|{YY=c_tlj%ThSjj&F8E2_nvr1FA0AGA%9sFtnsJk^OmXEdd@7Y zu)c4J^V%i+eGsnr@jEN}b5bV_GN@hOTVj8k#OR&=#qhm(ue-u&TGjgUx>4&dK$i>6 z_xISx^j93uuejeW!rx8LEqm%C{TWUU>nds``^l`G*0jN-7|J0e&i`#8JdPlvSJb!0 ziwksX&d0~$+p_3@8k9i`_PHH&AxH9?G?;*9^}u9epeaWJAV&kH>Igx`)gS|-93k~ zv*h>oRq_#-TLkaVAMTcB-;r7Q;!NAZjRsb}S;xxnG<2223a}2?#LD58uJSg8&4yc8 zxh)K8WHi@0BAVxIxvNY#&)9vw?DCAZz@)v`iTCvvtMp{=+YU~=R@^WN6aH0*8&;L^yOAoy%U1MW(2H9OGEm=b4X+qFTC zkkP%Zd-1(cJ>g#_TbJax^tGnsnXynD^H+Po)l*nNIHWo1@4{5vKT=Xd3%eJiR&C+a zH&#@1eJ5~MK_Hx>M_0E4Ps+ZRh(-I32mDDNh`*|(t zfiOmmK_P{fguyRBAa8_5l`3Bu%1crXH=0RN)lX8iI?35a!u9G_Fw{KZP7-cZw|g>1 zO36u*uu1VhlXR)1+#wQfs~ZuPNiKYhgafqP&=sM0kt;M(B*KB&u@TQRD@;3o>A=XVFl&FCl zn2C;>ZXxT~(T*MQ_IP`AE0@MPcC>?wcYZqF+1|O0rAk>VouHeVa7(t0A)NW2S6lNe zal;dX*_5lhYFbX-bQ3*JE~ne+LFCXO$FT~D!^wd{;vwBQbogkzkUqt#x``tN zn$Xbg5#7i-8LN~?Iz}mH+QmX5rQ4_ANza(X#|q!8VbWtlx%|?feBakf-B;v8GXqaeLgh1lw(H@9vC{N9XW7tsH(ej2P@fy zY{oXzQOiN?)OWbM4=;~V5l2MXo*Ky{=6$kni$*dE5@PAjk`~#L^BXTEfAaVTyoQE1=AB|O4O zMEO97C?}GLGK?5V14u*}MOaY|BoXBbVTB%Vf(`n-kG`2u+)=}j%~oOfVfyNX3Dafc zt8*vx%jO>u{*xXq(^qHHmBxP$`wg-;p^_x&KaoZPIs!V0<@t>*&pNF7Q@!%%d@1L_ zYurtl_Gm&R*g~Q+et-P_gq2Mpho;68$XK4N-Rl~rnMP8`#MWFt>oSk;uM2XTz zqTm`{PeURzU0b&b@e%I~!rJD=la3O>v-SlSJtU=3x?3pb^YYZ>qnpswzMHs`3fgb%d@ccSHI~bwIfXxIsOnD6h?^{oum{X9g5yMwPq!m9Q$$vwk7M z+PRH15Lksbg!eOu2TI>q7Z6*G?E>O2wgZnAAY~y$V~h$g6d^InPQ;TDqA*4gg`a8` zWisIKbHKHbUjQPKV^oA9LI=O(;R9!Zh!X3Jhr?6AHL#li;?fO{dHBE+Kui(q1EONL z=w1Sc_W&c{cX>G64n(%L=>7wTHvnm!ltE~H@XhxH9rqUk(!T289DnLxJ-PZjfj<`b zU4hRE{Gz}-5bKCM4#YYldx7vB*&_7w0xt@j5_nu-m%yk%0AI)N1-4>Q5s=^Lw+Zo^ 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 literal 57120 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 HWB>mRg#p4~ diff --git a/build/test/out/c/updateCustomerAccountBalance.o b/build/test/out/c/updateCustomerAccountBalance.o new file mode 100644 index 0000000000000000000000000000000000000000..3e002d042c19402f60c996b7954298198e521aef GIT binary patch literal 10240 zcmcIq4{)5tb>F*B-*Klq{g;ujjdeD1kg+YvMqn9paK^H+qzg5+Nfd(ld^(-1i%xg) z-N}EjCl-=PT}o=JfsSWzI-*TlD`}=QrKx4?sTtfrX)_6w(4=EJlIt>}p$&zGS_!K9 z`|a*0oep7WGu`p`{oZ@~_U(IbcfZ|R`G>#!xBvDD;SeZ%<>5KTmmd$x4S3w-Kc@VO z3Mi+wj?G^O86Vh|#j-Nd0~yT#ENkcHww<%QO)X|46xwqVmk7~EL7wO**u}CU=}an? z*rNrx_G~*Bb^S%J-BKZKXBXH@CepJG=Gq(6es$+f&hf zjJN6Y8@F$n(P(ljazabq`KY})F532DiOwXOM@DJZdGvJ<&9ja_yZcQ7vEA1{$x=vZTm)?Iqj46k&C) zy*BMnwQZ)tCT4J6d(yw&a3t5>;T(I_pVD6DVDG%~4r_b=C|8ycTR+iWB-sPMGFD$= ze=N~qS)rzxNI>+LEAE08)?nRnXih8>!lh(6@v8Y3k0qk4&W$&?Ks9<^&zA|kjxWHT zc6pAywNS6bqv|lZ9BP75iSn1xt`2x+Ibwy7%WWGT7P`)delEnLy9V{?%k+!l)u}_y zk*Ps3G(1>!Ra_Bu!<(wk4G&sZ;nRtwLJYy$lUS#d;L9hj3r^NJ#dD;`K+8HI8nSs2 zY+phfSlV!}|25RjvGeok>5Ab^*14%e_l%(bp$mrf#`Iv`s~;wdN2U&yj7)9H8^YQ; z;dTTk`J5hHa&@diOpcd{N%}WdCC=A~{_PVL!}tEd2+QujLJN%6X%(WG33pGe2o{0QTled2zi8m<3+*I%S9MZPyhDQ zn<^WRxq&+>8&6*cj8rzhy&*U{VR*jvwjqXU9Aa|Ja14!k#U$3p34A={ycqWeCuw60 z`J_!eC-4j*&e<`?*iB#@+z#;&UcWe7f&Loj5d=d}VMnJI+s9yB}S*4$M6l)~sV_ z_{FL-_}-r5yg8k&YV60l*od7JMrla?SFNG+!x87Kdu71z{%I(<_bb*Y%N9 zG@PLVYizCM>3p#~Eh5Rjc!!^MQ_-H}zNkOb1^cPko>(FrSGsd_cobVImUoKgrhsS< z$HR$8G=LcY--@HevAnR%Gztd}7ykT6VR6Nx!V*U*P9@GF^l8+hzSI@0Gz#zVZt&iG zLvz{PH{f@NDV$o=TqcCsFo$({Wh4C7$!*QH?rLEa-sSaT)9@4tHqXBvpgO=Asmx&% zdcEuoKa>if+gwJb5p2N%M|0WDuu*8rhDD!|P+SJBJ0UJ{pk9d5r4X-!ei^&+dhY@$ z-ou$r9qaJLM)8R?c<;n>j4aC66v#J!DLJvsRH25W=lgscui+e*=Nvk)7gij`7&y~8 zlzEI?9_vi!aralrnXD6rZG9DGJy&R>SlKvU^EJwf-;oxN`=01X9ZE?|4 ztSkK~-lj2h^vEBOEqfdBpu2kMN;x@~4;ESO#Dl8x5h^Zr$iR)~>`Lj1!FP>zrSaQT ztf3;BHT*fb6|!@7Cq27Gc4r*FATF|YrS4q?v4%m2>)z!X<&5lM3EoaK&w0G@4alA5 z_h21d14DG0>LK=(Nj;8HRx*9P1LbNuDM-u(i(%jhwKX7RsH?sWXQsZn=&Zztc>bjnycqf zU>Y1|-kkL+mZ1X?wyIZyHng9E=3FZW%{kP?F>}h;F=2KyrOw-w^FwXSsB@hTMUJPl zQFE)Lo9lJZDnED0Fx^pjl9%W1rb7-7^XTpe?Q(ej19bj}c%1}qeBJwXz)9oFzHb75 z0UwPc!uLJUv}*LbeLR^-`ca?n0%#migfUR;`+-dlmiqo4bP?r8D}DcJ>pxcGdmr># zB*-{c@B0<#dg}aEqtA)%gQOo1`rM!&B>mf4eT|?`k$z&E?{3i2=J7V)CeRlsKhfpe z0b2Sq)a&~^=vOFzGUM9|`c2YL?f2~mE!&HP;lvGI`apMWwYyM*rwXxZ(Q znX22A?CA+7Izsqey)&7Nr|Wh!wWjMn8;<mEqMkviF`_-l>R4GT9x2AQDfqmg#{`G}1ZZ7CBnh4NBO$eWx*biXBuNM9<2X=AI|tgPeNOeRn@oMG)D=X|rLjBdzzAz)mK zCEKo+L6$SK3S#Syja%^vk#{=0*RiiJDRV$NjRI0&fl3-nSa5Gyur6@!h97?R@}(7j z^YmA~fAWm~+3z$jdaIzN3v~zZ@CP5JQhfCb+#^ydPaIFs>orut`oSnRyG zAt%pkTw*?u+N4?Dt-DnC^!VPQZ$HwM`C|HsOK*&S`H^pa_vqn>|Ea?}-tB#7_>cc~ za@z|ZOx5=v^ZxkV2aA{2?EUI()4l)oBiQ(7JRjikAjrjd>hRoy=K(xjcn;zD9X!wA z;lYX926tNg6Wr3PfhgRADdL{5Mf|i=#4oA%EHZ>BJSS0 zVZRpfo30yj=vIsP8hs#0!x^W6b+VXG-zo6WM{G`%gR>1s87E?|pU>KZf) zTrDl;Vh|OOEf@gb>N57Xm?bX5d)6$XBAWW{2eiP-d02F=Dl_v3P4hm}tL)r_<{sBs z*lShx7E;h^`deXUpvAl%Y$;T4Y%vR3%$2U^AwJ8V%;j4FXN`^)mr?beSutoXfZ9S- zc;Lmu?Ay4$#q=3PBnONyx~~|^>BcYUMh)C>f5$YP)e9gpcDOU9X{;V_y-#jC!!y>r zCw+7yC^R$f8-Sn2tpkJRhQ|=}fVmLHU0;#0`CK814%bnavC&!MFz#;2bJEn7_smM! z8|X)1_88OX(IyYl}@eCjG}?;roGaek^!?A z@w!?NwHY$k!%^Q^j!pscbR#&VYyrp`MG7N^K{6`XHe@c42}fj|$fvPz0GdaUgo9_1 zGY@md_+S@U1axz-g|S<9ymY`cTg{?YvkJ9tS+Pr2RLcqn+;*-)2yOUrW#+r`jTP^i z=26D-fcsC-$x3GWmO%=3petnFbf6FX`YJc`^WFQ*@^eVVS&V+GL}9eHn1wFm_5pK= zk}Q@r%q3=1h=w*x%NqtD0N2DRW!$C4&_uX;z7?VRCOGXGK#E(<(&y*Qx=KtuRF)v3 zGAP~*y5Q_AnI+98VW;wabK&!H=6&~woO%}o=U$1*Bb}u!v&A*&EXH?AF0nk^Qs7T$ ztFPj)u?+Y+5Puq8eGymQPaCb}$JO`|X{1lLOo&?gL6F{7WLQg0R8~`qdJOjj8Db%Yl z&;i8M2<=uFXag>VUJyt-cLFhVp+<#)Y9Q_Sfp9IfSYd!kXTEqw0q*(4({r^Dlw_wRH!DL}6()?1* ze}J~sU#s~yHQ%85S2Q2i{0o}jr};CQKce|R)%>HH|0B(x()>Ez|FGtlX#Nj1Z)*M} z&A$ns3o&uVG|&9f-=AupS61XNX}(gox8t8?eOCLo$YWvl>mMroBWV$2cBuhP-afZR zG;g1C4{Ck;T)IHl+vnIO&D-ZvJ&$bjoI4!9nKB3_oBv!+{ni}*g&ZCyzd7xHKgZsW zbLwBp;Y)J(n{)VQbNJuOu}|Om*oD92viZ>*{s%dHL5@A_1#{X5b9iC(M0+B=2PN{# z!Ro~APnsv!6#j|0RZFls`3D|cUqBv?bX$?GZmScwMp6%#G^!>AL#(p7aAt<<#YIM@ zQ?cPpGR8|5d6SfTZ)9Ej=E~|+mV{*^tl?gzGs?I6gAq7&krRi%^1ox%&fi(>>_vpU zsX%-FF=@s(3iU0Qb&WeQ>)Ll+^4{hew{3Hhx~DIk!rfC(I37<%a3Q5ojY92uJsh=- zHnGkoZnufsY+_A=O@YYt^xkT-Yi1}As8~BwF++hs#hRIlSxQ#a&s5Z7I?3`sdRxd* literal 0 HcmV?d00001 diff --git a/build/test/out/test_mainMenu.out b/build/test/out/test_mainMenu.out deleted file mode 100755 index b4dffd7492a1d13649579369f2908cbf2096606d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61120 zcmeFa34B!5`8R&=+&Pn(Y?BoNVHx%{8#}Tkz`zg_h%5?-hLB7a$wHGE78QsDl>A~W zxKfKi?M5rObg>i^f?J}cHd=oct5vjM2SOErYO2=!zt1`6-nlab+xPeWKkw)Ld|oc( zo^zhm4Jq-ZP^O!-j{qxrs%uCo@m=k(I|N2gl{ir*K1Nwt4o`2GEa>!9 z#~bw(2)q)OzLg;0dTQn)-_%zLeEr7Iv{U-UvsJ)#J^~Zp4#~Ge^6BXX=?Fd5{YgHd zze&=c;b|stbm(a~U%BK9PiG4@MNg>?Iu@PrmHbcYE0BEcHwii6=~U?#J=N>G0es|_ z|MZBHgbQVTS8IoQS)ZOt_bM5c6{{wU%cv|#tE{N@uTNV)X+qkBap`q6>0`KL(#wTE zimAEtmnaa^LNMt@#ZoWIx;(-qNj%Zd`h4hRmi5e}!4C|0Gv~qk-=FmIV`W4`dJ_-P z&_VK~io8tu82k~9@W)*oPB1#&@V+i1N0h_Q`2fg}4MDlC0)HHE!i68yUAmJ)T6YI8 zy$U?#D)6I#yYLr&koUWjPk!qTKK&~2-vjQ#U-+Q{FfbfQ<-)?^^+koH71c$R6}Nkp z%9`r3+p5+mg>_yZPYV$+#f5dgqFP^JRZ&H?Qs=An)l@2L{JuIcSJc%MPo7*@S6ozG zO0eScqFR7KU%a}oxO{bCX;B4;Yb&aKr3#6nP@AC4&6_uKR^gcRiAHXmksBM#j!7S{ z6wX_mUs&R;^_ErC`MkA@^JhUv@8Y6Wm0na-R#j6iwJQ{)-4eo33t~>i*@{04&sh-V z1ffF(oB~YmUp*@-VyG9aldvRSwkmhY@~?J2j4;)dCRz6PuD}RwQ65H_4t-qI$0L_) z#O-q2)8VJ&d}OcZY>E!o%dRl^${PjU@G$r;3C|3Jw@CP;F!)Cjo*f2P67jSNF2*;3IAnrT9s1E?g3GC& zquNaHNSzpIy9pj;f?vyC^T0I^T=T#+4_x!W|4SaYTpLLiFW?xp?-&uCA^fyi61R#j|f1Wm0;{1?yOWt3^czj*dLdKubGhFBB|xXSHO#>S>;K7H;WEt^?)e z(sXD4tuO)(Zl0!+pPSj2KzJs1`jX-L8z~RhJGxFe`_~iQi!ufM8-#2g{~9GDzVS3( z@EreShUa*v=22hqyzz}M2?B;l0rsv_rQ8oXKebQ&G*Vabk6Pksm}a4@r}2z0+S4@6 zhC<+H-*j~aO5ogASQX0ZE#NikC;qeRfTYY4@U^mhl7OR?&6PP%E6bMI9k;xwQ+A&X z)WI!*laLsApH4rb(_+9(U7p5`ot{Sj1yAFWfTziglm)O6K{kNwKX{gX zPDw+H3P=ZKTUi?tI*@%?W&>G}jt2OQC>mP>|NNJ*Zd;2#D)1W7Hn}^|2b$R*B*mYC z6p?{nf+CPYTKA*VChUZEylNN?u7gvB+@l$aa@a}on%U1d>=oo_{YkaDzQueENQiVT;K(ZutfUCw8> zGNRqu;!ip{8aTM-i7CS5@==P?!08}^SQl<;+d<7(;u$4u^Rd8ZUv+hv8tSg|Yv9f+ zjNgH_rixp)J&4?Hv;!GWP%@riFy4hK8aNQf6AaZ-5>LkOLWZjj<0;RLCk`0@k90Dg zL%H$$fN$VbkU(G`8NXYXFs6y;h4GyBg39f`LD>J&b<+NkWIwS%3?;rzFJEc@mtpp| zLr9qY@M$BLxossZM`@cVm5WlnD6J8t+eK-;DAnga*^GEY>~+BLUx(R z?nAafWcMRGS7e_?cDl$OLUw}4wji4!vTeu?7g_4114Z^EvVBGN6tcZUHh^pok-dPp zgsQx05LJ}-?D8~ieVLnz##xufBa`4FGLdWGbnq&XCv0j%WFn)>puCJs`YMJ38OD!`{WT|EPi!8NFFOj8|NfcRX8HdPH%P1mCE%U`B zat(&^6tL2x**# z^KpDC!rkWPptD0hMtIaz&(69&-~8Df-A7(B`ynCw37yvGBpL#^cP+33IApliG5_$iA=ZTF}xJQxv_hk;f+U-%K3osM-UA;e8qc66g|+#EeSxoKc0i+hEvW)_ty;@zjka+XhKHU zq!gNT#Bs<(q1$3W>NkF+Y<{Y{>anmrbqL<5CpBB$m&r37v$=~0q4%O`hseSyDnuX4 z0zp8bT6&09zI+k+$YV=sO7g@pyq=MCkw0(ImSI80X^S&UD78mWNyTxQz`?GyAn<>PJjVz|`t)fvrf| zDDkwqPsubuDWtKNNgB*>-u*oZ`6VEv_*)&lL6A@Oupe^RGGS0dRa;~eTMQ5xbjdjq ze{nJOoaENyBy8O)g7+=rU2Woh3%n|TsBd`NCFipIx0;yKB*>X@eBCP?52PFHaP-;X z=ps$*^f+GMtEdm0Bq8It^X^Ba(%%3})F*kxq7gpfuv?|lZc_S(p+ea2ILR_Y;JO!t z;wMS*UkD`UKiS}xieGZx>OR@TmY5`w*3gT$J&;`M4nK(~<09hS?@8?FmPU6Ayhc{! zliNts6+**~5lu^48r#u%)OMBVfX*jIHo~OHd*s0;_UEyRGTGg7=Lsoe8C3yi$>LHl zk8Z&puknTB=lZMdZ*(@gUutr{)No2g&loJ*&HWN8ha=P3?;!5>7-U{R#&2z?dP!|^ zx2WJ@mAs~x?u=<-USuJMT+y(xP1)S5Dfvc#4q++XHKKj8yY0@1CU@HxCp#QXY#I<4 z5gOemn%pN;cU#9`RPQNn_f))DR$5w$amsc4OUv=j{*A{Q+efsK*s2o{dqUZi-jol@ zZT>S(y_8>3D{l;V|!b$9dB$S z$F{+-Z-B9_*^}AiZf`D78<(^-N%righ^;(J%|(CfG!DriPfgO7V;^w9Uj0wAsDW6jPx`mzd-pW_I*kkc}2;h zqDooOFKMZf0FwPgBCe`DM%h;OI1)OL-7B-l=q_8J>U{Wx8(|byKZ<7w6BxSrnUAS3LTBz8}UckixV!T8v71>IE zL%us_Q$s?Y5VNubJH}i?<6g7ZjfqbCVFm zBjXlBOpY!lTJp^VDpX0Ae$}gS$$3=pDS8iC)=N|XmktveeSQurJCMLy(UcR7THXbU zEBh14{2r~6n%R@G_*3S)D7lf=1P>5>2tIJw0nRftn6^;3Iy2kudyalGX zFZd&9funTPa0mO-0mrtaHSqP!2h&NNCif{qJ&V!z5MM-I$2ANxwF;*GlF4CW zy31f`jsPB^{-z;i*>%0Che)%T>GJ84Jw^ zVL6Goy#u8wugC{2OOk@8LNM21iu;s5w#oe-Une-X z6+sIF9s!}G721;T0DY5yIt6D0HpO!mE1Fs-(oq{1aFhiox8(1biZ-W+4|pcOu(mr^ z16wDs#H|a)HUg9AtK2wu8#T)*To;0aJF)wu;=l{k0JKp$C3`t}oJ=AyG$4H(L+t{=Mbt*?n8Vxb*j~US~hStiITl? zs>lZ$c&x1FX4KQL@j1mm2a4^dntzVD7e+iTjX00R22f8Es)QWc%Ko|}ROi2;OlT)$ zfwT=R-{Rb=(WQi@{HM{T`#nwm7LEZ`EJB&C61+ws)XE+X6ZWVS_QDxb?3CTNiq7lq zz*+U#akltIbX1WrTr{F<7aqD6hBaxhcmX~jpGvadfb3Y1%qS8WUHs`F)7v~vut7)? zSwheHTUEAaqq>5_HzqjlmX+@8}VI$4_ar zKA~MO-(O=j4AGt7@AM4dDo{#;A8(Lebit~b{dS1(GOdWv=A#g}SVhCG*1%B&8YrBS zVlq)IIYj!1xSLOHh+AfZg@j%PUXC>BrZ%pp+FDuHqR=+h77N}{r>R-uR6iE5u-p`__EQ>HF3^ zA|R@mp$5TdGr=gnZO(89oR82}xA6s8K8j;B%l7yK8@z!m0=GZxFea1MfUU^ z5>Jk%QqtFJIrZ11#Ll76P3+ut^m&1XO>r@`K{S=!U!#VvZy(FEgkME? zzBw;PZXNBQL6hM=FO-M25n{3y^KS6w6Yky>pzC9r^tU%IIf1U!6vrLNtSk1kJ9=x-Mqwg%`TEOmVn0b$<{6Sh|h zYyFT5>x7HqzYCq}u?8y#mG*4vOSzcm0(2GzL_s;d? zxK{RBL8y0LN143y`6=>ro9bt{wtB%z7g()L?(@8>oF}bgv2_UPDs;=12O@PBI3j+@ zWqm?N^Olla*}SVnKG?j=WTkhZQg|!>GEVMJTugHge*@Q6xMjCtc?5nMMo*D~&x)nU z>n@>hCuV&NMx4}2W;U~<67?63y3A2$$$N5vGLL+X`^5`FJ#YeLs^Ibm;nUd~GVcJ4 z+K0g2)wpDT*!48jxtBX0(`7UJk;u}mkS9czZiW0rWCIu|u`WUEw_%}+t@MMK3|dgc z+_?XZ0F9AorY4p_%1F1368WIp21-qHp=ra${SnT4B2-+c*tp;3YfY$!BP!SIEqG37_GjeQB^cDVccV^6 z5+<(}s6@;8To<*dyPc-HLzwQ`oLjdOrpdjF8oH8}IL&NpKcZ?4JV{FeehGmVMy>q? zbeC8tpiO4K%ojuV5CHczCD(cso80gaI^kB)C-;%G(DDK zjAT#t1qj6ytgV3RY+CY`SRkYc|G(Zx;5#wN14lIpe2l>VR^m?@c)7s%yAXJagwLSG zNGm&feP|=SfHI-ay&FCftkf5_*i{~C%>NZFZ1WoP_cghH#TT}5;S1X`5+z%ySmcAP zv|QG+1@$y+{FRv9_EF7mh>`47X+$E7fQ5XC)kOYjWs%@Tr#H5Xu~OCq$O35#!u^nQ z>$4VA-;|Fc_v62;JMlobz+Y(&ZLQ`nq4q4c?m=?B&uClOga-#`wXU|8$egRGh@L)HEbDI(D zzndq6-P9F=*n@m!izl9R=`9IKVT+RR86*rHRpV9>< zJZscjwwPFtv^DwTr~#F~a_k6+{T;9fRr7j0ok9!zy#)Wy1b;yCx6oRtnN><`lfYh( z*vG|6iihQ8(xa8tc|s#;9m=H0-jftbDaKm7MXbdSb+Z<4!tyA5fstvfC>pUz#Weyr zG@3-qu4NbbVAtxJE9xDFdNHU66kiFFQ;P2vc~zk!vuVlKyvfvd=d*E5`BXUNQE96- z=>^-eNX*2#rp}kmPn%nlWF5oK~hZ?04u zu1#=p7+$fm_cSNHEG$E0;;ua(cRTqOpjRmRq=CMGIKgFP>QcBejV{GqMqP@A_Y1s7 zpi5DqGo(u`mYVS{6+o8?(#tL-c|y7rjpLoXOC?Eu#7GPo1%q!xC5Onm$1w53H-aNf&`eODgL7w7+R?@Llei!t4AG(&)5~!8^ZDyz`9VnA2iIB*3;_E*BKPO%Q_rigk<7M8WRrXb!0W!!MGLn%N#n z^}L`WMa@(vh)M=UKXP&_dkhlb24k`H1C&YNt8V~}ZL-RrLqcc-x5<|fAGr9W`0bFz zn;%mHM+e~5ZLeMtK6vPv9!;TWU}U^_5Ui2?LV%t?61-+3x9+&YgB<&=AlV*5g3yk` zXxWL;5<$!!$c6?oY`-h=!LYrX0C3Hd?c_x^jEb~|5*_X_v7Y#6oFJO=4*3sbh;!?G z3hpTLo2yBJ^ItP~E&P7rU9#n)h`xz^L@3npHBIhK>|IGo_Y2D;<%a^*A}QabVl%s6 z*83vIif8#;zQ|)PR36y<2a<*X3z8ovf>!opu&co7^Y723xHmwmKl>i$oV7w3eygHZ zZ+N2=oHrVBOUkv>k^Ln>UG?mt~}W5%-)2P_~tQGYvk+f$Ud$wpq}jZN{M`tqo@Dg4s2}Y*jFO zTQFM|%nlA_2gt0ca^c6M-@~M4mM>$qCsr;3@zn{km3=)`SUE|=^fXELDPJY9k0rLZ zzz&nxHw3m_V!x)w#k0H;`%7R&9gm1Q_7NQ%91o(|F`~ZvK*Vn^PmzF)23L{bx(!^x zfu(UHJuVl&DdZ|m5G~^)aK*K>e3~c&ha)Kf#5!*w7mxUv><(ZVz^5227jPAtqNIcI zi_tW-<2L|F{Pzv`4Zz=j7k)A2ikjFDL|5Zt0w=)WX{L*e^y7`k&8W`|RBK==u79HL z3Qse3As{y^`ZJ>A_nF-%5r-Es$b&Q$;%=0kdM+qLb=a>f9b;e&QMS=+K~FCGTp*q) ziF<>Xd%Q*h902T~z%~Ea!3v=1su3PeFsuIgYrLhU1X1-z0``EJ?sWnCjTv@W!2W24 z{Y1dd30PpAD1IV~I@an2%Np0rdU|Ps1sUynIcWi8^{-ka&C!FNbIbY#!eH1e*$EvLI&2-Bo%y^ zGX2j(1RiOLIn8auRgp%HSPnbM$oC3y)}VJ!`x&Ha%-x*7(U|CX63De$wQLlgEx3J4qRzK6cFbaitKRK8EBI zD?k&nl+v0SWhUO@HD})P<;p7m?aP(hYCQ9m+j6SigiBim+}P2OJ7#s(SVeIuY04-i zV`SQ>^wAk|o2MuXu2%|j7A;cd?1RE>^j68$B{z7&#T5O-70(=q&mucZ&{JAVy)L@Am$g%2XeL-va9g+H=kE0 z<*5vR*PP0lBA;ttU=y2yP}TX%vKUYjDn!&(qO%d zn|xJbgMN06AHrM(wcg?i>aRf#A#cLCv{e^TtDNVmgE9zP2gr6czM{w$bw35QJvRShXJLcbc1U{jlb4~G0SzGOBqt9 zdI^Ul_k_|&}1aW=gOMo+Tbm!t#j1?fe0$*{mE72 zT2)lN+Er9sT;s3y4S+Ftb)Tz340!`wJ_LSI8D91`Kyiq}<+{mRSzJ@)B_T73H@~PF zYSj)9)ho~>QjqEfcq=g^x@xMuu9{MGQLn4Crn0hT9kqU`bZ*@M6Q7G8Y18v+%Fvk* z&gk*p^?2tWaTM3o`QZLqqlf6V2`-l_ZTdp_fqKNmnt$r7H`)K7VcX;__O5fv@%|G`w>|r3x`5r7MCNX442I zsxtbQtY#g?P?x`2SJG9acQ?$!emGA})uzz9Q*p0UDLB;CMen#cg>)Cv3rL?vy5_fC zT}zQJJKWXPhO_}`0O@^5?V6%|4=Mea{CT7vq`ya6j&%KzuCDD!W1s8l+K;ps(l(@n zkp_?scpm&#q({Mz^vE&rBVBqN{75Y?fFJ2hr2CN$e-Zphr@jP!r0bE|nW7AP8T?3p zg4Bbw_bcE>x&+s>wj+H8>3*b_khUSc8&?7YNc-U$sojQm=O7)9)K6EWktX75cRA8e zkZwnM6c>N@Bi(_!RBcF?;F4tkX%jB0+A%oQ<0|QJq=j^20qIHH`zc3Sf%{3@k$#Bl z#`}?4aNnX0={P)35kPtm?hD!Nit-9>8V*M~gYMuWU4^t9>1N!G-imbOxvs8#NFPDk zf^=+0SJx?|`A8LqqP&LGg>={XuC8pPzd^bZ=@2~sQ;#(E6YwMbKGGJX6Fvn$Qr89W zW1wq9>O$I%G#hCIekQOIX%D3JNVAacLpld(3(^%xPa&lPHxBus-o8*#*T<=;(Gm6? zxP?IQKKP6KO;^`YqL>|l%fx7V{Efrk$zS6d9|2y;V3uNygb@IV3+ z{|fwNKik#C83~Ak;6D6K0=yoneo$R>^{f%~jU=EuHtufAtQcDn6he{k2k`d*@KHz& z{LCQ!1i+iV1%Dp+3gF2Gga76re>Ci_0-o!u*FQIi9}WC1z&~N;w>-`XNWVPb1HeBV zf^RnPmB8PMK6y3$?*)F|x8M%|KMweRg~-2b$UgymJo>tV)UeO;g@Hd0_-DXBYQ}3j zRU#n$qcJ9|MxTEy1plCc9}Ro}egEen_5Z+-p9g#`#)ND$ejP`1`IW%m5B$ewyyY(j z|GmI3#aNOQQh$_D{{i6hFvd(Z^VbFCp8&ob_@~Tx%TEmX=YjtMc)sA!+t;$zz(-?D zyRii?(+S~UZQw@(|8wA{VC*sctBqkqz}p}AmobK|2;pC3@K*w_Vr-jf#&6(g&VMiP zgMfd)jJN!k!G8ewhk@S}g8#08KLLDfYggBgL-4x|{CVIX0R9&t_@5d0XpG52+Pb>- zgy0`C@S}nMA@KBT5yO7Vn+84)_*-A?>S_Wb z$&jx-XCVRP-vhvVF~&~_;ZHO8PXK=h#{7ST;LjWQ^S~Fp(be@qh<-H@LL{5zOi*2B+1{cAK`|4QJqFvkoC;ZHI6?*)F$pS!xo zgy2UQ_yfSt#@w_hM88}^zZ1Z(!<;oE1V6#Rp9lWo4`5%2{cD2uV@~`O_(5j;a*kF~ z02>YbMd16I^#h!69^fuvo(vfq0jGAO7rAf2edQ|T4Zm1QjC!{M{|DfAhu|MD@IM0n zdd$7O&G;LHUL^k|;N8G)G~+Ekga0(}^pxW3A^4XKycKhK0p|4nX8eso`GbL90DQF> zZ}A%Zvw?pM__HDSQwF{S_)RidiV*xt1AiL$BH-tm@tZiBw~rMQ>~`RBJ0#dX)j|AV;P(RWG~?$4@w0)y5BO9w zeqj(_0(>Lzcp57xKQD;i3j8ME@lae4pC82k2zcLB@WgWMxaNUt9=PU#YaY1ffomSP z=7DP-xaNWXTRotE??(T=4Q-|9;Cmya(Y%C{yl94}Ecr2eo=AJivi=<%zUBrDOJsiV zJrZ*I_jG7~M2C+5$2VOyRDPQFs5r1CAEQ$I=o&gqU+rz9fixD{Lt&~C(AnBS6#wB zkaG|ospR%%N_kyDJms-T^tio+Izbh*%eQbJWT9%&|vo?(xlb$(lgaj+2A&IVF=s`OI&!W@uYrU_CqHz}V z4oF^7n(Cg<;uj~0@}WVq}c8(xBeI0VCkQLhe4GHynjN;#h;x{5s(p42w|$7 z-G{oI^%`?faI-#O(IS$0peqqXOTCjbITh=lL95xdr2xgzrL#6`Z+i<0>@F0nE@wLO z3hThhI>6C_B%56i7VE$`lHyU~tqgbK6)Ro7X0CpJ1Tdlrr@!Kl*8z=GJADQ~wM6Wt z#2QgTYN|Fr2Qqr^tu2c3s_jlB2|RDL-bf(3l?j^~L8Zo7@o_Q5if8;4+v6@W#hMC$ z?Weuz9Uh6taI$?@jay3TEjT45XMrt6wY{y{|An&U16%|=sm4=Yv5;x+h=Sb`4LR?M zLY!p<@b8I2isd$lcwbGP0hr4|cho*mQ>ZZ9LNRbk6f!Lgpbtf1k|hq9k3=EcLht?j zt0;IZ52A2ZjcG;Q1&S>Jr5>N+Wc$0?|5l`q*;HUHKs&VU^+<3yuE!}t0`ILS5P)>D zN7#r-+fh#?Md|r9PPWUctp%w@xBKF>fjB$0cmQIxGswrJyg_wbQf+sm6wQ6ni|!EG zK38qMR|Ch=qKW^;bn5Ot?-6!P%ww|e zJ^?5l>h9j~a^x9chhLAAWoLQhFxYV&Z=0PfBkNIF0r}RlbEy&&kId+1DMKIW)ZH;T zpc+&m;e&-}$c}mh@V>W7cvKMn3&`oc=t?-5mZbNxkp{i;5tO7Zc@lh1-X-}pSrCK| zE++vC?RIgZJNySBAGw;CMaW0-{I`UBG===*E{fP_iuj-QrrQKjbge$J7AGjN9N?H^ zbb1{C`im&V2~}8L2Q+>tPL?|?$$uxzlXUtSp=0s@k0x>z=0;2#{j28 z-MtAp?QYO-h~n9u?VGfpqIgH-eT3Qh^d{@wa%z^Nq(U)msZch@kYH`+{!NPGHAym; zOXcY85`AD3JWpDaJX<<42?`_K_5{mziszd?lS>bNHwy&n?o@!aUC?GlP`U4*cxzC( z^ZXhkE~A5ij<1Art4zveN~3iW=)T&doSnMSn9uZe4EX6#cay`k9Mm@1!LvJe+^J=v zI3@BVVRr7g!*ZK4%^{pne}}b~RDY5Xplkybs+u9I+Ioj#y+M-9lqCBF$y`aY{SL+P zfFv<_a)CtOdj~v8)lvQ2lRn|eK(K5-gS_*y?7sh!^{Bfag5uf`6q6l1yK~1zZ46*N zBY#YooloBhV|qzr_T6diBi*4Jvk+7;CRM8PqdOJrVo5SnR^k^VgCxoRI~B*nlEmcs zkrI92PH7C)&y86qjQMr2982R;)LCgvu=mH(s1>1i+#p<;g^8bf`Cs4!7w_fEWOIfu z37!WOuSKI;vJw*ygfoDUZzjHoXM#~nkL?X=83n5dE)KS0f*@m zZ;z0PcaRuqv=&fA%GviM@~jD`0RDJI@QIjxH3CJ6DL6_@!BJugjYEqAWBTZu#TqSC@}>``mlhq-QJgkYSTa!`TbY`?(F*&0p=4RArgR%eJzwfY)5`m zUkBxF1mE1Zg$UOXz%-jj{x=%P_CpsrI8x5++d-r4Bf?o!=lSk~+Qt%OV6-=?FV0)EhEwy5Bv>wDc!Fm|`fF$d? z5SwCUI1jdtgjoZubEEN{SnD4^KiK*uR2*)N1!azPIv_Kxvq3Z4`W6lp;FYPFzpi}hYOMzi)qwN|SNEVCAHnmwpc zRT3XXT}M@|4$K-!7(x%VL|Dll+i^8E5|XTU0;E`N&_T84B5$!y0<&iQ1b(qvx1kzl z{Tun;T7+sMtZ#wFt|S&f&l9TFLZV3y*Rx%nOd_{Km|}eZgsOEFgjtlt^GM!OHEJJ? zXodzCS!YpAx~78O#WB+7rliz8DB?9iStQ+`jUOj5K)qEvAjl}ccT)?%i7QKyVo zv|kcs3X~t6N??a}%1rrpoibX{{z8<|IHjc$*r9bwO50m#oOD@H+(MJv>4rBq)1hd6 zkhlE?W@e-k*r5%Vl(rYp{+X%5pJR03adet2sZzFCCSBOzGJ7f78j^V#wU0?9utQsE zru?~1IYH4LCCcAmOc|R>V1$R6k~%S$*+uc>m;S^DX>qJ!SGKr`!oauugI=wX*AM4hk;;HDuErEvPihj_A2z8ENzdIKpyXR z>g<}LRT6tTTz6e6fgRdFGv!Zo$|yy9m?)oso>Ni@49}Y>+jYuBMQb6-+d(-smB0=y z+f4bTPU%v#bI8ZuiY_pnpm4mIa1f1*xiF@$q9r09dmRX85ER=iGhv=i*k94665$*W zW)l={mxQqk0m~80r_9WaI&)7&+km`nEqpmMmB8@jVpACYQm2eiv>y`XE{L3!N??bU zA}MW?VE1g<1zkF@3Qggb0h_4KwzxtJ zn@JT}6O=)=c-kf=Rg4{@47SD7ES^+>pGyq2#nZ@}RH}@yMbWIRSWdvf={9Wuq&T!g zcL}?C(^}2dn^tE1N18UAkAbQuos_sHoJN&_nN5iKtq$(lLj0p!(GTsTEzwkJCmdyz zw6Aee7l>{0qq7Jkwn3C)dqA7s84-OYVk1FuV6%!SR0lx}kTe%zQ>vu?3I3QIp-E!> zvZ}g!o=!YDVvtVkxDEOYiYS{YB<>aoBtJ;R3(&5EB1Y32ej!=Cz-gxo-j(VPK{6;} zVJmnnJ69-I;R2ib$L1(Y3D+98>tXEwMQHc@P9pI8zDt##awTK0h_X&eH z8ZtSr7SYelt3^yUcxiL^zHLmlVCoBzbf~*MI`8|oK4#wcZ4-6gzBA#gT-ydvI59L0r*FC2kXd>3uVyekNyoc!r?oPbML&?mnioW!lC(&)Le=>)?V+ z+q`+aSfV%{M8to=>Sl$QvZ!DcE zw(MMKS%wZ4(2M1k9|L=qCD57}S2Zk)fIX)dS156xLTN`ID71rFrwCj46JFew8SoLe zWd|E?wq+;FAe3ciHrM@rHeR=d>;3>s57GTWHYr5+hu8$tUE6tRv$H~ZMAv4i^EPFd zURYsy2sM0<@%0(ZauyZ)lt=Yqxe`Y;IKF|+;fT zjv(VP*KVC8V$RN^>P@SRsyqut^dGGWv>CAMEU?T&kiDfB7spSWAS}2Qvgok<6Epr< zYa(r;C?;twa856-jNd&`kc|%2EY+IiQXi@XVvu{bL2iPROA{-Tf=wGmly` z$ul(MQG0yfnj!k}O5Ps3_2N?A9*0xc8@Gv||-S~BFoM^G_(!<)M9=t2;+H5%iMc>fk zNfu(kG7&-crsgE8si#=Rpx6IVFYn)MvA}C@>E)+4D~u{C0yAGdXo}+xaMEwJf=r?8 z2O@!!UL$2Ge10pGwd}0qPCBd?%eg5>^kNBj(sRNR3TZOrd0_}zTX8H!MUC3cwAI2v z7Zd1Ech|+^Ozv;gJe1dm!vE5XV)$s%#)S+Y_iAavXL9Ik*7#s=41M=$5MjziK&Q~apG(D@|kOwQS&jih}% zrbTYT7Hyg+iXOd1TO^8$E#E`zZ`I;O5racLLM+(U=%a~Vp|208+BSIS^dg-Cf z+|hQu411}UI3W=q@KM_YD_>ZyHWs zod{PPgz6_PQ$@cNUVTR|7N}1lrv7YkAK}A~7@ps?OcLEx4A1XbW*UPZx#2GskLaf! z%Qi57VBxom5ZsExi>~sb<>)Y>N4rQ6pl^{L6re9!()4+r#?6=X;z}O+FI)IrtcU(9 z7Csdt^tt<6Et5sPd5WVIee_AoUx$hs-Zd(kmV}CE7<cbTXgAWy||M1;rlFn zf`eV$%^0#HrX;w&KFAZ8945oIz$q$Fo^$~h-)C} zoSLC4OuXmR>jm#h#W5PZ1?suJf{FiD16g%xkA&OpJnYEQz`>SUF_R9UCS zk}U}SerIK64+2fc$GE*=se*_tYH!lWvU9f5Z%==Ld`Kip6fu7fPHfVNa1VF9OJMzy zh)emNPLKyEqszk6!OJH%r{Wla<#(F8Ryx`z8P(knlcTAprKv+jt6*q>m(o<(zy+3O zSe2p1(WN@X4c1(lD&Ip|c4Aro3FIcKU-S_I=^is3>h239mjorMqjb5wU~8f}oi68D zb}qI|fj5&?ebljh3?qA}k)*g~=W4}4KRQ%YkCglrmrIgIr%1_)D%UJaxq~c*ib~26 zgwIG}U0hsgIFgc9cNX1LKZA!{0C~>q?ZXlDO3LWb1J;X?)N7LnSlt4r1 z(S>3pD^XGwL+Y*s$@sD01LJ98oC>WzVMv8_v z^+y~GDSZIpQntt~?^4dURp%RXEBMrc82wJj&kfG8BwsBUu2U)$XmlHeu4YBt0=mBX z^cDW3L_E#x@)-sF8Gw)n145n%z+DG=u0TG`psj{vd9&0(d4Biw9%Q1@aY`gQ{)B+I z531Dy$SCBaKZYfiU#ro7LAn%xBlxor#-_wLv0Am1sL=%fV-OzuHfXhH;tK(~MBqp1 z)JZ3zRJ2l@7-5_}AVFPZd*4lPMQIiZ+9}RPn9;U>%od=t2BruOv$ms#^vHDpq9a>7 zQObxSsp#eL_yM`1W<^r%SgMC@BZmg4o6IX^DP$kb*h(}y3pFeKy2Qbo^+nV~NB9FRpP8Cf+yRUH zkMDs;*=3tXmqW4|asxc3KRl?t(KDSevUSDHr&xOpV3r$zkJ(MRaZn+a=ji^dljlxg zksZf#{Q!&SxhKGpz;oq*CGy-ifF<$V7H}lj#H#VbJZiop&h^} z3RffRsf6;gI7K_O%z7%J+=5e#Lz`5O6o>X2PO-QqSx+UD-@?i1&^+~2Liv51;v8B* zJ(W-n;1uuBmex}V<%>8aIJA}ZR6_Y{oDv;cc|Da-rsqJCFkjX4qT-x|^bNq`$bS*_ ziuH4t(x-n5K)5`4m!Psf0$|_%TTpUnarF|I3+MEcz!V9zm%~rLA3aZy$ouFB9D4xp zmwQ|Rw@n88c@nHjT(V#Vk8LJu{Wak}_6T5V5SIwtLBjn>;vk0~>h6eo=IZK~cT82bGsehPehqJo*E>1*YCRTQDrO68n8AqO{U_5Sn~f zmdcfgzoNL7%eo+iR2Z^uAz9T#Fx@O`z0PeN1<4y6qJyqfA`XExm&>wAS?3H{bU%XY zl{-Vo^00Tnox4($vbmOdhUC8jmoFtRO{iIQ8y?HiE3ys+a)B%rD2d-gQ60?d)qC;x zjd~efU>iKmtp8BG7GhJPqNYb_7+NebiWYm_0NWHcIci=azrmQU%;-fhbxPFa0WrgR zO~w3T?LlNwfPe}naV}XTCJc~K1MGx~P}O;fDl+x~%Dlu3;2h(46(kPKGkRH4(D`r= ziB~aT3;_v*vEN*4yqXY^opL+s#*H2l9226KZCEcsaVIEZEPBAi=wdVq zDu^K`k%-vtTb0_~d1b4{1zRoN@EaOtSg(6jG=*@29$LI1$xe%IxdG9Hme%12Il5dM zG+!s>u}aJlx=2o5qzZzIwpGPK7;1-o4I6n$B2Lx7?`wR;!d&YKc}u8%~*zi4E$c6~$eNfcB9 zE!g`7!@IxkIRsz4aHi|Z=o%0@W(*7;GX@2t58G`T9fnxZ6{kl)yipbSQMlkRwM3 zRyZrOJJg-L8L~p924#-vZXm*aZQfDjfK=plU^G7Z(_{#b)PWDv&l(sB$3IB0jAnOX;vn0Ov$Cd(7d zl)?BEeof>()kK}tJvEJm$=~Wz;X)d02VkfW;|GR&WBiDrR_MmjR}2++98d3Ykkuoo zG3gK?)#II>N1d=;1du(1)ffzk(Q#!XMg|)(3ZZ}@I9jx2Oz5x~OGujioq8L`@ixYF zh2R7r+sxb&3E?e~cy-?@w0dWFbm}GwRaN~eHiiB$bmaWj!gqz!H!U$so74{(ZOcqHAD&$hX!w70r*k6$FdhJVD3KfGDa-H-FOF8z+ z3h_OH7|UPO6jE*w@n^9Cl-PYj|4()OVl>ANBC=!wZMI;tPN6$`1abQRISE0OBK%LCW(05vo}T`h3c?-R)nakBCV(61qB z?YR69d6~fxlV z=e;cXc}kA$-OFO^NnncK0|o2Sk&8LZlC`z4s+8OP0yhbDIw0Gg1kv0e$2tlOlsC*We$wuvE{bA5y z7G1_-%I$+$lD76DX;L~LhD>A84>0Cqy)s$!7S?w;i`&BDmmg&@#~7Jx*~f-aqSfTG zM5-_soQb7cbS~N}L5n)g>_1?ReWb13KA$=4(}Dj64@<;oTQ@Idjwez462(|;JBl&( z!=kl62Pj#)k3fDFyOu?3j*G0feIQGGjm@L_(%A}1&mu&OpxZM%m8h#S6z z#q4E0?cZV1RWyFb?PKxftT+0~3YPQ(mgr{_GudbomAaG-*unazv)*NFupuhZwwfY1 z)n3cgO8aWYw0`!fNA@1sdxoixXES!mz6`m&*(|n!28h_@thbLPy~am_<@N@+qz6m& zvA$2Seg_#tRPD=V_DjsMmL;5H(U=UDpJ6@DP(P1HF6LwA_#0E7gJ1+W9N<{H_sCJk zKGyS0{SkAFX6nZ?K~W~5_CynjJ<*`i&{}r;lfs32n0+0@9YI}3n0>vGjb4W-REtiB zyfbj0#da8H?J!HVApj}tmmfJ}&%pm9=;tSAhm+Zf%&`wNiTKZHG{;otunbCM%x@OR zDMwKY?Gde6%HW^50uYC;k8vrFrHk@FN=n&$B$iwj?e88Q`yd+xY%ZHas+NX!|=XrJVJc z$`bNe+*FpT&CV6wqg0GcJFwnZzX#^LqPVmH6b$7g-e$juMB``1&$c}PL>$1$L8nM6 zM%lOE9D^TCTCA}Ih~wFKB1q)8WUQDi)*hJsY|Aut?0D3al%kW>oJ=R69c7a zt(!xs$S+q?jT}SmhPkBI7&c4@-2p;er0<5juB%mb9`)1{P+dY z^&U~tjhJO{h{-I8(;NLB!_EJ>evmYXdTLxAOWVih$7=Anna!(z)>@;z94xo83yQ_d17w_f*G64uV#UxV6MQX5OlW61~M1o(@_a;Pp> zNzz}m7zp|++QZ_=U+51BPm6h&=EeAO^r$DvaS0ex9NP7$QPn26XpNq38JO6>5}_SkFhxkQ%*UXa)!+*Wy#nF>|UMDw_cspCqm?sz z9t(nZuPS3L_7LnjokR$Z(1CkrVntQP1|4Jrma<5{*!E))z8viyvg>E;W-L!~SUlqB zU^YuS!cxI=ko7vqQVz172U*{P`ohY-9IK`VtjmU>Voa;U&X|%jEEWrW3|h;v9%E-& z&mX`C{KCO|*eTMUaw^hp_msG+B`z4yg%G}%v_3@}MSh~)qUA81SRY*V(C<(8U=dF; zXT=>%UBL!qUSuqQbq3$v@My%8P630M$Oj2!Z?>IgakjOG8SB8p&tcz3OD|_0#+N5q z6z06Vj}eCndsw9Qopja*lh;(1m=93&X_h#WsR3+=DlnPar|JK&DE-)?!J_-1+`qSv z;erS~i7xE>7um;8<$$TT6M}Dv^_y?nVBC<$KEO|l%IIax=3@!VSmYL3(qL9((G{$p zMjK)uOQ%H+o4tqi@bgWcdi^+N>ttAV+8@I2e7PI=;tPvsi~{?_B2I2!IV|!A_5qmi zhHquFa#;*Eh!6zVl~LeejhBQ?$8COgH&$=`d~9+qTa?Rgn98E3F*OfW9b@^T624yY z(Pk0?24g$v$z_gQX7h`I!Y8(gL{N^98^=;EvBYf*gI?4amR!#gKVy-%Gp_v+#xGR( z#0m-=<)1Tk`8XCySF^@37ZQ8oIMx^G!EvkyB{O;QE8Ze=D{EF2RW6|Sw7Y9-YvdP5 z@Ek+%LnfxLmCW+j*5ZQ}^qqtGMO9v9$^3bXmlZCVH-9mHw<1K{=&i-K1-L+E?))XL zSy>b1OG#X5RX)6heOj5f8Z^Zy7S$G)Pg_4}0zN|GN-J}vl@`@)s4gzAt*Nf@*QNQZ z@k0NSG#`EQp$^D8Us3Vuv^BLgKD_+DrZ%n42SVZ!h~mnkx^f*&FVasdEiN^cmBPZR zqPo?E_?kswUC~;6MuLCm!ChUVkUiq%^mWQwu0KJ*fEUCobza|+HHyh{`85Z8tEH%R zcFnqKX}EY1{Ve+Efl^9ew$OR-84P?6VvJGHB6 zRruzDzy_--^c9tH>*vTXR_Ho&k$}NVB%v_)g&NW1ixw|fm^0U1xLCnwF1$P-AeFn7 zds$R8tERfR(qG~wX=cfJ71iGP{;E~pTBQ=%Li%Y-CAB3#1&y2yzS^1%(&TygEQli5 z7L=06I_Vx_kXqskCG+H`bf8W}8FVX@$dH)E7gof_d3cQ_{8J#hhN8W)Ou;RzAs^vu z7KjPXy3kwauk@J!N=OYRgF>2*e-6WNry&I2$O!rDPbiuAh=!R!G8UJ6i&xJpHEf<) zQ&TClUF55UGu-sO8fl69h9x<9g^L#$c>YltiJZI8owL}zuyC;_XTBhqSGSd9^ z%ktcX7&IoKqZF0ZNfqYgEy!71IB!wmd|d_DAndFY%`IZ@3NiRC9q-CHb#>la-^>aG z1}`rXfjI|ZEC2TSESJdp_;M9Cl$yvA%p|W^EAV{q@Zi^1=ns5Y z7heP6S!wlxB{TEfd_dCmlP$DpO;It1s&MDcL~LxJ(Bk@{YC%DvYKjUm6w@$6V}B`+ zMPt^Kjy1UkJ(>48rKDnQMIGkjYJXKBz70d42a-X^Bc)D!7)n$rW+ain!Cz6lT7D2p zS>vlMgrSP)s@=B{bvCY0XuqOKT_P6c=j7#uj159zuE-+#m=MO8ifVlShqP2y;agXA zylVQfTS#LpDxB?>ZW1Eqif?c&sLjKthh)Fgz0Z~6JxN%GK$AnWX-t8Z=>FA+UsR>{ zDE_&nZmj~j-VGoQA5#l6alyhuK1>?2@-Ta%&8qoohvf6#!!1|pc;p+Te3%sGQYcF~ z+=`p#E%wZl<0|S6?X`N3G6Z2EW>OL*<5O4$35Ir&H+5#&lSx(Kei7pOLdO)BA|@#~ zM2C=0fOCxAgS-q*=nEBu#kz;-`(AYwx65HwG^J>^khnC(HRl(RtqXxv@eMAeRID_F z@AR3-XbM`|$Q6Tv&qUFe&I~^+2#&<`i8TQ?MW>-oFqrrZgZ2rFM5#Vk(cHI8Hoy}Y z>7)^10_8|Yx|$j$&x<7&rxe54lKI!qUvN_}5N0C$SJNuUTV3WWSBk~*x)9$TL;o)= zmApC^h5{^^3Vk(&YiJ@foPf`+iF`gf5j}z|suZz~MNnZ$MH!zIrOr8X7hPpmk}G-M zLRT2B;8Sjeb@-+dB1(J?tZu`^T zQenP?)wHfPbmA*VZv1R-X%SY9yf6BzF@o?3M2=g!rnJ_=?u5&pwIIJBXW_g>3+AKA zeC4%Xc)n6@U8rY@nL)wwk?$tDb*1RnCG-hF{_QzFeDVb*t-NU!F4&9(7|p_R$}mM+ zH?~r|V3_Cz12526VvLxxXs=U>;RaJ$31*C{qDt9jypf~~W75Z@EkRU;F)D?6dX^_= zq2Xh>NaAME$n3*HxUdjYXz}F96o2R=-s+OVHR6khVnJ<`&}rt;XX+H*u}Uet*X85G zo_vtQ1_Iv>Bb;|_1vaLI6+Um3+>^}p`|1i&H4Q#>OX?7re0wHFiUoe(f>NoM*tO~8 zb85ZbIruPQrCH2euMdHa7Oulm&WwPF`QCMA$+PhNG_l1Fm5a^nf>O8|J3TzZEEjdP zHJB_y>8So3Eb2|lV(E@gAtD6BNV#RRim(JiS1~hylz$X5R5B+g@n%x}Lzkg0ljg6+5#`vY)m>EX-&Ro`LHuh4`i=1}6Xd zw6bb{24+Tsk|=Rnu_VCJg-K~2R~__iZ?B7^53 z>VH*NLxN}$-U`LVS2k}}mfrLVX9@8m^e^$2LjP|&aN$+4DxYMT7fw`AojaC$w zB*4>x-O|$!EG8;e)3kc~)#}fRhN)O|G z-5iM1o%kd9`uoCl_;zGeymecD|F;hRDKg#JdlYbzqd!JCQZl?M;o&bueOtoAU!r<7l!G-Iii=w5WW6-ummY*v4ra{1H(@+`B5U_aSKIRm&4y!3_1GSzwnD0 zer%KU`U}7!B>a8}&z5rZdg)htq|ZtT*IzKiZ-xL~FX8&nn~qER776bw<)4!9Qxc9R zXZgWzIzW!``Ys7~(0vHNl|=$T{eg~T3D@7(1qyx)mT>*;TviFslyLoBT+tFfRl>8S z{3Hp#QNoqQ0zl7c(@`qn`fIH4(;9xl4buebXH60X0@O85WIB|KZw>u`FtG})`a z(n^=}Cg9XB^k)-)F6;eJ((AwP*6sa7!u4N+>+r86T>tI34!0wKN&b*QLhuSHzn_GM z{}6tXgoppoeu0FC|9HPv!o%MWK(D{0dc)sHa6rO`qzOgz*KHgHoW>>n#az1oFM_PQ ze%%iG?%*e-oR+(Ue0#k}&vAG!B~F%g`4ED7dnqYl@T-l(iJU%3X^3Ho?g@c)%|bs=_LRroZtf>`K8tu#T)&`NBv9;Q>P!BCjV+?eeBoRo`*>_$1~P$D_}ktByy9Zhvq*KBfI<$D^}=e*u?%o(c8; zAbx;8jG9IdCzFEj+h6hh9jyN$myaH-9#Nc9P5ijaM;AXs$FDqOvUJ3BX^(t<;PTN| z-D{4==Xieud_UHQOC!r4(@DeIiXW)%8`&|(@maXYdinqlbdK9gok| zf6DRb#c$g2=r-bn;#SA<`<%;1?{QB6m-!aw|1&NhJ=I-uJbKvq8Su%nKu^B`T&|<+ zq1ExXG@o&WcSL^Qfr{%XCB&bv^k;NL{viy6hj10aj4ggksTBNClXT6xGwz% zxb$0mCBl1-$H&(1#0}VP>*xK7PgKzn zF7&thy?SbQiFAIjHb`AD7D(8<+T5wmi}_0GU0hw=fl6_NZHU2EOH_7mcG=IeJvue| zu%w&3*a1yLvW-hCm%M@FWDGXmjGgnH_L9-XxxDeN`_%xH7o2b)emCdo~#$9 ztkzKK<)s?^8BwWYab^$B>86yDm2^{)%sK`08m*0zq?xjmwzk-O?ilW|du_Yn#ddii z#~taEPCPn0e>@#Ob1bDQ9sA0e+4;^Ku27ijrQ@gk?5SgqR_WyFvqxbsboRuF$Bx5_ zWfsN}soeT5*$vKt#!?0oq(xjiK{a#obm!4Cd$LMbF;OsHPVqVVwc7msk1Pjnx$`Heohv?1+g)-B9IYCWmI>VOP9Lp z@=_XLm0i)$F)G%w1Iw0Xso(2@fGY+?c^$A3T32h@_zWnGm@-WjTbHewioS3fLkNqa zfYSa(SM9Nr){~eLYF3$+R=$yhpU=H9J`|DLx29OXb2e`XV|_knl7~MKqV3)xO*L*= zI@ZpHg0cE%%Bkt9eCg@5XgEHVD6afs)`)$Sn{AF)y_k%?p5xaOLu?b+`n6$-^xYE%)T|8U(?xYB!_zer>cuS&8=$eKZ??P)|6%# zR@uTtxfpzskSQ$=Vb&}CW`?ds4cok`TVl2PQOl?CM4^dcl_@yJ)B@jwag40tO<7gt zi?wWwF?s_=Kdq&s3f7&4s9tioMoWG>H|g`cjZdaKLDDe&MxL{zsMnjf>!o* z5c8qG48s9kPI(_WzL-L>G^o}>+D5@Lk?e{^S2_8c($aQU7AIKRKGo07k~Kr`9<6q! zRT90Ly*EJ9cD*$Qp~V$z+GfkMnN64rE$v|%w<)f3*gC#FM}(ZO>fz2ROw|$NI@NfE zDJ3vBs(KBU>ou6y8aC`3uvFbCAZ2eqGw3-qd$a??_vK2(S76v))xDiH6k##AWjzC9 z^&w2%TL%f}Hv1R4qTs0w*eTa?-(A&6*2}O5(8RF6RMlHTh}Uuh59xLNjjH=Ae#^en zLvB2>JnY`xG?+$F-PHjyGj&{xRSi=uA+mw>7cVYDvb(m7e;9r^SUbPYba!zPrWHI= z%NdtK50)@4@J;`Z^nN1olP7;^{cl)xmv6)}{&>i|y^DfZP2jxz_oe<}*JnHx^!dM$ zuy`yf^;cYH=HX&?EfclQr2!$owut9RKg*WT`*tdWvR0MPs~`}n^cC$@&M`I z;Uo2@K6y08!vB^bmj5FWbXR1k@>~Tu75)shrn)Rxg5uz;+%+3pYKT@t&0}gqu&h&R|$*{ zy1t>!_m8~%8x5o>>Jh$w5B+b;!iw<9A&dDP^&j3t{|nzWjXSX4T!yGWw}*b`Wz%}j z`4Z+4_0PI~?7!c>ZW>SfdJy%Qk2v|3bky&>X&TRk>yLV697I&{_t#ASx?CIx_u_L5 rAI=|H%OyznaPBDJUstYM;)49R7J=mwlIHEE|Ixpg#MgsDIIR8$K~CBk diff --git a/build/test/out/test_updateCustomerAccountBalance.out b/build/test/out/test_updateCustomerAccountBalance.out new file mode 100755 index 0000000000000000000000000000000000000000..42268fbcf40413db56f36e4c56e7e94f28da70f9 GIT binary patch literal 82546 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 -#include "LoginCustomer.h" -void setUp(){}; -void tearDown(){}; -void test_checkLogin() -{ - /*arrange*/ - bool expected_test_values_compute_to_true[] = {4==4,true==true, 1==1, false==false, 'z'=='z', '='=='=',0x1A==0x1A}; - int length_1 = sizeof(expected_test_values_compute_to_true)/sizeof(bool); - - bool expected_test_values_compute_to_false[] = {4!=4,true==false,1==0,false==true,'z'=='x','!'==')',0x1A==0x2B}; - int length_2 = sizeof(expected_test_values_compute_to_false)/sizeof(bool); - - /*act and assertions*/ - for(int i=0;i<7;++i) { - TEST_ASSERT_TRUE(checkLogin(expected_test_values_compute_to_true[i])); - } - for(int i=0;i<7;++i){ - TEST_ASSERT_FALSE(checkLogin(expected_test_values_compute_to_false[i])); - } -} diff --git a/tests/test_mainMenu.c b/tests/test_mainMenu.c deleted file mode 100644 index be1fb40..0000000 --- a/tests/test_mainMenu.c +++ /dev/null @@ -1,145 +0,0 @@ -#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 diff --git a/tests/test_updateCustomerAccountBalance.c b/tests/test_updateCustomerAccountBalance.c new file mode 100644 index 0000000..add1299 --- /dev/null +++ b/tests/test_updateCustomerAccountBalance.c @@ -0,0 +1,34 @@ +#ifdef TEST + +#include "unity.h" + +#include "updateCustomerAccountBalance.h" + +void setUp(void) +{ +} + +void tearDown(void) +{ +} + +void test_updateAvailableAccountBalanceSuccess(void){ + + int id1 = 1234; + int id2 = 1327; + int id3 = 1666; + + int newBalance1=500; + int newBalance2=800; + int newBalance3=700; + + bool results1=updateAvailableAccountBalance(id1,newBalance1); + bool results2=updateAvailableAccountBalance(id2,newBalance2); + bool results3=updateAvailableAccountBalance(id3,newBalance3); + + TEST_ASSERT_TRUE(results1); + TEST_ASSERT_TRUE(results2); + TEST_ASSERT_TRUE(results3); + +} +#endif