From 3412bbf33ae372f2e7df7e7d9b45fcde28fc77e3 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 7 Apr 2026 09:36:43 -0400 Subject: [PATCH] Checkpoint reflection replacement --- .../FilterObjectTests.cs | 96 +++++++++++++++++++ SabreTools.Metadata.Filter/FilterKey.cs | 48 ++++++++++ 2 files changed, 144 insertions(+) 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, };