mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-09-22 06:45:11 +00:00
Port metadata functionality from ST
This commit is contained in:
37
SabreTools.Metadata.DatItems.Test/ConvertersTests.cs
Normal file
37
SabreTools.Metadata.DatItems.Test/ConvertersTests.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
using SabreTools.Metadata.Tools;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Test
|
||||
{
|
||||
public class ConvertersTests
|
||||
{
|
||||
#region Generators
|
||||
|
||||
[Theory]
|
||||
[InlineData(ChipType.NULL, 2)]
|
||||
[InlineData(ControlType.NULL, 15)]
|
||||
[InlineData(DeviceType.NULL, 21)]
|
||||
[InlineData(DisplayType.NULL, 5)]
|
||||
[InlineData(Endianness.NULL, 2)]
|
||||
[InlineData(FeatureStatus.NULL, 2)]
|
||||
[InlineData(FeatureType.NULL, 14)]
|
||||
[InlineData(ItemStatus.NULL, 7)]
|
||||
[InlineData(ItemType.NULL, 54)]
|
||||
[InlineData(LoadFlag.NULL, 14)]
|
||||
[InlineData(MachineType.None, 6)]
|
||||
[InlineData(OpenMSXSubType.NULL, 3)]
|
||||
[InlineData(Relation.NULL, 6)]
|
||||
[InlineData(Runnable.NULL, 3)]
|
||||
[InlineData(SoftwareListStatus.None, 3)]
|
||||
[InlineData(Supported.NULL, 5)]
|
||||
[InlineData(SupportStatus.NULL, 3)]
|
||||
public void GenerateToEnumTest<T>(T value, int expected)
|
||||
{
|
||||
var actual = Converters.GenerateToEnum<T>();
|
||||
Assert.Equal(default, value);
|
||||
Assert.Equal(expected, actual.Keys.Count);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
539
SabreTools.Metadata.DatItems.Test/DatItemTests.cs
Normal file
539
SabreTools.Metadata.DatItems.Test/DatItemTests.cs
Normal file
@@ -0,0 +1,539 @@
|
||||
using SabreTools.Metadata.DatItems.Formats;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Test
|
||||
{
|
||||
public class DatItemTests
|
||||
{
|
||||
#region Private Testing Classes
|
||||
|
||||
/// <summary>
|
||||
/// Testing implementation of Data.Models.Metadata.DatItem
|
||||
/// </summary>
|
||||
private class TestDatItemModel : Data.Models.Metadata.DatItem
|
||||
{
|
||||
public const string NameKey = "__NAME__";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Testing implementation of DatItem
|
||||
/// </summary>
|
||||
private class TestDatItem : DatItem<TestDatItemModel>
|
||||
{
|
||||
private readonly string? _nameKey;
|
||||
|
||||
protected override ItemType ItemType => ItemType.Blank;
|
||||
|
||||
public TestDatItem() => _nameKey = TestDatItemModel.NameKey;
|
||||
|
||||
public TestDatItem(string? nameKey) => _nameKey = nameKey;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override string? GetName() => _nameKey is not null ? _internal.ReadString(_nameKey) : null;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override void SetName(string? name)
|
||||
{
|
||||
if (_nameKey is not null)
|
||||
_internal[_nameKey] = name;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region CopyMachineInformation
|
||||
|
||||
[Fact]
|
||||
public void CopyMachineInformation_NewItem_Overwrite()
|
||||
{
|
||||
Machine? machineA = new Machine();
|
||||
machineA.SetName("machineA");
|
||||
|
||||
var romA = new Rom();
|
||||
|
||||
var romB = new Rom();
|
||||
romB.RemoveField(DatItem.MachineKey);
|
||||
|
||||
romA.CopyMachineInformation(romB);
|
||||
var actualMachineA = romA.GetMachine();
|
||||
Assert.NotNull(actualMachineA);
|
||||
Assert.Null(actualMachineA.GetName());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CopyMachineInformation_EmptyItem_NoChange()
|
||||
{
|
||||
Machine? machineA = new Machine();
|
||||
machineA.SetName("machineA");
|
||||
|
||||
var romA = new Rom();
|
||||
romA.SetFieldValue(DatItem.MachineKey, machineA);
|
||||
|
||||
var romB = new Rom();
|
||||
romB.RemoveField(DatItem.MachineKey);
|
||||
|
||||
romA.CopyMachineInformation(romB);
|
||||
var actualMachineA = romA.GetMachine();
|
||||
Assert.NotNull(actualMachineA);
|
||||
Assert.Equal("machineA", actualMachineA.GetName());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CopyMachineInformation_NullMachine_NoChange()
|
||||
{
|
||||
Machine? machineA = new Machine();
|
||||
machineA.SetName("machineA");
|
||||
|
||||
Machine? machineB = null;
|
||||
|
||||
var romA = new Rom();
|
||||
romA.SetFieldValue(DatItem.MachineKey, machineA);
|
||||
|
||||
var romB = new Rom();
|
||||
romB.SetFieldValue(DatItem.MachineKey, machineB);
|
||||
|
||||
romA.CopyMachineInformation(romB);
|
||||
var actualMachineA = romA.GetMachine();
|
||||
Assert.NotNull(actualMachineA);
|
||||
Assert.Equal("machineA", actualMachineA.GetName());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CopyMachineInformation_EmptyMachine_Overwrite()
|
||||
{
|
||||
Machine? machineA = new Machine();
|
||||
machineA.SetName("machineA");
|
||||
|
||||
Machine? machineB = new Machine();
|
||||
|
||||
var romA = new Rom();
|
||||
romA.SetFieldValue(DatItem.MachineKey, machineA);
|
||||
|
||||
var romB = new Rom();
|
||||
romB.SetFieldValue(DatItem.MachineKey, machineB);
|
||||
|
||||
romA.CopyMachineInformation(romB);
|
||||
var actualMachineA = romA.GetMachine();
|
||||
Assert.NotNull(actualMachineA);
|
||||
Assert.Null(actualMachineA.GetName());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CopyMachineInformation_FilledMachine_Overwrite()
|
||||
{
|
||||
Machine? machineA = new Machine();
|
||||
machineA.SetName("machineA");
|
||||
|
||||
Machine? machineB = new Machine();
|
||||
machineB.SetName("machineB");
|
||||
|
||||
var romA = new Rom();
|
||||
romA.SetFieldValue(DatItem.MachineKey, machineA);
|
||||
|
||||
var romB = new Rom();
|
||||
romB.SetFieldValue(DatItem.MachineKey, machineB);
|
||||
|
||||
romA.CopyMachineInformation(romB);
|
||||
var actualMachineA = romA.GetMachine();
|
||||
Assert.NotNull(actualMachineA);
|
||||
Assert.Equal("machineB", actualMachineA.GetName());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CopyMachineInformation_MismatchedType_Overwrite()
|
||||
{
|
||||
Machine? machineA = new Machine();
|
||||
machineA.SetName("machineA");
|
||||
|
||||
Machine? machineB = new Machine();
|
||||
machineB.SetName("machineB");
|
||||
|
||||
var romA = new Rom();
|
||||
romA.SetFieldValue(DatItem.MachineKey, machineA);
|
||||
|
||||
var diskB = new Disk();
|
||||
diskB.SetFieldValue(DatItem.MachineKey, machineB);
|
||||
|
||||
romA.CopyMachineInformation(diskB);
|
||||
var actualMachineA = romA.GetMachine();
|
||||
Assert.NotNull(actualMachineA);
|
||||
Assert.Equal("machineB", actualMachineA.GetName());
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region CompareTo
|
||||
|
||||
[Fact]
|
||||
public void CompareTo_NullOther_Returns1()
|
||||
{
|
||||
DatItem self = new Rom();
|
||||
DatItem? other = null;
|
||||
|
||||
int actual = self.CompareTo(other);
|
||||
Assert.Equal(1, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CompareTo_DifferentOther_Returns1()
|
||||
{
|
||||
DatItem self = new Rom();
|
||||
self.SetName("name");
|
||||
|
||||
DatItem? other = new Disk();
|
||||
other.SetName("name");
|
||||
|
||||
int actual = self.CompareTo(other);
|
||||
Assert.Equal(1, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CompareTo_Empty_Returns1()
|
||||
{
|
||||
DatItem self = new Rom();
|
||||
DatItem? other = new Rom();
|
||||
|
||||
int actual = self.CompareTo(other);
|
||||
Assert.Equal(1, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, null, 0)]
|
||||
[InlineData("name", null, 1)]
|
||||
[InlineData("name", "other", -1)]
|
||||
[InlineData(null, "name", -1)]
|
||||
[InlineData("other", "name", 1)]
|
||||
[InlineData("name", "name", 0)]
|
||||
public void CompareTo_NamesOnly(string? selfName, string? otherName, int expected)
|
||||
{
|
||||
DatItem self = new Rom();
|
||||
self.SetName(selfName);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF");
|
||||
|
||||
DatItem? other = new Rom();
|
||||
other.SetName(otherName);
|
||||
other.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF");
|
||||
|
||||
int actual = self.CompareTo(other);
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Equals
|
||||
|
||||
[Fact]
|
||||
public void Equals_Null_False()
|
||||
{
|
||||
DatItem self = new TestDatItem();
|
||||
DatItem? other = null;
|
||||
|
||||
bool actual = self.Equals(other);
|
||||
Assert.False(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Equals_MismatchedType_False()
|
||||
{
|
||||
DatItem self = new TestDatItem();
|
||||
DatItem? other = new Rom();
|
||||
|
||||
bool actual = self.Equals(other);
|
||||
Assert.False(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Equals_DefaultInternal_True()
|
||||
{
|
||||
DatItem self = new TestDatItem();
|
||||
DatItem? other = new TestDatItem();
|
||||
|
||||
bool actual = self.Equals(other);
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Equals_MismatchedInternal_False()
|
||||
{
|
||||
DatItem self = new TestDatItem();
|
||||
self.SetName("self");
|
||||
|
||||
DatItem? other = new TestDatItem();
|
||||
other.SetName("other");
|
||||
|
||||
bool actual = self.Equals(other);
|
||||
Assert.False(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Equals_EqualInternal_True()
|
||||
{
|
||||
DatItem self = new TestDatItem();
|
||||
self.SetName("name");
|
||||
|
||||
DatItem? other = new TestDatItem();
|
||||
other.SetName("name");
|
||||
|
||||
bool actual = self.Equals(other);
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
// TODO: Change when Machine retrieval gets fixed
|
||||
#region GetKey
|
||||
|
||||
[Theory]
|
||||
[InlineData(ItemKey.NULL, false, false, "")]
|
||||
[InlineData(ItemKey.NULL, false, true, "")]
|
||||
[InlineData(ItemKey.NULL, true, false, "")]
|
||||
[InlineData(ItemKey.NULL, true, true, "")]
|
||||
[InlineData(ItemKey.Machine, false, false, "0000000000-Machine")]
|
||||
[InlineData(ItemKey.Machine, false, true, "Machine")]
|
||||
[InlineData(ItemKey.Machine, true, false, "0000000000-machine")]
|
||||
[InlineData(ItemKey.Machine, true, true, "machine")]
|
||||
[InlineData(ItemKey.CRC, false, false, "00000000")]
|
||||
[InlineData(ItemKey.CRC, false, true, "00000000")]
|
||||
[InlineData(ItemKey.CRC, true, false, "00000000")]
|
||||
[InlineData(ItemKey.CRC, true, true, "00000000")]
|
||||
[InlineData(ItemKey.MD2, false, false, "8350e5a3e24c153df2275c9f80692773")]
|
||||
[InlineData(ItemKey.MD2, false, true, "8350e5a3e24c153df2275c9f80692773")]
|
||||
[InlineData(ItemKey.MD2, true, false, "8350e5a3e24c153df2275c9f80692773")]
|
||||
[InlineData(ItemKey.MD2, true, true, "8350e5a3e24c153df2275c9f80692773")]
|
||||
[InlineData(ItemKey.MD4, false, false, "31d6cfe0d16ae931b73c59d7e0c089c0")]
|
||||
[InlineData(ItemKey.MD4, false, true, "31d6cfe0d16ae931b73c59d7e0c089c0")]
|
||||
[InlineData(ItemKey.MD4, true, false, "31d6cfe0d16ae931b73c59d7e0c089c0")]
|
||||
[InlineData(ItemKey.MD4, true, true, "31d6cfe0d16ae931b73c59d7e0c089c0")]
|
||||
[InlineData(ItemKey.MD5, false, false, "d41d8cd98f00b204e9800998ecf8427e")]
|
||||
[InlineData(ItemKey.MD5, false, true, "d41d8cd98f00b204e9800998ecf8427e")]
|
||||
[InlineData(ItemKey.MD5, true, false, "d41d8cd98f00b204e9800998ecf8427e")]
|
||||
[InlineData(ItemKey.MD5, true, true, "d41d8cd98f00b204e9800998ecf8427e")]
|
||||
[InlineData(ItemKey.RIPEMD128, false, false, "cdf26213a150dc3ecb610f18f6b38b46")]
|
||||
[InlineData(ItemKey.RIPEMD128, false, true, "cdf26213a150dc3ecb610f18f6b38b46")]
|
||||
[InlineData(ItemKey.RIPEMD128, true, false, "cdf26213a150dc3ecb610f18f6b38b46")]
|
||||
[InlineData(ItemKey.RIPEMD128, true, true, "cdf26213a150dc3ecb610f18f6b38b46")]
|
||||
[InlineData(ItemKey.RIPEMD160, false, false, "9c1185a5c5e9fc54612808977ee8f548b2258d31")]
|
||||
[InlineData(ItemKey.RIPEMD160, false, true, "9c1185a5c5e9fc54612808977ee8f548b2258d31")]
|
||||
[InlineData(ItemKey.RIPEMD160, true, false, "9c1185a5c5e9fc54612808977ee8f548b2258d31")]
|
||||
[InlineData(ItemKey.RIPEMD160, true, true, "9c1185a5c5e9fc54612808977ee8f548b2258d31")]
|
||||
[InlineData(ItemKey.SHA1, false, false, "da39a3ee5e6b4b0d3255bfef95601890afd80709")]
|
||||
[InlineData(ItemKey.SHA1, false, true, "da39a3ee5e6b4b0d3255bfef95601890afd80709")]
|
||||
[InlineData(ItemKey.SHA1, true, false, "da39a3ee5e6b4b0d3255bfef95601890afd80709")]
|
||||
[InlineData(ItemKey.SHA1, true, true, "da39a3ee5e6b4b0d3255bfef95601890afd80709")]
|
||||
[InlineData(ItemKey.SHA256, false, false, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")]
|
||||
[InlineData(ItemKey.SHA256, false, true, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")]
|
||||
[InlineData(ItemKey.SHA256, true, false, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")]
|
||||
[InlineData(ItemKey.SHA256, true, true, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")]
|
||||
[InlineData(ItemKey.SHA384, false, false, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")]
|
||||
[InlineData(ItemKey.SHA384, false, true, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")]
|
||||
[InlineData(ItemKey.SHA384, true, false, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")]
|
||||
[InlineData(ItemKey.SHA384, true, true, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")]
|
||||
[InlineData(ItemKey.SHA512, false, false, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")]
|
||||
[InlineData(ItemKey.SHA512, false, true, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")]
|
||||
[InlineData(ItemKey.SHA512, true, false, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")]
|
||||
[InlineData(ItemKey.SHA512, true, true, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")]
|
||||
[InlineData(ItemKey.SpamSum, false, false, "3::")]
|
||||
[InlineData(ItemKey.SpamSum, false, true, "3::")]
|
||||
[InlineData(ItemKey.SpamSum, true, false, "3::")]
|
||||
[InlineData(ItemKey.SpamSum, true, true, "3::")]
|
||||
public void GetKeyDB_DefaultImplementation(ItemKey bucketedBy, bool lower, bool norename, string expected)
|
||||
{
|
||||
Source source = new Source(0);
|
||||
|
||||
Machine machine = new Machine();
|
||||
machine.SetFieldValue(Data.Models.Metadata.Machine.NameKey, "Machine");
|
||||
|
||||
DatItem datItem = new Blank();
|
||||
|
||||
string actual = datItem.GetKey(bucketedBy, machine, source, lower, norename);
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(ItemKey.NULL, false, false, "")]
|
||||
[InlineData(ItemKey.NULL, false, true, "")]
|
||||
[InlineData(ItemKey.NULL, true, false, "")]
|
||||
[InlineData(ItemKey.NULL, true, true, "")]
|
||||
[InlineData(ItemKey.Machine, false, false, "0000000000-Machine")]
|
||||
[InlineData(ItemKey.Machine, false, true, "Machine")]
|
||||
[InlineData(ItemKey.Machine, true, false, "0000000000-machine")]
|
||||
[InlineData(ItemKey.Machine, true, true, "machine")]
|
||||
[InlineData(ItemKey.CRC, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.CRC, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.CRC, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.CRC, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.MD2, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.MD2, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.MD2, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.MD2, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.MD4, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.MD4, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.MD4, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.MD4, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.MD5, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.MD5, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.MD5, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.MD5, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.RIPEMD128, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.RIPEMD128, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.RIPEMD128, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.RIPEMD128, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.RIPEMD160, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.RIPEMD160, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.RIPEMD160, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.RIPEMD160, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA1, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA1, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA1, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA1, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA256, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA256, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA256, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA256, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA384, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA384, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA384, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA384, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA512, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA512, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA512, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA512, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.SpamSum, false, false, "BASE64")]
|
||||
[InlineData(ItemKey.SpamSum, false, true, "BASE64")]
|
||||
[InlineData(ItemKey.SpamSum, true, false, "base64")]
|
||||
[InlineData(ItemKey.SpamSum, true, true, "base64")]
|
||||
public void GetKeyDB_CustomImplementation(ItemKey bucketedBy, bool lower, bool norename, string expected)
|
||||
{
|
||||
Source source = new Source(0);
|
||||
|
||||
Machine machine = new Machine();
|
||||
machine.SetFieldValue(Data.Models.Metadata.Machine.NameKey, "Machine");
|
||||
|
||||
DatItem datItem = new Rom();
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, "BASE64");
|
||||
|
||||
string actual = datItem.GetKey(bucketedBy, machine, source, lower, norename);
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region GetName
|
||||
|
||||
[Fact]
|
||||
public void GetName_NoNameKey_Null()
|
||||
{
|
||||
DatItem item = new TestDatItem(nameKey: null);
|
||||
item.SetFieldValue(TestDatItemModel.NameKey, "name");
|
||||
|
||||
string? actual = item.GetName();
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetName_EmptyNameKey_Null()
|
||||
{
|
||||
DatItem item = new TestDatItem(nameKey: string.Empty);
|
||||
item.SetFieldValue(TestDatItemModel.NameKey, "name");
|
||||
|
||||
string? actual = item.GetName();
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetName_NameKeyNotExists_Null()
|
||||
{
|
||||
DatItem item = new TestDatItem(nameKey: "INVALID");
|
||||
item.SetFieldValue(TestDatItemModel.NameKey, "name");
|
||||
|
||||
string? actual = item.GetName();
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetName_NameKeyExists_Filled()
|
||||
{
|
||||
DatItem item = new TestDatItem(nameKey: TestDatItemModel.NameKey);
|
||||
item.SetFieldValue(TestDatItemModel.NameKey, "name");
|
||||
|
||||
string? actual = item.GetName();
|
||||
Assert.Equal("name", actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region SetName
|
||||
|
||||
[Fact]
|
||||
public void SetName_NoNameKey_Null()
|
||||
{
|
||||
DatItem item = new TestDatItem(nameKey: null);
|
||||
item.SetName("name");
|
||||
|
||||
string? actual = item.GetName();
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SetName_EmptyNameKey_Null()
|
||||
{
|
||||
DatItem item = new TestDatItem(nameKey: string.Empty);
|
||||
item.SetName("name");
|
||||
|
||||
string? actual = item.GetName();
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SetName_NameKeyNonEmpty_Filled()
|
||||
{
|
||||
DatItem item = new TestDatItem(nameKey: TestDatItemModel.NameKey);
|
||||
item.SetName("name");
|
||||
|
||||
string? actual = item.GetName();
|
||||
Assert.Equal("name", actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Clone
|
||||
|
||||
[Fact]
|
||||
public void CloneTest()
|
||||
{
|
||||
DatItem item = new Sample();
|
||||
item.SetName("name");
|
||||
|
||||
object clone = item.Clone();
|
||||
Sample? actual = clone as Sample;
|
||||
Assert.NotNull(actual);
|
||||
Assert.Equal("name", actual.GetName());
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region GetInternalClone
|
||||
|
||||
[Fact]
|
||||
public void GetInternalCloneTest()
|
||||
{
|
||||
DatItem<TestDatItemModel> item = new TestDatItem();
|
||||
item.SetName("name");
|
||||
|
||||
TestDatItemModel actual = item.GetInternalClone();
|
||||
Assert.Equal("name", actual[TestDatItemModel.NameKey]);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
590
SabreTools.Metadata.DatItems.Test/ExtensionsTests.cs
Normal file
590
SabreTools.Metadata.DatItems.Test/ExtensionsTests.cs
Normal file
@@ -0,0 +1,590 @@
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Test
|
||||
{
|
||||
public class ExtensionsTests
|
||||
{
|
||||
#region String to Enum
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, ChipType.NULL)]
|
||||
[InlineData("cpu", ChipType.CPU)]
|
||||
[InlineData("audio", ChipType.Audio)]
|
||||
public void AsChipTypeTest(string? field, ChipType expected)
|
||||
{
|
||||
ChipType actual = field.AsChipType();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, ControlType.NULL)]
|
||||
[InlineData("joy", ControlType.Joy)]
|
||||
[InlineData("stick", ControlType.Stick)]
|
||||
[InlineData("paddle", ControlType.Paddle)]
|
||||
[InlineData("pedal", ControlType.Pedal)]
|
||||
[InlineData("lightgun", ControlType.Lightgun)]
|
||||
[InlineData("positional", ControlType.Positional)]
|
||||
[InlineData("dial", ControlType.Dial)]
|
||||
[InlineData("trackball", ControlType.Trackball)]
|
||||
[InlineData("mouse", ControlType.Mouse)]
|
||||
[InlineData("only_buttons", ControlType.OnlyButtons)]
|
||||
[InlineData("keypad", ControlType.Keypad)]
|
||||
[InlineData("keyboard", ControlType.Keyboard)]
|
||||
[InlineData("mahjong", ControlType.Mahjong)]
|
||||
[InlineData("hanafuda", ControlType.Hanafuda)]
|
||||
[InlineData("gambling", ControlType.Gambling)]
|
||||
public void AsControlTypeTest(string? field, ControlType expected)
|
||||
{
|
||||
ControlType actual = field.AsControlType();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, DeviceType.NULL)]
|
||||
[InlineData("unknown", DeviceType.Unknown)]
|
||||
[InlineData("cartridge", DeviceType.Cartridge)]
|
||||
[InlineData("floppydisk", DeviceType.FloppyDisk)]
|
||||
[InlineData("harddisk", DeviceType.HardDisk)]
|
||||
[InlineData("cylinder", DeviceType.Cylinder)]
|
||||
[InlineData("cassette", DeviceType.Cassette)]
|
||||
[InlineData("punchcard", DeviceType.PunchCard)]
|
||||
[InlineData("punchtape", DeviceType.PunchTape)]
|
||||
[InlineData("printout", DeviceType.Printout)]
|
||||
[InlineData("serial", DeviceType.Serial)]
|
||||
[InlineData("parallel", DeviceType.Parallel)]
|
||||
[InlineData("snapshot", DeviceType.Snapshot)]
|
||||
[InlineData("quickload", DeviceType.QuickLoad)]
|
||||
[InlineData("memcard", DeviceType.MemCard)]
|
||||
[InlineData("cdrom", DeviceType.CDROM)]
|
||||
[InlineData("magtape", DeviceType.MagTape)]
|
||||
[InlineData("romimage", DeviceType.ROMImage)]
|
||||
[InlineData("midiin", DeviceType.MIDIIn)]
|
||||
[InlineData("midiout", DeviceType.MIDIOut)]
|
||||
[InlineData("picture", DeviceType.Picture)]
|
||||
[InlineData("vidfile", DeviceType.VidFile)]
|
||||
public void AsDeviceTypeTest(string? field, DeviceType expected)
|
||||
{
|
||||
DeviceType actual = field.AsDeviceType();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, DisplayType.NULL)]
|
||||
[InlineData("raster", DisplayType.Raster)]
|
||||
[InlineData("vector", DisplayType.Vector)]
|
||||
[InlineData("lcd", DisplayType.LCD)]
|
||||
[InlineData("svg", DisplayType.SVG)]
|
||||
[InlineData("unknown", DisplayType.Unknown)]
|
||||
public void AsDisplayTypeTest(string? field, DisplayType expected)
|
||||
{
|
||||
DisplayType actual = field.AsDisplayType();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, Endianness.NULL)]
|
||||
[InlineData("big", Endianness.Big)]
|
||||
[InlineData("little", Endianness.Little)]
|
||||
public void AsEndiannessTest(string? field, Endianness expected)
|
||||
{
|
||||
Endianness actual = field.AsEndianness();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, FeatureStatus.NULL)]
|
||||
[InlineData("unemulated", FeatureStatus.Unemulated)]
|
||||
[InlineData("imperfect", FeatureStatus.Imperfect)]
|
||||
public void AsFeatureStatusTest(string? field, FeatureStatus expected)
|
||||
{
|
||||
FeatureStatus actual = field.AsFeatureStatus();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, FeatureType.NULL)]
|
||||
[InlineData("protection", FeatureType.Protection)]
|
||||
[InlineData("palette", FeatureType.Palette)]
|
||||
[InlineData("graphics", FeatureType.Graphics)]
|
||||
[InlineData("sound", FeatureType.Sound)]
|
||||
[InlineData("controls", FeatureType.Controls)]
|
||||
[InlineData("keyboard", FeatureType.Keyboard)]
|
||||
[InlineData("mouse", FeatureType.Mouse)]
|
||||
[InlineData("microphone", FeatureType.Microphone)]
|
||||
[InlineData("camera", FeatureType.Camera)]
|
||||
[InlineData("disk", FeatureType.Disk)]
|
||||
[InlineData("printer", FeatureType.Printer)]
|
||||
[InlineData("lan", FeatureType.Lan)]
|
||||
[InlineData("wan", FeatureType.Wan)]
|
||||
[InlineData("timing", FeatureType.Timing)]
|
||||
public void AsFeatureTypeTest(string? field, FeatureType expected)
|
||||
{
|
||||
FeatureType actual = field.AsFeatureType();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, ItemStatus.NULL)]
|
||||
[InlineData("none", ItemStatus.None)]
|
||||
[InlineData("no", ItemStatus.None)]
|
||||
[InlineData("good", ItemStatus.Good)]
|
||||
[InlineData("baddump", ItemStatus.BadDump)]
|
||||
[InlineData("nodump", ItemStatus.Nodump)]
|
||||
[InlineData("yes", ItemStatus.Nodump)]
|
||||
[InlineData("verified", ItemStatus.Verified)]
|
||||
public void AsItemStatusTest(string? field, ItemStatus expected)
|
||||
{
|
||||
ItemStatus actual = field.AsItemStatus();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, ItemType.NULL)]
|
||||
[InlineData("adjuster", ItemType.Adjuster)]
|
||||
[InlineData("analog", ItemType.Analog)]
|
||||
[InlineData("archive", ItemType.Archive)]
|
||||
[InlineData("biosset", ItemType.BiosSet)]
|
||||
[InlineData("blank", ItemType.Blank)]
|
||||
[InlineData("chip", ItemType.Chip)]
|
||||
[InlineData("condition", ItemType.Condition)]
|
||||
[InlineData("configuration", ItemType.Configuration)]
|
||||
[InlineData("conflocation", ItemType.ConfLocation)]
|
||||
[InlineData("confsetting", ItemType.ConfSetting)]
|
||||
[InlineData("control", ItemType.Control)]
|
||||
[InlineData("dataarea", ItemType.DataArea)]
|
||||
[InlineData("device", ItemType.Device)]
|
||||
[InlineData("deviceref", ItemType.DeviceRef)]
|
||||
[InlineData("device_ref", ItemType.DeviceRef)]
|
||||
[InlineData("diplocation", ItemType.DipLocation)]
|
||||
[InlineData("dipswitch", ItemType.DipSwitch)]
|
||||
[InlineData("dipvalue", ItemType.DipValue)]
|
||||
[InlineData("disk", ItemType.Disk)]
|
||||
[InlineData("diskarea", ItemType.DiskArea)]
|
||||
[InlineData("display", ItemType.Display)]
|
||||
[InlineData("driver", ItemType.Driver)]
|
||||
[InlineData("extension", ItemType.Extension)]
|
||||
[InlineData("feature", ItemType.Feature)]
|
||||
[InlineData("file", ItemType.File)]
|
||||
[InlineData("info", ItemType.Info)]
|
||||
[InlineData("input", ItemType.Input)]
|
||||
[InlineData("instance", ItemType.Instance)]
|
||||
[InlineData("media", ItemType.Media)]
|
||||
[InlineData("part", ItemType.Part)]
|
||||
[InlineData("partfeature", ItemType.PartFeature)]
|
||||
[InlineData("part_feature", ItemType.PartFeature)]
|
||||
[InlineData("port", ItemType.Port)]
|
||||
[InlineData("ramoption", ItemType.RamOption)]
|
||||
[InlineData("ram_option", ItemType.RamOption)]
|
||||
[InlineData("release", ItemType.Release)]
|
||||
[InlineData("releasedetails", ItemType.ReleaseDetails)]
|
||||
[InlineData("release_details", ItemType.ReleaseDetails)]
|
||||
[InlineData("rom", ItemType.Rom)]
|
||||
[InlineData("sample", ItemType.Sample)]
|
||||
[InlineData("serials", ItemType.Serials)]
|
||||
[InlineData("sharedfeat", ItemType.SharedFeat)]
|
||||
[InlineData("shared_feat", ItemType.SharedFeat)]
|
||||
[InlineData("sharedfeature", ItemType.SharedFeat)]
|
||||
[InlineData("shared_feature", ItemType.SharedFeat)]
|
||||
[InlineData("slot", ItemType.Slot)]
|
||||
[InlineData("slotoption", ItemType.SlotOption)]
|
||||
[InlineData("slot_option", ItemType.SlotOption)]
|
||||
[InlineData("softwarelist", ItemType.SoftwareList)]
|
||||
[InlineData("software_list", ItemType.SoftwareList)]
|
||||
[InlineData("sound", ItemType.Sound)]
|
||||
[InlineData("sourcedetails", ItemType.SourceDetails)]
|
||||
[InlineData("source_details", ItemType.SourceDetails)]
|
||||
public void AsItemTypeTest(string? field, ItemType expected)
|
||||
{
|
||||
ItemType actual = field.AsItemType();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, LoadFlag.NULL)]
|
||||
[InlineData("load16_byte", LoadFlag.Load16Byte)]
|
||||
[InlineData("load16_word", LoadFlag.Load16Word)]
|
||||
[InlineData("load16_word_swap", LoadFlag.Load16WordSwap)]
|
||||
[InlineData("load32_byte", LoadFlag.Load32Byte)]
|
||||
[InlineData("load32_word", LoadFlag.Load32Word)]
|
||||
[InlineData("load32_word_swap", LoadFlag.Load32WordSwap)]
|
||||
[InlineData("load32_dword", LoadFlag.Load32DWord)]
|
||||
[InlineData("load64_word", LoadFlag.Load64Word)]
|
||||
[InlineData("load64_word_swap", LoadFlag.Load64WordSwap)]
|
||||
[InlineData("reload", LoadFlag.Reload)]
|
||||
[InlineData("fill", LoadFlag.Fill)]
|
||||
[InlineData("continue", LoadFlag.Continue)]
|
||||
[InlineData("reload_plain", LoadFlag.ReloadPlain)]
|
||||
[InlineData("ignore", LoadFlag.Ignore)]
|
||||
public void AsLoadFlagTest(string? field, LoadFlag expected)
|
||||
{
|
||||
LoadFlag actual = field.AsLoadFlag();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, MachineType.None)]
|
||||
[InlineData("none", MachineType.None)]
|
||||
[InlineData("bios", MachineType.Bios)]
|
||||
[InlineData("dev", MachineType.Device)]
|
||||
[InlineData("device", MachineType.Device)]
|
||||
[InlineData("mech", MachineType.Mechanical)]
|
||||
[InlineData("mechanical", MachineType.Mechanical)]
|
||||
public void AsMachineTypeTest(string? field, MachineType expected)
|
||||
{
|
||||
MachineType actual = field.AsMachineType();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, OpenMSXSubType.NULL)]
|
||||
[InlineData("rom", OpenMSXSubType.Rom)]
|
||||
[InlineData("megarom", OpenMSXSubType.MegaRom)]
|
||||
[InlineData("sccpluscart", OpenMSXSubType.SCCPlusCart)]
|
||||
public void AsOpenMSXSubTypeTest(string? field, OpenMSXSubType expected)
|
||||
{
|
||||
OpenMSXSubType actual = field.AsOpenMSXSubType();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, Relation.NULL)]
|
||||
[InlineData("eq", Relation.Equal)]
|
||||
[InlineData("ne", Relation.NotEqual)]
|
||||
[InlineData("gt", Relation.GreaterThan)]
|
||||
[InlineData("le", Relation.LessThanOrEqual)]
|
||||
[InlineData("lt", Relation.LessThan)]
|
||||
[InlineData("ge", Relation.GreaterThanOrEqual)]
|
||||
public void AsRelationTest(string? field, Relation expected)
|
||||
{
|
||||
Relation actual = field.AsRelation();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, Runnable.NULL)]
|
||||
[InlineData("no", Runnable.No)]
|
||||
[InlineData("partial", Runnable.Partial)]
|
||||
[InlineData("yes", Runnable.Yes)]
|
||||
public void AsRunnableTest(string? field, Runnable expected)
|
||||
{
|
||||
Runnable actual = field.AsRunnable();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, SoftwareListStatus.None)]
|
||||
[InlineData("none", SoftwareListStatus.None)]
|
||||
[InlineData("original", SoftwareListStatus.Original)]
|
||||
[InlineData("compatible", SoftwareListStatus.Compatible)]
|
||||
public void AsSoftwareListStatusTest(string? field, SoftwareListStatus expected)
|
||||
{
|
||||
SoftwareListStatus actual = field.AsSoftwareListStatus();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, Supported.NULL)]
|
||||
[InlineData("no", Supported.No)]
|
||||
[InlineData("unsupported", Supported.No)]
|
||||
[InlineData("partial", Supported.Partial)]
|
||||
[InlineData("yes", Supported.Yes)]
|
||||
[InlineData("supported", Supported.Yes)]
|
||||
public void AsSupportedTest(string? field, Supported expected)
|
||||
{
|
||||
Supported actual = field.AsSupported();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null, SupportStatus.NULL)]
|
||||
[InlineData("good", SupportStatus.Good)]
|
||||
[InlineData("imperfect", SupportStatus.Imperfect)]
|
||||
[InlineData("preliminary", SupportStatus.Preliminary)]
|
||||
public void AsSupportStatusTest(string? field, SupportStatus expected)
|
||||
{
|
||||
SupportStatus actual = field.AsSupportStatus();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Enum to String
|
||||
|
||||
[Theory]
|
||||
[InlineData(ChipType.NULL, null)]
|
||||
[InlineData(ChipType.CPU, "cpu")]
|
||||
[InlineData(ChipType.Audio, "audio")]
|
||||
public void FromChipTypeTest(ChipType field, string? expected)
|
||||
{
|
||||
string? actual = field.AsStringValue();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(ControlType.NULL, null)]
|
||||
[InlineData(ControlType.Joy, "joy")]
|
||||
[InlineData(ControlType.Stick, "stick")]
|
||||
[InlineData(ControlType.Paddle, "paddle")]
|
||||
[InlineData(ControlType.Pedal, "pedal")]
|
||||
[InlineData(ControlType.Lightgun, "lightgun")]
|
||||
[InlineData(ControlType.Positional, "positional")]
|
||||
[InlineData(ControlType.Dial, "dial")]
|
||||
[InlineData(ControlType.Trackball, "trackball")]
|
||||
[InlineData(ControlType.Mouse, "mouse")]
|
||||
[InlineData(ControlType.OnlyButtons, "only_buttons")]
|
||||
[InlineData(ControlType.Keypad, "keypad")]
|
||||
[InlineData(ControlType.Keyboard, "keyboard")]
|
||||
[InlineData(ControlType.Mahjong, "mahjong")]
|
||||
[InlineData(ControlType.Hanafuda, "hanafuda")]
|
||||
[InlineData(ControlType.Gambling, "gambling")]
|
||||
public void FromControlTypeTest(ControlType field, string? expected)
|
||||
{
|
||||
string? actual = field.AsStringValue();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(DeviceType.NULL, null)]
|
||||
[InlineData(DeviceType.Unknown, "unknown")]
|
||||
[InlineData(DeviceType.Cartridge, "cartridge")]
|
||||
[InlineData(DeviceType.FloppyDisk, "floppydisk")]
|
||||
[InlineData(DeviceType.HardDisk, "harddisk")]
|
||||
[InlineData(DeviceType.Cylinder, "cylinder")]
|
||||
[InlineData(DeviceType.Cassette, "cassette")]
|
||||
[InlineData(DeviceType.PunchCard, "punchcard")]
|
||||
[InlineData(DeviceType.PunchTape, "punchtape")]
|
||||
[InlineData(DeviceType.Printout, "printout")]
|
||||
[InlineData(DeviceType.Serial, "serial")]
|
||||
[InlineData(DeviceType.Parallel, "parallel")]
|
||||
[InlineData(DeviceType.Snapshot, "snapshot")]
|
||||
[InlineData(DeviceType.QuickLoad, "quickload")]
|
||||
[InlineData(DeviceType.MemCard, "memcard")]
|
||||
[InlineData(DeviceType.CDROM, "cdrom")]
|
||||
[InlineData(DeviceType.MagTape, "magtape")]
|
||||
[InlineData(DeviceType.ROMImage, "romimage")]
|
||||
[InlineData(DeviceType.MIDIIn, "midiin")]
|
||||
[InlineData(DeviceType.MIDIOut, "midiout")]
|
||||
[InlineData(DeviceType.Picture, "picture")]
|
||||
[InlineData(DeviceType.VidFile, "vidfile")]
|
||||
public void FromDeviceTypeTest(DeviceType field, string? expected)
|
||||
{
|
||||
string? actual = field.AsStringValue();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(DisplayType.NULL, null)]
|
||||
[InlineData(DisplayType.Raster, "raster")]
|
||||
[InlineData(DisplayType.Vector, "vector")]
|
||||
[InlineData(DisplayType.LCD, "lcd")]
|
||||
[InlineData(DisplayType.SVG, "svg")]
|
||||
[InlineData(DisplayType.Unknown, "unknown")]
|
||||
public void FromDisplayTypeTest(DisplayType field, string? expected)
|
||||
{
|
||||
string? actual = field.AsStringValue();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(Endianness.NULL, null)]
|
||||
[InlineData(Endianness.Big, "big")]
|
||||
[InlineData(Endianness.Little, "little")]
|
||||
public void FromEndiannessTest(Endianness field, string? expected)
|
||||
{
|
||||
string? actual = field.AsStringValue();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(FeatureStatus.NULL, null)]
|
||||
[InlineData(FeatureStatus.Unemulated, "unemulated")]
|
||||
[InlineData(FeatureStatus.Imperfect, "imperfect")]
|
||||
public void FromFeatureStatusTest(FeatureStatus field, string? expected)
|
||||
{
|
||||
string? actual = field.AsStringValue();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(FeatureType.NULL, null)]
|
||||
[InlineData(FeatureType.Protection, "protection")]
|
||||
[InlineData(FeatureType.Palette, "palette")]
|
||||
[InlineData(FeatureType.Graphics, "graphics")]
|
||||
[InlineData(FeatureType.Sound, "sound")]
|
||||
[InlineData(FeatureType.Controls, "controls")]
|
||||
[InlineData(FeatureType.Keyboard, "keyboard")]
|
||||
[InlineData(FeatureType.Mouse, "mouse")]
|
||||
[InlineData(FeatureType.Microphone, "microphone")]
|
||||
[InlineData(FeatureType.Camera, "camera")]
|
||||
[InlineData(FeatureType.Disk, "disk")]
|
||||
[InlineData(FeatureType.Printer, "printer")]
|
||||
[InlineData(FeatureType.Lan, "lan")]
|
||||
[InlineData(FeatureType.Wan, "wan")]
|
||||
[InlineData(FeatureType.Timing, "timing")]
|
||||
public void FromFeatureTypeTest(FeatureType field, string? expected)
|
||||
{
|
||||
string? actual = field.AsStringValue();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(ItemStatus.NULL, null)]
|
||||
[InlineData(ItemStatus.None, "none")]
|
||||
[InlineData(ItemStatus.Good, "good")]
|
||||
[InlineData(ItemStatus.BadDump, "baddump")]
|
||||
[InlineData(ItemStatus.Nodump, "nodump")]
|
||||
[InlineData(ItemStatus.Verified, "verified")]
|
||||
public void FromItemStatusTest(ItemStatus field, string? expected)
|
||||
{
|
||||
string? actual = field.AsStringValue();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(ItemType.NULL, null)]
|
||||
[InlineData(ItemType.Adjuster, "adjuster")]
|
||||
[InlineData(ItemType.Analog, "analog")]
|
||||
[InlineData(ItemType.Archive, "archive")]
|
||||
[InlineData(ItemType.BiosSet, "biosset")]
|
||||
[InlineData(ItemType.Blank, "blank")]
|
||||
[InlineData(ItemType.Chip, "chip")]
|
||||
[InlineData(ItemType.Condition, "condition")]
|
||||
[InlineData(ItemType.Configuration, "configuration")]
|
||||
[InlineData(ItemType.ConfLocation, "conflocation")]
|
||||
[InlineData(ItemType.ConfSetting, "confsetting")]
|
||||
[InlineData(ItemType.Control, "control")]
|
||||
[InlineData(ItemType.DataArea, "dataarea")]
|
||||
[InlineData(ItemType.Device, "device")]
|
||||
[InlineData(ItemType.DeviceRef, "device_ref")]
|
||||
[InlineData(ItemType.DipLocation, "diplocation")]
|
||||
[InlineData(ItemType.DipSwitch, "dipswitch")]
|
||||
[InlineData(ItemType.DipValue, "dipvalue")]
|
||||
[InlineData(ItemType.Disk, "disk")]
|
||||
[InlineData(ItemType.DiskArea, "diskarea")]
|
||||
[InlineData(ItemType.Display, "display")]
|
||||
[InlineData(ItemType.Driver, "driver")]
|
||||
[InlineData(ItemType.Extension, "extension")]
|
||||
[InlineData(ItemType.Feature, "feature")]
|
||||
[InlineData(ItemType.File, "file")]
|
||||
[InlineData(ItemType.Info, "info")]
|
||||
[InlineData(ItemType.Input, "input")]
|
||||
[InlineData(ItemType.Instance, "instance")]
|
||||
[InlineData(ItemType.Media, "media")]
|
||||
[InlineData(ItemType.Part, "part")]
|
||||
[InlineData(ItemType.PartFeature, "part_feature")]
|
||||
[InlineData(ItemType.Port, "port")]
|
||||
[InlineData(ItemType.RamOption, "ramoption")]
|
||||
[InlineData(ItemType.Release, "release")]
|
||||
[InlineData(ItemType.ReleaseDetails, "release_details")]
|
||||
[InlineData(ItemType.Rom, "rom")]
|
||||
[InlineData(ItemType.Sample, "sample")]
|
||||
[InlineData(ItemType.Serials, "serials")]
|
||||
[InlineData(ItemType.SharedFeat, "sharedfeat")]
|
||||
[InlineData(ItemType.Slot, "slot")]
|
||||
[InlineData(ItemType.SlotOption, "slotoption")]
|
||||
[InlineData(ItemType.SoftwareList, "softwarelist")]
|
||||
[InlineData(ItemType.Sound, "sound")]
|
||||
[InlineData(ItemType.SourceDetails, "source_details")]
|
||||
public void FromItemTypeTest(ItemType field, string? expected)
|
||||
{
|
||||
string? actual = field.AsStringValue();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(LoadFlag.NULL, null)]
|
||||
[InlineData(LoadFlag.Load16Byte, "load16_byte")]
|
||||
[InlineData(LoadFlag.Load16Word, "load16_word")]
|
||||
[InlineData(LoadFlag.Load16WordSwap, "load16_word_swap")]
|
||||
[InlineData(LoadFlag.Load32Byte, "load32_byte")]
|
||||
[InlineData(LoadFlag.Load32Word, "load32_word")]
|
||||
[InlineData(LoadFlag.Load32WordSwap, "load32_word_swap")]
|
||||
[InlineData(LoadFlag.Load32DWord, "load32_dword")]
|
||||
[InlineData(LoadFlag.Load64Word, "load64_word")]
|
||||
[InlineData(LoadFlag.Load64WordSwap, "load64_word_swap")]
|
||||
[InlineData(LoadFlag.Reload, "reload")]
|
||||
[InlineData(LoadFlag.Fill, "fill")]
|
||||
[InlineData(LoadFlag.Continue, "continue")]
|
||||
[InlineData(LoadFlag.ReloadPlain, "reload_plain")]
|
||||
[InlineData(LoadFlag.Ignore, "ignore")]
|
||||
public void FromLoadFlagTest(LoadFlag field, string? expected)
|
||||
{
|
||||
string? actual = field.AsStringValue();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(OpenMSXSubType.NULL, null)]
|
||||
[InlineData(OpenMSXSubType.Rom, "rom")]
|
||||
[InlineData(OpenMSXSubType.MegaRom, "megarom")]
|
||||
[InlineData(OpenMSXSubType.SCCPlusCart, "sccpluscart")]
|
||||
public void FromOpenMSXSubTypeTest(OpenMSXSubType field, string? expected)
|
||||
{
|
||||
string? actual = field.AsStringValue();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(Relation.NULL, null)]
|
||||
[InlineData(Relation.Equal, "eq")]
|
||||
[InlineData(Relation.NotEqual, "ne")]
|
||||
[InlineData(Relation.GreaterThan, "gt")]
|
||||
[InlineData(Relation.LessThanOrEqual, "le")]
|
||||
[InlineData(Relation.LessThan, "lt")]
|
||||
[InlineData(Relation.GreaterThanOrEqual, "ge")]
|
||||
public void FromRelationTest(Relation field, string? expected)
|
||||
{
|
||||
string? actual = field.AsStringValue();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(Runnable.NULL, null)]
|
||||
[InlineData(Runnable.No, "no")]
|
||||
[InlineData(Runnable.Partial, "partial")]
|
||||
[InlineData(Runnable.Yes, "yes")]
|
||||
public void FromRunnableTest(Runnable field, string? expected)
|
||||
{
|
||||
string? actual = field.AsStringValue();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(SoftwareListStatus.None, "none")]
|
||||
[InlineData(SoftwareListStatus.Original, "original")]
|
||||
[InlineData(SoftwareListStatus.Compatible, "compatible")]
|
||||
public void FromSoftwareListStatusTest(SoftwareListStatus field, string? expected)
|
||||
{
|
||||
string? actual = field.AsStringValue();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(Supported.NULL, true, null)]
|
||||
[InlineData(Supported.NULL, false, null)]
|
||||
[InlineData(Supported.No, true, "unsupported")]
|
||||
[InlineData(Supported.No, false, "no")]
|
||||
[InlineData(Supported.Partial, true, "partial")]
|
||||
[InlineData(Supported.Partial, false, "partial")]
|
||||
[InlineData(Supported.Yes, true, "supported")]
|
||||
[InlineData(Supported.Yes, false, "yes")]
|
||||
public void FromSupportedTest(Supported field, bool useSecond, string? expected)
|
||||
{
|
||||
string? actual = field.AsStringValue(useSecond);
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(SupportStatus.NULL, null)]
|
||||
[InlineData(SupportStatus.Good, "good")]
|
||||
[InlineData(SupportStatus.Imperfect, "imperfect")]
|
||||
[InlineData(SupportStatus.Preliminary, "preliminary")]
|
||||
public void FromSupportStatusTest(SupportStatus field, string? expected)
|
||||
{
|
||||
string? actual = field.AsStringValue();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
269
SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs
Normal file
269
SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs
Normal file
@@ -0,0 +1,269 @@
|
||||
using SabreTools.Hashing;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats.Test
|
||||
{
|
||||
public class DiskTests
|
||||
{
|
||||
#region ConvertToRom
|
||||
|
||||
[Fact]
|
||||
public void ConvertToRomTest()
|
||||
{
|
||||
DiskArea diskArea = new DiskArea();
|
||||
diskArea.SetName("XXXXXX");
|
||||
|
||||
Machine machine = new Machine();
|
||||
machine.SetFieldValue(Data.Models.Metadata.Machine.NameKey, "XXXXXX");
|
||||
|
||||
Part part = new Part();
|
||||
part.SetName("XXXXXX");
|
||||
|
||||
Source source = new Source(0, "XXXXXX");
|
||||
|
||||
Disk disk = new Disk();
|
||||
disk.SetName("XXXXXX");
|
||||
disk.SetFieldValue(Disk.DiskAreaKey, diskArea);
|
||||
disk.SetFieldValue(Data.Models.Metadata.Disk.MergeKey, "XXXXXX");
|
||||
disk.SetFieldValue(Data.Models.Metadata.Disk.RegionKey, "XXXXXX");
|
||||
disk.SetFieldValue(Data.Models.Metadata.Disk.StatusKey, "good");
|
||||
disk.SetFieldValue(Data.Models.Metadata.Disk.OptionalKey, "XXXXXX");
|
||||
disk.SetFieldValue(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString);
|
||||
disk.SetFieldValue(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString);
|
||||
disk.SetFieldValue(DatItem.DupeTypeKey, DupeType.All | DupeType.External);
|
||||
disk.SetFieldValue(DatItem.MachineKey, machine);
|
||||
disk.SetFieldValue(Disk.PartKey, part);
|
||||
disk.SetFieldValue(DatItem.RemoveKey, (bool?)false);
|
||||
disk.SetFieldValue(DatItem.SourceKey, source);
|
||||
|
||||
Rom actual = disk.ConvertToRom();
|
||||
|
||||
Assert.Equal("XXXXXX.chd", actual.GetName());
|
||||
Assert.Equal("XXXXXX", actual.GetStringFieldValue(Data.Models.Metadata.Rom.MergeKey));
|
||||
Assert.Equal("XXXXXX", actual.GetStringFieldValue(Data.Models.Metadata.Rom.RegionKey));
|
||||
Assert.Equal("good", actual.GetStringFieldValue(Data.Models.Metadata.Rom.StatusKey));
|
||||
Assert.Equal("XXXXXX", actual.GetStringFieldValue(Data.Models.Metadata.Rom.OptionalKey));
|
||||
Assert.Equal(HashType.MD5.ZeroString, actual.GetStringFieldValue(Data.Models.Metadata.Rom.MD5Key));
|
||||
Assert.Equal(HashType.SHA1.ZeroString, actual.GetStringFieldValue(Data.Models.Metadata.Rom.SHA1Key));
|
||||
Assert.Equal(DupeType.All | DupeType.External, actual.GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||
|
||||
DataArea? actualDataArea = actual.GetFieldValue<DataArea?>(Rom.DataAreaKey);
|
||||
Assert.NotNull(actualDataArea);
|
||||
Assert.Equal("XXXXXX", actualDataArea.GetStringFieldValue(Data.Models.Metadata.DataArea.NameKey));
|
||||
|
||||
Machine? actualMachine = actual.GetMachine();
|
||||
Assert.NotNull(actualMachine);
|
||||
Assert.Equal("XXXXXX", actualMachine.GetName());
|
||||
|
||||
Assert.Equal(false, actual.GetBoolFieldValue(DatItem.RemoveKey));
|
||||
|
||||
Part? actualPart = actual.GetFieldValue<Part?>(Rom.PartKey);
|
||||
Assert.NotNull(actualPart);
|
||||
Assert.Equal("XXXXXX", actualPart.GetStringFieldValue(Data.Models.Metadata.Part.NameKey));
|
||||
|
||||
Source? actualSource = actual.GetFieldValue<Source?>(DatItem.SourceKey);
|
||||
Assert.NotNull(actualSource);
|
||||
Assert.Equal(0, actualSource.Index);
|
||||
Assert.Equal("XXXXXX", actualSource.Name);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region FillMissingInformation
|
||||
|
||||
[Fact]
|
||||
public void FillMissingInformation_BothEmpty()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
Disk other = new Disk();
|
||||
|
||||
self.FillMissingInformation(other);
|
||||
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Disk.MD5Key));
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Disk.SHA1Key));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void FillMissingInformation_AllMissing()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
|
||||
Disk other = new Disk();
|
||||
other.SetFieldValue(Data.Models.Metadata.Disk.MD5Key, "XXXXXX");
|
||||
other.SetFieldValue(Data.Models.Metadata.Disk.SHA1Key, "XXXXXX");
|
||||
|
||||
self.FillMissingInformation(other);
|
||||
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Disk.MD5Key));
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Disk.SHA1Key));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region HasHashes
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_NoHash_False()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
bool actual = self.HasHashes();
|
||||
Assert.False(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_MD5_True()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
self.SetFieldValue(Data.Models.Metadata.Disk.MD5Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Disk.SHA1Key, string.Empty);
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_SHA1_True()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
self.SetFieldValue(Data.Models.Metadata.Disk.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Disk.SHA1Key, "XXXXXX");
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_All_True()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
self.SetFieldValue(Data.Models.Metadata.Disk.MD5Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Disk.SHA1Key, "XXXXXX");
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region HasZeroHash
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_NoHash_True()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_NonZeroHash_False()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
self.SetFieldValue(Data.Models.Metadata.Disk.MD5Key, "DEADBEEF");
|
||||
self.SetFieldValue(Data.Models.Metadata.Disk.SHA1Key, "DEADBEEF");
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.False(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroMD5_True()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
self.SetFieldValue(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Disk.SHA1Key, string.Empty);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroSHA1_True()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
self.SetFieldValue(Data.Models.Metadata.Disk.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroAll_True()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
self.SetFieldValue(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
// TODO: Change when Machine retrieval gets fixed
|
||||
#region GetKey
|
||||
|
||||
[Theory]
|
||||
[InlineData(ItemKey.NULL, false, false, "")]
|
||||
[InlineData(ItemKey.NULL, false, true, "")]
|
||||
[InlineData(ItemKey.NULL, true, false, "")]
|
||||
[InlineData(ItemKey.NULL, true, true, "")]
|
||||
[InlineData(ItemKey.Machine, false, false, "0000000000-Machine")]
|
||||
[InlineData(ItemKey.Machine, false, true, "Machine")]
|
||||
[InlineData(ItemKey.Machine, true, false, "0000000000-machine")]
|
||||
[InlineData(ItemKey.Machine, true, true, "machine")]
|
||||
[InlineData(ItemKey.CRC, false, false, "00000000")]
|
||||
[InlineData(ItemKey.CRC, false, true, "00000000")]
|
||||
[InlineData(ItemKey.CRC, true, false, "00000000")]
|
||||
[InlineData(ItemKey.CRC, true, true, "00000000")]
|
||||
[InlineData(ItemKey.MD2, false, false, "8350e5a3e24c153df2275c9f80692773")]
|
||||
[InlineData(ItemKey.MD2, false, true, "8350e5a3e24c153df2275c9f80692773")]
|
||||
[InlineData(ItemKey.MD2, true, false, "8350e5a3e24c153df2275c9f80692773")]
|
||||
[InlineData(ItemKey.MD2, true, true, "8350e5a3e24c153df2275c9f80692773")]
|
||||
[InlineData(ItemKey.MD4, false, false, "31d6cfe0d16ae931b73c59d7e0c089c0")]
|
||||
[InlineData(ItemKey.MD4, false, true, "31d6cfe0d16ae931b73c59d7e0c089c0")]
|
||||
[InlineData(ItemKey.MD4, true, false, "31d6cfe0d16ae931b73c59d7e0c089c0")]
|
||||
[InlineData(ItemKey.MD4, true, true, "31d6cfe0d16ae931b73c59d7e0c089c0")]
|
||||
[InlineData(ItemKey.MD5, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.MD5, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.MD5, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.MD5, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA1, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA1, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA1, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA1, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA256, false, false, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")]
|
||||
[InlineData(ItemKey.SHA256, false, true, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")]
|
||||
[InlineData(ItemKey.SHA256, true, false, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")]
|
||||
[InlineData(ItemKey.SHA256, true, true, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")]
|
||||
[InlineData(ItemKey.SHA384, false, false, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")]
|
||||
[InlineData(ItemKey.SHA384, false, true, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")]
|
||||
[InlineData(ItemKey.SHA384, true, false, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")]
|
||||
[InlineData(ItemKey.SHA384, true, true, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")]
|
||||
[InlineData(ItemKey.SHA512, false, false, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")]
|
||||
[InlineData(ItemKey.SHA512, false, true, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")]
|
||||
[InlineData(ItemKey.SHA512, true, false, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")]
|
||||
[InlineData(ItemKey.SHA512, true, true, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")]
|
||||
[InlineData(ItemKey.SpamSum, false, false, "3::")]
|
||||
[InlineData(ItemKey.SpamSum, false, true, "3::")]
|
||||
[InlineData(ItemKey.SpamSum, true, false, "3::")]
|
||||
[InlineData(ItemKey.SpamSum, true, true, "3::")]
|
||||
public void GetKeyDBTest(ItemKey bucketedBy, bool lower, bool norename, string expected)
|
||||
{
|
||||
Source source = new Source(0);
|
||||
|
||||
Machine machine = new Machine();
|
||||
machine.SetFieldValue(Data.Models.Metadata.Machine.NameKey, "Machine");
|
||||
|
||||
DatItem datItem = new Disk();
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Disk.MD5Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Disk.SHA1Key, "DEADBEEF");
|
||||
|
||||
string actual = datItem.GetKey(bucketedBy, machine, source, lower, norename);
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
360
SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs
Normal file
360
SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs
Normal file
@@ -0,0 +1,360 @@
|
||||
using SabreTools.Hashing;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats.Test
|
||||
{
|
||||
public class FileTests
|
||||
{
|
||||
#region ConvertToRom
|
||||
|
||||
[Fact]
|
||||
public void ConvertToRomTest()
|
||||
{
|
||||
Machine machine = new Machine();
|
||||
machine.SetFieldValue(Data.Models.Metadata.Machine.NameKey, "XXXXXX");
|
||||
|
||||
Source source = new Source(0, "XXXXXX");
|
||||
|
||||
var file = new File
|
||||
{
|
||||
Id = "XXXXXX",
|
||||
Extension = "XXXXXX",
|
||||
Size = 12345,
|
||||
CRC = "DEADBEEF",
|
||||
MD5 = "DEADBEEF",
|
||||
SHA1 = "DEADBEEF",
|
||||
SHA256 = "DEADBEEF",
|
||||
Format = "XXXXXX"
|
||||
};
|
||||
file.SetFieldValue(DatItem.DupeTypeKey, DupeType.All | DupeType.External);
|
||||
file.SetFieldValue(DatItem.MachineKey, machine);
|
||||
file.SetFieldValue(DatItem.RemoveKey, (bool?)false);
|
||||
file.SetFieldValue(DatItem.SourceKey, source);
|
||||
file.SetFieldValue(DatItem.MachineKey, machine);
|
||||
file.SetFieldValue(DatItem.SourceKey, source);
|
||||
|
||||
Rom actual = file.ConvertToRom();
|
||||
|
||||
Assert.Equal("XXXXXX.XXXXXX", actual.GetName());
|
||||
Assert.Equal(12345, actual.GetInt64FieldValue(Data.Models.Metadata.Rom.SizeKey));
|
||||
Assert.Equal("deadbeef", actual.GetStringFieldValue(Data.Models.Metadata.Rom.CRCKey));
|
||||
Assert.Equal("000000000000000000000000deadbeef", actual.GetStringFieldValue(Data.Models.Metadata.Rom.MD5Key));
|
||||
Assert.Equal("00000000000000000000000000000000deadbeef", actual.GetStringFieldValue(Data.Models.Metadata.Rom.SHA1Key));
|
||||
Assert.Equal("00000000000000000000000000000000000000000000000000000000deadbeef", actual.GetStringFieldValue(Data.Models.Metadata.Rom.SHA256Key));
|
||||
Assert.Equal(DupeType.All | DupeType.External, actual.GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||
|
||||
Machine? actualMachine = actual.GetMachine();
|
||||
Assert.NotNull(actualMachine);
|
||||
Assert.Equal("XXXXXX", actualMachine.GetName());
|
||||
|
||||
Assert.Equal(false, actual.GetBoolFieldValue(DatItem.RemoveKey));
|
||||
|
||||
Source? actualSource = actual.GetFieldValue<Source?>(DatItem.SourceKey);
|
||||
Assert.NotNull(actualSource);
|
||||
Assert.Equal(0, actualSource.Index);
|
||||
Assert.Equal("XXXXXX", actualSource.Name);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region FillMissingInformation
|
||||
|
||||
[Fact]
|
||||
public void FillMissingInformation_BothEmpty()
|
||||
{
|
||||
File self = new File();
|
||||
File other = new File();
|
||||
|
||||
self.FillMissingInformation(other);
|
||||
|
||||
Assert.Null(self.Size);
|
||||
Assert.Null(self.CRC);
|
||||
Assert.Null(self.MD5);
|
||||
Assert.Null(self.SHA1);
|
||||
Assert.Null(self.SHA256);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void FillMissingInformation_AllMissing()
|
||||
{
|
||||
File self = new File();
|
||||
|
||||
File other = new File
|
||||
{
|
||||
Size = 12345,
|
||||
CRC = "DEADBEEF",
|
||||
MD5 = "DEADBEEF",
|
||||
SHA1 = "DEADBEEF",
|
||||
SHA256 = "DEADBEEF",
|
||||
};
|
||||
|
||||
self.FillMissingInformation(other);
|
||||
|
||||
Assert.Equal(12345, self.Size);
|
||||
Assert.Equal("deadbeef", self.CRC);
|
||||
Assert.Equal("000000000000000000000000deadbeef", self.MD5);
|
||||
Assert.Equal("00000000000000000000000000000000deadbeef", self.SHA1);
|
||||
Assert.Equal("00000000000000000000000000000000000000000000000000000000deadbeef", self.SHA256);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region HasHashes
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_NoHash_False()
|
||||
{
|
||||
File self = new File();
|
||||
bool actual = self.HasHashes();
|
||||
Assert.False(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_CRC_True()
|
||||
{
|
||||
File self = new File
|
||||
{
|
||||
CRC = "deadbeef",
|
||||
MD5 = string.Empty,
|
||||
SHA1 = string.Empty,
|
||||
SHA256 = string.Empty,
|
||||
};
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_MD5_True()
|
||||
{
|
||||
File self = new File
|
||||
{
|
||||
CRC = string.Empty,
|
||||
MD5 = "deadbeef",
|
||||
SHA1 = string.Empty,
|
||||
SHA256 = string.Empty,
|
||||
};
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_SHA1_True()
|
||||
{
|
||||
File self = new File
|
||||
{
|
||||
CRC = string.Empty,
|
||||
MD5 = string.Empty,
|
||||
SHA1 = "deadbeef",
|
||||
SHA256 = string.Empty,
|
||||
};
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_SHA256_True()
|
||||
{
|
||||
File self = new File
|
||||
{
|
||||
CRC = string.Empty,
|
||||
MD5 = string.Empty,
|
||||
SHA1 = string.Empty,
|
||||
SHA256 = "deadbeef",
|
||||
};
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_All_True()
|
||||
{
|
||||
File self = new File
|
||||
{
|
||||
CRC = "deadbeef",
|
||||
MD5 = "deadbeef",
|
||||
SHA1 = "deadbeef",
|
||||
SHA256 = "deadbeef",
|
||||
};
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region HasZeroHash
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_NoHash_True()
|
||||
{
|
||||
File self = new File();
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_NonZeroHash_False()
|
||||
{
|
||||
File self = new File
|
||||
{
|
||||
CRC = "deadbeef",
|
||||
MD5 = "deadbeef",
|
||||
SHA1 = "deadbeef",
|
||||
SHA256 = "deadbeef",
|
||||
};
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.False(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroCRC_True()
|
||||
{
|
||||
File self = new File
|
||||
{
|
||||
CRC = HashType.CRC32.ZeroString,
|
||||
MD5 = string.Empty,
|
||||
SHA1 = string.Empty,
|
||||
SHA256 = string.Empty,
|
||||
};
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroMD5_True()
|
||||
{
|
||||
File self = new File
|
||||
{
|
||||
CRC = string.Empty,
|
||||
MD5 = HashType.MD5.ZeroString,
|
||||
SHA1 = string.Empty,
|
||||
SHA256 = string.Empty,
|
||||
};
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroSHA1_True()
|
||||
{
|
||||
File self = new File
|
||||
{
|
||||
CRC = string.Empty,
|
||||
MD5 = string.Empty,
|
||||
SHA1 = HashType.SHA1.ZeroString,
|
||||
SHA256 = string.Empty,
|
||||
};
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroSHA256_True()
|
||||
{
|
||||
File self = new File
|
||||
{
|
||||
CRC = string.Empty,
|
||||
MD5 = string.Empty,
|
||||
SHA1 = string.Empty,
|
||||
SHA256 = HashType.SHA256.ZeroString,
|
||||
};
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroAll_True()
|
||||
{
|
||||
File self = new File
|
||||
{
|
||||
CRC = HashType.CRC32.ZeroString,
|
||||
MD5 = HashType.MD5.ZeroString,
|
||||
SHA1 = HashType.SHA1.ZeroString,
|
||||
SHA256 = HashType.SHA256.ZeroString,
|
||||
};
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
// TODO: Change when Machine retrieval gets fixed
|
||||
#region GetKey
|
||||
|
||||
[Theory]
|
||||
[InlineData(ItemKey.NULL, false, false, "")]
|
||||
[InlineData(ItemKey.NULL, false, true, "")]
|
||||
[InlineData(ItemKey.NULL, true, false, "")]
|
||||
[InlineData(ItemKey.NULL, true, true, "")]
|
||||
[InlineData(ItemKey.Machine, false, false, "0000000000-Machine")]
|
||||
[InlineData(ItemKey.Machine, false, true, "Machine")]
|
||||
[InlineData(ItemKey.Machine, true, false, "0000000000-machine")]
|
||||
[InlineData(ItemKey.Machine, true, true, "machine")]
|
||||
[InlineData(ItemKey.CRC, false, false, "deadbeef")]
|
||||
[InlineData(ItemKey.CRC, false, true, "deadbeef")]
|
||||
[InlineData(ItemKey.CRC, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.CRC, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.MD2, false, false, "8350e5a3e24c153df2275c9f80692773")]
|
||||
[InlineData(ItemKey.MD2, false, true, "8350e5a3e24c153df2275c9f80692773")]
|
||||
[InlineData(ItemKey.MD2, true, false, "8350e5a3e24c153df2275c9f80692773")]
|
||||
[InlineData(ItemKey.MD2, true, true, "8350e5a3e24c153df2275c9f80692773")]
|
||||
[InlineData(ItemKey.MD4, false, false, "31d6cfe0d16ae931b73c59d7e0c089c0")]
|
||||
[InlineData(ItemKey.MD4, false, true, "31d6cfe0d16ae931b73c59d7e0c089c0")]
|
||||
[InlineData(ItemKey.MD4, true, false, "31d6cfe0d16ae931b73c59d7e0c089c0")]
|
||||
[InlineData(ItemKey.MD4, true, true, "31d6cfe0d16ae931b73c59d7e0c089c0")]
|
||||
[InlineData(ItemKey.MD5, false, false, "000000000000000000000000deadbeef")]
|
||||
[InlineData(ItemKey.MD5, false, true, "000000000000000000000000deadbeef")]
|
||||
[InlineData(ItemKey.MD5, true, false, "000000000000000000000000deadbeef")]
|
||||
[InlineData(ItemKey.MD5, true, true, "000000000000000000000000deadbeef")]
|
||||
[InlineData(ItemKey.SHA1, false, false, "00000000000000000000000000000000deadbeef")]
|
||||
[InlineData(ItemKey.SHA1, false, true, "00000000000000000000000000000000deadbeef")]
|
||||
[InlineData(ItemKey.SHA1, true, false, "00000000000000000000000000000000deadbeef")]
|
||||
[InlineData(ItemKey.SHA1, true, true, "00000000000000000000000000000000deadbeef")]
|
||||
[InlineData(ItemKey.SHA256, false, false, "00000000000000000000000000000000000000000000000000000000deadbeef")]
|
||||
[InlineData(ItemKey.SHA256, false, true, "00000000000000000000000000000000000000000000000000000000deadbeef")]
|
||||
[InlineData(ItemKey.SHA256, true, false, "00000000000000000000000000000000000000000000000000000000deadbeef")]
|
||||
[InlineData(ItemKey.SHA256, true, true, "00000000000000000000000000000000000000000000000000000000deadbeef")]
|
||||
[InlineData(ItemKey.SHA384, false, false, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")]
|
||||
[InlineData(ItemKey.SHA384, false, true, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")]
|
||||
[InlineData(ItemKey.SHA384, true, false, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")]
|
||||
[InlineData(ItemKey.SHA384, true, true, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")]
|
||||
[InlineData(ItemKey.SHA512, false, false, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")]
|
||||
[InlineData(ItemKey.SHA512, false, true, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")]
|
||||
[InlineData(ItemKey.SHA512, true, false, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")]
|
||||
[InlineData(ItemKey.SHA512, true, true, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")]
|
||||
[InlineData(ItemKey.SpamSum, false, false, "3::")]
|
||||
[InlineData(ItemKey.SpamSum, false, true, "3::")]
|
||||
[InlineData(ItemKey.SpamSum, true, false, "3::")]
|
||||
[InlineData(ItemKey.SpamSum, true, true, "3::")]
|
||||
public void GetKeyDBTest(ItemKey bucketedBy, bool lower, bool norename, string expected)
|
||||
{
|
||||
Source source = new Source(0);
|
||||
|
||||
Machine machine = new Machine();
|
||||
machine.SetFieldValue(Data.Models.Metadata.Machine.NameKey, "Machine");
|
||||
|
||||
DatItem datItem = new File
|
||||
{
|
||||
CRC = "DEADBEEF",
|
||||
MD5 = "DEADBEEF",
|
||||
SHA1 = "DEADBEEF",
|
||||
SHA256 = "DEADBEEF",
|
||||
};
|
||||
|
||||
string actual = datItem.GetKey(bucketedBy, machine, source, lower, norename);
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
323
SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs
Normal file
323
SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs
Normal file
@@ -0,0 +1,323 @@
|
||||
using SabreTools.Hashing;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats.Test
|
||||
{
|
||||
public class MediaTests
|
||||
{
|
||||
#region ConvertToRom
|
||||
|
||||
[Fact]
|
||||
public void ConvertToRomTest()
|
||||
{
|
||||
Machine machine = new Machine();
|
||||
machine.SetFieldValue(Data.Models.Metadata.Machine.NameKey, "XXXXXX");
|
||||
|
||||
Source source = new Source(0, "XXXXXX");
|
||||
|
||||
Media media = new Media();
|
||||
media.SetName("XXXXXX");
|
||||
media.SetFieldValue(Data.Models.Metadata.Media.MD5Key, HashType.MD5.ZeroString);
|
||||
media.SetFieldValue(Data.Models.Metadata.Media.SHA1Key, HashType.SHA1.ZeroString);
|
||||
media.SetFieldValue(Data.Models.Metadata.Media.SHA256Key, HashType.SHA256.ZeroString);
|
||||
media.SetFieldValue(Data.Models.Metadata.Media.SpamSumKey, HashType.SpamSum.ZeroString);
|
||||
media.SetFieldValue(DatItem.DupeTypeKey, DupeType.All | DupeType.External);
|
||||
media.SetFieldValue(DatItem.MachineKey, machine);
|
||||
media.SetFieldValue(DatItem.RemoveKey, (bool?)false);
|
||||
media.SetFieldValue(DatItem.SourceKey, source);
|
||||
|
||||
Rom actual = media.ConvertToRom();
|
||||
|
||||
Assert.Equal("XXXXXX.aaruf", actual.GetName());
|
||||
Assert.Equal(HashType.MD5.ZeroString, actual.GetStringFieldValue(Data.Models.Metadata.Rom.MD5Key));
|
||||
Assert.Equal(HashType.SHA1.ZeroString, actual.GetStringFieldValue(Data.Models.Metadata.Rom.SHA1Key));
|
||||
Assert.Equal(HashType.SHA256.ZeroString, actual.GetStringFieldValue(Data.Models.Metadata.Rom.SHA256Key));
|
||||
Assert.Equal(HashType.SpamSum.ZeroString, actual.GetStringFieldValue(Data.Models.Metadata.Rom.SpamSumKey));
|
||||
Assert.Equal(DupeType.All | DupeType.External, actual.GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||
|
||||
Machine? actualMachine = actual.GetMachine();
|
||||
Assert.NotNull(actualMachine);
|
||||
Assert.Equal("XXXXXX", actualMachine.GetName());
|
||||
|
||||
Assert.Equal(false, actual.GetBoolFieldValue(DatItem.RemoveKey));
|
||||
|
||||
Source? actualSource = actual.GetFieldValue<Source?>(DatItem.SourceKey);
|
||||
Assert.NotNull(actualSource);
|
||||
Assert.Equal(0, actualSource.Index);
|
||||
Assert.Equal("XXXXXX", actualSource.Name);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region FillMissingInformation
|
||||
|
||||
[Fact]
|
||||
public void FillMissingInformation_BothEmpty()
|
||||
{
|
||||
Media self = new Media();
|
||||
Media other = new Media();
|
||||
|
||||
self.FillMissingInformation(other);
|
||||
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Media.MD5Key));
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Media.SHA1Key));
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Media.SHA256Key));
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Media.SpamSumKey));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void FillMissingInformation_AllMissing()
|
||||
{
|
||||
Media self = new Media();
|
||||
|
||||
Media other = new Media();
|
||||
other.SetFieldValue(Data.Models.Metadata.Media.MD5Key, "XXXXXX");
|
||||
other.SetFieldValue(Data.Models.Metadata.Media.SHA1Key, "XXXXXX");
|
||||
other.SetFieldValue(Data.Models.Metadata.Media.SHA256Key, "XXXXXX");
|
||||
other.SetFieldValue(Data.Models.Metadata.Media.SpamSumKey, "XXXXXX");
|
||||
|
||||
self.FillMissingInformation(other);
|
||||
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Media.MD5Key));
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Media.SHA1Key));
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Media.SHA256Key));
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Media.SpamSumKey));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region HasHashes
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_NoHash_False()
|
||||
{
|
||||
Media self = new Media();
|
||||
bool actual = self.HasHashes();
|
||||
Assert.False(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_MD5_True()
|
||||
{
|
||||
Media self = new Media();
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.MD5Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_SHA1_True()
|
||||
{
|
||||
Media self = new Media();
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA1Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_SHA256_True()
|
||||
{
|
||||
Media self = new Media();
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA256Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_SpamSum_True()
|
||||
{
|
||||
Media self = new Media();
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SpamSumKey, "XXXXXX");
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_All_True()
|
||||
{
|
||||
Media self = new Media();
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.MD5Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA1Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA256Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SpamSumKey, "XXXXXX");
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region HasZeroHash
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_NoHash_True()
|
||||
{
|
||||
Media self = new Media();
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_NonZeroHash_False()
|
||||
{
|
||||
Media self = new Media();
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.MD5Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA1Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA256Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SpamSumKey, "XXXXXX");
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.False(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroMD5_True()
|
||||
{
|
||||
Media self = new Media();
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.MD5Key, HashType.MD5.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroSHA1_True()
|
||||
{
|
||||
Media self = new Media();
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA1Key, HashType.SHA1.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroSHA256_True()
|
||||
{
|
||||
Media self = new Media();
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA256Key, HashType.SHA256.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroSpamSum_True()
|
||||
{
|
||||
Media self = new Media();
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SpamSumKey, HashType.SpamSum.ZeroString);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroAll_True()
|
||||
{
|
||||
Media self = new Media();
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.MD5Key, HashType.MD5.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA1Key, HashType.SHA1.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SHA256Key, HashType.SHA256.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Media.SpamSumKey, HashType.SpamSum.ZeroString);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
// TODO: Change when Machine retrieval gets fixed
|
||||
#region GetKey
|
||||
|
||||
[Theory]
|
||||
[InlineData(ItemKey.NULL, false, false, "")]
|
||||
[InlineData(ItemKey.NULL, false, true, "")]
|
||||
[InlineData(ItemKey.NULL, true, false, "")]
|
||||
[InlineData(ItemKey.NULL, true, true, "")]
|
||||
[InlineData(ItemKey.Machine, false, false, "0000000000-Machine")]
|
||||
[InlineData(ItemKey.Machine, false, true, "Machine")]
|
||||
[InlineData(ItemKey.Machine, true, false, "0000000000-machine")]
|
||||
[InlineData(ItemKey.Machine, true, true, "machine")]
|
||||
[InlineData(ItemKey.CRC, false, false, "00000000")]
|
||||
[InlineData(ItemKey.CRC, false, true, "00000000")]
|
||||
[InlineData(ItemKey.CRC, true, false, "00000000")]
|
||||
[InlineData(ItemKey.CRC, true, true, "00000000")]
|
||||
[InlineData(ItemKey.MD2, false, false, "8350e5a3e24c153df2275c9f80692773")]
|
||||
[InlineData(ItemKey.MD2, false, true, "8350e5a3e24c153df2275c9f80692773")]
|
||||
[InlineData(ItemKey.MD2, true, false, "8350e5a3e24c153df2275c9f80692773")]
|
||||
[InlineData(ItemKey.MD2, true, true, "8350e5a3e24c153df2275c9f80692773")]
|
||||
[InlineData(ItemKey.MD4, false, false, "31d6cfe0d16ae931b73c59d7e0c089c0")]
|
||||
[InlineData(ItemKey.MD4, false, true, "31d6cfe0d16ae931b73c59d7e0c089c0")]
|
||||
[InlineData(ItemKey.MD4, true, false, "31d6cfe0d16ae931b73c59d7e0c089c0")]
|
||||
[InlineData(ItemKey.MD4, true, true, "31d6cfe0d16ae931b73c59d7e0c089c0")]
|
||||
[InlineData(ItemKey.MD5, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.MD5, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.MD5, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.MD5, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA1, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA1, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA1, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA1, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA256, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA256, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA256, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA256, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA384, false, false, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")]
|
||||
[InlineData(ItemKey.SHA384, false, true, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")]
|
||||
[InlineData(ItemKey.SHA384, true, false, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")]
|
||||
[InlineData(ItemKey.SHA384, true, true, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b")]
|
||||
[InlineData(ItemKey.SHA512, false, false, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")]
|
||||
[InlineData(ItemKey.SHA512, false, true, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")]
|
||||
[InlineData(ItemKey.SHA512, true, false, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")]
|
||||
[InlineData(ItemKey.SHA512, true, true, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")]
|
||||
[InlineData(ItemKey.SpamSum, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SpamSum, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SpamSum, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.SpamSum, true, true, "deadbeef")]
|
||||
public void GetKeyDBTest(ItemKey bucketedBy, bool lower, bool norename, string expected)
|
||||
{
|
||||
Source source = new Source(0);
|
||||
|
||||
Machine machine = new Machine();
|
||||
machine.SetFieldValue(Data.Models.Metadata.Machine.NameKey, "Machine");
|
||||
|
||||
DatItem datItem = new Media();
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Media.MD5Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Media.SHA1Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Media.SHA256Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Media.SpamSumKey, "DEADBEEF");
|
||||
|
||||
string actual = datItem.GetKey(bucketedBy, machine, source, lower, norename);
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
672
SabreTools.Metadata.DatItems.Test/Formats/RomTests.cs
Normal file
672
SabreTools.Metadata.DatItems.Test/Formats/RomTests.cs
Normal file
@@ -0,0 +1,672 @@
|
||||
using SabreTools.Hashing;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats.Test
|
||||
{
|
||||
public class RomTests
|
||||
{
|
||||
#region FillMissingInformation
|
||||
|
||||
[Fact]
|
||||
public void FillMissingInformation_BothEmpty()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
Rom other = new Rom();
|
||||
|
||||
self.FillMissingInformation(other);
|
||||
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Rom.CRCKey));
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Rom.MD2Key));
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Rom.MD4Key));
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Rom.MD5Key));
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key));
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key));
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Rom.SHA1Key));
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Rom.SHA256Key));
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Rom.SHA384Key));
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Rom.SHA512Key));
|
||||
Assert.Null(self.GetStringFieldValue(Data.Models.Metadata.Rom.SpamSumKey));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void FillMissingInformation_AllMissing()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
|
||||
Rom other = new Rom();
|
||||
other.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, "XXXXXX");
|
||||
other.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, "XXXXXX");
|
||||
other.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, "XXXXXX");
|
||||
other.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, "XXXXXX");
|
||||
other.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, "XXXXXX");
|
||||
other.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, "XXXXXX");
|
||||
other.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, "XXXXXX");
|
||||
other.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, "XXXXXX");
|
||||
other.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, "XXXXXX");
|
||||
other.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, "XXXXXX");
|
||||
other.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, "XXXXXX");
|
||||
|
||||
self.FillMissingInformation(other);
|
||||
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Rom.CRCKey));
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Rom.MD2Key));
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Rom.MD4Key));
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Rom.MD5Key));
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key));
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key));
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Rom.SHA1Key));
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Rom.SHA256Key));
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Rom.SHA384Key));
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Rom.SHA512Key));
|
||||
Assert.Equal("XXXXXX", self.GetStringFieldValue(Data.Models.Metadata.Rom.SpamSumKey));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region HasHashes
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_NoHash_False()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
bool actual = self.HasHashes();
|
||||
Assert.False(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_CRC_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_MD2_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_MD4_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_MD5_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_RIPEMD128_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_RIPEMD160_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_SHA1_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_SHA256_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_SHA384_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_SHA512_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_SpamSum_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, "XXXXXX");
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasHashes_All_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, "XXXXXX");
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region HasZeroHash
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_NoHash_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_NonZeroHash_False()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, "XXXXXX");
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, "XXXXXX");
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.False(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroCRC_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, HashType.CRC32.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroMD2_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, HashType.MD2.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroMD4_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, HashType.MD4.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroMD5_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, HashType.MD5.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroRIPEMD128_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, HashType.RIPEMD128.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroRIPEMD160_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, HashType.RIPEMD160.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroSHA1_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, HashType.SHA1.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroSHA256_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, HashType.SHA256.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroSHA384_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, HashType.SHA384.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroSHA512_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, HashType.SHA512.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, string.Empty);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroSpamSum_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, string.Empty);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, HashType.SpamSum.ZeroString);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroAll_True()
|
||||
{
|
||||
Rom self = new Rom();
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, HashType.CRC32.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, HashType.MD2.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, HashType.MD4.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, HashType.MD5.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, HashType.RIPEMD128.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, HashType.RIPEMD160.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, HashType.SHA1.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, HashType.SHA256.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, HashType.SHA384.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, HashType.SHA512.ZeroString);
|
||||
self.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, HashType.SpamSum.ZeroString);
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
// TODO: Change when Machine retrieval gets fixed
|
||||
#region GetKey
|
||||
|
||||
[Theory]
|
||||
[InlineData(ItemKey.NULL, false, false, "")]
|
||||
[InlineData(ItemKey.NULL, false, true, "")]
|
||||
[InlineData(ItemKey.NULL, true, false, "")]
|
||||
[InlineData(ItemKey.NULL, true, true, "")]
|
||||
[InlineData(ItemKey.Machine, false, false, "0000000000-Machine")]
|
||||
[InlineData(ItemKey.Machine, false, true, "Machine")]
|
||||
[InlineData(ItemKey.Machine, true, false, "0000000000-machine")]
|
||||
[InlineData(ItemKey.Machine, true, true, "machine")]
|
||||
[InlineData(ItemKey.CRC, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.CRC, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.CRC, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.CRC, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.MD2, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.MD2, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.MD2, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.MD2, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.MD4, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.MD4, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.MD4, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.MD4, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.MD5, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.MD5, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.MD5, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.MD5, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.RIPEMD128, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.RIPEMD128, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.RIPEMD128, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.RIPEMD128, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.RIPEMD160, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.RIPEMD160, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.RIPEMD160, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.RIPEMD160, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA1, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA1, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA1, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA1, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA256, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA256, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA256, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA256, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA384, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA384, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA384, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA384, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA512, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA512, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SHA512, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.SHA512, true, true, "deadbeef")]
|
||||
[InlineData(ItemKey.SpamSum, false, false, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SpamSum, false, true, "DEADBEEF")]
|
||||
[InlineData(ItemKey.SpamSum, true, false, "deadbeef")]
|
||||
[InlineData(ItemKey.SpamSum, true, true, "deadbeef")]
|
||||
public void GetKeyDBTest(ItemKey bucketedBy, bool lower, bool norename, string expected)
|
||||
{
|
||||
Source source = new Source(0);
|
||||
|
||||
Machine machine = new Machine();
|
||||
machine.SetFieldValue(Data.Models.Metadata.Machine.NameKey, "Machine");
|
||||
|
||||
DatItem datItem = new Rom();
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.MD2Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.MD4Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.MD5Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.SHA1Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.SHA256Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.SHA384Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.SHA512Key, "DEADBEEF");
|
||||
datItem.SetFieldValue(Data.Models.Metadata.Rom.SpamSumKey, "DEADBEEF");
|
||||
|
||||
string actual = datItem.GetKey(bucketedBy, machine, source, lower, norename);
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
87
SabreTools.Metadata.DatItems.Test/MachineTests.cs
Normal file
87
SabreTools.Metadata.DatItems.Test/MachineTests.cs
Normal file
@@ -0,0 +1,87 @@
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Test
|
||||
{
|
||||
public class MachineTests
|
||||
{
|
||||
#region Clone
|
||||
|
||||
[Fact]
|
||||
public void CloneTest()
|
||||
{
|
||||
Machine item = new Machine();
|
||||
item.SetFieldValue(Data.Models.Metadata.Machine.NameKey, "name");
|
||||
|
||||
object clone = item.Clone();
|
||||
Machine? actual = clone as Machine;
|
||||
Assert.NotNull(actual);
|
||||
Assert.Equal("name", actual.GetName());
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region GetInternalClone
|
||||
|
||||
[Fact]
|
||||
public void GetInternalCloneTest()
|
||||
{
|
||||
Machine item = new Machine();
|
||||
item.SetFieldValue(Data.Models.Metadata.Machine.NameKey, "name");
|
||||
|
||||
Data.Models.Metadata.Machine actual = item.GetInternalClone();
|
||||
Assert.Equal("name", actual[Data.Models.Metadata.Machine.NameKey]);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Equals
|
||||
|
||||
[Fact]
|
||||
public void Equals_Null_False()
|
||||
{
|
||||
Machine self = new Machine();
|
||||
Machine? other = null;
|
||||
|
||||
bool actual = self.Equals(other);
|
||||
Assert.False(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Equals_DefaultInternal_True()
|
||||
{
|
||||
Machine self = new Machine();
|
||||
Machine? other = new Machine();
|
||||
|
||||
bool actual = self.Equals(other);
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Equals_MismatchedInternal_False()
|
||||
{
|
||||
Machine self = new Machine();
|
||||
self.SetFieldValue(Data.Models.Metadata.Machine.NameKey, "self");
|
||||
|
||||
Machine? other = new Machine();
|
||||
other.SetFieldValue(Data.Models.Metadata.Machine.NameKey, "other");
|
||||
|
||||
bool actual = self.Equals(other);
|
||||
Assert.False(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Equals_EqualInternal_True()
|
||||
{
|
||||
Machine self = new Machine();
|
||||
self.SetFieldValue(Data.Models.Metadata.Machine.NameKey, "name");
|
||||
|
||||
Machine? other = new Machine();
|
||||
other.SetFieldValue(Data.Models.Metadata.Machine.NameKey, "name");
|
||||
|
||||
bool actual = self.Equals(other);
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net8.0;net9.0;net10.0</TargetFrameworks>
|
||||
<IsPackable>false</IsPackable>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="coverlet.collector" Version="8.0.1" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.3.0" />
|
||||
<PackageReference Include="SabreTools.Hashing" Version="[2.0.0]" />
|
||||
<PackageReference Include="xunit" Version="2.9.3" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SabreTools.Metadata.DatItems\SabreTools.Metadata.DatItems.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
23
SabreTools.Metadata.DatItems.Test/SourceTests.cs
Normal file
23
SabreTools.Metadata.DatItems.Test/SourceTests.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Test
|
||||
{
|
||||
public class SourceTests
|
||||
{
|
||||
#region Clone
|
||||
|
||||
[Fact]
|
||||
public void CloneTest()
|
||||
{
|
||||
Source item = new Source(1, source: "src");
|
||||
|
||||
object clone = item.Clone();
|
||||
Source? actual = clone as Source;
|
||||
Assert.NotNull(actual);
|
||||
Assert.Equal(1, actual.Index);
|
||||
Assert.Equal("src", actual.Name);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user