public void OutputToSmall_ReturnsError() { using (XZDecompressor decompressor = new XZDecompressor()) { Span <byte> source = File.ReadAllBytes("Lzma/hello.xz"); Span <byte> destination = Array.Empty <byte>(); Assert.Equal(OperationStatus.NeedMoreData, decompressor.Decompress(source, destination, out int bytesConsumed, out int bytesWritten)); Assert.Equal(0x19, bytesConsumed); Assert.Equal(0, bytesWritten); source = source.Slice(bytesConsumed); Assert.Equal(OperationStatus.NeedMoreData, decompressor.Decompress(source, destination, out bytesConsumed, out bytesWritten)); Assert.Equal(2, bytesConsumed); Assert.Equal(0, bytesWritten); source = source.Slice(bytesConsumed); Assert.Equal(OperationStatus.NeedMoreData, decompressor.Decompress(source, destination, out bytesConsumed, out bytesWritten)); Assert.Equal(0, bytesConsumed); Assert.Equal(0, bytesWritten); destination = new byte[0x100]; Assert.Equal(OperationStatus.NeedMoreData, decompressor.Decompress(source, destination, out bytesConsumed, out bytesWritten)); Assert.Equal(source.Length, bytesConsumed); Assert.Equal(0xe, bytesWritten); source = source.Slice(bytesConsumed); Assert.Equal(OperationStatus.Done, decompressor.Decompress(source, destination, out bytesConsumed, out bytesWritten)); Assert.Equal(0, bytesConsumed); Assert.Equal(0, bytesWritten); } }
public void Decompress_ThrowsWhenDisposed() { XZDecompressor decompressor = new XZDecompressor(); decompressor.Dispose(); Assert.Throws <ObjectDisposedException>(() => decompressor.Decompress(Array.Empty <byte>(), Array.Empty <byte>(), out _, out _)); }
public void Dispose_Idempotent() { XZDecompressor decompressor = new XZDecompressor(); decompressor.Dispose(); // .Dispose() can be invoked twice without errors decompressor.Dispose(); }
public void Read_InvalidFormat_ReturnsError(string path, LzmaFormat format) { byte[] data = File.ReadAllBytes(path); byte[] output = new byte[100]; using (XZDecompressor decompressor = new XZDecompressor(format)) { Assert.Equal(OperationStatus.InvalidData, decompressor.Decompress(data, output, out int bytesConsumed, out int bytesWritten)); } }
public void InvalidData_ReturnsError() { using (XZDecompressor decompressor = new XZDecompressor()) { Span <byte> source = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }; Span <byte> destination = new byte[0x10]; Assert.Equal(OperationStatus.InvalidData, decompressor.Decompress(source, destination, out int bytesConsumed, out int bytesWritten)); Assert.Equal(0x4, bytesConsumed); Assert.Equal(0, bytesWritten); } }
public void NoData_ReturnsNeedMoreData() { using (XZDecompressor decompressor = new XZDecompressor()) { byte[] source = Array.Empty <byte>(); byte[] destination = Array.Empty <byte>(); Assert.Equal(OperationStatus.NeedMoreData, decompressor.Decompress(source, destination, out int bytesConsumed, out int bytesWritten)); Assert.Equal(0, bytesConsumed); Assert.Equal(0, bytesWritten); } }
public unsafe void Decode_Works(string path) { using (XZDecompressor decompressor = new XZDecompressor()) { Span <byte> source = File.ReadAllBytes(path); Span <byte> destination = new byte[100]; Assert.Equal(OperationStatus.NeedMoreData, decompressor.Decompress(source, destination, out int bytesConsumed, out int bytesWritten)); Assert.Equal(source.Length, bytesConsumed); Assert.Equal(0xe, bytesWritten); Assert.Equal(OperationStatus.Done, decompressor.Decompress(Array.Empty <byte>(), destination, out bytesConsumed, out bytesWritten)); Assert.Equal(0, bytesConsumed); Assert.Equal(0, bytesWritten); } }