Browse Source

The error handling is now controlled by the function errorMessage. It is declared in error.h and defined in error.c. It is called in different cases. Each error has its own error code. The advantage is that the error message is specific.

remotes/origin/development
fdai7057 2 years ago
parent
commit
02010b31d1
  1. 2
      build-script.sh
  2. 1
      project.yml
  3. 12
      src/createCustomer.c
  4. 1
      src/createCustomer.h
  5. 52
      src/error.c
  6. 3
      src/error.h
  7. 9
      src/loginCustomer.c
  8. 1
      src/loginCustomer.h
  9. 4
      src/mainMenu.c
  10. 23
      src_2/Error.c
  11. 2
      src_2/Error.h
  12. 14
      test/test_Error.c
  13. 3
      tests_2/build/test/cache/defines_dependency.yml
  14. 242
      tests_2/build/test/cache/input.yml
  15. 117
      tests_2/build/test/cache/test_Error.c
  16. 1
      tests_2/build/test/dependencies/Error.d
  17. 6
      tests_2/build/test/dependencies/cmock.d
  18. 4
      tests_2/build/test/dependencies/test_Error.d
  19. 4
      tests_2/build/test/dependencies/test_Error_runner.d
  20. 4
      tests_2/build/test/dependencies/unity.d
  21. BIN
      tests_2/build/test/out/c/Error.o
  22. BIN
      tests_2/build/test/out/c/cmock.o
  23. BIN
      tests_2/build/test/out/c/test_Error.o
  24. BIN
      tests_2/build/test/out/c/test_Error_runner.o
  25. BIN
      tests_2/build/test/out/c/unity.o
  26. BIN
      tests_2/build/test/out/test_Error.out
  27. 117
      tests_2/build/test/preprocess/files/test_Error.c
  28. 3
      tests_2/build/test/preprocess/includes/test_Error.c
  29. 6018
      tests_2/build/test/results/test_Error.pass
  30. 81
      tests_2/build/test/runners/test_Error_runner.c
  31. 101
      tests_2/project.yml
  32. 0
      tests_2/test/support/.gitkeep

2
build-script.sh

@ -1,7 +1,7 @@
clear
ceedling test:all
cd src/
gcc stringManipulation.c loginCustomer.c createCustomer.c mainMenu.c program.c -lm -o program.out
gcc stringManipulation.c error.c loginCustomer.c createCustomer.c mainMenu.c program.c -lm -o program.out
./program.out
rm program.out
cd ..

1
project.yml

@ -37,6 +37,7 @@
- src/createCustomer.*
- src/customerLogin.*
- src/stringManipulation.*
- src/error.*
:support:
- test/support
:libraries: []

12
src/createCustomer.c

@ -30,8 +30,7 @@ void collectCustomerProperties()
}
}
if(inputTooLong){
printf("Forename too long. Aborting.\n");
exit(-1);
errorMessage(-7);
}else{
*(instance.forename+letterCounter) = '\0';
letterCounter = 0;
@ -46,8 +45,7 @@ void collectCustomerProperties()
}
}
if(inputTooLong){
printf("Surname too long. Aborting.\n");
exit(-1);
errorMessage(-8);
}else{
*(instance.surname+letterCounter) = '\0';
letterCounter = 0;
@ -62,8 +60,7 @@ void collectCustomerProperties()
}
}
if(inputTooLong){
printf("Password too long. Aborting.\n");
exit(-1);
errorMessage(-9);
}
*(instance.password+letterCounter) = '\0';
letterCounter = 0;
@ -84,7 +81,6 @@ generateCheckString(referenceToCustomerInstance->ID, referenceToCustomerInstance
fclose(customerData);
}
else{
printf("Error when accessing the file.\n");
exit(-1);
errorMessage(-6);
}
}

1
src/createCustomer.h

@ -6,6 +6,7 @@
#include <time.h>
#include "customerProperties.h"
#include "stringManipulation.h"
#include "error.h"
int generateID();
void collectCustomerProperties();
void writeCustomerPropertiesToFile(customer_t *);

52
src/error.c

@ -0,0 +1,52 @@
#include "error.h"
int errorMessage(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;
case -4:
puts("CustomerData.* not found. Make sure that you've created an user account before logging in for the first time. Aborting!");
returnValue = -4;
exit(-1);
break;
case -5:
puts("You should be at least 18 years old to create a bank account!");
returnValue = -5;
break;
case -6:
puts("Error when trying to open a file to create a customer account.");
returnValue = -6;
exit(-1);
break;
case -7:
puts("Forename too long. (length > 15 characters) Aborting!");
returnValue = -7;
exit(-1);
break;
case -8:
puts("Surname too long. (length > 15 characters) Aborting!");
returnValue = -8;
exit(-1);
break;
case -9:
puts("Password too long. (length > 20 characters) Aboring!");
returnValue = -9;
exit(-1);
break;
default:
puts("Error code unknown.");
}
return returnValue;
}

3
src/error.h

@ -0,0 +1,3 @@
#include <stdio.h>
#include <stdlib.h>
int errorMessage(int);

9
src/loginCustomer.c

@ -45,14 +45,13 @@ void collectCustomerDataForLogin(int attempts)
free(c.password);
if(loginSuccessful ) {
printf("Welcome!\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()
errorMessage(-2);
}
}
@ -64,9 +63,7 @@ bool loginCustomer(customer_t *c)
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()
errorMessage(-4);
}
while((fscanf(readCustomerFile,"%s",lineFromCustomerFile)!=EOF)){
if(strcmp(searchForThisString,lineFromCustomerFile)==0){
@ -80,7 +77,7 @@ bool loginCustomer(customer_t *c)
fclose(readCustomerFile);
return foundCustomerEntryInFile;
}else{
printf("Login not successful.\n");
errorMessage(-1);
}
fclose(readCustomerFile);
return foundCustomerEntryInFile;

1
src/loginCustomer.h

@ -6,6 +6,7 @@
#include <string.h>
/*#include "stringManipulation.h"*/
#include "createCustomer.h"
#include "error.h"
#define MAX_LOGIN_ATTEMPTS 3
bool checkLogin(bool);
void collectCustomerDataForLogin(int);

4
src/mainMenu.c

@ -62,9 +62,7 @@ void ageInput()
else if((checkIfInteger(userInput)) && !(agePermission(age)))
{
printf("You should be at least 18 years old to create a bank account!\n");
errorMessage(-5);
break;
}

23
src_2/Error.c

@ -1,23 +0,0 @@
#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

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

14
tests_2/test/test_Error.c → test/test_Error.c

@ -1,7 +1,7 @@
#include <unity.h>
#include <time.h>
#include <stdlib.h>
#include <Error.h>
#include "../src/error.c"
void setUp(){}
void tearDown(){}
@ -37,14 +37,14 @@ void test_error()
/*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]));
TEST_ASSERT_EQUAL_INT(0,errorMessage(invalidErrorCodes_1[i]));
TEST_ASSERT_EQUAL_INT(0,errorMessage(invalidErrorCodesLarge_2[i]));
TEST_ASSERT_EQUAL_INT(0,errorMessage(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]));
TEST_ASSERT_EQUAL_INT(-1, errorMessage(validErrorCodeUnsuccessfulLogin[i]));
TEST_ASSERT_EQUAL_INT(-2, errorMessage(validErrorCodeMaximumNumberOfAttempts[i]));
TEST_ASSERT_EQUAL_INT(-3, errorMessage(validErrorCodeNoMenuEntryForNumber[i]));
}
}

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

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

242
tests_2/build/test/cache/input.yml

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

@ -1,117 +0,0 @@
#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

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

6
tests_2/build/test/dependencies/cmock.d

@ -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

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

@ -1,4 +0,0 @@
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

@ -1,4 +0,0 @@
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

@ -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

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

@ -1,117 +0,0 @@
#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

@ -1,3 +0,0 @@
---
- "/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

@ -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_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

@ -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:
- ../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

Loading…
Cancel
Save