diff --git a/build-project.sh b/build-project.sh deleted file mode 100755 index 949b9be..0000000 --- a/build-project.sh +++ /dev/null @@ -1,7 +0,0 @@ -clear -ceedling test:all -cd src/ -gcc main.c createCustomer.c -o prog -./prog -rm prog -cd .. 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..1972e12 --- /dev/null +++ b/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; diff --git a/src/LoginCustomer.c b/src/LoginCustomer.c new file mode 100644 index 0000000..5c2a7a4 --- /dev/null +++ b/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='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 new file mode 100644 index 0000000..809765b --- /dev/null +++ b/src/LoginCustomer.h @@ -0,0 +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 *); diff --git a/src/StringManipulation.c b/src/StringManipulation.c new file mode 100644 index 0000000..7ac306e --- /dev/null +++ b/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;i0){ + ++len; + number /= 10; + } + char *str = calloc(len+1, sizeof(char)); + for(int i=0,j=len-1;i>>>>>> 0155f61 (implementation of unit tests for checkLogin()) +======= +"/home/julius/Documents/Studium/Informatik/1. Semester/ProgMeth/Bankmanagement/bankmanagement-system/src/LoginCustomer.c": +>>>>>>> 4d810f5640d89a86c1f2feef3ab19118518ad49f +- 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..28f8ec8 --- /dev/null +++ b/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); + + } + +} diff --git a/tests/build/test/cache/test_StringManipulation.c b/tests/build/test/cache/test_StringManipulation.c new file mode 100644 index 0000000..0d87c99 --- /dev/null +++ b/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)); + + } + +} 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/StringManipulation.d b/tests/build/test/dependencies/StringManipulation.d new file mode 100644 index 0000000..625c690 --- /dev/null +++ b/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 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/test_StringManipulation.d b/tests/build/test/dependencies/test_StringManipulation.d new file mode 100644 index 0000000..2f65b3c --- /dev/null +++ b/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 diff --git a/tests/build/test/dependencies/test_StringManipulation_runner.d b/tests/build/test/dependencies/test_StringManipulation_runner.d new file mode 100644 index 0000000..c54fbb6 --- /dev/null +++ b/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 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 0000000..82cb77b Binary files /dev/null and b/tests/build/test/out/c/LoginCustomer.o differ diff --git a/tests/build/test/out/c/StringManipulation.o b/tests/build/test/out/c/StringManipulation.o new file mode 100644 index 0000000..531a498 Binary files /dev/null and b/tests/build/test/out/c/StringManipulation.o differ diff --git a/tests/build/test/out/c/cmock.o b/tests/build/test/out/c/cmock.o new file mode 100644 index 0000000..162be59 Binary files /dev/null and b/tests/build/test/out/c/cmock.o differ diff --git a/tests/build/test/out/c/test_LoginCustomer.o b/tests/build/test/out/c/test_LoginCustomer.o new file mode 100644 index 0000000..6c5aeaa Binary files /dev/null and b/tests/build/test/out/c/test_LoginCustomer.o differ 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 0000000..f839ac1 Binary files /dev/null and b/tests/build/test/out/c/test_LoginCustomer_runner.o differ diff --git a/tests/build/test/out/c/test_StringManipulation.o b/tests/build/test/out/c/test_StringManipulation.o new file mode 100644 index 0000000..4e6507a Binary files /dev/null and b/tests/build/test/out/c/test_StringManipulation.o differ diff --git a/tests/build/test/out/c/test_StringManipulation_runner.o b/tests/build/test/out/c/test_StringManipulation_runner.o new file mode 100644 index 0000000..a16f5ca Binary files /dev/null and b/tests/build/test/out/c/test_StringManipulation_runner.o differ diff --git a/tests/build/test/out/c/unity.o b/tests/build/test/out/c/unity.o new file mode 100644 index 0000000..ba42096 Binary files /dev/null and b/tests/build/test/out/c/unity.o differ diff --git a/tests/build/test/out/test_LoginCustomer.out b/tests/build/test/out/test_LoginCustomer.out new file mode 100755 index 0000000..3c7dca5 Binary files /dev/null and b/tests/build/test/out/test_LoginCustomer.out differ diff --git a/tests/build/test/out/test_StringManipulation.out b/tests/build/test/out/test_StringManipulation.out new file mode 100755 index 0000000..e8425d0 Binary files /dev/null and b/tests/build/test/out/test_StringManipulation.out differ 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..28f8ec8 --- /dev/null +++ b/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); + + } + +} diff --git a/tests/build/test/preprocess/files/test_StringManipulation.c b/tests/build/test/preprocess/files/test_StringManipulation.c new file mode 100644 index 0000000..0d87c99 --- /dev/null +++ b/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)); + + } + +} 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/preprocess/includes/test_StringManipulation.c b/tests/build/test/preprocess/includes/test_StringManipulation.c new file mode 100644 index 0000000..77ded96 --- /dev/null +++ b/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 diff --git a/tests/build/test/results/test_LoginCustomer.pass b/tests/build/test/results/test_LoginCustomer.pass new file mode 100644 index 0000000..730ed0b --- /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: 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/results/test_StringManipulation.pass b/tests/build/test/results/test_StringManipulation.pass new file mode 100644 index 0000000..84a7b10 --- /dev/null +++ b/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 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..f061ca9 --- /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", 5); + + return UnityEnd(); +} diff --git a/tests/build/test/runners/test_StringManipulation_runner.c b/tests/build/test/runners/test_StringManipulation_runner.c new file mode 100644 index 0000000..8c93227 --- /dev/null +++ b/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(); +} 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..610a847 --- /dev/null +++ b/tests/test/test_LoginCustomer.c @@ -0,0 +1,21 @@ +#include +#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/test_StringManipulation.c b/tests/test/test_StringManipulation.c new file mode 100644 index 0000000..accd414 --- /dev/null +++ b/tests/test/test_StringManipulation.c @@ -0,0 +1,83 @@ +#include "unity.h" +#include "StringManipulation.h" +#include +#include + +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])); + } +}