public void Test_COMPRESS_SPACE() { String FILENAME = "MultipleStorage3.cfs"; // 22Kb FileInfo srcFile = new FileInfo(FILENAME); File.Copy(FILENAME, "MultipleStorage_Deleted_Compress.cfs", true); CompoundFile cf = new CompoundFile("MultipleStorage_Deleted_Compress.cfs", UpdateMode.Update, true, true); ICFStorage st = cf.RootStorage.GetStorage("MyStorage"); st = st.GetStorage("AnotherStorage"); Assert.IsNotNull(st); st.Delete("Another2Stream"); cf.Commit(); cf.Close(); CompoundFile.ShrinkCompoundFile("MultipleStorage_Deleted_Compress.cfs"); // -> 7Kb FileInfo dstFile = new FileInfo("MultipleStorage_Deleted_Compress.cfs"); Assert.IsTrue(srcFile.Length > dstFile.Length); }
private void DeleteUnwantedJumpListEntries() { try { foreach (JumpList JumpListObj in this.JumpListFiles.JumpLists) { foreach (string Keyword in this.KeywordsList) { if (JumpListObj.DestListEntry.NetBiosName.Contains(Keyword)) { JumpListObj.DestListEntry.PendingDelete = true; } else if (JumpListObj.DestListEntry.Data.Contains(Keyword)) { JumpListObj.DestListEntry.PendingDelete = true; } } } byte[] dl2 = this.CreateDestListBinaryFromDestListObj(this.JumpListFiles, true); CompoundFile JumpListFileCompound; try { JumpListFileCompound = new CompoundFile(this.PathToJumpListFile, UpdateMode.Update, false, true); } catch (IOException e) { this.ScrubberGUIInst.DebugPrint("Error (JumpList): Error opening JumpList database file"); this.ScrubberGUIInst.DebugPrint("Error (JumpList): Details - " + e.Message); return; } foreach (JumpList JumpListObj in this.JumpListFiles.JumpLists) { if (JumpListObj.DestListEntry.PendingDelete) { try { this.ScrubberGUIInst.DebugPrint("Scrubbing (JumpList): " + JumpListObj.DestListEntry.Data); JumpListFileCompound.RootStorage.Delete(JumpListObj.DestListEntry.StreamNo); } catch (NullReferenceException e) { //this.ScrubberGUIInst.DebugPrint("Error (JumpList): List seems empty. List: " + JumpListObj.Name); this.ScrubberGUIInst.DebugPrint("Error (JumpList): Details - " + e.Message); } catch (CFItemNotFound e) { this.ScrubberGUIInst.DebugPrint("Error (JumpList): Details - " + e.Message); } } } JumpListFileCompound.RootStorage.GetStream("DestList").SetData(dl2); JumpListFileCompound.Commit(); JumpListFileCompound.Close(); } catch (NullReferenceException e) { //this.ScrubberGUIInst.DebugPrint("Error (JumpList): List seems empty."); this.ScrubberGUIInst.DebugPrint("Error (JumpList): Details - "+e.Message); } }
public IVisualPinballManager SetTableScript(string path, string tableScript) { _logger.Info("Saving table script to {0}", path); var cf = new CompoundFile(path, CFSUpdateMode.Update, CFSConfiguration.Default); var storage = cf.RootStorage.GetStorage("GameStg"); // 1. verify that we can do it _logger.Info("Checking checksum capabilities..."); var computedChecksum = ComputeChecksum(cf); var storedChecksum = ReadChecksum(storage); if (!computedChecksum.SequenceEqual(storedChecksum)) { throw new FormatException("Could not recompute checksum."); } _logger.Info("Checkum looks good, computed the same as found in file."); _logger.Info("Checking BIFF capabilities..."); var gameData = new BiffSerializer(storage.GetStream("GameData").GetData()); var parsers = new Dictionary<string, BiffSerializer.IBiffTagSerializer> { { "CODE", new BiffSerializer.SimpleSerializer() } }; gameData.Deserialize(parsers); if (!gameData.CheckConsistency()) { throw new FormatException("Could not re-serialize BIFF data."); } _logger.Info("Un- and re-serialized BIFF data and got the same result. We're good to go!"); try { // 2. update table script _logger.Info("Updating CODE data in BIFF stream..."); gameData.SetString("CODE", tableScript); storage.GetStream("GameData").SetData(gameData.Serialize()); cf.Commit(); cf.Close(); // 3. update hash cf = new CompoundFile(path, CFSUpdateMode.Update, CFSConfiguration.Default); storage = cf.RootStorage.GetStorage("GameStg"); var hash = ComputeChecksum(cf); _logger.Info("Setting new checksum {0}...", BitConverter.ToString(hash)); storage.GetStream("MAC").SetData(hash); cf.Commit(); cf.Close(); _logger.Info("Done!"); } catch (CFItemNotFound e) { _logger.Error(e, "Error patching file!"); _crashManager.Report(e, "vpt"); } return this; }
public void Test_DELETE_STREAM_SECTOR_REUSE() { CompoundFile cf = null; ICFStream st = null; byte[] b = Helpers.GetBuffer(1024 * 1024 * 2); //2MB buffer //byte[] b = Helpers.GetBuffer(5000); byte[] cmp = new byte[] { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7 }; cf = new CompoundFile(CFSVersion.Ver_4, false, false); st = cf.RootStorage.AddStream("AStream"); st.AppendData(b); cf.Save("SectorRecycle.cfs"); cf.Close(); cf = new CompoundFile("SectorRecycle.cfs", UpdateMode.Update, true, false); cf.RootStorage.Delete("AStream"); cf.Commit(true); cf.Close(); cf = new CompoundFile("SectorRecycle.cfs", UpdateMode.ReadOnly, false, false); //No sector recycle st = cf.RootStorage.AddStream("BStream"); st.AppendData(Helpers.GetBuffer(1024 * 1024 * 1)); cf.Save("SectorRecycleLarger.cfs"); cf.Close(); Assert.IsFalse((new FileInfo("SectorRecycle.cfs").Length) >= (new FileInfo("SectorRecycleLarger.cfs").Length)); cf = new CompoundFile("SectorRecycle.cfs", UpdateMode.ReadOnly, true, false); st = cf.RootStorage.AddStream("BStream"); st.AppendData(Helpers.GetBuffer(1024 * 1024 * 1)); cf.Save("SectorRecycleSmaller.cfs"); cf.Close(); Assert.IsTrue((new FileInfo("SectorRecycle.cfs").Length) >= (new FileInfo("SectorRecycleSmaller.cfs").Length)); }
public void Test_APPEND_DATA_TO_CREATE_LARGE_STREAM() { byte[] b = Helpers.GetBuffer(1024 * 1024 * 50); //2GB buffer byte[] cmp = new byte[] { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7 }; CompoundFile cf = new CompoundFile(CFSVersion.Ver_4, false, false); CFStream st = cf.RootStorage.AddStream("MySuperLargeStream"); cf.Save("MEGALARGESSIMUSFILE.cfs"); cf.Close(); cf = new CompoundFile("MEGALARGESSIMUSFILE.cfs", UpdateMode.Update, false, false); CFStream cfst = cf.RootStorage.GetStream("MySuperLargeStream"); for (int i = 0; i < 42; i++) { cfst.AppendData(b); cf.Commit(true); } cfst.AppendData(cmp); cf.Commit(true); cf.Close(); cf = new CompoundFile("MEGALARGESSIMUSFILE.cfs"); int count = 8; byte[] data = cf.RootStorage.GetStream("MySuperLargeStream").GetData((long)b.Length * 42L, ref count); Assert.IsTrue(Helpers.CompareBuffer(cmp, data)); cf.Close(); }
public void Test_TRANSACTED_REMOVE_MINI_STREAM_ADD_MINISTREAM_TO_EXISTING_FILE() { String srcFilename = "report.xls"; String dstFilename = "reportOverwrite2.xls"; File.Copy(srcFilename, dstFilename, true); CompoundFile cf = new CompoundFile(dstFilename, UpdateMode.Update, true, true); cf.RootStorage.Delete("\x05SummaryInformation"); byte[] buffer = Helpers.GetBuffer(2000); ICFStream addedStream = cf.RootStorage.AddStream("MyNewStream"); addedStream.SetData(buffer); cf.Commit(); cf.Close(); if (File.Exists("reportOverwrite2.xlsPP")) File.Delete("reportOverwrite2.xlsPP"); }
public void Test_TRANSACTED_ADD_MINISTREAM_TO_EXISTING_FILE() { String srcFilename = "report.xls"; String dstFilename = "reportOverwriteMultiple.xls"; File.Copy(srcFilename, dstFilename, true); CompoundFile cf = new CompoundFile(dstFilename, UpdateMode.Update, true, true); Random r = new Random(); byte[] buffer = Helpers.GetBuffer(31, 0x0A); cf.RootStorage.AddStream("MyStream").SetData(buffer); cf.Commit(); cf.Close(); FileStream larger = new FileStream(dstFilename, FileMode.Open); FileStream smaller = new FileStream(srcFilename, FileMode.Open); // Equal condition if minisector can be "allocated" // within the existing standard sector border Assert.IsTrue(larger.Length >= smaller.Length); larger.Close(); smaller.Close(); if (File.Exists("reportOverwriteMultiple.xlsPP")) File.Delete("reportOverwriteMultiple.xlsPP"); }
private static void TestCode() { const int N_FACTOR = 1000; byte[] bA = GetBuffer(20 * 1024 * N_FACTOR, 0x0A); byte[] bB = GetBuffer(5 * 1024, 0x0B); byte[] bC = GetBuffer(5 * 1024, 0x0C); byte[] bD = GetBuffer(5 * 1024, 0x0D); byte[] bE = GetBuffer(8 * 1024 * N_FACTOR + 1, 0x1A); byte[] bF = GetBuffer(16 * 1024 * N_FACTOR, 0x1B); byte[] bG = GetBuffer(14 * 1024 * N_FACTOR, 0x1C); byte[] bH = GetBuffer(12 * 1024 * N_FACTOR, 0x1D); byte[] bE2 = GetBuffer(8 * 1024 * N_FACTOR, 0x2A); byte[] bMini = GetBuffer(1027, 0xEE); Stopwatch sw = new Stopwatch(); sw.Start(); var cf = new CompoundFile(CFSVersion.Ver_3, true, false); cf.RootStorage.AddStream("A").SetData(bA); cf.Save("OneStream.cfs"); cf.Close(); cf = new CompoundFile("OneStream.cfs", UpdateMode.ReadOnly, true, false); cf.RootStorage.AddStream("B").SetData(bB); cf.RootStorage.AddStream("C").SetData(bC); cf.RootStorage.AddStream("D").SetData(bD); cf.RootStorage.AddStream("E").SetData(bE); cf.RootStorage.AddStream("F").SetData(bF); cf.RootStorage.AddStream("G").SetData(bG); cf.RootStorage.AddStream("H").SetData(bH); cf.Save("8_Streams.cfs"); cf.Close(); File.Copy("8_Streams.cfs", "6_Streams.cfs", true); cf = new CompoundFile("6_Streams.cfs", UpdateMode.Update, true, true); cf.RootStorage.Delete("D"); cf.RootStorage.Delete("G"); cf.Commit(); cf.Close(); File.Copy("6_Streams.cfs", "6_Streams_Shrinked.cfs", true); cf = new CompoundFile("6_Streams_Shrinked.cfs", UpdateMode.Update, true, false); cf.RootStorage.AddStream("ZZZ").SetData(bF); cf.RootStorage.GetStream("E").AppendData(bE2); cf.Commit(); cf.Close(); cf = new CompoundFile("6_Streams_Shrinked.cfs", UpdateMode.Update, true, false); cf.RootStorage.CLSID = new Guid("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"); cf.Commit(); cf.Close(); cf = new CompoundFile("6_Streams_Shrinked.cfs", UpdateMode.Update, true, false); cf.RootStorage.AddStorage("MyStorage").AddStream("ANS").AppendData(bE); cf.Commit(); cf.Close(); cf = new CompoundFile("6_Streams_Shrinked.cfs", UpdateMode.Update, true, false); cf.RootStorage.AddStorage("AnotherStorage").AddStream("ANS").AppendData(bE); cf.RootStorage.Delete("MyStorage"); cf.Commit(); cf.Close(); CompoundFile.ShrinkCompoundFile("6_Streams_Shrinked.cfs"); cf = new CompoundFile("6_Streams_Shrinked.cfs", UpdateMode.Update, true, false); cf.RootStorage.AddStorage("MiniStorage").AddStream("miniSt").AppendData(bMini); cf.RootStorage.GetStorage("MiniStorage").AddStream("miniSt2").AppendData(bMini); cf.Commit(); cf.Close(); cf = new CompoundFile("6_Streams_Shrinked.cfs", UpdateMode.Update, true, false); cf.RootStorage.GetStorage("MiniStorage").Delete("miniSt"); cf.RootStorage.GetStorage("MiniStorage").GetStream("miniSt2").AppendData(bE); cf.Commit(); cf.Close(); cf = new CompoundFile("6_Streams_Shrinked.cfs", UpdateMode.ReadOnly, true, false); var myStream = cf.RootStorage.GetStream("C"); var data = myStream.GetData(); Console.WriteLine(data[0] + " : " + data[data.Length - 1]); myStream = cf.RootStorage.GetStream("B"); data = myStream.GetData(); Console.WriteLine(data[0] + " : " + data[data.Length - 1]); cf.Close(); sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); Console.ReadKey(); }
public static void TestMultipleStreamCommit() { String srcFilename = Directory.GetCurrentDirectory() + @"\testfile\report.xls"; String dstFilename = Directory.GetCurrentDirectory() + @"\testfile\reportOverwriteMultiple.xls"; //Console.WriteLine(Directory.GetCurrentDirectory()); //Console.ReadKey(); File.Copy(srcFilename, dstFilename, true); CompoundFile cf = new CompoundFile(dstFilename, UpdateMode.Update, true, false); Random r = new Random(); DateTime start = DateTime.Now; for (int i = 0; i < 1000; i++) { byte[] buffer = GetBuffer(r.Next(100, 3500), 0x0A); if (i > 0) { if (r.Next(0, 100) > 50) { cf.RootStorage.Delete("MyNewStream" + (i - 1).ToString()); } } ICFStream addedStream = cf.RootStorage.AddStream("MyNewStream" + i.ToString()); addedStream.SetData(buffer); // Random commit, not on single addition if (r.Next(0, 100) > 50) cf.Commit(); } cf.Close(); TimeSpan sp = (DateTime.Now - start); Console.WriteLine(sp.TotalMilliseconds); }
private static void StressMemory() { const int N_LOOP = 20; const int MB_SIZE = 10; byte[] b = GetBuffer(1024 * 1024 * MB_SIZE); //2GB buffer byte[] cmp = new byte[] { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7 }; CompoundFile cf = new CompoundFile(CFSVersion.Ver_4, false, false); ICFStream st = cf.RootStorage.AddStream("MySuperLargeStream"); cf.Save("LARGE.cfs"); cf.Close(); //Console.WriteLine("Closed save"); //Console.ReadKey(); cf = new CompoundFile("LARGE.cfs", UpdateMode.Update, false, false); ICFStream cfst = cf.RootStorage.GetStream("MySuperLargeStream"); Stopwatch sw = new Stopwatch(); sw.Start(); for (int i = 0; i < N_LOOP; i++) { cfst.AppendData(b); cf.Commit(true); Console.WriteLine(" Updated " + i.ToString()); //Console.ReadKey(); } cfst.AppendData(cmp); cf.Commit(true); sw.Stop(); cf.Close(); Console.WriteLine(sw.Elapsed.TotalMilliseconds); sw.Reset(); //Console.WriteLine(sw.Elapsed.TotalMilliseconds); //Console.WriteLine("Closed Transacted"); //Console.ReadKey(); cf = new CompoundFile("LARGE.cfs"); int count = 8; sw.Reset(); sw.Start(); byte[] data = cf.RootStorage.GetStream("MySuperLargeStream").GetData(b.Length * (long)N_LOOP, ref count); sw.Stop(); Console.Write(data.Length); cf.Close(); Console.WriteLine("Closed Final " + sw.ElapsedMilliseconds); Console.ReadKey(); }
public void Test_FUNCTIONAL_BEHAVIOUR() { const int N_FACTOR = 1; byte[] bA = Helpers.GetBuffer(20 * 1024 * N_FACTOR, 0x0A); byte[] bB = Helpers.GetBuffer(5 * 1024, 0x0B); byte[] bC = Helpers.GetBuffer(5 * 1024, 0x0C); byte[] bD = Helpers.GetBuffer(5 * 1024, 0x0D); byte[] bE = Helpers.GetBuffer(8 * 1024 * N_FACTOR + 1, 0x1A); byte[] bF = Helpers.GetBuffer(16 * 1024 * N_FACTOR, 0x1B); byte[] bG = Helpers.GetBuffer(14 * 1024 * N_FACTOR, 0x1C); byte[] bH = Helpers.GetBuffer(12 * 1024 * N_FACTOR, 0x1D); byte[] bE2 = Helpers.GetBuffer(8 * 1024 * N_FACTOR, 0x2A); byte[] bMini = Helpers.GetBuffer(1027, 0xEE); Stopwatch sw = new Stopwatch(); sw.Start(); //############ // Phase 1 var cf = new CompoundFile(CFSVersion.Ver_3, true, false); cf.RootStorage.AddStream("A").SetData(bA); cf.Save("OneStream.cfs"); cf.Close(); // Test Phase 1 var cfTest = new CompoundFile("OneStream.cfs"); ICFStream testSt = cfTest.RootStorage.GetStream("A"); Assert.IsNotNull(testSt); Assert.IsTrue(testSt.Size == bA.Length); Assert.IsTrue(Helpers.CompareBuffer(bA, testSt.GetData())); cfTest.Close(); //########### //Phase 2 cf = new CompoundFile("OneStream.cfs", UpdateMode.ReadOnly, true, false); cf.RootStorage.AddStream("B").SetData(bB); cf.RootStorage.AddStream("C").SetData(bC); cf.RootStorage.AddStream("D").SetData(bD); cf.RootStorage.AddStream("E").SetData(bE); cf.RootStorage.AddStream("F").SetData(bF); cf.RootStorage.AddStream("G").SetData(bG); cf.RootStorage.AddStream("H").SetData(bH); cf.Save("8_Streams.cfs"); cf.Close(); // Test Phase 2 cfTest = new CompoundFile("8_Streams.cfs"); testSt = cfTest.RootStorage.GetStream("B"); Assert.IsNotNull(testSt); Assert.IsTrue(testSt.Size == bB.Length); Assert.IsTrue(Helpers.CompareBuffer(bB, testSt.GetData())); testSt = cfTest.RootStorage.GetStream("C"); Assert.IsNotNull(testSt); Assert.IsTrue(testSt.Size == bC.Length); Assert.IsTrue(Helpers.CompareBuffer(bC, testSt.GetData())); testSt = cfTest.RootStorage.GetStream("D"); Assert.IsNotNull(testSt); Assert.IsTrue(testSt.Size == bD.Length); Assert.IsTrue(Helpers.CompareBuffer(bD, testSt.GetData())); testSt = cfTest.RootStorage.GetStream("E"); Assert.IsNotNull(testSt); Assert.IsTrue(testSt.Size == bE.Length); Assert.IsTrue(Helpers.CompareBuffer(bE, testSt.GetData())); testSt = cfTest.RootStorage.GetStream("F"); Assert.IsNotNull(testSt); Assert.IsTrue(testSt.Size == bF.Length); Assert.IsTrue(Helpers.CompareBuffer(bF, testSt.GetData())); testSt = cfTest.RootStorage.GetStream("G"); Assert.IsNotNull(testSt); Assert.IsTrue(testSt.Size == bG.Length); Assert.IsTrue(Helpers.CompareBuffer(bG, testSt.GetData())); testSt = cfTest.RootStorage.GetStream("H"); Assert.IsNotNull(testSt); Assert.IsTrue(testSt.Size == bH.Length); Assert.IsTrue(Helpers.CompareBuffer(bH, testSt.GetData())); cfTest.Close(); File.Copy("8_Streams.cfs", "6_Streams.cfs", true); File.Delete("8_Streams.cfs"); //########### // Phase 3 cf = new CompoundFile("6_Streams.cfs", UpdateMode.Update, true, true); cf.RootStorage.Delete("D"); cf.RootStorage.Delete("G"); cf.Commit(); cf.Close(); //Test Phase 3 cfTest = new CompoundFile("6_Streams.cfs"); bool catched = false; try { testSt = cfTest.RootStorage.GetStream("D"); } catch (Exception ex) { if (ex is CFItemNotFound) catched = true; } Assert.IsTrue(catched); catched = false; try { testSt = cfTest.RootStorage.GetStream("G"); } catch (Exception ex) { if (ex is CFItemNotFound) catched = true; } Assert.IsTrue(catched); cfTest.Close(); //########## // Phase 4 File.Copy("6_Streams.cfs", "6_Streams_Shrinked.cfs", true); CompoundFile.ShrinkCompoundFile("6_Streams_Shrinked.cfs"); // Test Phase 4 Assert.IsTrue(new FileInfo("6_Streams_Shrinked.cfs").Length < new FileInfo("6_Streams.cfs").Length); cfTest = new CompoundFile("6_Streams_Shrinked.cfs"); VisitedEntryAction va = delegate(ICFItem item) { if (item.IsStream) { ICFStream ia = item as ICFStream; Assert.IsNotNull(ia); Assert.IsTrue(ia.Size > 0); byte[] d = ia.GetData(); Assert.IsNotNull(d); Assert.IsTrue(d.Length > 0); Assert.IsTrue(d.Length == ia.Size); } }; cfTest.RootStorage.VisitEntries(va, true); cfTest.Close(); //########## //Phase 5 cf = new CompoundFile("6_Streams_Shrinked.cfs", UpdateMode.Update, true, false); cf.RootStorage.AddStream("ZZZ").SetData(bF); cf.RootStorage.GetStream("E").AppendData(bE2); cf.Commit(); cf.Close(); cf = new CompoundFile("6_Streams_Shrinked.cfs", UpdateMode.Update, true, false); cf.RootStorage.CLSID = new Guid("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"); cf.Commit(); cf.Close(); cf = new CompoundFile("6_Streams_Shrinked.cfs", UpdateMode.Update, true, false); cf.RootStorage.AddStorage("MyStorage").AddStream("ANS").AppendData(bE); cf.Commit(); cf.Close(); cf = new CompoundFile("6_Streams_Shrinked.cfs", UpdateMode.Update, true, false); cf.RootStorage.AddStorage("AnotherStorage").AddStream("ANS").AppendData(bE); cf.RootStorage.Delete("MyStorage"); cf.Commit(); cf.Close(); //Test Phase 5 //##### //Phase 6 cf = new CompoundFile("6_Streams_Shrinked.cfs", UpdateMode.Update, true, false); cf.RootStorage.AddStorage("MiniStorage").AddStream("miniSt").AppendData(bMini); cf.RootStorage.GetStorage("MiniStorage").AddStream("miniSt2").AppendData(bMini); cf.Commit(); cf.Close(); cf = new CompoundFile("6_Streams_Shrinked.cfs", UpdateMode.Update, true, false); cf.RootStorage.GetStorage("MiniStorage").Delete("miniSt"); cf.RootStorage.GetStorage("MiniStorage").GetStream("miniSt2").AppendData(bE); cf.Commit(); cf.Close(); //Test Phase 6 cfTest = new CompoundFile("6_Streams_Shrinked.cfs"); byte[] d2 = cfTest.RootStorage.GetStorage("MiniStorage").GetStream("miniSt2").GetData(); Assert.IsTrue(d2.Length == (bE.Length + bMini.Length)); int cnt = 1; d2 = cfTest.RootStorage.GetStorage("MiniStorage").GetStream("miniSt2").GetData(bMini.Length, ref cnt); Assert.IsTrue(cnt == 1); Assert.IsTrue(d2.Length == 1); Assert.IsTrue(d2[0] == 0x1A); cnt = 1; d2 = cfTest.RootStorage.GetStorage("MiniStorage").GetStream("miniSt2").GetData(bMini.Length - 1, ref cnt); Assert.IsTrue(cnt == 1); Assert.IsTrue(d2.Length == 1); Assert.IsTrue(d2[0] == 0xEE); try { cfTest.RootStorage.GetStorage("MiniStorage").GetStream("miniSt"); } catch (Exception ex) { Assert.IsTrue(ex is CFItemNotFound); } cfTest.Close(); //############## //Phase 7 cf = new CompoundFile("6_Streams_Shrinked.cfs", UpdateMode.Update, true, false); cf.RootStorage.GetStorage("MiniStorage").GetStream("miniSt2").SetData(bA); cf.Commit(); cf.Close(); //Test Phase 7 cf = new CompoundFile("6_Streams_Shrinked.cfs", UpdateMode.Update, true, false); d2 = cf.RootStorage.GetStorage("MiniStorage").GetStream("miniSt2").GetData(); Assert.IsNotNull(d2); Assert.IsTrue(d2.Length == bA.Length); cf.Close(); //############## cf = new CompoundFile("6_Streams_Shrinked.cfs", UpdateMode.ReadOnly, true, false); var myStream = cf.RootStorage.GetStream("C"); var data = myStream.GetData(); Console.WriteLine(data[0] + " : " + data[data.Length - 1]); myStream = cf.RootStorage.GetStream("B"); data = myStream.GetData(); Console.WriteLine(data[0] + " : " + data[data.Length - 1]); cf.Close(); sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); }
public void Test_COMPARE_DIR_ENTRY_NAME_BUG_FIX_ID_3487353() { var f = new CompoundFile("report_name_fix.xls", UpdateMode.Update, true, true); ICFStream cfs = f.RootStorage.AddStream("Poorbook"); cfs.AppendData(Helpers.GetBuffer(20)); f.Commit(); f.Close(); f = new CompoundFile("report_name_fix.xls", UpdateMode.Update, true, true); cfs = f.RootStorage.GetStream("Workbook"); Assert.IsTrue(cfs.Name == "Workbook"); f.RootStorage.Delete("PoorBook"); f.Commit(); f.Close(); }