예제 #1
0
        public byte[] DeflateDecompressor_DecompressStream(CompressedSize input)
        {
            using var decompressed = new MemoryStream();
            using var data         = new MemoryStream(input.Data);
            DeflateDecompressor.Decompress(data, decompressed);

            return(decompressed.ToArray());
        }
예제 #2
0
        public void Decompress_Grammar()
        {
            var corpusItem = new CorpusInfo("grammar.lsp");

            var decompressed = DeflateDecompressor.Decompress(corpusItem.Compressed);

            CollectionAssert.AreEqual(corpusItem.Raw, decompressed);
        }
예제 #3
0
        public void Decompress_Kennedy()
        {
            var corpusItem = new CorpusInfo("kennedy.xls");

            var decompressed = DeflateDecompressor.Decompress(corpusItem.Compressed);

            CollectionAssert.AreEqual(corpusItem.Raw, decompressed);
        }
예제 #4
0
        public void Decompress_Lcet10()
        {
            var corpusItem = new CorpusInfo("lcet10.txt");

            var decompressed = DeflateDecompressor.Decompress(corpusItem.Compressed);

            CollectionAssert.AreEqual(corpusItem.Raw, decompressed);
        }
예제 #5
0
        public byte[] Burnside_Stream(CorpusInfo input)
        {
            using var decompressed = new MemoryStream();
            using var data         = new MemoryStream(input.Data);
            DeflateDecompressor.Decompress(data, decompressed);

            return(decompressed.ToArray());
        }
예제 #6
0
        public void Decompress_Ptt5()
        {
            var corpusItem = new CorpusInfo("ptt5");

            var decompressed = DeflateDecompressor.Decompress(corpusItem.Compressed);

            CollectionAssert.AreEqual(corpusItem.Raw, decompressed);
        }
        public void DecompressString()
        {
            var data       = "thisissomestringdatathatwillbeusedtotestthedecompressionofthealgorithm";
            var compressed = Compress(data);

            var decompressed = DeflateDecompressor.Decompress(compressed);

            Assert.AreEqual(data, Encoding.UTF8.GetString(decompressed));
        }
        public void StreamDecompress_Random10MiB()
        {
            using var outStream = new MemoryStream();
            using var inStream  = new MemoryStream(Compressed_10MiB);
            DeflateDecompressor.Decompress(inStream, outStream);

            var decompressed = outStream.ToArray();

            CollectionAssert.AreEqual(UnCompressed_10MiB, decompressed);
        }
예제 #9
0
        public void DeflateCompressorStringExtesionWorks()
        {
            var compressor = new DeflateCompressor();
            var compressed = compressor.Compress("test");

            Assert.IsNotNull(compressed);
            var decompressor = new DeflateDecompressor();
            var decompressed = decompressor.Decompress(compressed);

            Assert.IsNotNull(decompressed);
            Assert.AreEqual("test", Encoding.UTF8.GetString(decompressed));
        }
예제 #10
0
        public void StreamDecompress_Xargs()
        {
            var corpusItem = new CorpusInfo("xargs.1");

            using var outStream = new MemoryStream();
            using var inStream  = new MemoryStream(corpusItem.Compressed);
            DeflateDecompressor.Decompress(inStream, outStream);

            var decompressed = outStream.ToArray();

            CollectionAssert.AreEqual(corpusItem.Raw, decompressed);
        }
예제 #11
0
        public void DeflateCompressorStringExtesionWorks()
        {
            var compressor = new DeflateCompressor();
            var compressed = compressor.Compress("test");

            compressed.Should().NotBeNull();
            var decompressor = new DeflateDecompressor();
            var decompressed = decompressor.Decompress(compressed);

            decompressed.Should().NotBeNull();
            Encoding.UTF8.GetString(decompressed).Should().Be("test");
        }
예제 #12
0
        public void StreamDecompress_String()
        {
            var data       = "thisissomestringdatathatwillbeusedtotestthedecompressionofthealgorithm";
            var compressed = Compress(data);

            using var outStream = new MemoryStream();
            using var inStream  = new MemoryStream(compressed);
            DeflateDecompressor.Decompress(inStream, outStream);

            var decompressed = outStream.ToArray();

            Assert.AreEqual(data, Encoding.UTF8.GetString(decompressed));
        }
예제 #13
0
        public static void Decompress(Stream input, Stream output)
        {
            var buffer = new byte[10];

            input.Read(buffer, 0, 10);
            if (buffer[0] != 0x1F || buffer[1] != 0x8B)
            {
                throw new FormatException("Invalid gzip header");
            }
            if (buffer[2] != 8)
            {
                throw new NotSupportedException("Compression method is not deflate");
            }
            int FLG = buffer[3];

            if (FLG != FNAME && FLG != 0)
            {
                throw new NotSupportedException("Only FNAME flag is supported");
            }
            // 4-7: MTIME
            int XFL = buffer[8];

            if (XFL == 2)
            {
                Console.Out.WriteLine("Extra flag: best compression algorithm (XFL = 2)");
            }
            if (XFL == 4)
            {
                Console.Out.WriteLine("Extra flag: fastest compression algorithm (XFL = 4)");
            }
            // 9: OS
            if ((FLG & FNAME) != 0)
            {
                buffer = new byte[256];
                var offset = 0;
                do
                {
                    input.Read(buffer, offset, 1);
                    offset++;
                } while (buffer[offset - 1] != '\0');
                var name = System.Text.Encoding.ASCII.GetString(buffer, 0, offset);
                Console.WriteLine("filename=" + name);
            }
            DeflateDecompressor.Decompress(input, output);
        }
예제 #14
0
        public void DeflateICompressorIDecompressorWorks()
        {
            var compressor = new DeflateCompressor();
            var data       = Encoding.UTF8.GetBytes("test");

            byte[] compressed;
            using (var inputStream = new MemoryStream(data))
            {
                compressed = compressor.Compress(inputStream);
            }
            Console.WriteLine(compressed.Length);
            compressed.Should().NotBeNull();
            var decompressor = new DeflateDecompressor();

            byte[] decompressed;
            using (var inputStream = new MemoryStream(compressed))
            {
                decompressed = decompressor.Decompress(inputStream);
            }
            decompressed.Should().NotBeNull();
            Encoding.UTF8.GetString(decompressed).Should().Be("test");
        }
예제 #15
0
        public void DeflateICompressorIDecompressorWorks()
        {
            var compressor = new DeflateCompressor();
            var data       = Encoding.UTF8.GetBytes("test");

            byte[] compressed;
            using (var inputStream = new MemoryStream(data))
            {
                compressed = compressor.Compress(inputStream);
            }
            Console.WriteLine(compressed.Length);
            Assert.IsNotNull(compressed);
            var decompressor = new DeflateDecompressor();

            byte[] decompressed;
            using (var inputStream = new MemoryStream(compressed))
            {
                decompressed = decompressor.Decompress(inputStream);
            }
            Assert.IsNotNull(decompressed);
            Assert.AreEqual("test", Encoding.UTF8.GetString(decompressed));
        }
예제 #16
0
        public void Decompress_Random50MiB()
        {
            var decompressed = DeflateDecompressor.Decompress(Compressed_50MiB);

            CollectionAssert.AreEqual(UnCompressed_50MiB, decompressed);
        }
예제 #17
0
 public byte[] Burnside_ByteArray(CorpusInfo input)
 {
     return(DeflateDecompressor.Decompress(input.Data));
 }
예제 #18
0
 public byte[] DeflateDecompressor_Decompress(CompressedSize input)
 {
     return(DeflateDecompressor.Decompress(input.Data));
 }