public void DecompressionTest() { Byte[] CompressedData = TestData.CompressedData; Byte[] uncompressed = XlCompressionAlgorithm.Decompress(CompressedData); bool success = Enumerable.SequenceEqual(uncompressed, TestData.UncompressedData); Assert.IsTrue(success, "Uncompressed byte sequence not equal to expected byte sequence"); }
public void CompressionTest() { Byte[] UncompressedData = TestData.UncompressedData; Byte[] CompressedData = XlCompressionAlgorithm.Compress(UncompressedData); // Careful: ComressedData is NOT necessarily equal to TestData.CompressedData // See comment in Data.BaseCase. // So best we just un-compress the compressed data again, and see if the result is equal to UncompressedData Byte[] UncompressedCompressedData = XlCompressionAlgorithm.Decompress(CompressedData); bool success = Enumerable.SequenceEqual(UncompressedData, UncompressedCompressedData); Assert.IsTrue(success, "Compressed byte sequence not equal to expected byte sequence"); }
public VbaStorage(CompoundFile VbaBinFile) { this.m_disposable = VbaBinFile; // _VBA_PROJECT stream var VBAStorage = VbaBinFile.RootStorage.GetStorage("VBA"); this._VBA_PROJECTStream = ReadVbaProjectStream(VBAStorage); // DIR STREAM ------------------------- CFStream thisWorkbookStream = VBAStorage.GetStream("dir"); Byte[] compressedData = thisWorkbookStream.GetData(); Byte[] uncompressed = XlCompressionAlgorithm.Decompress(compressedData); var uncompressedDataReader = new XlBinaryReader(ref uncompressed); this.DirStream = new DirStream(uncompressedDataReader); // MODULE STREAMS ---------------------------------------- this._ModuleStreams = new Dictionary <string, ModuleStream>(DirStream.ModulesRecord.Modules.Length); this.ModuleStreams = new ReadOnlyDictionary <string, ModuleStream>(this._ModuleStreams); foreach (var module in DirStream.ModulesRecord.Modules) { var streamName = module.StreamNameRecord.GetStreamNameAsString(); var stream = VBAStorage.GetStream(streamName).GetData(); var localreader = new XlBinaryReader(ref stream); var moduleStream = new ModuleStream(DirStream.InformationRecord, module, localreader); this._ModuleStreams.Add(streamName, moduleStream); } // PROJECT stream CFStream ProjectStorage = VbaBinFile.RootStorage.GetStream("PROJECT"); this.ProjectStream = ReadProjectStream(ProjectStorage, this.DirStream.InformationRecord.CodePageRecord); }