Browse Source

Merge branch 'feature/error-handling' into 'development'

Merge feature/error-handling into development

See merge request fdai7057/bankmanagement-system!16
remotes/origin/development
fdai7057 2 years ago
parent
commit
8696c0609d
  1. 23
      src_2/Error.c
  2. 2
      src_2/Error.h
  3. 3
      tests_2/build/test/cache/defines_dependency.yml
  4. 242
      tests_2/build/test/cache/input.yml
  5. 117
      tests_2/build/test/cache/test_Error.c
  6. 1
      tests_2/build/test/dependencies/Error.d
  7. 6
      tests_2/build/test/dependencies/cmock.d
  8. 4
      tests_2/build/test/dependencies/test_Error.d
  9. 4
      tests_2/build/test/dependencies/test_Error_runner.d
  10. 4
      tests_2/build/test/dependencies/unity.d
  11. BIN
      tests_2/build/test/out/c/Error.o
  12. BIN
      tests_2/build/test/out/c/cmock.o
  13. BIN
      tests_2/build/test/out/c/test_Error.o
  14. BIN
      tests_2/build/test/out/c/test_Error_runner.o
  15. BIN
      tests_2/build/test/out/c/unity.o
  16. BIN
      tests_2/build/test/out/test_Error.out
  17. 117
      tests_2/build/test/preprocess/files/test_Error.c
  18. 3
      tests_2/build/test/preprocess/includes/test_Error.c
  19. 6018
      tests_2/build/test/results/test_Error.pass
  20. 81
      tests_2/build/test/runners/test_Error_runner.c
  21. 101
      tests_2/project.yml
  22. 0
      tests_2/test/support/.gitkeep
  23. 50
      tests_2/test/test_Error.c

23
src_2/Error.c

@ -0,0 +1,23 @@
#include "Error.h"
int error(int errorCode)
{
int returnValue=0;
switch(errorCode){
case -1:
puts("Login not successful.");
returnValue = -1;
break;
case -2:
puts("Maximum number of attempts reached.");
returnValue = -2;
break;
case -3:
puts("No menu entry available for this number.");
returnValue = -3;
break;
default:
puts("Error code unknown.");
}
return returnValue;
}

2
src_2/Error.h

@ -0,0 +1,2 @@
#include <stdio.h>
int error(int);

3
tests_2/build/test/cache/defines_dependency.yml

@ -0,0 +1,3 @@
---
"../src/Error.c":
- TEST

242
tests_2/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:
- "../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/

117
tests_2/build/test/cache/test_Error.c

@ -0,0 +1,117 @@
#include "../src/Error.h"
#include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h"
void setUp(){}
void tearDown(){}
void test_error()
{
srand(time(0));
int bound = 1000;
int invalidErrorCodes_1[bound];
int invalidErrorCodesLarge_2[bound];
int invalidErrorCodesLargest_3[bound];
int validErrorCodeUnsuccessfulLogin[bound];
int validErrorCodeMaximumNumberOfAttempts[bound];
int validErrorCodeNoMenuEntryForNumber[bound];
for(int i=0;i<bound;++i){
invalidErrorCodes_1[i] = rand() % 2000 + 1;
invalidErrorCodesLarge_2[i] = (rand() % 100000000) + 1000000;
invalidErrorCodesLargest_3[i] = (rand() % 1000000001) + 1000000000 ;
validErrorCodeUnsuccessfulLogin[i] = -1;
validErrorCodeMaximumNumberOfAttempts[i] = -2;
validErrorCodeNoMenuEntryForNumber[i] = -3;
}
for(int i=0;i<bound;++i){
UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((error(invalidErrorCodes_1[i]))), (
((void *)0)
), (UNITY_UINT)(40), UNITY_DISPLAY_STYLE_INT);
UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((error(invalidErrorCodesLarge_2[i]))), (
((void *)0)
), (UNITY_UINT)(41), UNITY_DISPLAY_STYLE_INT);
UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((error(invalidErrorCodesLargest_3[i]))), (
((void *)0)
), (UNITY_UINT)(42), UNITY_DISPLAY_STYLE_INT);
}
for(int i=0;i<bound;++i){
UnityAssertEqualNumber((UNITY_INT)((-1)), (UNITY_INT)((error(validErrorCodeUnsuccessfulLogin[i]))), (
((void *)0)
), (UNITY_UINT)(46), UNITY_DISPLAY_STYLE_INT);
UnityAssertEqualNumber((UNITY_INT)((-2)), (UNITY_INT)((error(validErrorCodeMaximumNumberOfAttempts[i]))), (
((void *)0)
), (UNITY_UINT)(47), UNITY_DISPLAY_STYLE_INT);
UnityAssertEqualNumber((UNITY_INT)((-3)), (UNITY_INT)((error(validErrorCodeNoMenuEntryForNumber[i]))), (
((void *)0)
), (UNITY_UINT)(48), UNITY_DISPLAY_STYLE_INT);
}
}

1
tests_2/build/test/dependencies/Error.d

@ -0,0 +1 @@
build/test/out/c/Error.o: ../src/Error.c ../src/Error.h

6
tests_2/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

4
tests_2/build/test/dependencies/test_Error.d

@ -0,0 +1,4 @@
build/test/out/c/test_Error.o: test/test_Error.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 \
../src/Error.h

4
tests_2/build/test/dependencies/test_Error_runner.d

@ -0,0 +1,4 @@
build/test/out/c/test_Error_runner.o: \
build/test/runners/test_Error_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

4
tests_2/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

BIN
tests_2/build/test/out/c/Error.o

BIN
tests_2/build/test/out/c/cmock.o

BIN
tests_2/build/test/out/c/test_Error.o

BIN
tests_2/build/test/out/c/test_Error_runner.o

BIN
tests_2/build/test/out/c/unity.o

BIN
tests_2/build/test/out/test_Error.out

117
tests_2/build/test/preprocess/files/test_Error.c

@ -0,0 +1,117 @@
#include "../src/Error.h"
#include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h"
void setUp(){}
void tearDown(){}
void test_error()
{
srand(time(0));
int bound = 1000;
int invalidErrorCodes_1[bound];
int invalidErrorCodesLarge_2[bound];
int invalidErrorCodesLargest_3[bound];
int validErrorCodeUnsuccessfulLogin[bound];
int validErrorCodeMaximumNumberOfAttempts[bound];
int validErrorCodeNoMenuEntryForNumber[bound];
for(int i=0;i<bound;++i){
invalidErrorCodes_1[i] = rand() % 2000 + 1;
invalidErrorCodesLarge_2[i] = (rand() % 100000000) + 1000000;
invalidErrorCodesLargest_3[i] = (rand() % 1000000001) + 1000000000 ;
validErrorCodeUnsuccessfulLogin[i] = -1;
validErrorCodeMaximumNumberOfAttempts[i] = -2;
validErrorCodeNoMenuEntryForNumber[i] = -3;
}
for(int i=0;i<bound;++i){
UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((error(invalidErrorCodes_1[i]))), (
((void *)0)
), (UNITY_UINT)(40), UNITY_DISPLAY_STYLE_INT);
UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((error(invalidErrorCodesLarge_2[i]))), (
((void *)0)
), (UNITY_UINT)(41), UNITY_DISPLAY_STYLE_INT);
UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((error(invalidErrorCodesLargest_3[i]))), (
((void *)0)
), (UNITY_UINT)(42), UNITY_DISPLAY_STYLE_INT);
}
for(int i=0;i<bound;++i){
UnityAssertEqualNumber((UNITY_INT)((-1)), (UNITY_INT)((error(validErrorCodeUnsuccessfulLogin[i]))), (
((void *)0)
), (UNITY_UINT)(46), UNITY_DISPLAY_STYLE_INT);
UnityAssertEqualNumber((UNITY_INT)((-2)), (UNITY_INT)((error(validErrorCodeMaximumNumberOfAttempts[i]))), (
((void *)0)
), (UNITY_UINT)(47), UNITY_DISPLAY_STYLE_INT);
UnityAssertEqualNumber((UNITY_INT)((-3)), (UNITY_INT)((error(validErrorCodeNoMenuEntryForNumber[i]))), (
((void *)0)
), (UNITY_UINT)(48), UNITY_DISPLAY_STYLE_INT);
}
}

3
tests_2/build/test/preprocess/includes/test_Error.c

@ -0,0 +1,3 @@
---
- "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h"
- "../src/Error.h"

6018
tests_2/build/test/results/test_Error.pass
File diff suppressed because it is too large
View File

81
tests_2/build/test/runners/test_Error_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_error();
/*=======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_Error.c");
run_test(test_error, "test_error", 10);
return UnityEnd();
}

101
tests_2/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:
- ../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
...

0
tests_2/test/support/.gitkeep

50
tests_2/test/test_Error.c

@ -0,0 +1,50 @@
#include <unity.h>
#include <time.h>
#include <stdlib.h>
#include <Error.h>
void setUp(){}
void tearDown(){}
void test_error()
{
/*arrange*/
srand(time(0));
int bound = 1000;
int invalidErrorCodes_1[bound];
int invalidErrorCodesLarge_2[bound];
int invalidErrorCodesLargest_3[bound];
int validErrorCodeUnsuccessfulLogin[bound];
int validErrorCodeMaximumNumberOfAttempts[bound];
int validErrorCodeNoMenuEntryForNumber[bound];
for(int i=0;i<bound;++i){
/*1000 numbers in the range from 1 to 2000 */
invalidErrorCodes_1[i] = rand() % 2000 + 1;
/*1000 numbers in the range from 1000.000 to 100.999.999*/
invalidErrorCodesLarge_2[i] = (rand() % 100000000) + 1000000;
/*1000 numbers in the range from 1.000.000.000 to 2.000.000.000*/
invalidErrorCodesLargest_3[i] = (rand() % 1000000001) + 1000000000 ;
/*1000 times -1 in array*/
validErrorCodeUnsuccessfulLogin[i] = -1;
/*1000 times -2 in array*/
validErrorCodeMaximumNumberOfAttempts[i] = -2;
/*1000 times -3 in array*/
validErrorCodeNoMenuEntryForNumber[i] = -3;
}
/*act and assertions for invalid error codes*/
for(int i=0;i<bound;++i){
TEST_ASSERT_EQUAL_INT(0,error(invalidErrorCodes_1[i]));
TEST_ASSERT_EQUAL_INT(0,error(invalidErrorCodesLarge_2[i]));
TEST_ASSERT_EQUAL_INT(0,error(invalidErrorCodesLargest_3[i]));
}
/*act and assertions for valid error codes*/
for(int i=0;i<bound;++i){
TEST_ASSERT_EQUAL_INT(-1, error(validErrorCodeUnsuccessfulLogin[i]));
TEST_ASSERT_EQUAL_INT(-2, error(validErrorCodeMaximumNumberOfAttempts[i]));
TEST_ASSERT_EQUAL_INT(-3, error(validErrorCodeNoMenuEntryForNumber[i]));
}
}
Loading…
Cancel
Save