diff --git a/SabreTools.Test/DatItems/DatItemToolTests.cs b/SabreTools.Test/DatItems/DatItemToolTests.cs new file mode 100644 index 00000000..7797244f --- /dev/null +++ b/SabreTools.Test/DatItems/DatItemToolTests.cs @@ -0,0 +1,95 @@ +using System.Collections.Generic; + +using SabreTools.Core; +using SabreTools.DatItems; +using Xunit; + +namespace SabreTools.Test.DatItems +{ + public class DatItemToolTests + { + [Fact] + public void RemoveFieldsDatItemTest() + { + var datItem = CreateDatItem(); + var fields = new List { DatItemField.Name }; + DatItemTool.RemoveFields(datItem, datItemFields: fields); + Assert.Null(datItem.GetName()); + } + + [Fact] + public void RemoveFieldsMachineTest() + { + var datItem = CreateDatItem(); + var fields = new List { MachineField.Name }; + DatItemTool.RemoveFields(datItem, machineFields: fields); + Assert.Null(datItem.Machine.Name); + } + + [Fact] + public void ReplaceFieldsDatItemTest() + { + var datItem = CreateDatItem(); + var repDatItem = CreateDatItem(); + repDatItem.SetName("bar"); + var fields = new List { 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.Name }; + DatItemTool.ReplaceFields(datItem.Machine, repDatItem.Machine, fields, false); + Assert.Equal("foo", datItem.Machine.Name); + } + + [Fact] + public void SetFieldsDatItemTest() + { + var datItem = CreateDatItem(); + var mappings = new Dictionary { [DatItemField.Name] = "bar" }; + DatItemTool.SetFields(datItem, mappings, null); + Assert.Equal("bar", datItem.GetName()); + } + + [Fact] + public void SetFieldsMachineTest() + { + var datItem = CreateDatItem(); + var mappings = new Dictionary { [MachineField.Name] = "foo" }; + DatItemTool.SetFields(datItem, null, mappings); + 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); + } + + /// + /// Generate a consistent DatItem for testing + /// + private DatItem CreateDatItem() + { + return new Rom + { + Name = "foo", + Machine = new Machine + { + Name = "bar", + Description = "bar", + } + }; + } + } +} \ No newline at end of file