Exemplo n.º 1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ZlibOutputStream"/> class.
 /// </summary>
 /// <param name="output">The output stream.</param>
 /// <param name="level">The compression level for the data to compress.</param>
 public ZlibOutputStream(Stream output, ZlibCompressionLevel level)
 {
     this.BaseStream = output;
     this.InitBlock();
     _             = this.zStream.DeflateInit(level);
     this.compress = true;
 }
Exemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ZlibInputStream"/> class.
 /// </summary>
 /// <param name="input">The input stream.</param>
 /// <param name="level">The compression level for the data to compress.</param>
 public ZlibInputStream(Stream input, ZlibCompressionLevel level)
 {
     this.BaseStream = input;
     this.InitBlock();
     _                        = this.zStream.DeflateInit(level);
     this.compress            = true;
     this.zStream.INextIn     = this.chunkBuffer;
     this.zStream.NextInIndex = 0;
     this.zStream.AvailIn     = 0;
 }
        public void EncodeDecode(ZlibCompressionLevel compression)
        {
            const int count     = 2 * 4096 * 4;
            var       expected  = GetBuffer(count);
            var       reference = new byte[count];
            var       actual    = new byte[count];

            using (var compressed = new MemoryStream())
            {
                using (var deflate = new ZlibOutputStream(compressed, compression))
                {
                    deflate.Write(expected);
                }

                compressed.Position = 0;

                using (var refInflate = new InflaterInputStream(compressed))
                {
                    refInflate.IsStreamOwner = false;
                    refInflate.Read(reference);
                }

                compressed.Position = 0;

                using (var inflate = new ZlibInputStream(compressed))
                {
                    inflate.Read(actual);
                }
            }

            for (int i = 0; i < expected.Length; i++)
            {
                byte e = expected[i];
                byte r = reference[i];
                byte a = actual[i];

                Assert.Equal(e, r);
                Assert.Equal(e, a);
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// Sets the compression paramiters.
 /// </summary>
 /// <param name="level">The compression level to use.</param>
 /// <param name="strategy">The strategy to use for compression.</param>
 /// <returns>The zlib status state.</returns>
 public ZlibCompressionState DeflateParams(ZlibCompressionLevel level, ZlibCompressionStrategy strategy)
 => this.Dstate == null
     ? ZlibCompressionState.ZSTREAMERROR
     : this.Dstate.DeflateParams(this, level, strategy);
Exemplo n.º 5
0
 /// <summary>
 /// Initializes compression.
 /// </summary>
 /// <param name="level">The compression level to use.</param>
 /// <param name="bits">The window bits to use.</param>
 /// <returns>The zlib status state.</returns>
 public ZlibCompressionState DeflateInit(ZlibCompressionLevel level, int bits)
 {
     this.Dstate = new Deflate();
     return(this.Dstate.DeflateInit(this, level, bits));
 }
Exemplo n.º 6
0
 /// <summary>
 /// Initializes compression.
 /// </summary>
 /// <param name="level">The compression level to use.</param>
 /// <returns>The zlib status state.</returns>
 public ZlibCompressionState DeflateInit(ZlibCompressionLevel level)
 => this.DeflateInit(level, MAXWBITS);