public void Test_RESIZE_MINISTREAM_SECTOR_RECYCLE() { CompoundFile cf = null; byte[] b = Helpers.GetBuffer(1024 * 2); cf = new CompoundFile(CFSVersion.Ver_3, CFSConfiguration.Default); cf.RootStorage.AddStream("MiniStream").SetData(b); cf.Save("$Test_RESIZE_MINISTREAM_RECYCLE.cfs"); cf.Close(); cf = new CompoundFile("$Test_RESIZE_MINISTREAM_RECYCLE.cfs", CFSUpdateMode.Update, CFSConfiguration.SectorRecycle | CFSConfiguration.EraseFreeSectors); CFStream item = cf.RootStorage.GetStream("MiniStream"); item.Resize(item.Size / 2); cf.Commit(); cf.Close(); cf = new CompoundFile("$Test_RESIZE_MINISTREAM_RECYCLE.cfs", CFSUpdateMode.ReadOnly, CFSConfiguration.SectorRecycle | CFSConfiguration.EraseFreeSectors); CFStream st = cf.RootStorage.AddStream("ANewStream"); st.SetData(Helpers.GetBuffer(400)); cf.Save("$Test_RESIZE_MINISTREAM_RECYCLE2.cfs"); cf.Close(); Assert.IsTrue( new FileInfo("$Test_RESIZE_MINISTREAM_RECYCLE.cfs").Length == new FileInfo("$Test_RESIZE_MINISTREAM_RECYCLE2.cfs").Length); }
public void Test_RESIZE_MINISTREAM_NO_TRANSITION() { CompoundFile cf = null; byte[] b = Helpers.GetBuffer(1024 * 2); cf = new CompoundFile(CFSVersion.Ver_3, CFSConfiguration.Default); cf.RootStorage.AddStream("MiniStream").SetData(b); cf.Save("$Test_RESIZE_MINISTREAM.cfs"); cf.Close(); cf = new CompoundFile("$Test_RESIZE_MINISTREAM.cfs", CFSUpdateMode.Update, CFSConfiguration.SectorRecycle | CFSConfiguration.EraseFreeSectors); CFStream item = cf.RootStorage.GetStream("MiniStream"); item.Resize(item.Size / 2); cf.Commit(); cf.Close(); cf = new CompoundFile("$Test_RESIZE_MINISTREAM.cfs", CFSUpdateMode.ReadOnly, CFSConfiguration.Default); CFStream st = cf.RootStorage.GetStream("MiniStream"); Assert.IsNotNull(st); Assert.IsTrue(st.Size == 1024); byte[] buffer = new byte[1024]; st.Read(buffer, 0, 1024); Assert.IsTrue(Helpers.CompareBuffer(b, buffer, 1024)); cf.Close(); }
public void Test_RESIZE_STREAM_TRANSITION_TO_MINI() { String FILE_NAME = "$Test_RESIZE_STREAM_TRANSITION_TO_MINI.cfs"; CompoundFile cf = null; byte[] b = Helpers.GetBuffer(1024 * 1024 * 2); //2MB buffer byte[] b100 = new byte[100]; for (int i = 0; i < 100; i++) { b100[i] = b[i]; } cf = new CompoundFile(CFSVersion.Ver_3, CFSConfiguration.Default); cf.RootStorage.AddStream("AStream").SetData(b); cf.Save(FILE_NAME); cf.Close(); cf = new CompoundFile(FILE_NAME, CFSUpdateMode.Update, CFSConfiguration.SectorRecycle); CFStream item = cf.RootStorage.GetStream("AStream"); item.Resize(100); cf.Commit(); cf.Close(); cf = new CompoundFile(FILE_NAME, CFSUpdateMode.ReadOnly, CFSConfiguration.Default); Assert.IsTrue(Helpers.CompareBuffer(cf.RootStorage.GetStream("AStream").GetData(), b100)); cf.Close(); if (File.Exists(FILE_NAME)) { File.Delete(FILE_NAME); } }
public void Test_RESIZE_STREAM_TRANSITION_TO_NORMAL() { CompoundFile cf = null; byte[] b = Helpers.GetBuffer(1024 * 2, 0xAA); //2MB buffer cf = new CompoundFile(CFSVersion.Ver_3, CFSConfiguration.Default); cf.RootStorage.AddStream("AStream").SetData(b); cf.Save("$Test_RESIZE_STREAM_TRANSITION_TO_NORMAL.cfs"); cf.Save("$Test_RESIZE_STREAM_TRANSITION_TO_NORMAL2.cfs"); cf.Close(); cf = new CompoundFile("$Test_RESIZE_STREAM_TRANSITION_TO_NORMAL.cfs", CFSUpdateMode.Update, CFSConfiguration.SectorRecycle | CFSConfiguration.EraseFreeSectors); CFStream item = cf.RootStorage.GetStream("AStream"); item.Resize(5000); cf.Commit(); cf.Close(); cf = new CompoundFile("$Test_RESIZE_STREAM_TRANSITION_TO_NORMAL.cfs", CFSUpdateMode.ReadOnly, CFSConfiguration.Default); item = cf.RootStorage.GetStream("AStream"); Assert.IsTrue(item != null); Assert.IsTrue(item.Size == 5000); byte[] buffer = new byte[2048]; item.Read(buffer, 0, 2048); Assert.IsTrue(Helpers.CompareBuffer(b, buffer)); }
public void Test_RESIZE_STREAM_NO_TRANSITION() { CompoundFile cf = null; //CFStream st = null; byte[] b = Helpers.GetBuffer(1024 * 1024 * 2); //2MB buffer cf = new CompoundFile(CFSVersion.Ver_3, CFSConfiguration.Default); cf.RootStorage.AddStream("AStream").SetData(b); cf.Save("$Test_RESIZE_STREAM.cfs"); cf.Close(); cf = new CompoundFile("$Test_RESIZE_STREAM.cfs", CFSUpdateMode.Update, CFSConfiguration.SectorRecycle); CFStream item = cf.RootStorage.GetStream("AStream"); item.Resize(item.Size / 2); //cf.RootStorage.AddStream("BStream").SetData(b); cf.Commit(true); cf.Close(); }