Update and move Replacer tests

This commit is contained in:
Matt Nadareski
2025-02-12 12:36:42 -05:00
parent f9dd946f0b
commit 5d70556de2
2 changed files with 51 additions and 7 deletions

View File

@@ -1,15 +1,15 @@
using System.Collections.Generic;
using SabreTools.DatFiles;
using SabreTools.DatItems;
using SabreTools.DatItems.Formats;
using Xunit;
namespace SabreTools.Test.Filtering
namespace SabreTools.DatFiles.Test
{
// TODO: Add tests for 4 special items and one generic item
public class ReplacerTests
{
[Fact]
public void ReplaceFieldsDatItemTest()
public void ReplaceFields_DatItem()
{
var datItem = CreateDatItem();
var repDatItem = CreateDatItem();
@@ -18,19 +18,29 @@ namespace SabreTools.Test.Filtering
{
["item"] = [Models.Metadata.Rom.NameKey]
};
Replacer.ReplaceFields(datItem, repDatItem, fields);
Assert.Equal("bar", datItem.GetName());
}
[Fact]
public void ReplaceFieldsMachineTest()
public void ReplaceFields_Machine()
{
var datItem = CreateDatItem();
var machine = datItem.GetFieldValue<Machine>(DatItem.MachineKey);
Assert.NotNull(machine);
var repDatItem = CreateDatItem();
repDatItem.GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "foo");
var repMachine = repDatItem.GetFieldValue<Machine>(DatItem.MachineKey);
Assert.NotNull(repMachine);
repMachine!.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "foo");
List<string> fields = [Models.Metadata.Machine.NameKey];
Replacer.ReplaceFields(datItem.GetFieldValue<Machine>(DatItem.MachineKey)!, repDatItem.GetFieldValue<Machine>(DatItem.MachineKey)!, fields, false);
Assert.Equal("foo", datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey));
Replacer.ReplaceFields(machine, repMachine, fields, false);
Assert.Equal("foo", machine.GetStringFieldValue(Models.Metadata.Machine.NameKey));
}
/// <summary>

View File

@@ -87,6 +87,7 @@ namespace SabreTools.DatFiles
switch (datItem, repDatItem)
{
case (Disk disk, Disk repDisk): ReplaceFields(disk, repDisk, [.. fieldNames]); break;
case (DatItems.Formats.File file, DatItems.Formats.File repFile): ReplaceFields(file, repFile, [.. fieldNames]); break;
case (Media media, Media repMedia): ReplaceFields(media, repMedia, [.. fieldNames]); break;
case (Rom rom, Rom repRom): ReplaceFields(rom, repRom, [.. fieldNames]); break;
}
@@ -115,6 +116,39 @@ namespace SabreTools.DatFiles
}
}
/// <summary>
/// Replace fields with given values
/// </summary>
/// <param name="file">File to remove replace fields in</param>
/// <param name="newItem">File to pull new information from</param>
/// <param name="datItemFields">List of fields representing what should be updated</param>
private static void ReplaceFields(DatItems.Formats.File file, DatItems.Formats.File newItem, List<string> datItemFields)
{
if (datItemFields.Contains(Models.Metadata.Rom.CRCKey))
{
if (string.IsNullOrEmpty(file.CRC) && !string.IsNullOrEmpty(newItem.CRC))
file.CRC = newItem.CRC;
}
if (datItemFields.Contains(Models.Metadata.Rom.MD5Key))
{
if (string.IsNullOrEmpty(file.MD5) && !string.IsNullOrEmpty(newItem.MD5))
file.MD5 = newItem.MD5;
}
if (datItemFields.Contains(Models.Metadata.Rom.SHA1Key))
{
if (string.IsNullOrEmpty(file.SHA1) && !string.IsNullOrEmpty(newItem.SHA1))
file.SHA1 = newItem.SHA1;
}
if (datItemFields.Contains(Models.Metadata.Rom.SHA256Key))
{
if (string.IsNullOrEmpty(file.SHA256) && !string.IsNullOrEmpty(newItem.SHA256))
file.SHA256 = newItem.SHA256;
}
}
/// <summary>
/// Replace fields with given values
/// </summary>