void WriteDehollowficationChunkedFile(void) { Ptr<CTestDoubleNamedString> cDouble; CObjectWriterChunked cWriter; CObjectGraphSerialiser cGraphSerialiser; cDouble = SetupDehollowficationScene(); cWriter.Init("Output\\Dehollowfication\\ChunkFile", "", "Double"); cGraphSerialiser.Init(&cWriter); AssertTrue(cGraphSerialiser.Write(&cDouble)); cGraphSerialiser.Kill(); cWriter.Kill(); }
int WriteObjectReaderChunkedFile(void) { CPointer cBase; CObjectWriterChunked cWriter; CObjectGraphSerialiser cGraphSerialiser; cBase = SetupObjectReaderChunkedChunkFile(); cWriter.Init("Output\\ObjectReaderChunked\\Test\\", "", "Reader"); cGraphSerialiser.Init(&cWriter); AssertTrue(cGraphSerialiser.Write(cBase.BaseObject())); cGraphSerialiser.Kill(); cWriter.Kill(); return (int)gcObjects.NumMemoryIndexes(); }
void WriteObjectReaderSimpleFile(void) { MemoryInit(); ObjectsInit(); gcObjects.AddConstructor<CTestNamedString>(); CPointer cBase; CObjectWriterSimple cWriter; CObjectGraphSerialiser cGraphSerialiser; cBase = SetupObjectReaderSimpleFile(); cWriter.Init("Output\\ObjectReaderSimple\\Test\\", ""); cGraphSerialiser.Init(&cWriter); AssertTrue(cGraphSerialiser.Write(cBase.BaseObject())); cGraphSerialiser.Kill(); cWriter.Kill(); ObjectsKill(); MemoryKill(); }
void TestObjectWriterChunkedSerialised(void) { ObjectsInit(); CObjectWriterChunked cWriter; CObjectGraphSerialiser cGraphSerialiser; Ptr<CTestWithArray> pcObject1; Ptr<CTestInteger> pcObject2; Ptr<CTestInteger> pcObject3; Ptr<CTestInteger> pcObject4; CChunkFileNames cChunkFile; int iLength; char szTest[4]; pcObject1 = ONMalloc(CTestWithArray, "Base/Level 1/Warning"); pcObject1->Init("Talking Clock", 17); pcObject2 = OMalloc(CTestInteger); pcObject2->Init(2, 9, 937); pcObject1->Add(pcObject2); pcObject3 = OMalloc(CTestInteger); pcObject3->Init(3, 7321, 7); pcObject1->Add(pcObject3); pcObject4 = OMalloc(CTestInteger); pcObject4->Init(4, 5, 6); pcObject1->Add(pcObject4); cWriter.Init("Output\\ObjectWriterChunked\\Test\\", "Base/Level 1", "ChunkFile"); cGraphSerialiser.Init(&cWriter); AssertTrue(cGraphSerialiser.Write(&pcObject1)); cGraphSerialiser.Kill(); cWriter.Kill(); AssertFile("Input/ChunkFile.DRG", "Output/ObjectWriterChunked/Test/Base/Level 1/ChunkFile.DRG"); cChunkFile.Init(DiskFile("Output/ObjectWriterChunked/Test/Base/Level 1/ChunkFile.DRG")); AssertTrue(cChunkFile.ReadOpen()); //CTestWithArray pcObject1 AssertTrue(cChunkFile.ReadChunkBegin("Warning")); AssertTrue(cChunkFile.ReadInt(&iLength)); AssertInt(106, iLength); AssertTrue(cChunkFile.ReadData(szTest, 4)); AssertString("NAM", szTest); AssertTrue(cChunkFile.ReadChunkEnd()); //CArrayObject AssertTrue(cChunkFile.ReadChunkBegin("Unnamed/0000000000000002")); AssertTrue(cChunkFile.ReadInt(&iLength)); AssertInt(101, iLength); AssertTrue(cChunkFile.ReadData(szTest, 4)); AssertString("IDX", szTest); AssertTrue(cChunkFile.ReadChunkEnd()); //CTestInteger pcObject2 AssertTrue(cChunkFile.ReadChunkBegin("Unnamed/0000000000000003")); AssertTrue(cChunkFile.ReadInt(&iLength)); AssertInt(45, iLength); AssertTrue(cChunkFile.ReadData(szTest, 4)); AssertString("IDX", szTest); AssertTrue(cChunkFile.ReadChunkEnd()); //CTestInteger pcObject3 AssertTrue(cChunkFile.ReadChunkBegin("Unnamed/0000000000000004")); AssertTrue(cChunkFile.ReadInt(&iLength)); AssertInt(45, iLength); AssertTrue(cChunkFile.ReadData(szTest, 4)); AssertString("IDX", szTest); AssertTrue(cChunkFile.ReadChunkEnd()); //CTestInteger pcObject4 AssertTrue(cChunkFile.ReadChunkBegin("Unnamed/0000000000000005")); AssertTrue(cChunkFile.ReadInt(&iLength)); AssertInt(45, iLength); AssertTrue(cChunkFile.ReadData(szTest, 4)); AssertString("IDX", szTest); AssertTrue(cChunkFile.ReadChunkEnd()); AssertTrue(cChunkFile.ReadClose()); cChunkFile.Kill(); ObjectsKill(); }
void TestRemappingOfOIs(CObjectWriter* pcWriter, CObjectReader* pcReader) { CFileUtil cFileUtil; Ptr<CTestSaveableObject2> cBase; Ptr<CTestSaveableObject2> cStart1; Ptr<CRoot> cRoot; Ptr<CString> szOne; Ptr<CString> cString1; Ptr<CString> cString2; CObjectGraphSerialiser cGraphSerialiser; CObjectGraphDeserialiser cGraphDeserialiser; Ptr<CTestSaveableObject1> cShared; int i; CObjectAllocator cAllocator; CDependentReadObjects cDependentReadObjects; cFileUtil.MakeDir("Output/GraphDeserialiser/Simple/Remapping"); ObjectsInit("Output/GraphDeserialiser/Simple/Remapping"); TestObjectGraphDeserialiserAddConstructors(); TestObjectGraphDeserialiserBuildGraph1(); cBase = gcObjects.Get("Ow/Start 1"); AssertTrue(cBase.IsNotNull()); AssertLongLongInt(3, cBase->GetOI()); cString1 = gcObjects.Get(6LL); AssertString("Black", cString1->Text()); AssertLongLongInt(6LL, cString1->GetOI()); cString2 = gcObjects.Get(7LL); AssertString("Jack", cString2->Text()); AssertLongLongInt(7LL, cString2->GetOI()); cGraphSerialiser.Init(pcWriter); AssertTrue(cGraphSerialiser.Write(&cBase)); cGraphSerialiser.Kill(); pcWriter->Kill(); ObjectsKill(); ObjectsInit("Output/GraphDeserialiser/Simple/Remapping"); TestObjectGraphDeserialiserAddConstructors(); cRoot = ORoot(); for (i = 0; i < 20; i++) { szOne = OMalloc(CString); szOne->Init("Hello World "); szOne->Append(i); cRoot->Add(szOne); AssertLongLongInt(3+i, szOne->GetOI()); } cAllocator.Init(&gcObjects); cDependentReadObjects.Init(); cGraphDeserialiser.Init(pcReader, FALSE, &cAllocator, &cDependentReadObjects, gcObjects.GetMemory()); cStart1 = cGraphDeserialiser.Read("Ow/Start 1"); AssertTrue(cStart1.IsNotNull()); AssertLongLongInt(23, cStart1->GetOI()); AssertTrue(cStart1->mp1.IsNotNull()); AssertString("CTestSaveableObject1", cStart1->mp1->ClassName()); cShared = cStart1->mp1; AssertLongLongInt(25, cShared->GetOI()); AssertTrue(cStart1->mp2.IsNotNull()); AssertString("CString", cStart1->mp2->ClassName()); cString1 = cStart1->mp2; AssertLongLongInt(24, cString1->GetOI()); cGraphDeserialiser.Kill(); cDependentReadObjects.Kill(); cAllocator.Kill(); for (i = 0; i < 20; i++) { szOne = OMalloc(CString); szOne->Init("Hello World "); szOne->Append(i + 20); cRoot->Add(szOne); AssertLongLongInt(26+i, szOne->GetOI()); } pcReader->Kill(); ObjectsKill(); }
void TestOverwritingOfExistingNamesFromChunkedFiles(void) { CObjectWriterChunked cWriterStart1; CObjectWriterChunked cWriterStart2; CFileUtil cFileUtil; Ptr<CTestSaveableObject2> cOwStart1; Ptr<CTestSaveableObject2> cOwStart2; CObjectGraphSerialiser cGraphSerialiser; CObjectGraphDeserialiser cGraphDeserialiser; CObjectReaderChunkFileDisk cReaderStart1; CObjectReaderChunkFileDisk cReaderStart2; Ptr<CTestSaveableObject1> cShared; Ptr<CRoot> cRoot; CPointer cObject; int iNumUnknowns; int iNumIndexes; int iNumNames; CObjectAllocator cAllocator; CDependentReadObjects cDependentReadObjects; cWriterStart1.Init("Output/GraphDeserialiser/Simple/Remapping", "", "Start1"); cWriterStart2.Init("Output/GraphDeserialiser/Simple/Remapping", "", "Start2"); cFileUtil.MakeDir("Output/GraphDeserialiser/Simple/Remapping"); ObjectsInit("Output/GraphDeserialiser/Simple/Remapping"); TestObjectGraphDeserialiserAddConstructors(); TestObjectGraphDeserialiserBuildGraph1(); cOwStart1 = gcObjects.Get("Ow/Start 1"); cGraphSerialiser.Init(&cWriterStart1); AssertTrue(cGraphSerialiser.Write(&cOwStart1)); cGraphSerialiser.Kill(); cWriterStart1.Kill(); cOwStart2 = gcObjects.Get("Ow/Start 2"); cGraphSerialiser.Init(&cWriterStart2); AssertTrue(cGraphSerialiser.Write(&cOwStart2)); cGraphSerialiser.Kill(); cWriterStart2.Kill(); cShared = gcObjects.Get("Ow/Shared"); AssertInt(3, cShared->NumHeapFroms()); AssertPointer(&cOwStart1, cShared->GetHeapFrom(0)); AssertPointer(&cOwStart2, cShared->GetHeapFrom(1)); AssertPointer(&cShared, cShared->GetHeapFrom(2)); //Remember: cShared->mpObject = cShared; AssertInt(2, cOwStart1->NumPointerTos()); AssertPointer(&cShared, cOwStart1->TestGetPointerTo(0)); AssertPointer(&cOwStart1->mp1, cOwStart1->TestGetPointerTo(0)); AssertPointer(&cOwStart1->mp2, cOwStart1->TestGetPointerTo(1)); AssertInt(2, cOwStart1->GetDistToRoot()); AssertInt(3, cShared->GetDistToRoot()); ObjectsKill(); ObjectsInit("Output/GraphDeserialiser/Simple/Remapping"); TestObjectGraphDeserialiserAddConstructors(); cRoot = ORoot(); cAllocator.Init(&gcObjects); cDependentReadObjects.Init(); cReaderStart1.Init("Output/GraphDeserialiser/Simple/Remapping", "Start1"); cGraphDeserialiser.Init(&cReaderStart1, FALSE, &cAllocator, &cDependentReadObjects, gcObjects.GetMemory()); cOwStart1 = cGraphDeserialiser.Read("Ow/Start 1"); cGraphDeserialiser.Kill(); cDependentReadObjects.Kill(); cAllocator.Kill(); cReaderStart1.Kill(); AssertInt(-1, cOwStart1->GetDistToRoot()); cRoot->Add(cOwStart1); cShared = gcObjects.Get("Ow/Shared"); //Make sure the pointed 'froms' are correctly setup after loading. AssertInt(2, cShared->NumHeapFroms()); AssertPointer(&cOwStart1, cShared->GetHeapFrom(0)); AssertPointer(&cShared, cShared->GetHeapFrom(1)); AssertInt(2, cOwStart1->NumPointerTos()); AssertPointer(&cShared, cOwStart1->TestGetPointerTo(0)); AssertPointer(&cOwStart1->mp1, cOwStart1->TestGetPointerTo(0)); AssertPointer(&cOwStart1->mp2, cOwStart1->TestGetPointerTo(1)); AssertInt(2, cOwStart1->GetDistToRoot()); AssertInt(3, cShared->GetDistToRoot()); AssertInt(89, cOwStart1->mp1->miInt); cOwStart1->mp1->miInt = 66; iNumUnknowns = gcUnknowns.NumElements(); iNumIndexes = (int)gcObjects.NumMemoryIndexes(); iNumNames = gcObjects.NumMemoryNames(); cAllocator.Init(&gcObjects); cDependentReadObjects.Init(); cReaderStart2.Init("Output/GraphDeserialiser/Simple/Remapping", "Start2"); cGraphDeserialiser.Init(&cReaderStart2, FALSE, &cAllocator, &cDependentReadObjects, gcObjects.GetMemory()); cOwStart2 = cGraphDeserialiser.Read("Ow/Start 2"); cGraphDeserialiser.Kill(); cDependentReadObjects.Kill(); cAllocator.Kill(); cReaderStart2.Kill(); AssertInt(iNumUnknowns+2, gcUnknowns.NumElements()); AssertInt(iNumIndexes+2, (int)gcObjects.NumMemoryIndexes()); AssertInt(iNumNames+1, (int)gcObjects.NumMemoryNames()); AssertNotNull(cOwStart2.Object()); cRoot->Add(cOwStart2); AssertNotNull(&cOwStart2); AssertInt(89, cOwStart2->mp1->miInt); AssertLongLongInt(cOwStart1->mp1->GetOI(), cOwStart2->mp1->GetOI()); AssertInt(89, cOwStart1->mp1->miInt); AssertPointer(&cOwStart1->mp1, &cOwStart2->mp1); cObject = gcObjects.Get("Ow/Start 2"); AssertPointer(&cOwStart2, &cObject); cObject = gcObjects.Get(cOwStart2->GetOI()); AssertPointer(&cOwStart2, &cObject); ObjectsKill(); }