public void deflateWithSyncFlush()
        {
            String original = "Yes, yes, yes. That's why we're taking extreme precautions.";
            var    data     = new EasyBuffer();

            data.WriteUtf8(original);
            var          sink         = new EasyBuffer();
            DeflaterSink deflaterSink = new DeflaterSink(sink, new Deflater());

            deflaterSink.Write(data, data.Size);
            deflaterSink.Flush();
            var inflated = inflate(sink);

            Assert.AreEqual(original, inflated.ReadUtf8());
        }
        public void deflatePoorlyCompressed()
        {
            ByteString original = randomBytes(1024 * 1024);
            var        data     = new EasyBuffer();

            data.Write(original);
            var          sink         = new EasyBuffer();
            DeflaterSink deflaterSink = new DeflaterSink(sink, new Deflater());

            deflaterSink.Write(data, data.Size);
            deflaterSink.Flush();
            deflaterSink.Dispose();
            var inflated = inflate(sink);

            Assert.AreEqual(original, inflated.ReadByteString());
        }
        public void deflateWellCompressed()
        {
            String original = repeat('a', 1024 * 1024);
            var    data     = new EasyBuffer();

            data.WriteUtf8(original);
            var          sink         = new EasyBuffer();
            DeflaterSink deflaterSink = new DeflaterSink(sink, new Deflater());

            deflaterSink.Write(data, data.Size);
            deflaterSink.Flush();
            deflaterSink.Dispose();
            var inflated = inflate(sink);

            Assert.AreEqual(original, inflated.ReadUtf8());
        }
        public void deflateWithClose()
        {
            var    data     = new EasyBuffer();
            String original = "They're moving in herds. They do move in herds.";

            data.WriteUtf8(original);
            var          sink         = new EasyBuffer();
            DeflaterSink deflaterSink = new DeflaterSink(sink, new Deflater());

            deflaterSink.Write(data, data.Size);
            deflaterSink.Flush();
            deflaterSink.Dispose();
            var inflated = inflate(sink);

            Assert.AreEqual(original, inflated.ReadUtf8());
        }
        public void multipleSegmentsWithoutCompression()
        {
            var      buffer   = new EasyBuffer();
            Deflater deflater = new Deflater();
            //deflater.SetLevel(Deflater.NO_COMPRESSION);//SharpZipLib 会出错~
            DeflaterSink deflaterSink = new DeflaterSink(buffer, deflater);
            int          byteCount    = Segment.SIZE * 4;
            var          data         = new EasyBuffer().WriteUtf8(repeat('a', byteCount));

            deflaterSink.Write(data, data.Size);
            deflaterSink.Flush();
            deflaterSink.Dispose();
            var test1 = repeat('a', byteCount);
            var test2 = inflate(buffer).ReadUtf8(byteCount);

            Assert.AreEqual(test1, test2);
        }
        public void deflateIntoNonemptySink()
        {
            String original = "They're moving in herds. They do move in herds.";

            // Exercise all possible offsets for the outgoing segment.
            for (int i = 0; i < Segment.SIZE; i++)
            {
                var data = new EasyBuffer().WriteUtf8(original);
                var sink = new EasyBuffer().WriteUtf8(repeat('a', i));

                DeflaterSink deflaterSink = new DeflaterSink(sink, new Deflater());
                deflaterSink.Write(data, data.Size);
                deflaterSink.Flush();
                deflaterSink.Dispose();

                sink.Skip(i);
                var inflated = inflate(sink);
                Assert.AreEqual(original, inflated.ReadUtf8());
            }
        }