#include "ApplyPatch.h"
#include "CreatePatch.h"
#include <stdio.h>
#include <string.h>

// Test from memory
void main(void)
{
	char source[256], destination[256];
	strcpy(source, "The quick red fox jumped over the lazy brown dog.");
	strcpy(destination, "A story: The quick red fox jumped over the lazy brown dog.  The dog then ripped the fox's freaking head off.");

	char *patch;
	unsigned patchSize;
	if (CreatePatch(source, (unsigned int)strlen(source), destination, (unsigned int)strlen(destination), &patch, &patchSize)==false)
	{
		printf("CreatePatch failed!\n");
	}

	char *patchedSource;
	unsigned patchedSourceSize;
	if (ApplyPatch(source, (unsigned int)strlen(source), &patchedSource, &patchedSourceSize, patch, patchSize)==false)
	{
		printf("ApplyPatch failed!\n");
	}

	if (patchedSourceSize!=(unsigned int)strlen(destination))
		printf("Patched source file does not match length of destination\n");
	else if (memcmp(patchedSource, destination, patchedSourceSize)!=0)
		printf("Patched source does not match destination\n");
	else
		printf("Success!\n");
}

// Test from files
/*
extern int TestPatchInMemory(int argc,char *argv[]);
extern int TestDiffInMemory(int argc,char *argv[]);
extern int DIFF_main(int argc,char *argv[]);
extern int PATCH_main(int argc,char * argv[]);
#include <conio.h>

void main(void)
{
	printf("(M)ine or (T)heirs?\n");
	if (getch()=='m')
	{
		char *argv[4];
		argv[1]="main.cpp";
		argv[2]="main2.cpp";
		argv[3]="my_patch";
		if (TestDiffInMemory(4,argv)==0)
		{
			printf("TestDiffInMemory Failed.\n");
			return;
		}

		argv[1]="main.cpp";
		argv[2]="my_mainpatched.cpp";
		argv[3]="my_patch";
		if (TestPatchInMemory(4, argv)==0)
		{
			printf("TestPatchInMemory Failed.\n");
			return;
		}

		printf("Success.\n");
	}
	else
	{
		char *argv[4];
		argv[1]="main.cpp";
		argv[2]="main2.cpp";
		argv[3]="their_patch";
		DIFF_main(4,argv);

		argv[1]="main.cpp";
		argv[2]="their_mainpatched.cpp";
		argv[3]="their_patch";
		PATCH_main(4, argv);

		printf("Success.\n");
	}
}
*/


syntax highlighted by Code2HTML, v. 0.9.1