diff --git a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs
index 6cb95ee8..02207af0 100644
--- a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs
+++ b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs
@@ -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
}
}
diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs
index 4e35717a..da454a00 100644
--- a/SabreTools.Metadata.Filter/FilterKey.cs
+++ b/SabreTools.Metadata.Filter/FilterKey.cs
@@ -516,6 +516,51 @@ namespace SabreTools.Metadata.Filter
"tag",
];
+ ///
+ /// Known keys for RamOption
+ ///
+ private static readonly string[] _ramOptionKeys =
+ [
+ "content",
+ "default",
+ "name",
+ ];
+
+ ///
+ /// Known keys for Release
+ ///
+ private static readonly string[] _releaseKeys =
+ [
+ "date",
+ "default",
+ "language",
+ "name",
+ "region",
+ ];
+
+ ///
+ /// Known keys ReleaseDetails Release
+ ///
+ private static readonly string[] _releaseDetailsKeys =
+ [
+ "appendtonumber",
+ "archivename",
+ "category",
+ "comment",
+ "date",
+ "dirname",
+ "group",
+ "id",
+ "nfocrc",
+ "nfoname",
+ "nfosize",
+ "origin",
+ "originalformat",
+ "region",
+ "rominfo",
+ "tool",
+ ];
+
#endregion
///
@@ -723,6 +768,9 @@ namespace SabreTools.Metadata.Filter
"original" => _originalKeys,
"part" => _partKeys,
"port" => _portKeys,
+ "ramoption" => _ramOptionKeys,
+ "release" => _releaseKeys,
+ "releasedetails" => _releaseDetailsKeys,
_ => null,
};