Browse Source
Merge branch 'feature/string-handling' into 'feature/customer-login'
Merge branch 'feature/string-handling' into 'feature/customer-login'
Merging feature/string-handling into feature/customer-login. See merge request fdai7057/bankmanagement-system!12remotes/origin/feature/customer-login^2
fdai7057
2 years ago
17 changed files with 709 additions and 1 deletions
-
3src/CustomerProperties.h
-
68src/StringManipulation.c
-
6src/StringManipulation.h
-
14src/docs.txt
-
195tests/build/test/cache/test_StringManipulation.c
-
3tests/build/test/dependencies/StringManipulation.d
-
5tests/build/test/dependencies/test_StringManipulation.d
-
4tests/build/test/dependencies/test_StringManipulation_runner.d
-
BINtests/build/test/out/c/StringManipulation.o
-
BINtests/build/test/out/c/test_StringManipulation.o
-
BINtests/build/test/out/c/test_StringManipulation_runner.o
-
BINtests/build/test/out/test_StringManipulation.out
-
195tests/build/test/preprocess/files/test_StringManipulation.c
-
3tests/build/test/preprocess/includes/test_StringManipulation.c
-
42tests/build/test/results/test_StringManipulation.pass
-
89tests/build/test/runners/test_StringManipulation_runner.c
-
83tests/test/test_StringManipulation.c
@ -1,4 +1,5 @@ |
|||
typedef struct Customer{ |
|||
char *ID, *forename, *surname, *password; |
|||
int ID; |
|||
char *forename,*surname,*password; |
|||
float balance; |
|||
}customer_t; |
@ -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; |
|||
} |
@ -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 *); |
@ -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". |
@ -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)); |
|||
|
|||
} |
|||
|
|||
} |
@ -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 |
@ -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 |
@ -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 |
@ -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)); |
|||
|
|||
} |
|||
|
|||
} |
@ -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 |
@ -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 |
@ -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(); |
|||
} |
@ -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])); |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue