private void TestCompression() { Compress cmp = new Compress(); MemoryStream cstm; /*string folder = @"C:\Tests\Compression Test"; cstm = cmp.CompressArchive(folder); cstm.Position = 0; cmp.DeCompressArchive(cstm, folder + @"\Out");*/ byte[] data = new CSPRng().GetBytes(1000); cstm = cmp.CompressStream(new MemoryStream(data)); cstm.Position = 0; MemoryStream cmp2 = cmp.DeCompressStream(cstm); cmp2.Position = 0; if (!Compare.AreEqual(data, cmp2.ToArray())) throw new Exception("CompressionTest: decompressed array is not equal!"); cmp.CompressionFormat = Compress.CompressionFormats.GZip; cstm = cmp.CompressStream(new MemoryStream(data)); cstm.Position = 0; cmp2 = cmp.DeCompressStream(cstm); cmp2.Position = 0; if (!Compare.AreEqual(data, cmp2.ToArray())) throw new Exception("CompressionTest: decompressed array is not equal!"); }
/// <summary> /// Initialize internal state /// </summary> /// /// <param name="DirectoryPath">The Source directory, or destination path</param> /// <param name="DataStream">The input or output stream</param> /// <param name="CompressionFormat">The type of compression to apply to the stream stream</param> /// <param name="DisposeStream">Dispose of streams when Dispose() on this class is called</param> /// /// <exception cref="CryptoProcessingException">Thrown if the directory path has no files, does not exist, or is not writeable</exception> public void Initialize(string DirectoryPath, Stream DataStream, Compress.CompressionFormats CompressionFormat = Compress.CompressionFormats.Deflate, bool DisposeStream = false) { _dirPath = DirectoryPath; _cmpEngine = new Compress(CompressionFormat); if (_isCompression) { if (!DirectoryTools.Exists(DirectoryPath)) throw new CryptoProcessingException("CompressionCipher:Initialize", "The directory does not exist!", new ArgumentException()); if (DirectoryTools.FileCount(DirectoryPath) < 1) throw new CryptoProcessingException("CompressionCipher:Initialize", "There are no files in this directory!", new ArgumentException()); MemoryStream inStream = _cmpEngine.CompressArchive(DirectoryPath); inStream.Seek(0, SeekOrigin.Begin); base.Initialize(inStream, DataStream, DisposeStream); } else { if (!DirectoryTools.Exists(DirectoryPath)) Directory.CreateDirectory(DirectoryPath); if (!DirectoryTools.IsWritable(DirectoryPath)) throw new CryptoProcessingException("CompressionCipher:Initialize", "Directory path is not writable! Check permissions.", new AccessViolationException()); MemoryStream outStream = new MemoryStream(); base.Initialize(DataStream, outStream, DisposeStream); } }