Replacement code to own class

This commit is contained in:
Matt Nadareski
2021-02-01 12:35:59 -08:00
parent c8c38228e3
commit bb7f078802
9 changed files with 1144 additions and 1102 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -95,7 +95,7 @@ namespace SabreTools.DatTools
// Replace fields from the first duplicate, if we have one
if (dupes.Count > 0)
DatItemTool.ReplaceFields(newDatItem, dupes.First(), datItemFields);
Replacer.ReplaceFields(newDatItem, dupes.First(), datItemFields);
newDatItems.Add(newDatItem);
}
@@ -122,7 +122,7 @@ namespace SabreTools.DatTools
{
DatItem newDatItem = datItem.Clone() as DatItem;
if (datFile.Items.ContainsKey(key) && datFile.Items[key].Count() > 0)
DatItemTool.ReplaceFields(newDatItem.Machine, datFile.Items[key][0].Machine, machineFields, onlySame);
Replacer.ReplaceFields(newDatItem.Machine, datFile.Items[key][0].Machine, machineFields, onlySame);
newDatItems.Add(newDatItem);
}

File diff suppressed because it is too large Load Diff

View File

@@ -540,11 +540,25 @@ namespace SabreTools.Filtering
List<DatItem> items = datFile.Items[key];
for (int i = 0; i < items.Count; i++)
{
DatItemTool.SetOneRomPerGame(items[i]);
SetOneRomPerGame(items[i]);
}
});
}
/// <summary>
/// Set internal names to match One Rom Per Game (ORPG) logic
/// </summary>
/// <param name="datItem">DatItem to run logic on</param>
internal void SetOneRomPerGame(DatItem datItem)
{
if (datItem.GetName() == null)
return;
string[] splitname = datItem.GetName().Split('.');
datItem.Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}";
datItem.SetName(Path.GetFileName(datItem.GetName()));
}
/// <summary>
/// Strip the dates from the beginning of scene-style set names
/// </summary>

View File

@@ -396,7 +396,7 @@ namespace SabreTools.Filtering
continue;
// If the rom doesn't pass the filter, mark for removal
if (!PassesFilters(item))
if (!PassesAllFilters(item))
{
item.Remove = true;
@@ -436,7 +436,7 @@ namespace SabreTools.Filtering
/// </summary>
/// <param name="datItem">DatItem to check</param>
/// <returns>True if the item passed the filter, false otherwise</returns>
internal bool PassesFilters(DatItem datItem)
internal bool PassesAllFilters(DatItem datItem)
{
// Null item means it will never pass
if (datItem == null)

View File

@@ -8,28 +8,6 @@ namespace SabreTools.Test.DatItems
{
public class DatItemToolTests
{
[Fact]
public void ReplaceFieldsDatItemTest()
{
var datItem = CreateDatItem();
var repDatItem = CreateDatItem();
repDatItem.SetName("bar");
var fields = new List<DatItemField> { DatItemField.Name };
DatItemTool.ReplaceFields(datItem, repDatItem, fields);
Assert.Equal("bar", datItem.GetName());
}
[Fact]
public void ReplaceFieldsMachineTest()
{
var datItem = CreateDatItem();
var repDatItem = CreateDatItem();
repDatItem.Machine.Name = "foo";
var fields = new List<MachineField> { MachineField.Name };
DatItemTool.ReplaceFields(datItem.Machine, repDatItem.Machine, fields, false);
Assert.Equal("foo", datItem.Machine.Name);
}
[Fact]
public void SetFieldsDatItemTest()
{
@@ -48,16 +26,6 @@ namespace SabreTools.Test.DatItems
Assert.Equal("foo", datItem.Machine.Name);
}
[Fact]
public void SetOneRomPerGameTest()
{
var datItem = CreateDatItem();
datItem.SetName("foo.bin");
DatItemTool.SetOneRomPerGame(datItem);
Assert.Equal("foo.bin", datItem.GetName());
Assert.Equal("bar/foo", datItem.Machine.Name);
}
/// <summary>
/// Generate a consistent DatItem for testing
/// </summary>

View File

@@ -0,0 +1,50 @@
using System.Collections.Generic;
using SabreTools.Core;
using SabreTools.DatItems;
using SabreTools.DatTools;
using Xunit;
namespace SabreTools.Test.DatTools
{
public class ReplacerTests
{
[Fact]
public void ReplaceFieldsDatItemTest()
{
var datItem = CreateDatItem();
var repDatItem = CreateDatItem();
repDatItem.SetName("bar");
var fields = new List<DatItemField> { DatItemField.Name };
Replacer.ReplaceFields(datItem, repDatItem, fields);
Assert.Equal("bar", datItem.GetName());
}
[Fact]
public void ReplaceFieldsMachineTest()
{
var datItem = CreateDatItem();
var repDatItem = CreateDatItem();
repDatItem.Machine.Name = "foo";
var fields = new List<MachineField> { MachineField.Name };
Replacer.ReplaceFields(datItem.Machine, repDatItem.Machine, fields, false);
Assert.Equal("foo", datItem.Machine.Name);
}
/// <summary>
/// Generate a consistent DatItem for testing
/// </summary>
private DatItem CreateDatItem()
{
return new Rom
{
Name = "foo",
Machine = new Machine
{
Name = "bar",
Description = "bar",
}
};
}
}
}

View File

@@ -95,6 +95,26 @@ namespace SabreTools.Test.Filtering
Assert.Equal("name-3", datItem.Machine.Description);
}
[Fact]
public void SetOneRomPerGameTest()
{
// Setup cleaner
var cleaner = new Cleaner
{
OneRomPerGame = true,
};
// Setup DatItem
var datItem = CreateDatItem("name", "name-2", "name-3");
// Run cleaning
cleaner.SetOneRomPerGame(datItem);
// Check the fields
Assert.Equal("name", datItem.GetName());
Assert.Equal("name-2/name", datItem.Machine.Name);
}
/// <summary>
/// Generate a consistent DatItem for testing
/// </summary>

View File

@@ -19,7 +19,7 @@ namespace SabreTools.Test.Filtering
var datItem = CreateDatItem();
// Run filters
bool actual = filter.PassesFilters(datItem);
bool actual = filter.PassesAllFilters(datItem);
Assert.True(actual);
}
@@ -34,7 +34,7 @@ namespace SabreTools.Test.Filtering
var datItem = CreateDatItem();
// Run filters
bool actual = filter.PassesFilters(datItem);
bool actual = filter.PassesAllFilters(datItem);
Assert.False(actual);
}
@@ -49,7 +49,7 @@ namespace SabreTools.Test.Filtering
var datItem = CreateDatItem();
// Run filters
bool actual = filter.PassesFilters(datItem);
bool actual = filter.PassesAllFilters(datItem);
Assert.True(actual);
}
@@ -64,7 +64,7 @@ namespace SabreTools.Test.Filtering
var datItem = CreateDatItem();
// Run filters
bool actual = filter.PassesFilters(datItem);
bool actual = filter.PassesAllFilters(datItem);
Assert.False(actual);
}