Add unit tests for CRC32 impls
This commit is contained in:
parent
7c6f78b461
commit
484a1d8fa4
|
@ -0,0 +1,49 @@
|
|||
using BizHawk.Common;
|
||||
using BizHawk.Emulation.DiscSystem;
|
||||
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
namespace BizHawk.Tests.Common.checksums
|
||||
{
|
||||
[TestClass]
|
||||
public sealed class CRC32Tests
|
||||
{
|
||||
private const uint EXPECTED = 0xDA3BA10AU;
|
||||
|
||||
private const uint EXPECTED_COMBINED = 0xED182BB0U;
|
||||
|
||||
private const uint EXPECTED_EXTRA = 0x29058C73U;
|
||||
|
||||
[TestMethod]
|
||||
public void TestCRC32Stability()
|
||||
{
|
||||
static byte[] InitialiseArray()
|
||||
{
|
||||
var a = new byte[0x100];
|
||||
for (var i = 0; i < 0x100; i++) a[i] = (byte) ~i;
|
||||
return a;
|
||||
}
|
||||
static byte[] InitialiseArrayExtra()
|
||||
{
|
||||
var a = new byte[0x100];
|
||||
for (var i = 0; i < 0x100; i++) a[i] = (byte) i;
|
||||
return a;
|
||||
}
|
||||
|
||||
var data = InitialiseArray();
|
||||
Assert.AreEqual(EXPECTED, (uint) CRC32.Calculate(data));
|
||||
|
||||
data = InitialiseArray();
|
||||
DiscHasher.SpecialCRC32 crc32 = new();
|
||||
crc32.Add(data, 0, data.Length);
|
||||
Assert.AreEqual(EXPECTED, crc32.Result);
|
||||
|
||||
var dataExtra = InitialiseArrayExtra();
|
||||
DiscHasher.SpecialCRC32 crc32Extra = new();
|
||||
crc32Extra.Add(dataExtra, 0, dataExtra.Length);
|
||||
Assert.AreEqual(EXPECTED_EXTRA, crc32Extra.Result);
|
||||
crc32.Incorporate(crc32Extra.Result, dataExtra.Length);
|
||||
Assert.AreEqual(EXPECTED_COMBINED, crc32.Result);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue