Checkpoint reflection replacement

This commit is contained in:
Matt Nadareski
2026-04-07 09:36:43 -04:00
parent 278bfafae5
commit 3412bbf33a
2 changed files with 144 additions and 0 deletions

View File

@@ -1490,5 +1490,101 @@ namespace SabreTools.Metadata.Filter.Test
}
#endregion
#region RamOption
[Theory]
[InlineData("ramoption.content", "content")]
[InlineData("ramoption.default", "yes")]
[InlineData("ramoption.name", "name")]
public void Matches_RamOption(string itemField, string value)
{
var filter = new FilterObject(itemField, value, Operation.Equals);
RamOption obj = new RamOption
{
Content = "content",
Default = true,
Name = "name",
};
bool actual = filter.Matches(obj);
Assert.True(actual);
}
#endregion
#region Release
[Theory]
[InlineData("release.date", "date")]
[InlineData("release.default", "yes")]
[InlineData("release.language", "language")]
[InlineData("release.name", "name")]
[InlineData("release.region", "region")]
public void Matches_Release(string itemField, string value)
{
var filter = new FilterObject(itemField, value, Operation.Equals);
Release obj = new Release
{
Date = "date",
Default = true,
Language = "language",
Name = "name",
Region = "region",
};
bool actual = filter.Matches(obj);
Assert.True(actual);
}
#endregion
#region ReleaseDetails
[Theory]
[InlineData("releasedetails.appendtonumber", "appendtonumber")]
[InlineData("releasedetails.archivename", "archivename")]
[InlineData("releasedetails.category", "category")]
[InlineData("releasedetails.comment", "comment")]
[InlineData("releasedetails.date", "date")]
[InlineData("releasedetails.dirname", "dirname")]
[InlineData("releasedetails.group", "group")]
[InlineData("releasedetails.id", "id")]
[InlineData("releasedetails.nfocrc", "nfocrc")]
[InlineData("releasedetails.nfoname", "nfoname")]
[InlineData("releasedetails.nfosize", "nfosize")]
[InlineData("releasedetails.origin", "origin")]
[InlineData("releasedetails.originalformat", "originalformat")]
[InlineData("releasedetails.region", "region")]
[InlineData("releasedetails.rominfo", "rominfo")]
[InlineData("releasedetails.tool", "tool")]
public void Matches_ReleaseDetails(string itemField, string value)
{
var filter = new FilterObject(itemField, value, Operation.Equals);
ReleaseDetails obj = new ReleaseDetails
{
AppendToNumber = "appendtonumber",
ArchiveName = "archivename",
Category = "category",
Comment = "comment",
Date = "date",
DirName = "dirname",
Group = "group",
Id = "id",
NfoCRC = "nfocrc",
NfoName = "nfoname",
NfoSize = "nfosize",
Origin = "origin",
OriginalFormat = "originalformat",
Region = "region",
RomInfo = "rominfo",
Tool = "tool",
};
bool actual = filter.Matches(obj);
Assert.True(actual);
}
#endregion
}
}

View File

@@ -516,6 +516,51 @@ namespace SabreTools.Metadata.Filter
"tag",
];
/// <summary>
/// Known keys for RamOption
/// </summary>
private static readonly string[] _ramOptionKeys =
[
"content",
"default",
"name",
];
/// <summary>
/// Known keys for Release
/// </summary>
private static readonly string[] _releaseKeys =
[
"date",
"default",
"language",
"name",
"region",
];
/// <summary>
/// Known keys ReleaseDetails Release
/// </summary>
private static readonly string[] _releaseDetailsKeys =
[
"appendtonumber",
"archivename",
"category",
"comment",
"date",
"dirname",
"group",
"id",
"nfocrc",
"nfoname",
"nfosize",
"origin",
"originalformat",
"region",
"rominfo",
"tool",
];
#endregion
/// <summary>
@@ -723,6 +768,9 @@ namespace SabreTools.Metadata.Filter
"original" => _originalKeys,
"part" => _partKeys,
"port" => _portKeys,
"ramoption" => _ramOptionKeys,
"release" => _releaseKeys,
"releasedetails" => _releaseDetailsKeys,
_ => null,
};