public void Zlib_DisposedException_ZlibStream() { string TextToCompress = IhaveaDream; MemoryStream ms1= new MemoryStream(); Stream compressor= new ZlibStream(ms1, CompressionMode.Compress, false); 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(); // implicitly closes compressor sw.Close(); // implicitly closes compressor, again compressor.Close(); // explicitly closes compressor var a = ms1.ToArray(); TestContext.WriteLine("Compressed stream is {0} bytes long", a.Length); var ms2 = new MemoryStream(a); Stream decompressor = new ZlibStream(ms2, CompressionMode.Decompress, false); TestContext.WriteLine("using decompressor: {0}", decompressor.GetType().FullName); var sr = new StreamReader(decompressor, Encoding.ASCII); string DecompressedText = sr.ReadToEnd(); sr.Close(); TestContext.WriteLine("decompressor.CanRead = {0}",decompressor.CanRead); TestContext.WriteLine("Read {0} characters: '{1}'", DecompressedText.Length, DecompressedText); TestContext.WriteLine("\n"); Assert.AreEqual<String>(TextToCompress, DecompressedText); }
public void Zlib_CloseTwice() { string TextToCompress = LetMeDoItNow; for (int i = 0; i < 3; i++) { MemoryStream ms1= new MemoryStream(); Stream compressor = null; switch (i) { case 0: compressor= new DeflateStream(ms1, CompressionMode.Compress, CompressionLevel.BestCompression, false); break; case 1: compressor = new GZipStream(ms1, CompressionMode.Compress, false); break; case 2: compressor = new ZlibStream(ms1, CompressionMode.Compress, false); break; } 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(); // implicitly closes compressor sw.Close();// implicitly closes compressor, again compressor.Close(); // explicitly closes compressor var a = ms1.ToArray(); TestContext.WriteLine("Compressed stream is {0} bytes long", a.Length); var ms2 = new MemoryStream(a); Stream decompressor = null; switch (i) { case 0: decompressor = new DeflateStream(ms2, CompressionMode.Decompress, false); break; case 1: decompressor = new GZipStream(ms2, CompressionMode.Decompress, false); break; case 2: decompressor = new ZlibStream(ms2, CompressionMode.Decompress, false); break; } TestContext.WriteLine("using decompressor: {0}", decompressor.GetType().FullName); var sr = new StreamReader(decompressor, Encoding.ASCII); string DecompressedText = sr.ReadToEnd(); // verify that multiple calls to Close() do not throw sr.Close(); sr.Close(); decompressor.Close(); TestContext.WriteLine("Read {0} characters: '{1}'", DecompressedText.Length, DecompressedText); TestContext.WriteLine("\n"); Assert.AreEqual<String>(TextToCompress, DecompressedText); } }