mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Add filter tests, fix issues found
This commit is contained in:
82
SabreTools.Test/Filter/FilteringTests.cs
Normal file
82
SabreTools.Test/Filter/FilteringTests.cs
Normal file
@@ -0,0 +1,82 @@
|
||||
using SabreTools.DatItems;
|
||||
using SabreTools.DatItems.Formats;
|
||||
using SabreTools.Filter;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Test.Filter
|
||||
{
|
||||
public class FilteringTests
|
||||
{
|
||||
[Fact]
|
||||
public void PassesFiltersDatItemFilterPass()
|
||||
{
|
||||
// Setup filter
|
||||
var filter = new FilterRunner(["rom.name:foo"]);
|
||||
|
||||
// Setup DatItem
|
||||
var datItem = CreateDatItem();
|
||||
|
||||
// Run filters
|
||||
bool actual = datItem.PassesFilter(filter);
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void PassesFiltersDatItemFilterFail()
|
||||
{
|
||||
// Setup filter
|
||||
var filter = new FilterRunner(["rom.name:bar"]);
|
||||
|
||||
// Setup DatItem
|
||||
var datItem = CreateDatItem();
|
||||
|
||||
// Run filters
|
||||
bool actual = datItem.PassesFilter(filter);
|
||||
Assert.False(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void PassesFiltersMachineFilterPass()
|
||||
{
|
||||
// Setup filter
|
||||
var filter = new FilterRunner(["machine.name:bar"]);
|
||||
|
||||
// Setup DatItem
|
||||
var datItem = CreateDatItem();
|
||||
|
||||
// Run filters
|
||||
bool actual = datItem.PassesFilter(filter);
|
||||
Assert.True(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void PassesFiltersMachineFilterFail()
|
||||
{
|
||||
// Setup filter
|
||||
var filter = new FilterRunner(["machine.name:foo"]);
|
||||
|
||||
// Setup DatItem
|
||||
var datItem = CreateDatItem();
|
||||
|
||||
// Run filters
|
||||
bool actual = datItem.PassesFilter(filter);
|
||||
Assert.False(actual);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Generate a consistent DatItem for testing
|
||||
/// </summary>
|
||||
private static DatItem CreateDatItem()
|
||||
{
|
||||
return new Rom
|
||||
{
|
||||
Name = "foo",
|
||||
Machine = new Machine
|
||||
{
|
||||
Name = "bar",
|
||||
Description = "bar",
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
78
SabreTools.Test/Filter/PopulationTests.cs
Normal file
78
SabreTools.Test/Filter/PopulationTests.cs
Normal file
@@ -0,0 +1,78 @@
|
||||
using System;
|
||||
using SabreTools.Filter;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Test.Filter
|
||||
{
|
||||
public class PopulationTests
|
||||
{
|
||||
[Fact]
|
||||
public void PopulateFilterRunnerNullListTest()
|
||||
{
|
||||
// Setup the list
|
||||
string[]? filters = null;
|
||||
|
||||
// Setup the filter
|
||||
Assert.Throws<ArgumentNullException>(() => new FilterRunner(filters));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void PopulateFilterRunnerEmptyListTest()
|
||||
{
|
||||
// Setup the list
|
||||
string[]? filters = [];
|
||||
|
||||
// Setup the filter runner
|
||||
var filterRunner = new FilterRunner(filters);
|
||||
|
||||
// Check the filters
|
||||
Assert.NotNull(filterRunner.Filters);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void PopulateFilterMachineFieldTest()
|
||||
{
|
||||
// Setup the list
|
||||
string[] filters =
|
||||
[
|
||||
"machine.name:foo",
|
||||
"machine.name!:bar",
|
||||
];
|
||||
|
||||
// Setup the filter
|
||||
var filter = new FilterRunner(filters);
|
||||
|
||||
// Check the filters
|
||||
Assert.Equal(new string[] {"machine", "name"}, filter.Filters[0].Key);
|
||||
Assert.Equal("foo", filter.Filters[0].Value);
|
||||
Assert.Equal(Operation.Equals, filter.Filters[0].Operation);
|
||||
|
||||
Assert.Equal(new string[] {"machine", "name"}, filter.Filters[1].Key);
|
||||
Assert.Equal("bar", filter.Filters[1].Value);
|
||||
Assert.Equal(Operation.NotEquals, filter.Filters[1].Operation);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void PopulateFilterDatItemFieldTest()
|
||||
{
|
||||
// Setup the list
|
||||
string[] filters =
|
||||
[
|
||||
"rom.name:foo",
|
||||
"rom.name!:bar"
|
||||
];
|
||||
|
||||
// Setup the filter
|
||||
var filter = new FilterRunner(filters);
|
||||
|
||||
// Check the filters
|
||||
Assert.Equal(new string[] { "rom", "name"}, filter.Filters[0].Key);
|
||||
Assert.Equal("foo", filter.Filters[0].Value);
|
||||
Assert.Equal(Operation.Equals, filter.Filters[0].Operation);
|
||||
|
||||
Assert.Equal(new string[] { "rom", "name"}, filter.Filters[1].Key);
|
||||
Assert.Equal("bar", filter.Filters[1].Value);
|
||||
Assert.Equal(Operation.NotEquals, filter.Filters[1].Operation);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net6.0;net8.0</TargetFrameworks>
|
||||
<IsPackable>false</IsPackable>
|
||||
<LangVersion>latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
Reference in New Issue
Block a user