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); }
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); }
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)))); }