From 2d277607cf9e2e5a8d3b21d170b87280e66f8a1d Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 13 Jan 2025 14:14:28 -0500 Subject: [PATCH] Write RemoveBiosAndDeviceSets tests --- .../DatFileTests.Splitting.cs | 63 ++++++++++++++++++- SabreTools.DatFiles/DatFile.Splitting.cs | 3 + 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/SabreTools.DatFiles.Test/DatFileTests.Splitting.cs b/SabreTools.DatFiles.Test/DatFileTests.Splitting.cs index 402b47d8..4d20a971 100644 --- a/SabreTools.DatFiles.Test/DatFileTests.Splitting.cs +++ b/SabreTools.DatFiles.Test/DatFileTests.Splitting.cs @@ -33,7 +33,66 @@ namespace SabreTools.DatFiles.Test #region RemoveBiosAndDeviceSets - // TODO: Implement RemoveBiosAndDeviceSets tests + [Fact] + public void RemoveBiosAndDeviceSets_Items() + { + Source source = new Source(0, source: null); + + Machine biosMachine = new Machine(); + biosMachine.SetFieldValue(Models.Metadata.Machine.NameKey, "bios"); + biosMachine.SetFieldValue(Models.Metadata.Machine.IsBiosKey, true); + + Machine deviceMachine = new Machine(); + deviceMachine.SetFieldValue(Models.Metadata.Machine.NameKey, "device"); + deviceMachine.SetFieldValue(Models.Metadata.Machine.IsDeviceKey, true); + + DatItem biosItem = new Rom(); + biosItem.SetFieldValue(DatItem.MachineKey, biosMachine); + biosItem.SetFieldValue(DatItem.SourceKey, source); + + DatItem deviceItem = new Rom(); + deviceItem.SetFieldValue(DatItem.MachineKey, deviceMachine); + deviceItem.SetFieldValue(DatItem.SourceKey, source); + + DatFile datFile = new Logiqx(datFile: null, deprecated: false); + datFile.AddItem(biosItem, statsOnly: false); + datFile.AddItem(deviceItem, statsOnly: false); + + datFile.BucketBy(ItemKey.Machine, DedupeType.None); + datFile.RemoveBiosAndDeviceSets(); + + Assert.Empty(datFile.GetItemsForBucket("bios")); + Assert.Empty(datFile.GetItemsForBucket("device")); + } + + [Fact] + public void RemoveBiosAndDeviceSets_ItemsDB() + { + Source source = new Source(0, source: null); + + Machine biosMachine = new Machine(); + biosMachine.SetFieldValue(Models.Metadata.Machine.NameKey, "bios"); + biosMachine.SetFieldValue(Models.Metadata.Machine.IsBiosKey, true); + + Machine deviceMachine = new Machine(); + deviceMachine.SetFieldValue(Models.Metadata.Machine.NameKey, "device"); + deviceMachine.SetFieldValue(Models.Metadata.Machine.IsDeviceKey, true); + + DatItem biosItem = new Rom(); + DatItem deviceItem = new Rom(); + + DatFile datFile = new Logiqx(datFile: null, deprecated: false); + long biosMachineIndex = datFile.AddMachineDB(biosMachine); + long deviceMachineIndex = datFile.AddMachineDB(deviceMachine); + long sourceIndex = datFile.AddSourceDB(source); + long biosItemId = datFile.AddItemDB(biosItem, biosMachineIndex, sourceIndex, statsOnly: false); + long deviceItemId = datFile.AddItemDB(deviceItem, deviceMachineIndex, sourceIndex, statsOnly: false); + + datFile.BucketBy(ItemKey.Machine, DedupeType.None); + datFile.RemoveBiosAndDeviceSets(); + + Assert.Empty(datFile.GetMachinesDB()); + } #endregion @@ -69,6 +128,7 @@ namespace SabreTools.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, deprecated: false); datFile.AddItem(datItem, statsOnly: false); + datFile.BucketBy(ItemKey.Machine, DedupeType.None); datFile.RemoveMachineRelationshipTags(); DatItem actualItem = Assert.Single(datFile.GetItemsForBucket("machine")); @@ -97,6 +157,7 @@ namespace SabreTools.DatFiles.Test long sourceIndex = datFile.AddSourceDB(source); long itemId = datFile.AddItemDB(datItem, machineIndex, sourceIndex, statsOnly: false); + datFile.BucketBy(ItemKey.Machine, DedupeType.None); datFile.RemoveMachineRelationshipTags(); Machine actual = Assert.Single(datFile.GetMachinesDB()).Value; diff --git a/SabreTools.DatFiles/DatFile.Splitting.cs b/SabreTools.DatFiles/DatFile.Splitting.cs index 6b123614..2cc9f8bb 100644 --- a/SabreTools.DatFiles/DatFile.Splitting.cs +++ b/SabreTools.DatFiles/DatFile.Splitting.cs @@ -948,6 +948,9 @@ namespace SabreTools.DatFiles ItemsDB.RemoveItem(key); } } + + // Remove the machine + ItemsDB.RemoveMachine(machine.Key); } }