From 08b954a38c68908f375677215ac996c9e3def0da Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 25 Feb 2026 18:52:58 +0900 Subject: [PATCH] Update filter matching tests to be independent of old song select classes --- .../BenchmarkCarouselFilter.cs | 6 +++--- .../NonVisual/Filtering/FilterMatchingTest.cs | 20 +++++++++++++++++++ .../Filtering/FilterQueryParserTest.cs | 3 +-- .../SelectV2/BeatmapCarouselFilterMatching.cs | 4 ++-- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/osu.Game.Benchmarks/BenchmarkCarouselFilter.cs b/osu.Game.Benchmarks/BenchmarkCarouselFilter.cs index 8f7027da17..ecd76872d1 100644 --- a/osu.Game.Benchmarks/BenchmarkCarouselFilter.cs +++ b/osu.Game.Benchmarks/BenchmarkCarouselFilter.cs @@ -5,7 +5,7 @@ using BenchmarkDotNet.Attributes; using osu.Game.Beatmaps; using osu.Game.Rulesets; using osu.Game.Screens.Select; -using osu.Game.Screens.Select.Carousel; +using osu.Game.Tests.NonVisual.Filtering; namespace osu.Game.Benchmarks { @@ -42,7 +42,7 @@ namespace osu.Game.Benchmarks Status = BeatmapOnlineStatus.Loved }; - private CarouselBeatmap carouselBeatmap = null!; + private FilterMatchingTest.CarouselBeatmap carouselBeatmap = null!; private FilterCriteria criteria1 = null!; private FilterCriteria criteria2 = null!; private FilterCriteria criteria3 = null!; @@ -55,7 +55,7 @@ namespace osu.Game.Benchmarks var beatmap = getExampleBeatmap(); beatmap.OnlineID = 20201010; beatmap.BeatmapSet = new BeatmapSetInfo { OnlineID = 1535 }; - carouselBeatmap = new CarouselBeatmap(beatmap); + carouselBeatmap = new FilterMatchingTest.CarouselBeatmap(beatmap); criteria1 = new FilterCriteria(); criteria2 = new FilterCriteria { diff --git a/osu.Game.Tests/NonVisual/Filtering/FilterMatchingTest.cs b/osu.Game.Tests/NonVisual/Filtering/FilterMatchingTest.cs index 12aab055ad..7dcb8621bf 100644 --- a/osu.Game.Tests/NonVisual/Filtering/FilterMatchingTest.cs +++ b/osu.Game.Tests/NonVisual/Filtering/FilterMatchingTest.cs @@ -588,6 +588,26 @@ namespace osu.Game.Tests.NonVisual.Filtering Assert.That(visibleBeatmaps, Is.EqualTo(expectedBeatmapIndexes)); } + // This is a temporary class that emulates what these tests originally used from song select v1. + // If anyone ever ends up tidying up these test, here's a starting point: + // https://gist.github.com/peppy/67fda38f6483fd1dd01ef845ed5bf932 + public class CarouselBeatmap + { + public readonly BeatmapInfo BeatmapInfo; + + public BindableBool Filtered = new BindableBool(); + + public CarouselBeatmap(BeatmapInfo beatmapInfo) + { + BeatmapInfo = beatmapInfo; + } + + public void Filter(FilterCriteria criteria) + { + Filtered.Value = !BeatmapCarouselFilterMatching.CheckCriteriaMatch(BeatmapInfo, criteria); + } + } + private class CustomCriteria : IRulesetFilterCriteria { private readonly bool match; diff --git a/osu.Game.Tests/NonVisual/Filtering/FilterQueryParserTest.cs b/osu.Game.Tests/NonVisual/Filtering/FilterQueryParserTest.cs index 87e439534b..6a87cc1207 100644 --- a/osu.Game.Tests/NonVisual/Filtering/FilterQueryParserTest.cs +++ b/osu.Game.Tests/NonVisual/Filtering/FilterQueryParserTest.cs @@ -10,7 +10,6 @@ using osu.Game.Beatmaps; using osu.Game.Rulesets.Filter; using osu.Game.Rulesets.Mods; using osu.Game.Screens.Select; -using osu.Game.Screens.Select.Carousel; using osu.Game.Screens.Select.Filter; namespace osu.Game.Tests.NonVisual.Filtering @@ -509,7 +508,7 @@ namespace osu.Game.Tests.NonVisual.Filtering ("Another One", "diff ]with [[ brackets]]]"), ("Diff in title", "a"), ("a", "Diff in diff"), - }).Select(info => new CarouselBeatmap(new BeatmapInfo + }).Select(info => new FilterMatchingTest.CarouselBeatmap(new BeatmapInfo { Metadata = new BeatmapMetadata { diff --git a/osu.Game/Screens/SelectV2/BeatmapCarouselFilterMatching.cs b/osu.Game/Screens/SelectV2/BeatmapCarouselFilterMatching.cs index 39fe5e1692..1d77330ea4 100644 --- a/osu.Game/Screens/SelectV2/BeatmapCarouselFilterMatching.cs +++ b/osu.Game/Screens/SelectV2/BeatmapCarouselFilterMatching.cs @@ -70,7 +70,7 @@ namespace osu.Game.Screens.SelectV2 if (operationDifficulties != null && operationDifficulties.TryGetValue(beatmap, out double operationDifficulty)) starDifficultyForFilter = operationDifficulty; - if (!checkCriteriaMatch(beatmap, criteria, starDifficultyForFilter)) + if (!CheckCriteriaMatch(beatmap, criteria, starDifficultyForFilter)) continue; countMatching++; @@ -81,7 +81,7 @@ namespace osu.Game.Screens.SelectV2 return matchedItems; } - private static bool checkCriteriaMatch(BeatmapInfo beatmap, FilterCriteria criteria, double starDifficultyForFilter) + public static bool CheckCriteriaMatch(BeatmapInfo beatmap, FilterCriteria criteria, double starDifficultyForFilter) { bool match = criteria.Ruleset == null || beatmap.AllowGameplayWithRuleset(criteria.Ruleset!, criteria.AllowConvertedBeatmaps);