Files
SabreTools/SabreTools.Test/DatItems/DatItemTests.cs

122 lines
4.5 KiB
C#
Raw Normal View History

using SabreTools.DatItems;
2021-02-02 10:23:43 -08:00
using SabreTools.DatItems.Formats;
using Xunit;
namespace SabreTools.Test.DatItems
{
public class DatItemTests
{
[Fact]
public void DuplicateStatusUnequalTest()
{
var rom = new Rom();
var disk = new Disk();
var actual = rom.GetDuplicateStatus(disk);
Assert.Equal((DupeType)0x00, actual);
}
[Fact]
public void DuplicateStatusExternalAllTest()
{
2024-03-09 23:43:43 -05:00
var machineA = new Machine();
machineA.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "name-same");
var machineB = new Machine();
machineB.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "name-same");
2024-03-10 16:49:07 -04:00
var romA = new Rom();
2024-03-08 21:12:13 -05:00
romA.SetName("same-name");
2024-03-09 21:34:26 -05:00
romA.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
2024-10-19 23:17:37 -04:00
romA.SetFieldValue<Source?>(DatItem.SourceKey, new Source(0));
2024-03-09 23:43:43 -05:00
romA.CopyMachineInformation(machineA);
2024-03-09 21:34:26 -05:00
2024-03-10 16:49:07 -04:00
var romB = new Rom();
2024-03-08 21:12:13 -05:00
romB.SetName("same-name");
2024-03-09 21:34:26 -05:00
romB.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
2024-10-19 23:17:37 -04:00
romB.SetFieldValue<Source?>(DatItem.SourceKey, new Source(1));
2024-03-09 23:43:43 -05:00
romB.CopyMachineInformation(machineB);
var actual = romA.GetDuplicateStatus(romB);
Assert.Equal(DupeType.External | DupeType.All, actual);
}
[Fact]
public void DuplicateStatusExternalHashTest()
{
2024-03-09 23:43:43 -05:00
var machineA = new Machine();
machineA.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "name-same");
var machineB = new Machine();
machineB.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "not-name-same");
2024-03-10 16:49:07 -04:00
var romA = new Rom();
2024-03-08 21:12:13 -05:00
romA.SetName("same-name");
2024-03-09 21:34:26 -05:00
romA.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
2024-10-19 23:17:37 -04:00
romA.SetFieldValue<Source?>(DatItem.SourceKey, new Source(0));
2024-03-09 23:43:43 -05:00
romA.CopyMachineInformation(machineA);
2024-03-09 21:34:26 -05:00
2024-03-10 16:49:07 -04:00
var romB = new Rom();
2024-03-08 21:12:13 -05:00
romB.SetName("same-name");
2024-03-09 21:34:26 -05:00
romB.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
2024-10-19 23:17:37 -04:00
romB.SetFieldValue<Source?>(DatItem.SourceKey, new Source(1));
2024-03-09 23:43:43 -05:00
romB.CopyMachineInformation(machineB);
var actual = romA.GetDuplicateStatus(romB);
Assert.Equal(DupeType.External | DupeType.Hash, actual);
}
[Fact]
public void DuplicateStatusInternalAllTest()
{
2024-03-09 23:43:43 -05:00
var machineA = new Machine();
machineA.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "name-same");
var machineB = new Machine();
machineB.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "name-same");
2024-03-10 16:49:07 -04:00
var romA = new Rom();
2024-03-08 21:12:13 -05:00
romA.SetName("same-name");
2024-03-09 21:34:26 -05:00
romA.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
2024-10-19 23:17:37 -04:00
romA.SetFieldValue<Source?>(DatItem.SourceKey, new Source(0));
2024-03-09 23:43:43 -05:00
romA.CopyMachineInformation(machineA);
2024-03-09 21:34:26 -05:00
2024-03-10 16:49:07 -04:00
var romB = new Rom();
2024-03-08 21:12:13 -05:00
romB.SetName("same-name");
2024-03-09 21:34:26 -05:00
romB.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
2024-10-19 23:17:37 -04:00
romB.SetFieldValue<Source?>(DatItem.SourceKey, new Source(0));
2024-03-09 23:43:43 -05:00
romB.CopyMachineInformation(machineB);
var actual = romA.GetDuplicateStatus(romB);
Assert.Equal(DupeType.Internal | DupeType.All, actual);
}
[Fact]
public void DuplicateStatusInternalHashTest()
{
2024-03-09 23:43:43 -05:00
var machineA = new Machine();
machineA.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "name-same");
var machineB = new Machine();
machineB.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "not-name-same");
2024-03-10 16:49:07 -04:00
var romA = new Rom();
2024-03-08 21:12:13 -05:00
romA.SetName("same-name");
2024-03-09 21:34:26 -05:00
romA.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
2024-10-19 23:17:37 -04:00
romA.SetFieldValue<Source?>(DatItem.SourceKey, new Source(0));
2024-03-09 23:43:43 -05:00
romA.CopyMachineInformation(machineA);
2024-03-09 21:34:26 -05:00
2024-03-10 16:49:07 -04:00
var romB = new Rom();
2024-03-08 21:12:13 -05:00
romB.SetName("same-name");
2024-03-09 21:34:26 -05:00
romB.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
2024-10-19 23:17:37 -04:00
romB.SetFieldValue<Source?>(DatItem.SourceKey, new Source(0));
2024-03-09 23:43:43 -05:00
romB.CopyMachineInformation(machineB);
var actual = romA.GetDuplicateStatus(romB);
Assert.Equal(DupeType.Internal | DupeType.Hash, actual);
}
// TODO: Add tests for DatItem.Merge
// TODO: Add tests for ResolveNames
// TODO: Add tests for Sort
}
}