public void deflate() { Assert.Throws <ArgumentNullException>(() => StreamExtensions.Deflate(null, CompressionMode.Compress)); Assert.Throws <ArgumentNullException>(() => StreamExtensions.Deflate <Stream>(null, Enumerable.Empty <byte>().ToArray())); Assert.Throws <ArgumentNullException>(() => Stream.Null.Deflate(null)); Assert.Throws <ArgumentNullException>(() => StreamExtensions.Deflate(null)); var bytes = Guid.NewGuid().ToByteArray(); var stream = new MemoryStream(); var compressed = new byte[] { }; using (var deflate = stream.Deflate(CompressionMode.Compress)) { Assert.True(ReferenceEquals(deflate.BaseStream, stream)); Assert.Throws <InvalidOperationException>(() => deflate.ReadByte()); deflate.Write(bytes); } compressed = stream.ToArray(); Assert.False(compressed.SequenceEqual(bytes)); Assert.Throws <ObjectDisposedException>(() => stream.ReadByte()); stream = new MemoryStream(compressed); var decompressed = new byte[] { }; using (var deflate = stream.Deflate(CompressionMode.Decompress)) { Assert.True(ReferenceEquals(deflate.BaseStream, stream)); decompressed = deflate.Bytes(); } Assert.True(decompressed.SequenceEqual(bytes)); Assert.Throws <ObjectDisposedException>(() => stream.ReadByte()); using (var s = new MemoryStream()) { Assert.True(ReferenceEquals(s.Deflate(bytes), s)); Assert.True(s.ToArray().SequenceEqual(compressed)); Assert.Equal(0, s.Bytes().Length); Assert.True(s.CanRead); Assert.True(s.CanWrite); } using (var s = new MemoryStream(compressed)) { Assert.True(s.Deflate().SequenceEqual(bytes)); Assert.Equal(0, s.Bytes().Length); Assert.True(s.CanRead); Assert.True(s.CanWrite); } Assert.True(new MemoryStream().Deflate(bytes).Rewind().Deflate().SequenceEqual(bytes)); }