mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Add ExecuteFilters tests
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using SabreTools.Core.Filter;
|
||||
using SabreTools.DatFiles.Formats;
|
||||
using SabreTools.DatItems;
|
||||
using SabreTools.DatItems.Formats;
|
||||
@@ -10,7 +11,63 @@ namespace SabreTools.DatFiles.Test
|
||||
{
|
||||
#region ExecuteFilters
|
||||
|
||||
// TODO: Add ExecuteFilters tests
|
||||
[Fact]
|
||||
public void ExecuteFilters_Items()
|
||||
{
|
||||
FilterObject filterObject = new FilterObject("rom.crc", "deadbeef", Operation.NotEquals);
|
||||
FilterRunner filterRunner = new FilterRunner([filterObject]);
|
||||
|
||||
Source source = new Source(0, source: null);
|
||||
|
||||
Machine machine = new Machine();
|
||||
machine.SetFieldValue(Models.Metadata.Machine.NameKey, "machine");
|
||||
|
||||
DatItem datItem = new Rom();
|
||||
datItem.SetName("rom.bin");
|
||||
datItem.SetFieldValue(Models.Metadata.Rom.CRCKey, "deadbeef");
|
||||
datItem.SetFieldValue(DatItem.MachineKey, machine);
|
||||
datItem.SetFieldValue(DatItem.SourceKey, source);
|
||||
|
||||
DatFile datFile = new Logiqx(datFile: null, deprecated: false);
|
||||
datFile.AddItem(datItem, statsOnly: false);
|
||||
|
||||
datFile.BucketBy(ItemKey.Machine, DedupeType.None);
|
||||
datFile.ExecuteFilters(filterRunner);
|
||||
|
||||
var actualDatItems = datFile.GetItemsForBucket("machine");
|
||||
DatItem actualRom = Assert.Single(actualDatItems);
|
||||
Assert.Equal(true, actualRom.GetBoolFieldValue(DatItem.RemoveKey));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ExecuteFilters_ItemsDB()
|
||||
{
|
||||
FilterObject filterObject = new FilterObject("rom.crc", "deadbeef", Operation.NotEquals);
|
||||
FilterRunner filterRunner = new FilterRunner([filterObject]);
|
||||
|
||||
Source source = new Source(0, source: null);
|
||||
|
||||
Machine machine = new Machine();
|
||||
machine.SetFieldValue(Models.Metadata.Machine.NameKey, "machine");
|
||||
|
||||
DatItem datItem = new Rom();
|
||||
datItem.SetName("rom.bin");
|
||||
datItem.SetFieldValue(Models.Metadata.Rom.CRCKey, "deadbeef");
|
||||
datItem.SetFieldValue(DatItem.MachineKey, machine);
|
||||
datItem.SetFieldValue(DatItem.SourceKey, source);
|
||||
|
||||
DatFile datFile = new Logiqx(datFile: null, deprecated: false);
|
||||
long sourceIndex = datFile.AddSourceDB(source);
|
||||
long machineIndex = datFile.AddMachineDB(machine);
|
||||
_ = datFile.AddItemDB(datItem, machineIndex, sourceIndex, statsOnly: false);
|
||||
|
||||
datFile.BucketBy(ItemKey.Machine, DedupeType.None);
|
||||
datFile.ExecuteFilters(filterRunner);
|
||||
|
||||
var actualDatItems = datFile.GetItemsForBucketDB("machine");
|
||||
DatItem actualRom = Assert.Single(actualDatItems).Value;
|
||||
Assert.Equal(true, actualRom.GetBoolFieldValue(DatItem.RemoveKey));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -188,6 +188,7 @@ namespace SabreTools.DatFiles
|
||||
/// Execute all filters in a filter runner on the items in the dictionary
|
||||
/// </summary>
|
||||
/// <param name="filterRunner">Preconfigured filter runner to use</param>
|
||||
/// <remarks>Applies to <see cref="Items"/></remarks>
|
||||
private void ExecuteFiltersImpl(FilterRunner filterRunner)
|
||||
{
|
||||
List<string> keys = [.. Items.Keys];
|
||||
@@ -211,6 +212,7 @@ namespace SabreTools.DatFiles
|
||||
/// Execute all filters in a filter runner on the items in the dictionary
|
||||
/// </summary>
|
||||
/// <param name="filterRunner">Preconfigured filter runner to use</param>
|
||||
/// <remarks>Applies to <see cref="ItemsDB"/></remarks>
|
||||
private void ExecuteFiltersImplDB(FilterRunner filterRunner)
|
||||
{
|
||||
List<string> keys = [.. ItemsDB.SortedKeys];
|
||||
@@ -235,6 +237,7 @@ namespace SabreTools.DatFiles
|
||||
/// </summary>
|
||||
/// <param name="filterRunner">Preconfigured filter runner to use</param>
|
||||
/// <param name="bucketName">Name of the bucket to filter on</param>
|
||||
/// <remarks>Applies to <see cref="Items"/></remarks>
|
||||
private void ExecuteFilterOnBucket(FilterRunner filterRunner, string bucketName)
|
||||
{
|
||||
List<DatItem>? items = GetItemsForBucket(bucketName);
|
||||
@@ -244,7 +247,7 @@ namespace SabreTools.DatFiles
|
||||
// Filter all items in the current key
|
||||
foreach (var item in items)
|
||||
{
|
||||
if (item.PassesFilter(filterRunner))
|
||||
if (!item.PassesFilter(filterRunner))
|
||||
item.SetFieldValue<bool?>(DatItem.RemoveKey, true);
|
||||
}
|
||||
}
|
||||
@@ -254,6 +257,7 @@ namespace SabreTools.DatFiles
|
||||
/// </summary>
|
||||
/// <param name="filterRunner">Preconfigured filter runner to use</param>
|
||||
/// <param name="bucketName">Name of the bucket to filter on</param>
|
||||
/// <remarks>Applies to <see cref="ItemsDB"/></remarks>
|
||||
private void ExecuteFilterOnBucketDB(FilterRunner filterRunner, string bucketName)
|
||||
{
|
||||
var items = GetItemsForBucketDB(bucketName);
|
||||
@@ -264,7 +268,7 @@ namespace SabreTools.DatFiles
|
||||
List<long> newItems = [];
|
||||
foreach (var item in items)
|
||||
{
|
||||
if (item.Value.PassesFilterDB(filterRunner))
|
||||
if (!item.Value.PassesFilterDB(filterRunner))
|
||||
item.Value.SetFieldValue<bool?>(DatItem.RemoveKey, true);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user