diff --git a/SabreTools.DatFiles.Test/DatFileTests.Splitting.cs b/SabreTools.DatFiles.Test/DatFileTests.Splitting.cs index fb1f10f8..116b9edf 100644 --- a/SabreTools.DatFiles.Test/DatFileTests.Splitting.cs +++ b/SabreTools.DatFiles.Test/DatFileTests.Splitting.cs @@ -1,3 +1,6 @@ +using SabreTools.DatFiles.Formats; +using SabreTools.DatItems; +using SabreTools.DatItems.Formats; using Xunit; namespace SabreTools.DatFiles.Test @@ -48,7 +51,59 @@ namespace SabreTools.DatFiles.Test #region RemoveMachineRelationshipTags - // TODO: Implement RemoveMachineRelationshipTags tests + [Fact] + public void RemoveMachineRelationshipTags_Items() + { + Source source = new Source(0, source: null); + + Machine machine = new Machine(); + machine.SetFieldValue(Models.Metadata.Machine.NameKey, "machine"); + machine.SetFieldValue(Models.Metadata.Machine.CloneOfKey, "XXXXXX"); + machine.SetFieldValue(Models.Metadata.Machine.RomOfKey, "XXXXXX"); + machine.SetFieldValue(Models.Metadata.Machine.SampleOfKey, "XXXXXX"); + + DatItem datItem = new Rom(); + datItem.SetFieldValue(DatItem.MachineKey, machine); + datItem.SetFieldValue(DatItem.SourceKey, source); + + DatFile datFile = new Logiqx(datFile: null, deprecated: false); + datFile.AddItem(datItem, statsOnly: false); + + datFile.RemoveMachineRelationshipTags(); + + DatItem actualItem = Assert.Single(datFile.GetItemsForBucket("machine")); + Machine? actual = actualItem.GetFieldValue(DatItem.MachineKey); + Assert.NotNull(actual); + Assert.Null(actual.GetStringFieldValue(Models.Metadata.Machine.CloneOfKey)); + Assert.Null(actual.GetStringFieldValue(Models.Metadata.Machine.RomOfKey)); + Assert.Null(actual.GetStringFieldValue(Models.Metadata.Machine.SampleOfKey)); + } + + [Fact] + public void RemoveMachineRelationshipTags_ItemsDB() + { + Source source = new Source(0, source: null); + + Machine machine = new Machine(); + machine.SetFieldValue(Models.Metadata.Machine.NameKey, "machine"); + machine.SetFieldValue(Models.Metadata.Machine.CloneOfKey, "XXXXXX"); + machine.SetFieldValue(Models.Metadata.Machine.RomOfKey, "XXXXXX"); + machine.SetFieldValue(Models.Metadata.Machine.SampleOfKey, "XXXXXX"); + + DatItem datItem = new Rom(); + + DatFile datFile = new Logiqx(datFile: null, deprecated: false); + long machineIndex = datFile.AddMachineDB(machine); + long sourceIndex = datFile.AddSourceDB(source); + long itemId = datFile.AddItemDB(datItem, machineIndex, sourceIndex, statsOnly: false); + + datFile.RemoveMachineRelationshipTags(); + + Machine actual = Assert.Single(datFile.GetMachinesDB()).Value; + Assert.Null(actual.GetStringFieldValue(Models.Metadata.Machine.CloneOfKey)); + Assert.Null(actual.GetStringFieldValue(Models.Metadata.Machine.RomOfKey)); + Assert.Null(actual.GetStringFieldValue(Models.Metadata.Machine.SampleOfKey)); + } #endregion } diff --git a/SabreTools.DatFiles/DatFile.Splitting.cs b/SabreTools.DatFiles/DatFile.Splitting.cs index ac0ae633..3bec7236 100644 --- a/SabreTools.DatFiles/DatFile.Splitting.cs +++ b/SabreTools.DatFiles/DatFile.Splitting.cs @@ -8,9 +8,8 @@ namespace SabreTools.DatFiles { public partial class DatFile { - // TODO: Make all private methods internal // TODO: Create tests for all of these individually - #region Item Dictionary Passthrough - Splitting + #region Splitting /// /// Use romof tags to add roms to the children @@ -1219,7 +1218,7 @@ namespace SabreTools.DatFiles /// Applies to private void RemoveMachineRelationshipTagsImplDB() { - var machines = ItemsDB.GetMachines(); + var machines = GetMachinesDB(); foreach (var machine in machines) { // Get the machine diff --git a/SabreTools.DatFiles/DatFile.cs b/SabreTools.DatFiles/DatFile.cs index 891c9873..6c6d126a 100644 --- a/SabreTools.DatFiles/DatFile.cs +++ b/SabreTools.DatFiles/DatFile.cs @@ -233,6 +233,12 @@ namespace SabreTools.DatFiles public Dictionary GetItemsForBucketDB(string bucketName, bool filter = false) => ItemsDB.GetItemsForBucket(bucketName, filter); + /// + /// Get all machines and their indicies + /// + public IDictionary GetMachinesDB() + => ItemsDB.GetMachines(); + /// /// Remove a key from the file dictionary if it exists /// diff --git a/SabreTools.DatFiles/DatFileTool.cs b/SabreTools.DatFiles/DatFileTool.cs index 2cdf5627..20b4dbda 100644 --- a/SabreTools.DatFiles/DatFileTool.cs +++ b/SabreTools.DatFiles/DatFileTool.cs @@ -935,7 +935,7 @@ namespace SabreTools.DatFiles // Get all current items, machines, and mappings var datItems = datFile.ItemsDB.GetItems(); - var machines = datFile.ItemsDB.GetMachines(); + var machines = datFile.GetMachinesDB(); var sources = datFile.ItemsDB.GetSources(); var itemMachineMappings = datFile.ItemsDB.GetItemMachineMappings(); var itemSourceMappings = datFile.ItemsDB.GetItemSourceMappings(); @@ -1175,7 +1175,7 @@ namespace SabreTools.DatFiles // Get all current items, machines, and mappings var datItems = datFile.ItemsDB.GetItems(); - var machines = datFile.ItemsDB.GetMachines(); + var machines = datFile.GetMachinesDB(); var sources = datFile.ItemsDB.GetSources(); var itemMachineMappings = datFile.ItemsDB.GetItemMachineMappings(); var itemSourceMappings = datFile.ItemsDB.GetItemSourceMappings(); @@ -1368,7 +1368,7 @@ namespace SabreTools.DatFiles // Get all current items, machines, and mappings var datItems = datFile.ItemsDB.GetItems(); - var machines = datFile.ItemsDB.GetMachines(); + var machines = datFile.GetMachinesDB(); var sources = datFile.ItemsDB.GetSources(); var itemMachineMappings = datFile.ItemsDB.GetItemMachineMappings(); var itemSourceMappings = datFile.ItemsDB.GetItemSourceMappings(); @@ -1545,7 +1545,7 @@ namespace SabreTools.DatFiles { // Get all current items, machines, and mappings var datItems = addFrom.ItemsDB.GetItems(); - var machines = addFrom.ItemsDB.GetMachines(); + var machines = addFrom.GetMachinesDB(); var sources = addFrom.ItemsDB.GetSources(); var itemMachineMappings = addFrom.ItemsDB.GetItemMachineMappings(); var itemSourceMappings = addFrom.ItemsDB.GetItemSourceMappings(); @@ -1650,7 +1650,7 @@ namespace SabreTools.DatFiles { // Get all current items, machines, and mappings var datItems = datFile.ItemsDB.GetItems(); - var machines = datFile.ItemsDB.GetMachines(); + var machines = datFile.GetMachinesDB(); var sources = datFile.ItemsDB.GetSources(); var itemMachineMappings = datFile.ItemsDB.GetItemMachineMappings(); var itemSourceMappings = datFile.ItemsDB.GetItemSourceMappings(); diff --git a/SabreTools.DatTools/Splitter.cs b/SabreTools.DatTools/Splitter.cs index 07d158f9..4e0702ff 100644 --- a/SabreTools.DatTools/Splitter.cs +++ b/SabreTools.DatTools/Splitter.cs @@ -143,7 +143,7 @@ namespace SabreTools.DatTools // Get all current items, machines, and mappings var datItems = datFile.ItemsDB.GetItems(); - var machines = datFile.ItemsDB.GetMachines(); + var machines = datFile.GetMachinesDB(); var sources = datFile.ItemsDB.GetSources(); var itemMachineMappings = datFile.ItemsDB.GetItemMachineMappings(); var itemSourceMappings = datFile.ItemsDB.GetItemSourceMappings(); @@ -359,7 +359,7 @@ namespace SabreTools.DatTools // Get all current items, machines, and mappings var datItems = datFile.ItemsDB.GetItems(); - var machines = datFile.ItemsDB.GetMachines(); + var machines = datFile.GetMachinesDB(); var sources = datFile.ItemsDB.GetSources(); var itemMachineMappings = datFile.ItemsDB.GetItemMachineMappings(); var itemSourceMappings = datFile.ItemsDB.GetItemSourceMappings(); @@ -697,7 +697,7 @@ namespace SabreTools.DatTools // Get all current items, machines, and mappings var datItems = datFile.ItemsDB.GetItems(); - var machines = datFile.ItemsDB.GetMachines(); + var machines = datFile.GetMachinesDB(); var sources = datFile.ItemsDB.GetSources(); var itemMachineMappings = datFile.ItemsDB.GetItemMachineMappings(); var itemSourceMappings = datFile.ItemsDB.GetItemSourceMappings(); @@ -953,7 +953,7 @@ namespace SabreTools.DatTools { // Get all current items, machines, and mappings var datItems = datFile.ItemsDB.GetItems(); - var machines = datFile.ItemsDB.GetMachines(); + var machines = datFile.GetMachinesDB(); var sources = datFile.ItemsDB.GetSources(); var itemMachineMappings = datFile.ItemsDB.GetItemMachineMappings(); var itemSourceMappings = datFile.ItemsDB.GetItemSourceMappings();