public void Test_DIFAT_CHECK() { CompoundFile f = null; try { f = new CompoundFile(); ICFStream st = f.RootStorage.AddStream("LargeStream"); st.AppendData(Helpers.GetBuffer(20000000, 0x0A)); //Forcing creation of two DIFAT sectors byte[] b1 = Helpers.GetBuffer(3, 0x0B); st.AppendData(b1); //Forcing creation of two DIFAT sectors f.Save("$OpenMcdf$LargeFile.cfs"); f.Close(); int cnt = 3; f = new CompoundFile("$OpenMcdf$LargeFile.cfs"); byte[] b2 = f.RootStorage.GetStream("LargeStream").GetData(20000000, ref cnt); f.Close(); Assert.IsTrue(Helpers.CompareBuffer(b1, b2)); } finally { if (f != null) { f.Close(); } if (File.Exists("$OpenMcdf$LargeFile.cfs")) { File.Delete("$OpenMcdf$LargeFile.cfs"); } } }
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_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_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(); }
public void Test_APPEND_DATA_TO_STREAM() { MemoryStream ms = new MemoryStream(); byte[] b = new byte[] { 0x0, 0x1, 0x2, 0x3 }; byte[] b2 = new byte[] { 0x4, 0x5, 0x6, 0x7 }; CompoundFile cf = new CompoundFile(); ICFStream st = cf.RootStorage.AddStream("MyLargeStream"); st.SetData(b); st.AppendData(b2); cf.Save(ms); cf.Close(); byte[] cmp = new byte[] { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7 }; cf = new CompoundFile(ms); byte[] data = cf.RootStorage.GetStream("MyLargeStream").GetData(); Assert.IsTrue(Helpers.CompareBuffer(cmp, data)); }