コード例 #1
0
        public void Decompress()
        {
            object          instance   = CreateInstance <NtfsFileSystem>("DiscUtils.Ntfs.LZNT1");
            BlockCompressor compressor = (BlockCompressor)instance;

            byte[] compressed = NativeCompress(_uncompressedData, 0, _uncompressedData.Length, 4096);

            // Double-check, make sure native code round-trips
            Assert.Equal(_uncompressedData, NativeDecompress(compressed, 0, compressed.Length));

            byte[] decompressed    = new byte[_uncompressedData.Length];
            int    numDecompressed = compressor.Decompress(compressed, 0, compressed.Length, decompressed, 0);

            Assert.Equal(numDecompressed, _uncompressedData.Length);

            Assert.Equal(_uncompressedData, decompressed);
        }
コード例 #2
0
        public void DecompressMidDestBuffer()
        {
            object          instance   = typeof(NtfsFileSystem).Assembly.CreateInstance("DiscUtils.Ntfs.LZNT1");
            BlockCompressor compressor = (BlockCompressor)instance;

            byte[] compressed = NativeCompress(_uncompressedData, 0, _uncompressedData.Length, 4096);

            // Double-check, make sure native code round-trips
            Assert.AreEqual(_uncompressedData, NativeDecompress(compressed, 0, compressed.Length));

            byte[] outData         = new byte[128 * 1024];
            int    numDecompressed = compressor.Decompress(compressed, 0, compressed.Length, outData, 32 * 1024);

            Assert.AreEqual(numDecompressed, _uncompressedData.Length);

            byte[] decompressed = new byte[_uncompressedData.Length];
            Array.Copy(outData, 32 * 1024, decompressed, 0, _uncompressedData.Length);
            Assert.AreEqual(_uncompressedData, decompressed);
        }
コード例 #3
0
        public void RunsDecompressionForEachBlock()
        {
            const int byteCount = 8;

            var format = new Mock <IBlockCompressionFormat>();

            format.Setup(f => f.BlockSize).Returns(byteCount);
            format.Setup(f => f.Decompress(It.IsAny <byte[]>())).Returns(new Color[BlockFormat.TexelCount]);

            var compressor = new BlockCompressor();

            compressor.Decompress(CreateDDSImageMock(format.Object));

            format.Verify(f => f.Decompress(It.IsAny <byte[]>()), Times.Exactly(6));
            format.Verify(f => f.Decompress(It.Is <byte[]>(bytes => bytes.All(b => b == 1))));
            format.Verify(f => f.Decompress(It.Is <byte[]>(bytes => bytes.All(b => b == 2))));
            format.Verify(f => f.Decompress(It.Is <byte[]>(bytes => bytes.All(b => b == 3))));
            format.Verify(f => f.Decompress(It.Is <byte[]>(bytes => bytes.All(b => b == 4))));
            format.Verify(f => f.Decompress(It.Is <byte[]>(bytes => bytes.All(b => b == 5))));
            format.Verify(f => f.Decompress(It.Is <byte[]>(bytes => bytes.All(b => b == 6))));
        }