Skip to content

Commit 5ca6395

Browse files
authored
Merge pull request #20066 from peppy/fix-filtering-with-date-modes
Fix "date submitted" and "date ranked" filtering not working as intended
2 parents db9970b + 1524623 commit 5ca6395

File tree

2 files changed

+42
-4
lines changed

2 files changed

+42
-4
lines changed

osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapCarousel.cs

+37
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,43 @@ public void TestSelectionEnteringFromEmptyRuleset()
494494
AddAssert("Something is selected", () => carousel.SelectedBeatmapInfo != null);
495495
}
496496

497+
[Test]
498+
public void TestSortingDateSubmitted()
499+
{
500+
var sets = new List<BeatmapSetInfo>();
501+
const string zzz_string = "zzzzz";
502+
503+
AddStep("Populuate beatmap sets", () =>
504+
{
505+
sets.Clear();
506+
507+
for (int i = 0; i < 20; i++)
508+
{
509+
var set = TestResources.CreateTestBeatmapSetInfo(5);
510+
511+
if (i >= 2 && i < 10)
512+
set.DateSubmitted = DateTimeOffset.Now.AddMinutes(i);
513+
if (i < 5)
514+
set.Beatmaps.ForEach(b => b.Metadata.Artist = zzz_string);
515+
516+
sets.Add(set);
517+
}
518+
});
519+
520+
loadBeatmaps(sets);
521+
522+
AddStep("Sort by date submitted", () => carousel.Filter(new FilterCriteria { Sort = SortMode.DateSubmitted }, false));
523+
checkVisibleItemCount(diff: false, count: 8);
524+
checkVisibleItemCount(diff: true, count: 5);
525+
AddStep("Sort by date submitted and string", () => carousel.Filter(new FilterCriteria
526+
{
527+
Sort = SortMode.DateSubmitted,
528+
SearchText = zzz_string
529+
}, false));
530+
checkVisibleItemCount(diff: false, count: 3);
531+
checkVisibleItemCount(diff: true, count: 5);
532+
}
533+
497534
[Test]
498535
public void TestSorting()
499536
{

osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs

+5-4
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,13 @@ private int compareUsingAggregateMax(CarouselBeatmapSet other, Func<BeatmapInfo,
129129
public override void Filter(FilterCriteria criteria)
130130
{
131131
base.Filter(criteria);
132-
bool match = Items.All(i => i.Filtered.Value);
133132

134-
match &= criteria.Sort != SortMode.DateRanked || BeatmapSet?.DateRanked != null;
135-
match &= criteria.Sort != SortMode.DateSubmitted || BeatmapSet?.DateSubmitted != null;
133+
bool filtered = Items.All(i => i.Filtered.Value);
136134

137-
Filtered.Value = match;
135+
filtered |= criteria.Sort == SortMode.DateRanked && BeatmapSet?.DateRanked == null;
136+
filtered |= criteria.Sort == SortMode.DateSubmitted && BeatmapSet?.DateSubmitted == null;
137+
138+
Filtered.Value = filtered;
138139
}
139140

140141
public override string ToString() => BeatmapSet.ToString();

0 commit comments

Comments
 (0)