diff options
Diffstat (limited to 'test.c')
-rw-r--r-- | test.c | 114 |
1 files changed, 87 insertions, 27 deletions
diff --git a/test.c b/test.c index 1a07c9c..b4d34dc 100644 --- a/test.c +++ b/test.c @@ -2,6 +2,8 @@ #include <stdlib.h> #include <string.h> +#include "base64.h" + //Test values /////////////////////////////////////////////////////////////// #define STRING_A "9TrJ" @@ -21,7 +23,9 @@ int test_b64_encode(); int test_b64_decode(); -int hexputs(unsigned int* data, unsigned int len); +int test_b64_encodef(); +int test_b64_decodef(); +int hexputs(const int* data, int len); int compare(int *a, int *b, int l); char *status(int boolean); @@ -36,6 +40,8 @@ int main() { test_b64_encode(); puts("\nTesting b64_decode() ...\n"); test_b64_decode(); + puts("\nTesting test_b64_encodef() ...\n"); + printf("%s\n",status(test_b64_encodef())); puts("\n[END]"); return 0; @@ -58,16 +64,20 @@ int test_b64_encode() { unsigned char *out_a = malloc(out_size_a); unsigned char *out_b = malloc(out_size_b); unsigned char *out_c = malloc(out_size_c); + + out_size_a = b64_encode(test_a,size_a,out_a); + out_size_b = b64_encode(test_b,size_b,out_b); + out_size_c = b64_encode(test_c,size_c,out_c); - out_size_a = b64_encode(test_a,size_a,out_a); - out_size_b = b64_encode(test_b,size_b,out_b); - out_size_c = b64_encode(test_c,size_c,out_c); - - printf("%s\t%s\n",status(!strcmp(out_a,STRING_A)),out_a); - printf("%s\t%s\n",status(!strcmp(out_b,STRING_B)),out_b); - printf("%s\t%s\n",status(!strcmp(out_c,STRING_C)),out_c); - - return 0; + printf("%s\t%s\n",status(strcmp(out_a,STRING_A)==0),out_a); + printf("%s\t%s\n",status(strcmp(out_b,STRING_B)==0),out_b); + printf("%s\t%s\n",status(strcmp(out_c,STRING_C)==0),out_c); + + free(out_a); + free(out_b); + free(out_c); + + return 0; } int test_b64_decode() { @@ -80,33 +90,83 @@ int test_b64_decode() { int len_b = strlen(test_b); int len_c = strlen(test_c); - int out_size_a = b64d_size(len_a) + 1; - int out_size_b = b64d_size(len_b) + 1; - int out_size_c = b64d_size(len_c) + 1; - - unsigned int *out_a = malloc(out_size_a); - unsigned int *out_b = malloc(out_size_b); - unsigned int *out_c = malloc(out_size_c); + int out_size_a = b64d_size(len_a); + int out_size_b = b64d_size(len_b); + int out_size_c = b64d_size(len_c); + + //printf("%i,%i,%i\n",out_size_a,out_size_b,out_size_c); + //wierd ~100 bytes memory problem? - out_size_a = b64_decode(test_a,len_a,out_a); - out_size_b = b64_decode(test_b,len_b,out_b); - out_size_c = b64_decode(test_c,len_c,out_c); + unsigned int *out_a = malloc(out_size_a+100); + unsigned int *out_b = malloc(out_size_b+100); + unsigned int *out_c = malloc(out_size_c+100); + + out_size_a = b64_decode(test_a,len_a,out_a); + out_size_b = b64_decode(test_b,len_b,out_b); + out_size_c = b64_decode(test_c,len_c,out_c); int r_a[] = HEXNUM_A; int r_b[] = HEXNUM_B; int r_c[] = HEXNUM_C; - printf("%s\t",status(compare(r_a,out_a,3))); hexputs(out_a,out_size_a); - printf("%s\t",status(compare(r_b,out_b,4))); hexputs(out_b,out_size_b); - printf("%s\t",status(compare(r_c,out_c,5))); hexputs(out_c,out_size_c); - - return 0; + //getchar(); + + printf("%s\t",status(compare(r_a,out_a,NELEMS(r_a)))); hexputs(out_a,out_size_a); + printf("%s\t",status(compare(r_b,out_b,NELEMS(r_b)))); hexputs(out_b,out_size_b); + printf("%s\t",status(compare(r_c,out_c,NELEMS(r_c)))); hexputs(out_c,out_size_c); + + //printf("addr_a = %p\n",out_a); + //printf("addr_b = %p\n",out_b); + //printf("addr_c = %p\n",out_c); + + free(out_a); + free(out_b); + free(out_c); + + return 0; +} + +int test_b64_encodef() { + + FILE *pFile; + pFile = fopen("B64_TEST01A.tmp","wb"); + if (pFile==NULL) + return 0; + + int i, j=0; + unsigned int test_a[] = HEXNUM_A; + unsigned int size_a = NELEMS(test_a); + + for (i=0;i<size_a;i++) { + fputc(test_a[i],pFile); + } + fclose(pFile); + + j = b64_encodef("B64_TEST01A.tmp","B64_TEST01B.tmp"); + remove("B64_TEST01A.tmp"); + + if (!j) + return 0; + + pFile = fopen("B64_TEST01B.tmp","rb"); + if (pFile==NULL) + return 0; + + char *out = malloc(j+1); + fgets(out,j+1,pFile); + fclose(pFile); + remove("B64_TEST01B.tmp"); + printf("Comparing \"%s\" to \"%s\" : ",STRING_A,out); + if (strcmp(STRING_A,out)==0) + return 1; + + return 0; } -int hexputs(unsigned int* data, unsigned int len) { +int hexputs(const int* data, int len) { int i; for (i=0;i<len;i++) { - printf("0x%X ",(int)data[i]); + printf("0x%X ",data[i]); } printf("\n"); return 0; |