Browse Source

Merge branch 'feature/customer-login' into 'development'

Merging feature/customer-login into development.

See merge request fdai7057/bankmanagement-system!14
remotes/origin/development
fdai7057 2 years ago
parent
commit
943fbc0a8b
  1. 7
      build-project.sh
  2. 6
      src/CustomerData.txt
  3. 14
      src/CustomerProperties.h
  4. 97
      src/LoginCustomer.c
  5. 10
      src/LoginCustomer.h
  6. 68
      src/StringManipulation.c
  7. 6
      src/StringManipulation.h
  8. 14
      src/docs.txt
  9. 4
      src/main.c
  10. 6
      team.md
  11. 11
      tests/build/test/cache/defines_dependency.yml
  12. 242
      tests/build/test/cache/input.yml
  13. 87
      tests/build/test/cache/test_LoginCustomer.c
  14. 195
      tests/build/test/cache/test_StringManipulation.c
  15. 3
      tests/build/test/dependencies/LoginCustomer.d
  16. 3
      tests/build/test/dependencies/StringManipulation.d
  17. 6
      tests/build/test/dependencies/cmock.d
  18. 4
      tests/build/test/dependencies/test_LoginCustomer.d
  19. 4
      tests/build/test/dependencies/test_LoginCustomer_runner.d
  20. 5
      tests/build/test/dependencies/test_StringManipulation.d
  21. 4
      tests/build/test/dependencies/test_StringManipulation_runner.d
  22. 4
      tests/build/test/dependencies/unity.d
  23. BIN
      tests/build/test/out/c/LoginCustomer.o
  24. BIN
      tests/build/test/out/c/StringManipulation.o
  25. BIN
      tests/build/test/out/c/cmock.o
  26. BIN
      tests/build/test/out/c/test_LoginCustomer.o
  27. BIN
      tests/build/test/out/c/test_LoginCustomer_runner.o
  28. BIN
      tests/build/test/out/c/test_StringManipulation.o
  29. BIN
      tests/build/test/out/c/test_StringManipulation_runner.o
  30. BIN
      tests/build/test/out/c/unity.o
  31. BIN
      tests/build/test/out/test_LoginCustomer.out
  32. BIN
      tests/build/test/out/test_StringManipulation.out
  33. 87
      tests/build/test/preprocess/files/test_LoginCustomer.c
  34. 195
      tests/build/test/preprocess/files/test_StringManipulation.c
  35. 3
      tests/build/test/preprocess/includes/test_LoginCustomer.c
  36. 3
      tests/build/test/preprocess/includes/test_StringManipulation.c
  37. 18
      tests/build/test/results/test_LoginCustomer.pass
  38. 42
      tests/build/test/results/test_StringManipulation.pass
  39. 81
      tests/build/test/runners/test_LoginCustomer_runner.c
  40. 89
      tests/build/test/runners/test_StringManipulation_runner.c
  41. 101
      tests/project.yml
  42. 0
      tests/test/support/.gitkeep
  43. 21
      tests/test/test_LoginCustomer.c
  44. 83
      tests/test/test_StringManipulation.c

7
build-project.sh

@ -1,7 +0,0 @@
clear
ceedling test:all
cd src/
gcc main.c createCustomer.c -o prog
./prog
rm prog
cd ..

6
src/CustomerData.txt

@ -0,0 +1,6 @@
1234=example
ID=1234
forename=Max
Surname=Mustermann
password=example
balance=0

14
src/CustomerProperties.h

@ -0,0 +1,14 @@
typedef struct Customer{
<<<<<<< HEAD
<<<<<<< HEAD
int ID;
char *forename,*surname,*password;
=======
char *ID, *forename, *surname, *password;
>>>>>>> 3e7a7d3 (Implementation of functions LoginAsCustomer() and Login())
=======
int ID;
char *forename,*surname,*password;
>>>>>>> 4d810f5640d89a86c1f2feef3ab19118518ad49f
float balance;
}customer_t;

97
src/LoginCustomer.c

@ -0,0 +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<IDMaxLength){
if(digitCharacterFromUser>='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){
*(c.password+passwordLengthCounter) = passwordCharacterFromUser;
++passwordLengthCounter;
}
*(c.password+passwordLengthCounter) = '\0';
if(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;
}

10
src/LoginCustomer.h

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include "CustomerProperties.h"
#define MAX_LOGIN_ATTEMPTS 3
char *generateCheckString(char *, char*);
bool checkLogin(bool);
void collectCustomerDataForLogin(int);
bool loginCustomer(customer_t *);

68
src/StringManipulation.c

@ -0,0 +1,68 @@
#include "StringManipulation.h"
/*Code written by Julius Philipp Engel, fdai7057*/
char *stringConcatenation(char *string_1, char *string_2)
{
int lengthStringOne = strlen(string_1);
int lengthStringTwo = strlen(string_2);
if(lengthStringOne==0||lengthStringTwo==0){
printf("Empty strings are not allowed. Aborting.\n");
exit(-1);
//call error();
}
const int totalLength = lengthStringOne + lengthStringTwo + 1;
char *result = calloc(totalLength, sizeof(char));
int i,j;
for(i=0,j=0;i<totalLength;++i){
if(i<lengthStringOne){
*(result+i) = *(string_1+i);
}else{
*(result+i) = *(string_2+j);
++j;
}
}
*(result+i) = '\0';
return result;
}
char *to_string(int number)
{
if(number==0)
{
char *str = calloc(2,sizeof(char));
*(str) = '0';
*(str+1) = '\0';
return str;
}
else
{
int cpy = number, len = 0;
while(number>0){
++len;
number /= 10;
}
char *str = calloc(len+1, sizeof(char));
for(int i=0,j=len-1;i<len;++i,--j){
*(str+j) = '0' + (cpy % 10);
cpy /= 10;
}
*(str+len) = '\0';
return str;
}
}
char *generateCheckString(int customerID, char *customerPassword)
{
char *IDString = to_string(customerID);
int IDLength = strlen(IDString);
int passwordLength = strlen(customerPassword);
int checkStringLength = IDLength + 1 + passwordLength + 1;
char *checkString = calloc(checkStringLength, sizeof(char));
checkString = strcat(IDString, "=");
checkString = strcat(checkString, customerPassword);
*(checkString+checkStringLength) = '\0';
return checkString;
}

6
src/StringManipulation.h

@ -0,0 +1,6 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char *stringConcatenation(char *, char *);
char *to_string(int);
char *generateCheckString(int, char *);

14
src/docs.txt

@ -0,0 +1,14 @@
char *stringConcatenation(char string_1*, char string_2*):
This function takes two char pointers. In this function a new string is created. This new string is the concatenation of string_1 and string_2. The size of the new string is the length of string_1 plus the length of string_2 plus one for '\0'. This function is needed when creating an unique check string for a customer.
char *to_string(int number):
This function takes an integer variable as its argument. It returns an string that contains the digits of number. For example to_string(176) would return "176\0". This function is needed to write data in form of characters into the customer file.
char *generateCheckString(int customerID, char *password):
The purpose of this function is to generate a string that is needed when a user wants to login. This string is searched for in the customer-data file and if it is found, the login is successful. This function is needed when a new user is created because then it is written in the file for the first time.
The format of the returned string is [ID]=[PASSWORD].
For example generateCheckString(177,"tree") would return "177=tree\0".

4
src/main.c

@ -1,4 +0,0 @@
#include "createCustomer.h"
int main(){
collectCustomerProperties();
}

6
team.md

@ -1,6 +0,0 @@
- Can Hacioglu, fdlt3817
- Atharva Kishor Naik, fdai7514
- Julius Philipp Engel, fdai7057
- Shivam Chaudhary, fdlt3781
- Mohamed Yahya Dahi, fdai6618
- Haytham Daoula, fdai7207

11
tests/build/test/cache/defines_dependency.yml

@ -0,0 +1,11 @@
---
<<<<<<< HEAD
<<<<<<< HEAD
"/home/julius/Documents/Studium/Informatik/1. Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/StringManipulation.c":
=======
"/home/julius/Documents/Studium/Informatik/1. Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.c":
>>>>>>> 0155f61 (implementation of unit tests for checkLogin())
=======
"/home/julius/Documents/Studium/Informatik/1. Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.c":
>>>>>>> 4d810f5640d89a86c1f2feef3ab19118518ad49f
- TEST

242
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/

87
tests/build/test/cache/test_LoginCustomer.c

@ -0,0 +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
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);
}
}

195
tests/build/test/cache/test_StringManipulation.c

@ -0,0 +1,195 @@
#include "Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/StringManipulation.h"
#include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h"
void test_to_string()
{
char *result_1[] = {"0","1","2","3","4","5","6","7","8","9","10"};
char *result_2[] = {"500","502","504","506","508","510","512","514","516","518"};
char *result_3[] = {"1000","2000","3000","4000","5000","6000","7000","8000","9000","10000"};
char *result_4[] = {"9999","8999","7999","6999","5999","4999","3999","2999","1999","999"};
char *result_5[] = {"1000000","2000000","3000000","4000000","5000000","6000000","7000000",
"8000000","9000000","10000000"};
for(int i=0;i<=10;++i){
UnityAssertEqualString((const char*)((result_1[i])), (const char*)((to_string(i))), (
((void *)0)
), (UNITY_UINT)(17));
}
for(int i=0, j=500;i<10;++i,j+=2){
UnityAssertEqualString((const char*)((result_2[i])), (const char*)((to_string(j))), (
((void *)0)
), (UNITY_UINT)(21));
}
for(int i=0, j=1000;i<10;++i,j+=1000){
UnityAssertEqualString((const char*)((result_3[i])), (const char*)((to_string(j))), (
((void *)0)
), (UNITY_UINT)(25));
}
for(int i=0, j=9999;i<10;++i,j-=1000){
UnityAssertEqualString((const char*)((result_4[i])), (const char*)((to_string(j))), (
((void *)0)
), (UNITY_UINT)(29));
}
for(int i=0, j=1000000;i<10;++i,j+=1000000){
UnityAssertEqualString((const char*)((result_5[i])), (const char*)((to_string(j))), (
((void *)0)
), (UNITY_UINT)(32));
}
}
void test_generateCheckString()
{
int numbers_1[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
char *strings_1[] = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
char *result_1[] = {"0=a","1=b","2=c","3=d","4=e","5=f","6=g","7=h","8=i","9=j","10=k","11=l","12=m","13=n","14=o","15=p","16=q","17=r", "18=s","19=t","20=u","21=v","22=w","23=x","24=y","25=z"};
for(int i=0;i<26;++i){
UnityAssertEqualString((const char*)((result_1[i])), (const char*)((generateCheckString(numbers_1[i],*(strings_1+i)))), (
((void *)0)
), (UNITY_UINT)(45));
}
int numbers_2[] = {0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025};
char *strings_2[] = {"z","zy","zyx","zyxw","zyxwv","zyxwvu","zyxwvut","zyxwvuts","zyxwvutsr","zyxwvutsrq","zyxwvutsrqp",
"zyxwvutsrqpo","zyxwvutsrqpon","zyxwvutsrqponm","zyxwvutsrqponml","zyxwvutsrqponmlk",
"zyxwvutsrqponmlkj","zyxwvutsrqponmlkji","zyxwvutsrqponmlkjih","zyxwvutsrqponmlkjihg","zyxwvutsrqponmlkjihgf",
"zyxwvutsrqponmlkjihgfe","zyxwvutsrqponmlkjihgfed","zyxwvutsrqponmlkjihgfedc","zyxwvutsrqponmlkjihgfedcb",
"zyxwvutsrqponmlkjihgfedcba"};
char *result_2[] = {"0=z","1=zy","1=zyx","2=zyxw","3=zyxwv","5=zyxwvu","8=zyxwvut","13=zyxwvuts","21=zyxwvutsr","34=zyxwvutsrq",
"55=zyxwvutsrqp","89=zyxwvutsrqpo","144=zyxwvutsrqpon","233=zyxwvutsrqponm","377=zyxwvutsrqponml",
"610=zyxwvutsrqponmlk","987=zyxwvutsrqponmlkj","1597=zyxwvutsrqponmlkji","2584=zyxwvutsrqponmlkjih",
"4181=zyxwvutsrqponmlkjihg","6765=zyxwvutsrqponmlkjihgf","10946=zyxwvutsrqponmlkjihgfe",
"17711=zyxwvutsrqponmlkjihgfed","28657=zyxwvutsrqponmlkjihgfedc","46368=zyxwvutsrqponmlkjihgfedcb",
"75025=zyxwvutsrqponmlkjihgfedcba"};
for(int i=0;i<26;++i){
UnityAssertEqualString((const char*)((result_2[i])), (const char*)((generateCheckString(numbers_2[i],*(strings_2+i)))), (
((void *)0)
), (UNITY_UINT)(61));
}
srand(time(0));
int random_number=0;
char *random_numbers_strings[20];
int random_numbers[20];
for(int i=0;i<20;++i){
random_number = (rand() % 100) + 1;
random_numbers_strings[i] = to_string(random_number);
random_numbers[i] = random_number;
}
char *strings_3[] = {"tree","plant","tea","programming","assembler","unix","BSD","snow","mountain","table","wood","forest", "calculator","book","light","keyboard","old","paper","pencil","voltage"};
char *result_3[20];
for(int i=0;i<20;++i){
random_numbers_strings[i] = strcat(random_numbers_strings[i],"=");
result_3[i] = strcat(random_numbers_strings[i],strings_3[i]);
printf("%s\n",result_3[i]);
}
for(int i=0;i<20;++i){
UnityAssertEqualString((const char*)((result_3[i])), (const char*)((generateCheckString(random_numbers[i],strings_3[i]))), (
((void *)0)
), (UNITY_UINT)(81));
}
}

3
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

3
tests/build/test/dependencies/StringManipulation.d

@ -0,0 +1,3 @@
build/test/out/c/StringManipulation.o: \
/home/julius/Documents/Studium/Informatik/1.\ Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/StringManipulation.c \
/home/julius/Documents/Studium/Informatik/1.\ Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/StringManipulation.h

6
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

4
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

4
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

5
tests/build/test/dependencies/test_StringManipulation.d

@ -0,0 +1,5 @@
build/test/out/c/test_StringManipulation.o: \
test/test_StringManipulation.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/StringManipulation.h

4
tests/build/test/dependencies/test_StringManipulation_runner.d

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

BIN
tests/build/test/out/c/StringManipulation.o

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

BIN
tests/build/test/out/c/test_LoginCustomer.o

BIN
tests/build/test/out/c/test_LoginCustomer_runner.o

BIN
tests/build/test/out/c/test_StringManipulation.o

BIN
tests/build/test/out/c/test_StringManipulation_runner.o

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

BIN
tests/build/test/out/test_LoginCustomer.out

BIN
tests/build/test/out/test_StringManipulation.out

87
tests/build/test/preprocess/files/test_LoginCustomer.c

@ -0,0 +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
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);
}
}

195
tests/build/test/preprocess/files/test_StringManipulation.c

@ -0,0 +1,195 @@
#include "Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/StringManipulation.h"
#include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h"
void test_to_string()
{
char *result_1[] = {"0","1","2","3","4","5","6","7","8","9","10"};
char *result_2[] = {"500","502","504","506","508","510","512","514","516","518"};
char *result_3[] = {"1000","2000","3000","4000","5000","6000","7000","8000","9000","10000"};
char *result_4[] = {"9999","8999","7999","6999","5999","4999","3999","2999","1999","999"};
char *result_5[] = {"1000000","2000000","3000000","4000000","5000000","6000000","7000000",
"8000000","9000000","10000000"};
for(int i=0;i<=10;++i){
UnityAssertEqualString((const char*)((result_1[i])), (const char*)((to_string(i))), (
((void *)0)
), (UNITY_UINT)(17));
}
for(int i=0, j=500;i<10;++i,j+=2){
UnityAssertEqualString((const char*)((result_2[i])), (const char*)((to_string(j))), (
((void *)0)
), (UNITY_UINT)(21));
}
for(int i=0, j=1000;i<10;++i,j+=1000){
UnityAssertEqualString((const char*)((result_3[i])), (const char*)((to_string(j))), (
((void *)0)
), (UNITY_UINT)(25));
}
for(int i=0, j=9999;i<10;++i,j-=1000){
UnityAssertEqualString((const char*)((result_4[i])), (const char*)((to_string(j))), (
((void *)0)
), (UNITY_UINT)(29));
}
for(int i=0, j=1000000;i<10;++i,j+=1000000){
UnityAssertEqualString((const char*)((result_5[i])), (const char*)((to_string(j))), (
((void *)0)
), (UNITY_UINT)(32));
}
}
void test_generateCheckString()
{
int numbers_1[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
char *strings_1[] = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
char *result_1[] = {"0=a","1=b","2=c","3=d","4=e","5=f","6=g","7=h","8=i","9=j","10=k","11=l","12=m","13=n","14=o","15=p","16=q","17=r", "18=s","19=t","20=u","21=v","22=w","23=x","24=y","25=z"};
for(int i=0;i<26;++i){
UnityAssertEqualString((const char*)((result_1[i])), (const char*)((generateCheckString(numbers_1[i],*(strings_1+i)))), (
((void *)0)
), (UNITY_UINT)(45));
}
int numbers_2[] = {0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025};
char *strings_2[] = {"z","zy","zyx","zyxw","zyxwv","zyxwvu","zyxwvut","zyxwvuts","zyxwvutsr","zyxwvutsrq","zyxwvutsrqp",
"zyxwvutsrqpo","zyxwvutsrqpon","zyxwvutsrqponm","zyxwvutsrqponml","zyxwvutsrqponmlk",
"zyxwvutsrqponmlkj","zyxwvutsrqponmlkji","zyxwvutsrqponmlkjih","zyxwvutsrqponmlkjihg","zyxwvutsrqponmlkjihgf",
"zyxwvutsrqponmlkjihgfe","zyxwvutsrqponmlkjihgfed","zyxwvutsrqponmlkjihgfedc","zyxwvutsrqponmlkjihgfedcb",
"zyxwvutsrqponmlkjihgfedcba"};
char *result_2[] = {"0=z","1=zy","1=zyx","2=zyxw","3=zyxwv","5=zyxwvu","8=zyxwvut","13=zyxwvuts","21=zyxwvutsr","34=zyxwvutsrq",
"55=zyxwvutsrqp","89=zyxwvutsrqpo","144=zyxwvutsrqpon","233=zyxwvutsrqponm","377=zyxwvutsrqponml",
"610=zyxwvutsrqponmlk","987=zyxwvutsrqponmlkj","1597=zyxwvutsrqponmlkji","2584=zyxwvutsrqponmlkjih",
"4181=zyxwvutsrqponmlkjihg","6765=zyxwvutsrqponmlkjihgf","10946=zyxwvutsrqponmlkjihgfe",
"17711=zyxwvutsrqponmlkjihgfed","28657=zyxwvutsrqponmlkjihgfedc","46368=zyxwvutsrqponmlkjihgfedcb",
"75025=zyxwvutsrqponmlkjihgfedcba"};
for(int i=0;i<26;++i){
UnityAssertEqualString((const char*)((result_2[i])), (const char*)((generateCheckString(numbers_2[i],*(strings_2+i)))), (
((void *)0)
), (UNITY_UINT)(61));
}
srand(time(0));
int random_number=0;
char *random_numbers_strings[20];
int random_numbers[20];
for(int i=0;i<20;++i){
random_number = (rand() % 100) + 1;
random_numbers_strings[i] = to_string(random_number);
random_numbers[i] = random_number;
}
char *strings_3[] = {"tree","plant","tea","programming","assembler","unix","BSD","snow","mountain","table","wood","forest", "calculator","book","light","keyboard","old","paper","pencil","voltage"};
char *result_3[20];
for(int i=0;i<20;++i){
random_numbers_strings[i] = strcat(random_numbers_strings[i],"=");
result_3[i] = strcat(random_numbers_strings[i],strings_3[i]);
printf("%s\n",result_3[i]);
}
for(int i=0;i<20;++i){
UnityAssertEqualString((const char*)((result_3[i])), (const char*)((generateCheckString(random_numbers[i],strings_3[i]))), (
((void *)0)
), (UNITY_UINT)(81));
}
}

3
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

3
tests/build/test/preprocess/includes/test_StringManipulation.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/StringManipulation.h

18
tests/build/test/results/test_LoginCustomer.pass

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

42
tests/build/test/results/test_StringManipulation.pass

@ -0,0 +1,42 @@
---
:source:
:path: test
:file: test_StringManipulation.c
:successes:
- :test: test_to_string
:line: 6
:message: ''
:unity_test_time: 0
- :test: test_generateCheckString
:line: 38
:message: ''
:unity_test_time: 0
:failures: []
:ignores: []
:counts:
:total: 2
:passed: 2
:failed: 0
:ignored: 0
:stdout:
- 9=tree
- 26=plant
- 92=tea
- 31=programming
- 75=assembler
- 28=unix
- 92=BSD
- 99=snow
- 10=mountain
- 43=table
- 92=wood
- 98=forest
- 3=calculator
- 32=book
- 29=light
- 92=keyboard
- 35=old
- 27=paper
- 85=pencil
- 91=voltage
:time: 0.0019293400000606198

81
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", 5);
return UnityEnd();
}

89
tests/build/test/runners/test_StringManipulation_runner.c

@ -0,0 +1,89 @@
/* 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_to_string();
extern void test_generateCheckString();
/*=======Mock Management=====*/
static void CMock_Init(void)
{
GlobalExpectCount = 0;
GlobalVerifyOrder = 0;
GlobalOrderError = NULL;
}
static void CMock_Verify(void)
{
}
static void CMock_Destroy(void)
{
}
/*=======Setup (stub)=====*/
void setUp(void) {}
/*=======Teardown (stub)=====*/
void tearDown(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_StringManipulation.c");
run_test(test_to_string, "test_to_string", 6);
run_test(test_generateCheckString, "test_generateCheckString", 38);
return UnityEnd();
}

101
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
...

0
tests/test/support/.gitkeep

21
tests/test/test_LoginCustomer.c

@ -0,0 +1,21 @@
#include <unity.h>
#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]));
}
}

83
tests/test/test_StringManipulation.c

@ -0,0 +1,83 @@
#include "unity.h"
#include "StringManipulation.h"
#include <time.h>
#include <string.h>
void test_to_string()
{
/*initializing test values*/
char *result_1[] = {"0","1","2","3","4","5","6","7","8","9","10"};
char *result_2[] = {"500","502","504","506","508","510","512","514","516","518"};
char *result_3[] = {"1000","2000","3000","4000","5000","6000","7000","8000","9000","10000"};
char *result_4[] = {"9999","8999","7999","6999","5999","4999","3999","2999","1999","999"};
char *result_5[] = {"1000000","2000000","3000000","4000000","5000000","6000000","7000000",
"8000000","9000000","10000000"};
for(int i=0;i<=10;++i){
TEST_ASSERT_EQUAL_STRING(result_1[i],to_string(i));
}
for(int i=0, j=500;i<10;++i,j+=2){
TEST_ASSERT_EQUAL_STRING(result_2[i],to_string(j));
}
for(int i=0, j=1000;i<10;++i,j+=1000){
TEST_ASSERT_EQUAL_STRING(result_3[i],to_string(j));
}
for(int i=0, j=9999;i<10;++i,j-=1000){
TEST_ASSERT_EQUAL_STRING(result_4[i], to_string(j));
}
for(int i=0, j=1000000;i<10;++i,j+=1000000){
TEST_ASSERT_EQUAL_STRING(result_5[i],to_string(j));
}
}
void test_generateCheckString()
{
/*test block 1*/
int numbers_1[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
char *strings_1[] = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
char *result_1[] = {"0=a","1=b","2=c","3=d","4=e","5=f","6=g","7=h","8=i","9=j","10=k","11=l","12=m","13=n","14=o","15=p","16=q","17=r", "18=s","19=t","20=u","21=v","22=w","23=x","24=y","25=z"};
for(int i=0;i<26;++i){
TEST_ASSERT_EQUAL_STRING(result_1[i],generateCheckString(numbers_1[i],*(strings_1+i)));
}
/*test block 2*/
int numbers_2[] = {0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025};
char *strings_2[] = {"z","zy","zyx","zyxw","zyxwv","zyxwvu","zyxwvut","zyxwvuts","zyxwvutsr","zyxwvutsrq","zyxwvutsrqp",
"zyxwvutsrqpo","zyxwvutsrqpon","zyxwvutsrqponm","zyxwvutsrqponml","zyxwvutsrqponmlk",
"zyxwvutsrqponmlkj","zyxwvutsrqponmlkji","zyxwvutsrqponmlkjih","zyxwvutsrqponmlkjihg","zyxwvutsrqponmlkjihgf",
"zyxwvutsrqponmlkjihgfe","zyxwvutsrqponmlkjihgfed","zyxwvutsrqponmlkjihgfedc","zyxwvutsrqponmlkjihgfedcb",
"zyxwvutsrqponmlkjihgfedcba"};
char *result_2[] = {"0=z","1=zy","1=zyx","2=zyxw","3=zyxwv","5=zyxwvu","8=zyxwvut","13=zyxwvuts","21=zyxwvutsr","34=zyxwvutsrq",
"55=zyxwvutsrqp","89=zyxwvutsrqpo","144=zyxwvutsrqpon","233=zyxwvutsrqponm","377=zyxwvutsrqponml",
"610=zyxwvutsrqponmlk","987=zyxwvutsrqponmlkj","1597=zyxwvutsrqponmlkji","2584=zyxwvutsrqponmlkjih",
"4181=zyxwvutsrqponmlkjihg","6765=zyxwvutsrqponmlkjihgf","10946=zyxwvutsrqponmlkjihgfe",
"17711=zyxwvutsrqponmlkjihgfed","28657=zyxwvutsrqponmlkjihgfedc","46368=zyxwvutsrqponmlkjihgfedcb",
"75025=zyxwvutsrqponmlkjihgfedcba"};
for(int i=0;i<26;++i){
TEST_ASSERT_EQUAL_STRING(result_2[i],generateCheckString(numbers_2[i],*(strings_2+i)));
}
/*test block 3*/
srand(time(0));
int random_number=0;
char *random_numbers_strings[20];
int random_numbers[20];
for(int i=0;i<20;++i){
random_number = (rand() % 100) + 1;
random_numbers_strings[i] = to_string(random_number);
random_numbers[i] = random_number;
}
char *strings_3[] = {"tree","plant","tea","programming","assembler","unix","BSD","snow","mountain","table","wood","forest", "calculator","book","light","keyboard","old","paper","pencil","voltage"};
char *result_3[20];
for(int i=0;i<20;++i){
random_numbers_strings[i] = strcat(random_numbers_strings[i],"=");
result_3[i] = strcat(random_numbers_strings[i],strings_3[i]);
printf("%s\n",result_3[i]);
}
for(int i=0;i<20;++i){
TEST_ASSERT_EQUAL_STRING(result_3[i],generateCheckString(random_numbers[i],strings_3[i]));
}
}
Loading…
Cancel
Save