void TestChunkFileNameing(void)
{
	CChunkFile		cChunkFile;
	int				iChunkNum;
	char			acTwentyOne[] =   {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09};
	char			acTwentyTwo[] =   {0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19};
	char			acTwentyThree[] = {0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29};
	char			acActual[10];

	cChunkFile.Init(MemoryFile());
	AssertTrue(cChunkFile.WriteOpen());
	AssertTrue(cChunkFile.WriteChunkBegin());
	AssertLongLongInt(1, cChunkFile.Write(acTwentyOne, 10, 1));
	AssertTrue(cChunkFile.WriteChunkBegin());
	AssertLongLongInt(1, cChunkFile.Write(acTwentyTwo, 10, 1));
	AssertTrue(cChunkFile.WriteChunkEnd("Floopy"));
	AssertTrue(cChunkFile.WriteChunkBegin());
	AssertLongLongInt(1, cChunkFile.Write(acTwentyThree, 10, 1));
	AssertTrue(cChunkFile.WriteChunkEnd("Floopy"));
	AssertTrue(cChunkFile.WriteChunkEnd("Rise"));
	AssertTrue(cChunkFile.WriteClose());

	AssertTrue(cChunkFile.ReadOpen());
	iChunkNum = cChunkFile.FindFirstChunkWithName("Rise");
	AssertInt(0, iChunkNum);
	AssertTrue(cChunkFile.ReadChunkBegin(iChunkNum));
	AssertLongLongInt(1, cChunkFile.Read(acActual, 10, 1));
	AssertMemory(acTwentyOne, acActual, 10);

	iChunkNum = cChunkFile.FindFirstChunkWithName("Floopy");
	AssertInt(0, iChunkNum);
	AssertTrue(cChunkFile.ReadChunkBegin(iChunkNum));
	AssertLongLongInt(1, cChunkFile.Read(acActual, 10, 1));
	AssertMemory(acTwentyTwo, acActual, 10);
	AssertTrue(cChunkFile.ReadChunkEnd());

	iChunkNum = cChunkFile.FindNextChunkWithName();
	AssertInt(1, iChunkNum);
	AssertTrue(cChunkFile.ReadChunkBegin(iChunkNum));
	AssertLongLongInt(1, cChunkFile.Read(acActual, 10, 1));
	AssertMemory(acTwentyThree, acActual, 10);
	AssertTrue(cChunkFile.ReadChunkEnd());

	AssertTrue(cChunkFile.ReadChunkEnd());
	AssertTrue(cChunkFile.ReadClose());

	cChunkFile.Kill();
}
void TestChunkFileSimple(void)
{
	CChunkFile	cChunkFile;
	CFileUtil	cFileUtil;
	int			iChunkNum;
	
	cFileUtil.MakeDir("Output");
	cFileUtil.Delete("Output/ChunkFile.bin");
	cChunkFile.Init(DiskFile("Output/ChunkFile.bin"));
	AssertFalse(cChunkFile.IsOpen());
	AssertTrue(cChunkFile.WriteOpen());
	AssertTrue(cChunkFile.IsOpen());
	AssertTrue(cChunkFile.WriteChunkBegin());
	AssertTrue(cChunkFile.WriteChunkEnd("ThisChunk"));
	AssertTrue(cChunkFile.WriteClose());
	AssertFalse(cChunkFile.IsOpen());
	cChunkFile.Kill();

	cChunkFile.Init(DiskFile("Output/ChunkFile.bin"));
	AssertFalse(cChunkFile.IsOpen());
	AssertTrue(cChunkFile.ReadOpen());
	AssertTrue(cChunkFile.IsOpen());
	iChunkNum = cChunkFile.FindFirstChunkWithName("ThisChunk");
	AssertInt(0, iChunkNum);
	AssertTrue(cChunkFile.ReadChunkBegin(iChunkNum));
	AssertTrue(cChunkFile.ReadClose());
	AssertFalse(cChunkFile.IsOpen());
	cChunkFile.Kill();
}
void TestChunkFileFileRead(void)
{
	CChunkFile		cChunkFile;
	int				iChunkNum;
	char			szZ[] = {"Z"};
	CChunkFileFile	cChunkFileFile;
	char			cz;

	cChunkFile.Init(MemoryFile());
	AssertTrue(cChunkFile.WriteOpen());
	AssertTrue(cChunkFile.WriteChunkBegin());
	AssertLongLongInt(1, cChunkFile.Write(szZ, 1, 1));
	AssertTrue(cChunkFile.WriteChunkEnd("Zynaps"));
	AssertTrue(cChunkFile.WriteClose());

	AssertTrue(cChunkFile.ReadOpen());
	iChunkNum = cChunkFile.FindFirstChunkWithName("Zynaps");
	AssertInt(0, iChunkNum);
	AssertTrue(cChunkFile.ReadChunkBegin(iChunkNum));

	cChunkFileFile.Init(&cChunkFile);
	AssertTrue(cChunkFileFile.Open(EFM_Read));
	AssertLongLongInt(1, cChunkFileFile.Size());
	AssertLongLongInt(0, cChunkFileFile.Tell());
	AssertLongLongInt(1, cChunkFileFile.Read(&cz, 1, 1));
	AssertChar('Z', cz); cz = 'Q';

	AssertTrue(cChunkFileFile.Seek(0, EFSO_SET));
	AssertLongLongInt(0, cChunkFileFile.Tell());
	AssertLongLongInt(1, cChunkFileFile.Read(&cz, 1, 1));
	AssertChar('Z', cz); cz = 'Q';
	AssertLongLongInt(1, cChunkFileFile.Tell());
	AssertFalse(cChunkFileFile.Eof());
	AssertLongLongInt(0, cChunkFileFile.Read(&cz, 1, 1));
	AssertTrue(cChunkFileFile.Eof());
	AssertLongLongInt(1, cChunkFileFile.Tell());

	AssertTrue(cChunkFileFile.Seek(0, EFSO_SET));
	AssertFalse(cChunkFileFile.Eof());
	AssertLongLongInt(1, cChunkFileFile.Read(&cz, 1, 2));
	AssertChar('Z', cz); cz = 'Q';
	AssertLongLongInt(1, cChunkFileFile.Tell());
	AssertTrue(cChunkFileFile.Eof());

	AssertTrue(cChunkFileFile.Close());

	AssertTrue(cChunkFile.ReadChunkEnd());
	AssertTrue(cChunkFile.ReadClose());

	cChunkFile.Kill();
}