49 lines
1.5 KiB
C#
49 lines
1.5 KiB
C#
using fxl.codes.kisekae.data.Archives;
|
|
using fxl.codes.kisekae.data.Archives.Algorithms;
|
|
|
|
namespace fxl.codes.kisekae.data.test;
|
|
|
|
public class LZWTests
|
|
{
|
|
private readonly byte[] _encoded = new[] { 65, 66, 66, 256, 257, 259, 65 }.SelectMany(BitConverter.GetBytes).ToArray();
|
|
private readonly byte[] _unencoded = "ABBABBBABBA"u8.ToArray();
|
|
private LZW _lzw;
|
|
|
|
[SetUp]
|
|
public void Setup()
|
|
{
|
|
_lzw = new LZW();
|
|
}
|
|
|
|
[Test]
|
|
public void TestEncodingAndDecodingBasic()
|
|
{
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(_lzw.Encode(_unencoded), Is.EqualTo(_encoded), "Encoding failed");
|
|
Assert.That(_lzw.Decode(_encoded), Is.EqualTo(_unencoded), "Decoding failed");
|
|
});
|
|
}
|
|
|
|
[Test]
|
|
public void TestDecompressLzh()
|
|
{
|
|
var assembly = typeof(LZWTests).Assembly;
|
|
foreach (var resource in assembly.GetManifestResourceNames())
|
|
{
|
|
using var stream = assembly.GetManifestResourceStream(resource);
|
|
if (stream == null) continue;
|
|
|
|
var files = LhCodecService.GetFiles(in stream);
|
|
foreach (var file in files)
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(file.CompressedFile, Is.Not.Null);
|
|
Assert.That(file.CompressedFile, Is.Not.Empty);
|
|
|
|
var decompressed = _lzw.Decode(file.CompressedFile);
|
|
Assert.That(decompressed, Is.Not.Null);
|
|
});
|
|
}
|
|
}
|
|
} |