public void Zlib_DeflateStream_InMemory() { String TextToCompress = UntilHeExtends; CompressionLevel[] levels = {CompressionLevel.Level0, CompressionLevel.Level1, CompressionLevel.Default, CompressionLevel.Level7, CompressionLevel.BestCompression}; // compress with various Alienlab.levels, and System.IO.Compression (default level) for (int k= 0; k < levels.Length + 1; k++) { MemoryStream ms= new MemoryStream(); Stream compressor = null; if (k == levels.Length) compressor = new System.IO.Compression.DeflateStream(ms, System.IO.Compression.CompressionMode.Compress, false); else { compressor = new Alienlab.Zlib.DeflateStream(ms, CompressionMode.Compress, levels[k], false); TestContext.WriteLine("using level: {0}", levels[k].ToString()); } TestContext.WriteLine("Text to compress is {0} bytes: '{1}'", TextToCompress.Length, TextToCompress); TestContext.WriteLine("using compressor: {0}", compressor.GetType().FullName); StreamWriter sw = new StreamWriter(compressor, Encoding.ASCII); sw.Write(TextToCompress); sw.Close(); var a = ms.ToArray(); TestContext.WriteLine("Compressed stream is {0} bytes long", a.Length); // de-compress with both Alienlab.and System.IO.Compression for (int j = 0; j < 2; j++) { var slow = new MySlowMemoryStream(a); // want to force EOF Stream decompressor = null; switch (j) { case 0: decompressor = new Alienlab.Zlib.DeflateStream(slow, CompressionMode.Decompress, false); break; case 1: decompressor = new System.IO.Compression.DeflateStream(slow, System.IO.Compression.CompressionMode.Decompress, false); break; } TestContext.WriteLine("using decompressor: {0}", decompressor.GetType().FullName); var sr = new StreamReader(decompressor, Encoding.ASCII); string DecompressedText = sr.ReadToEnd(); TestContext.WriteLine("Read {0} characters: '{1}'", DecompressedText.Length, DecompressedText); TestContext.WriteLine("\n"); Assert.AreEqual<String>(TextToCompress, DecompressedText); } } }