Files
sharpcompress/tests/SharpCompress.Test/Xz/XZStreamTests.cs

70 lines
2.0 KiB
C#
Raw Permalink Normal View History

2023-11-15 11:05:30 +00:00
using System.IO;
2026-06-15 09:59:48 +01:00
using SharpCompress.Common;
2023-11-15 11:05:30 +00:00
using SharpCompress.Compressors.Xz;
using SharpCompress.IO;
using SharpCompress.Test.Mocks;
using Xunit;
2022-12-20 15:20:49 +00:00
namespace SharpCompress.Test.Xz;
2024-03-14 08:53:08 +00:00
public class XzStreamTests : XzTestsBase
{
2022-12-20 15:20:49 +00:00
[Fact]
public void CanReadEmptyStream()
{
2024-03-14 08:38:12 +00:00
var xz = new XZStream(CompressedEmptyStream);
2024-03-14 08:37:17 +00:00
using var sr = new StreamReader(xz);
2024-03-14 08:38:12 +00:00
var uncompressed = sr.ReadToEnd();
2024-03-14 08:37:17 +00:00
Assert.Equal(OriginalEmpty, uncompressed);
2022-12-20 15:20:49 +00:00
}
2022-12-20 15:20:49 +00:00
[Fact]
public void CanReadStream()
{
2024-03-14 08:38:12 +00:00
var xz = new XZStream(CompressedStream);
2024-03-14 08:37:17 +00:00
using var sr = new StreamReader(xz);
2024-03-14 08:38:12 +00:00
var uncompressed = sr.ReadToEnd();
2024-03-14 08:37:17 +00:00
Assert.Equal(Original, uncompressed);
2022-12-20 15:20:49 +00:00
}
2022-12-20 15:20:49 +00:00
[Fact]
public void CanReadIndexedStream()
{
2024-03-14 08:38:12 +00:00
var xz = new XZStream(CompressedIndexedStream);
2024-03-14 08:37:17 +00:00
using var sr = new StreamReader(xz);
2024-03-14 08:38:12 +00:00
var uncompressed = sr.ReadToEnd();
2024-03-14 08:37:17 +00:00
Assert.Equal(OriginalIndexed, uncompressed);
}
[Fact]
public void CanReadNonSeekableStream()
{
var nonSeekable = new ForwardOnlyStream(new MemoryStream(Compressed));
var xz = new XZStream(SharpCompressStream.Create(nonSeekable));
using var sr = new StreamReader(xz);
var uncompressed = sr.ReadToEnd();
Assert.Equal(Original, uncompressed);
}
[Fact]
public void CanReadNonSeekableEmptyStream()
{
var nonSeekable = new ForwardOnlyStream(new MemoryStream(CompressedEmpty));
var xz = new XZStream(SharpCompressStream.Create(nonSeekable));
using var sr = new StreamReader(xz);
var uncompressed = sr.ReadToEnd();
Assert.Equal(OriginalEmpty, uncompressed);
}
2026-06-15 09:59:48 +01:00
[Fact]
public void Throws_On_Corrupt_Block_Check()
{
var compressed = (byte[])Compressed.Clone();
compressed[compressed.Length - 29] ^= 1;
using var xz = new XZStream(new MemoryStream(compressed));
using var output = new MemoryStream();
Assert.Throws<InvalidFormatException>(() => xz.CopyTo(output));
}
}