1
0
mirror of https://github.com/ppy/osu.git synced 2026-06-04 02:53:38 +08:00

Support mutating existing active filter criteria in carousel tests

Allows maintaining sorting mode while modifying other filter criterias,
thus simplifying some tests.
This commit is contained in:
Salman Alshamrani
2025-05-05 09:46:41 +03:00
Unverified
parent cc46cbf780
commit 540cfc92da
6 changed files with 33 additions and 14 deletions
@@ -20,6 +20,7 @@ using osu.Game.Graphics.Carousel;
using osu.Game.Graphics.Containers;
using osu.Game.Overlays;
using osu.Game.Screens.Select;
using osu.Game.Screens.Select.Filter;
using osu.Game.Screens.SelectV2;
using osu.Game.Tests.Beatmaps;
using osu.Game.Tests.Resources;
@@ -127,9 +128,23 @@ namespace osu.Game.Tests.Visual.SongSelectV2
},
};
});
// Prefer title sorting so that order of carousel panels match order of BeatmapSets bindable.
SortBy(SortMode.Title);
}
protected void SortBy(FilterCriteria criteria) => AddStep($"sort:{criteria.Sort} group:{criteria.Group}", () => Carousel.Filter(criteria));
protected void SortBy(SortMode mode) => ApplyToFilter($"sort by {mode.ToString().ToLowerInvariant()}", c => c.Sort = mode);
protected void GroupBy(GroupMode mode) => ApplyToFilter($"group by {mode.ToString().ToLowerInvariant()}", c => c.Group = mode);
protected void ApplyToFilter(string description, Action<FilterCriteria>? apply)
{
AddStep(description, () =>
{
var criteria = Carousel.Criteria;
apply?.Invoke(criteria);
Carousel.Filter(criteria);
});
}
protected void WaitForDrawablePanels() => AddUntilStep("drawable panels loaded", () => Carousel.ChildrenOfType<ICarouselPanel>().Count(), () => Is.GreaterThan(0));
protected void WaitForFiltering() => AddUntilStep("filtering finished", () => Carousel.IsFiltering, () => Is.False);
@@ -6,7 +6,6 @@ using System.Threading.Tasks;
using NUnit.Framework;
using osu.Framework.Utils;
using osu.Game.Beatmaps;
using osu.Game.Screens.Select;
using osu.Game.Screens.Select.Filter;
using osu.Game.Tests.Resources;
@@ -34,9 +33,14 @@ namespace osu.Game.Tests.Visual.SongSelectV2
[Explicit]
public void TestSorting()
{
SortBy(new FilterCriteria { Sort = SortMode.Artist });
SortBy(new FilterCriteria { Group = GroupMode.Difficulty, Sort = SortMode.Difficulty });
SortBy(new FilterCriteria { Group = GroupMode.Artist, Sort = SortMode.Artist });
SortBy(SortMode.Artist);
GroupBy(GroupMode.All);
SortBy(SortMode.Difficulty);
GroupBy(GroupMode.Difficulty);
SortBy(SortMode.Artist);
GroupBy(GroupMode.Artist);
}
[Test]
@@ -5,7 +5,6 @@ using System.Linq;
using NUnit.Framework;
using osu.Framework.Testing;
using osu.Game.Beatmaps;
using osu.Game.Screens.Select;
using osu.Game.Screens.Select.Filter;
using osu.Game.Screens.SelectV2;
@@ -19,7 +18,9 @@ namespace osu.Game.Tests.Visual.SongSelectV2
{
RemoveAllBeatmaps();
CreateCarousel();
SortBy(new FilterCriteria { Group = GroupMode.Artist, Sort = SortMode.Artist });
SortBy(SortMode.Artist);
GroupBy(GroupMode.Artist);
AddBeatmaps(10, 3, true);
WaitForDrawablePanels();
@@ -6,7 +6,6 @@ using NUnit.Framework;
using osu.Framework.Testing;
using osu.Game.Beatmaps;
using osu.Game.Graphics.Carousel;
using osu.Game.Screens.Select;
using osu.Game.Screens.Select.Filter;
using osu.Game.Screens.SelectV2;
using osuTK;
@@ -21,7 +20,9 @@ namespace osu.Game.Tests.Visual.SongSelectV2
{
RemoveAllBeatmaps();
CreateCarousel();
SortBy(new FilterCriteria { Group = GroupMode.Difficulty, Sort = SortMode.Difficulty });
SortBy(SortMode.Difficulty);
GroupBy(GroupMode.Difficulty);
AddBeatmaps(10, 3);
WaitForDrawablePanels();
@@ -6,8 +6,6 @@ using NUnit.Framework;
using osu.Framework.Testing;
using osu.Game.Beatmaps;
using osu.Game.Graphics.Carousel;
using osu.Game.Screens.Select;
using osu.Game.Screens.Select.Filter;
using osu.Game.Screens.SelectV2;
using osuTK;
using osuTK.Input;
@@ -22,7 +20,6 @@ namespace osu.Game.Tests.Visual.SongSelectV2
{
RemoveAllBeatmaps();
CreateCarousel();
SortBy(new FilterCriteria { Sort = SortMode.Title });
}
/// <summary>
@@ -5,7 +5,7 @@ using System.Linq;
using NUnit.Framework;
using osu.Framework.Graphics.Primitives;
using osu.Framework.Testing;
using osu.Game.Screens.Select;
using osu.Game.Screens.Select.Filter;
using osu.Game.Screens.SelectV2;
namespace osu.Game.Tests.Visual.SongSelectV2
@@ -18,7 +18,8 @@ namespace osu.Game.Tests.Visual.SongSelectV2
{
RemoveAllBeatmaps();
CreateCarousel();
SortBy(new FilterCriteria());
SortBy(SortMode.Artist);
AddBeatmaps(10);
WaitForDrawablePanels();