Add setters and getters for Machine

This commit is contained in:
Matt Nadareski
2024-03-09 23:43:43 -05:00
parent f37e3a07da
commit c2e30138db
55 changed files with 534 additions and 890 deletions

View File

@@ -15,29 +15,39 @@ namespace SabreTools.Test.DatFiles
public void BucketByTest(ItemKey itemKey, int expected)
{
// Setup the items
var rom1 = new Rom { Machine = new Machine { Name = "game-1" } };
var machine1 = new Machine();
machine1.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "game-1");
var machine2 = new Machine();
machine2.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "game-2");
var rom1 = new Rom();
rom1.SetName("rom-1");
rom1.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, "DEADBEEF");
rom1.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6");
rom1.SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, 1024);
rom1.CopyMachineInformation(machine1);
var rom2 = new Rom { Machine = new Machine { Name = "game-1" } };
var rom2 = new Rom();
rom2.SetName("rom-2");
rom2.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, "DEADBEEF");
rom2.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44");
rom2.SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, 1024);
rom1.CopyMachineInformation(machine1);
var rom3 = new Rom { Machine = new Machine { Name = "game-2" } };
var rom3 = new Rom();
rom3.SetName("rom-3");
rom3.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, "DEADBEEF");
rom3.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, "00000ea4014ce66679e7e17d56ac510f67e39e26");
rom3.SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, 1024);
rom1.CopyMachineInformation(machine2);
var rom4 = new Rom { Machine = new Machine { Name = "game-2" } };
var rom4 = new Rom();
rom4.SetName("rom-4");
rom4.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, "DEADBEEF");
rom4.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, "00000151d437442e74e5134023fab8bf694a2487");
rom4.SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, 1024);
rom1.CopyMachineInformation(machine2);
// Setup the dictionary
var dict = new ItemDictionary
@@ -49,7 +59,7 @@ namespace SabreTools.Test.DatFiles
dict.BucketBy(itemKey, DedupeType.None);
Assert.Equal(expected, dict.Keys.Count);
}
[Fact]
public void ClearEmptyTest()
{
@@ -69,17 +79,22 @@ namespace SabreTools.Test.DatFiles
public void ClearMarkedTest()
{
// Setup the items
var rom1 = new Rom { Machine = new Machine { Name = "game-1" } };
var machine1 = new Machine();
machine1.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "game-1");
var rom1 = new Rom();
rom1.SetName("rom-1");
rom1.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, "DEADBEEF");
rom1.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6");
rom1.SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, 1024);
rom1.CopyMachineInformation(machine1);
var rom2 = new Rom { Machine = new Machine { Name = "game-1" }, Remove = true };
var rom2 = new Rom { Remove = true };
rom2.SetName("rom-2");
rom2.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, "DEADBEEF");
rom2.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44");
rom2.SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, 1024);
rom1.CopyMachineInformation(machine1);
// Setup the dictionary
var dict = new ItemDictionary
@@ -93,22 +108,27 @@ namespace SabreTools.Test.DatFiles
Assert.NotNull(dict[key]);
Assert.Single(dict[key]!);
}
[Theory]
[InlineData(true, 1)]
[InlineData(false, 0)]
public void GetDuplicatesTest(bool hasDuplicate, int expected)
{
// Setup the items
var rom1 = new Rom { Machine = new Machine { Name = "game-1" } };
var machine1 = new Machine();
machine1.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "game-1");
var rom1 = new Rom();
rom1.SetName("rom-1");
rom1.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6");
rom1.SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, 1024);
rom1.CopyMachineInformation(machine1);
var rom2 = new Rom { Machine = new Machine { Name = "game-1" } };
var rom2 = new Rom();
rom2.SetName("rom-2");
rom2.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44");
rom2.SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, 1024);
rom1.CopyMachineInformation(machine1);
// Setup the dictionary
var dict = new ItemDictionary
@@ -117,30 +137,36 @@ namespace SabreTools.Test.DatFiles
};
// Setup the test item
var rom = new Rom { Machine = new Machine { Name = "game-1" } };
var rom = new Rom();
rom.SetName("rom-1");
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6");
rom.SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, hasDuplicate ? 1024 : 2048);
rom1.CopyMachineInformation(machine1);
var actual = dict.GetDuplicates(rom);
Assert.Equal(expected, actual.Count);
}
[Theory]
[InlineData(true)]
[InlineData(false)]
public void HasDuplicatesTest(bool expected)
{
// Setup the items
var rom1 = new Rom { Machine = new Machine { Name = "game-1" } };
var machine1 = new Machine();
machine1.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "game-1");
var rom1 = new Rom();
rom1.SetName("rom-1");
rom1.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6");
rom1.SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, 1024);
rom1.CopyMachineInformation(machine1);
var rom2 = new Rom { Machine = new Machine { Name = "game-1" } };
var rom2 = new Rom();
rom2.SetName("rom-2");
rom2.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44");
rom2.SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, 1024);
rom1.CopyMachineInformation(machine1);
// Setup the dictionary
var dict = new ItemDictionary
@@ -149,15 +175,16 @@ namespace SabreTools.Test.DatFiles
};
// Setup the test item
var rom = new Rom { Machine = new Machine { Name = "game-1" } };
var rom = new Rom();
rom.SetName("rom-1");
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, "0000000fbbb37f8488100b1b4697012de631a5e6");
rom.SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, expected ? 1024 : 2048);
rom1.CopyMachineInformation(machine1);
bool actual = dict.HasDuplicates(rom);
Assert.Equal(expected, actual);
}
[Fact]
public void ResetStatisticsTest()
{

View File

@@ -24,7 +24,7 @@ namespace SabreTools.Test.DatFiles
var setter = new Setter();
setter.PopulateSetters("machine.name", "foo");
setter.SetFields(datItem.Machine);
Assert.Equal("foo", datItem.Machine.Name);
Assert.Equal("foo", datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey));
}
/// <summary>
@@ -32,15 +32,13 @@ namespace SabreTools.Test.DatFiles
/// </summary>
private static DatItem CreateDatItem()
{
var rom = new Rom
{
Machine = new Machine
{
Name = "bar",
Description = "bar",
}
};
var machine = new Machine();
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "bar");
machine.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, "bar");
var rom = new Rom { Machine = machine };
rom.SetName("foo");
return rom;
}
}

View File

@@ -47,21 +47,27 @@ namespace SabreTools.Test.DatItems
[Fact]
public void DuplicateStatusExternalAllTest()
{
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");
var romA = new Rom
{
Machine = new Machine { Name = "name-same" },
Source = new Source { Index = 0 },
};
romA.SetName("same-name");
romA.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
romA.CopyMachineInformation(machineA);
var romB = new Rom
{
Machine = new Machine { Name = "name-same" },
Source = new Source { Index = 1 },
};
romB.SetName("same-name");
romB.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
romB.CopyMachineInformation(machineB);
var actual = romA.GetDuplicateStatus(romB);
Assert.Equal(DupeType.External | DupeType.All, actual);
@@ -70,21 +76,27 @@ namespace SabreTools.Test.DatItems
[Fact]
public void DuplicateStatusExternalHashTest()
{
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");
var romA = new Rom
{
Machine = new Machine { Name = "name-same" },
Source = new Source { Index = 0 },
};
romA.SetName("same-name");
romA.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
romA.CopyMachineInformation(machineA);
var romB = new Rom
{
Machine = new Machine { Name = "not-name-same" },
Source = new Source { Index = 1 },
};
romB.SetName("same-name");
romB.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
romB.CopyMachineInformation(machineB);
var actual = romA.GetDuplicateStatus(romB);
Assert.Equal(DupeType.External | DupeType.Hash, actual);
@@ -93,21 +105,27 @@ namespace SabreTools.Test.DatItems
[Fact]
public void DuplicateStatusInternalAllTest()
{
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");
var romA = new Rom
{
Machine = new Machine { Name = "name-same" },
Source = new Source { Index = 0 },
};
romA.SetName("same-name");
romA.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
romA.CopyMachineInformation(machineA);
var romB = new Rom
{
Machine = new Machine { Name = "name-same" },
Source = new Source { Index = 0 },
};
romB.SetName("same-name");
romB.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
romB.CopyMachineInformation(machineB);
var actual = romA.GetDuplicateStatus(romB);
Assert.Equal(DupeType.Internal | DupeType.All, actual);
@@ -116,21 +134,27 @@ namespace SabreTools.Test.DatItems
[Fact]
public void DuplicateStatusInternalHashTest()
{
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");
var romA = new Rom
{
Machine = new Machine { Name = "name-same" },
Source = new Source { Index = 0 },
};
romA.SetName("same-name");
romA.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
romA.CopyMachineInformation(machineA);
var romB = new Rom
{
Machine = new Machine { Name = "not-name-same" },
Source = new Source { Index = 0 },
};
romB.SetName("same-name");
romB.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
romB.CopyMachineInformation(machineB);
var actual = romA.GetDuplicateStatus(romB);
Assert.Equal(DupeType.Internal | DupeType.Hash, actual);

View File

@@ -68,15 +68,13 @@ namespace SabreTools.Test.Filter
/// </summary>
private static DatItem CreateDatItem()
{
var rom = new Rom
{
Machine = new Machine
{
Name = "bar",
Description = "bar",
}
};
var machine = new Machine();
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "bar");
machine.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, "bar");
var rom = new Rom { Machine = machine };
rom.SetName("foo");
return rom;
}
}

View File

@@ -24,8 +24,8 @@ namespace SabreTools.Test.Filtering
// Check the fields
Assert.Equal("nam", datItem.GetName());
Assert.Equal("nam-2", datItem.Machine.Name);
Assert.Equal("nam-3", datItem.Machine.Description);
Assert.Equal("nam-2", datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey));
Assert.Equal("nam-3", datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey));
}
[Fact]
@@ -45,8 +45,8 @@ namespace SabreTools.Test.Filtering
// Check the fields
Assert.Equal("name", datItem.GetName());
Assert.Equal("'AB'", datItem.Machine.Name);
Assert.Equal("ae-Zh", datItem.Machine.Description);
Assert.Equal("'AB'", datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey));
Assert.Equal("ae-Zh", datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey));
}
[Fact]
@@ -66,8 +66,8 @@ namespace SabreTools.Test.Filtering
// Check the fields
Assert.Equal("name", datItem.GetName());
Assert.Equal("!", datItem.Machine.Name);
Assert.Equal("name-3", datItem.Machine.Description);
Assert.Equal("!", datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey));
Assert.Equal("name-3", datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey));
}
[Theory]
@@ -92,8 +92,8 @@ namespace SabreTools.Test.Filtering
// Check the fields
Assert.Equal(expected, datItem.GetName());
Assert.Equal("name-2", datItem.Machine.Name);
Assert.Equal("name-3", datItem.Machine.Description);
Assert.Equal("name-2", datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey));
Assert.Equal("name-3", datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey));
}
[Fact]
@@ -107,23 +107,21 @@ namespace SabreTools.Test.Filtering
// Check the fields
Assert.Equal("name", datItem.GetName());
Assert.Equal("name-2/name", datItem.Machine.Name);
Assert.Equal("name-2/name", datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey));
}
/// <summary>
/// Generate a consistent DatItem for testing
/// </summary>
private static DatItem CreateDatItem(string name, string machine, string desc)
private static DatItem CreateDatItem(string name, string machName, string desc)
{
var rom = new Rom
{
Machine = new Machine
{
Name = machine,
Description = desc,
}
};
var machine = new Machine();
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, machName);
machine.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, desc);
var rom = new Rom { Machine = machine };
rom.SetName(name);
return rom;
}
}

View File

@@ -24,7 +24,7 @@ namespace SabreTools.Test.Filtering
var remover = new Remover();
remover.PopulateExclusions("Machine.Name");
remover.RemoveFields(datItem);
Assert.Null(datItem.Machine.Name);
Assert.Null(datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey));
}
/// <summary>
@@ -32,15 +32,13 @@ namespace SabreTools.Test.Filtering
/// </summary>
private static DatItem CreateDatItem()
{
var rom = new Rom
{
Machine = new Machine
{
Name = "bar",
Description = "bar",
}
};
var machine = new Machine();
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "bar");
machine.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, "bar");
var rom = new Rom { Machine = machine };
rom.SetName("foo");
return rom;
}
}

View File

@@ -29,10 +29,10 @@ namespace SabreTools.Test.Filtering
{
var datItem = CreateDatItem();
var repDatItem = CreateDatItem();
repDatItem.Machine.Name = "foo";
repDatItem.Machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "foo");
List<string> fields = [Models.Metadata.Machine.NameKey];
Replacer.ReplaceFields(datItem.Machine, repDatItem.Machine, fields, false);
Assert.Equal("foo", datItem.Machine.Name);
Assert.Equal("foo", datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey));
}
/// <summary>
@@ -40,15 +40,13 @@ namespace SabreTools.Test.Filtering
/// </summary>
private static DatItem CreateDatItem()
{
var rom = new Rom
{
Machine = new Machine
{
Name = "bar",
Description = "bar",
}
};
var machine = new Machine();
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "bar");
machine.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, "bar");
var rom = new Rom { Machine = machine };
rom.SetName("foo");
return rom;
}
}