about summary refs log tree commit diff stats
path: root/test.c
diff options
context:
space:
mode:
Diffstat (limited to 'test.c')
-rw-r--r--test.c114
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;