mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Add AddItemsFromDevices tests, make fixes
This commit is contained in:
@@ -332,7 +332,117 @@ namespace SabreTools.DatFiles.Test
|
|||||||
|
|
||||||
#region AddItemsFromDevices
|
#region AddItemsFromDevices
|
||||||
|
|
||||||
// TODO: Implement AddItemsFromDevices tests
|
[Theory]
|
||||||
|
[InlineData(false, false, 4)]
|
||||||
|
[InlineData(false, true, 4)]
|
||||||
|
[InlineData(true, false, 3)]
|
||||||
|
[InlineData(true, true, 3)]
|
||||||
|
public void AddItemsFromDevices_Items(bool deviceOnly, bool useSlotOptions, int expected)
|
||||||
|
{
|
||||||
|
Source source = new Source(0, source: null);
|
||||||
|
|
||||||
|
Machine deviceMachine = new Machine();
|
||||||
|
deviceMachine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "device");
|
||||||
|
deviceMachine.SetFieldValue<bool>(Models.Metadata.Machine.IsDeviceKey, true);
|
||||||
|
|
||||||
|
Machine slotOptionMachine = new Machine();
|
||||||
|
slotOptionMachine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "slotoption");
|
||||||
|
|
||||||
|
Machine itemMachine = new Machine();
|
||||||
|
itemMachine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "machine");
|
||||||
|
|
||||||
|
DatItem deviceItem = new Sample();
|
||||||
|
deviceItem.SetName("device_item");
|
||||||
|
deviceItem.SetFieldValue<Machine>(DatItem.MachineKey, deviceMachine);
|
||||||
|
deviceItem.SetFieldValue<Source>(DatItem.SourceKey, source);
|
||||||
|
|
||||||
|
DatItem slotOptionItem = new Sample();
|
||||||
|
slotOptionItem.SetName("slot_option_item");
|
||||||
|
slotOptionItem.SetFieldValue<Machine>(DatItem.MachineKey, slotOptionMachine);
|
||||||
|
slotOptionItem.SetFieldValue<Source>(DatItem.SourceKey, source);
|
||||||
|
|
||||||
|
DatItem datItem = new Rom();
|
||||||
|
datItem.SetName("rom");
|
||||||
|
datItem.SetFieldValue<long>(Models.Metadata.Rom.SizeKey, 12345);
|
||||||
|
datItem.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, "deadbeef");
|
||||||
|
datItem.SetFieldValue<Machine>(DatItem.MachineKey, itemMachine);
|
||||||
|
datItem.SetFieldValue<Source>(DatItem.SourceKey, source);
|
||||||
|
|
||||||
|
DatItem deviceRef = new DeviceRef();
|
||||||
|
deviceRef.SetName("device");
|
||||||
|
deviceRef.SetFieldValue<Machine>(DatItem.MachineKey, itemMachine);
|
||||||
|
deviceRef.SetFieldValue<Source>(DatItem.SourceKey, source);
|
||||||
|
|
||||||
|
DatItem slotOption = new SlotOption();
|
||||||
|
slotOption.SetName("slotoption");
|
||||||
|
slotOption.SetFieldValue<Machine>(DatItem.MachineKey, itemMachine);
|
||||||
|
slotOption.SetFieldValue<Source>(DatItem.SourceKey, source);
|
||||||
|
|
||||||
|
DatFile datFile = new Logiqx(datFile: null, deprecated: false);
|
||||||
|
datFile.AddItem(deviceItem, statsOnly: false);
|
||||||
|
datFile.AddItem(slotOptionItem, statsOnly: false);
|
||||||
|
datFile.AddItem(datItem, statsOnly: false);
|
||||||
|
datFile.AddItem(deviceRef, statsOnly: false);
|
||||||
|
datFile.AddItem(slotOption, statsOnly: false);
|
||||||
|
|
||||||
|
datFile.BucketBy(ItemKey.Machine, DedupeType.None);
|
||||||
|
datFile.AddItemsFromDevices(deviceOnly, useSlotOptions);
|
||||||
|
|
||||||
|
Assert.Equal(expected, datFile.GetItemsForBucket("machine").Count);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Theory]
|
||||||
|
[InlineData(false, false, 4)]
|
||||||
|
[InlineData(false, true, 4)]
|
||||||
|
[InlineData(true, false, 3)]
|
||||||
|
[InlineData(true, true, 3)]
|
||||||
|
public void AddItemsFromDevices_ItemsDB(bool deviceOnly, bool useSlotOptions, int expected)
|
||||||
|
{
|
||||||
|
Source source = new Source(0, source: null);
|
||||||
|
|
||||||
|
Machine deviceMachine = new Machine();
|
||||||
|
deviceMachine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "device");
|
||||||
|
deviceMachine.SetFieldValue<bool>(Models.Metadata.Machine.IsDeviceKey, true);
|
||||||
|
|
||||||
|
Machine slotOptionMachine = new Machine();
|
||||||
|
slotOptionMachine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "slotoption");
|
||||||
|
|
||||||
|
Machine itemMachine = new Machine();
|
||||||
|
itemMachine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "machine");
|
||||||
|
|
||||||
|
DatItem deviceItem = new Sample();
|
||||||
|
deviceItem.SetName("device_item");
|
||||||
|
|
||||||
|
DatItem slotOptionItem = new Sample();
|
||||||
|
slotOptionItem.SetName("slot_option_item");
|
||||||
|
|
||||||
|
DatItem datItem = new Rom();
|
||||||
|
datItem.SetName("rom");
|
||||||
|
datItem.SetFieldValue<long>(Models.Metadata.Rom.SizeKey, 12345);
|
||||||
|
datItem.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, "deadbeef");
|
||||||
|
|
||||||
|
DatItem deviceRef = new DeviceRef();
|
||||||
|
deviceRef.SetName("device");
|
||||||
|
|
||||||
|
DatItem slotOption = new SlotOption();
|
||||||
|
slotOption.SetName("slotoption");
|
||||||
|
|
||||||
|
DatFile datFile = new Logiqx(datFile: null, deprecated: false);
|
||||||
|
long deviceMachineIndex = datFile.AddMachineDB(deviceMachine);
|
||||||
|
long slotOptionMachineIndex = datFile.AddMachineDB(slotOptionMachine);
|
||||||
|
long itemMachineIndex = datFile.AddMachineDB(itemMachine);
|
||||||
|
long sourceIndex = datFile.AddSourceDB(source);
|
||||||
|
_ = datFile.AddItemDB(deviceItem, deviceMachineIndex, sourceIndex, statsOnly: false);
|
||||||
|
_ = datFile.AddItemDB(slotOptionItem, slotOptionMachineIndex, sourceIndex, statsOnly: false);
|
||||||
|
_ = datFile.AddItemDB(datItem, itemMachineIndex, sourceIndex, statsOnly: false);
|
||||||
|
_ = datFile.AddItemDB(deviceRef, itemMachineIndex, sourceIndex, statsOnly: false);
|
||||||
|
_ = datFile.AddItemDB(slotOption, itemMachineIndex, sourceIndex, statsOnly: false);
|
||||||
|
|
||||||
|
datFile.BucketBy(ItemKey.Machine, DedupeType.None);
|
||||||
|
datFile.AddItemsFromDevices(deviceOnly, useSlotOptions);
|
||||||
|
|
||||||
|
Assert.Equal(expected, datFile.GetItemsForBucketDB("machine").Count);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@@ -615,7 +615,7 @@ namespace SabreTools.DatFiles
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Use device_ref and optionally slotoption tags to add items to the children
|
/// Use device_ref and optionally slotoption tags to add items to the children
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="deviceOnly">True if only child device sets are touched, false for non-device sets (default)</param>
|
/// <param name="deviceOnly">True if only child device sets are touched, false for non-device sets</param>
|
||||||
/// <param name="useSlotOptions">True if slotoptions tags are used as well, false otherwise</param>
|
/// <param name="useSlotOptions">True if slotoptions tags are used as well, false otherwise</param>
|
||||||
/// <returns>True if any items were processed, false otherwise</returns>
|
/// <returns>True if any items were processed, false otherwise</returns>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
|
|||||||
Reference in New Issue
Block a user