From b26fe702bad258fce1320f8a563e3818d5c2d0d1 Mon Sep 17 00:00:00 2001 From: Salman Alshamrani Date: Wed, 7 May 2025 12:47:32 +0300 Subject: [PATCH] Update existing test coverage Add test coverage --- ...tSceneBeatmapCarouselDifficultyGrouping.cs | 30 +++++++++---------- .../TestSceneBeatmapCarouselFiltering.cs | 6 ++-- .../TestSceneBeatmapCarouselNoGrouping.cs | 23 ++++++++++++++ 3 files changed, 40 insertions(+), 19 deletions(-) diff --git a/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarouselDifficultyGrouping.cs b/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarouselDifficultyGrouping.cs index 9fbd7f4e4c..9d908f94ed 100644 --- a/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarouselDifficultyGrouping.cs +++ b/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarouselDifficultyGrouping.cs @@ -30,32 +30,32 @@ namespace osu.Game.Tests.Visual.SongSelectV2 [Test] public void TestOpenCloseGroupWithNoSelectionMouse() { - AddAssert("no beatmaps visible", () => Carousel.ChildrenOfType().Count(p => p.Alpha > 0), () => Is.Zero); + AddAssert("no beatmaps visible", () => Carousel.ChildrenOfType().Count(p => p.Alpha > 0), () => Is.Zero); CheckNoSelection(); ClickVisiblePanel(0); - AddUntilStep("some beatmaps visible", () => Carousel.ChildrenOfType().Count(p => p.Alpha > 0), () => Is.GreaterThan(0)); + AddUntilStep("some beatmaps visible", () => Carousel.ChildrenOfType().Count(p => p.Alpha > 0), () => Is.GreaterThan(0)); CheckNoSelection(); ClickVisiblePanel(0); - AddUntilStep("no beatmaps visible", () => Carousel.ChildrenOfType().Count(p => p.Alpha > 0), () => Is.Zero); + AddUntilStep("no beatmaps visible", () => Carousel.ChildrenOfType().Count(p => p.Alpha > 0), () => Is.Zero); CheckNoSelection(); } [Test] public void TestOpenCloseGroupWithNoSelectionKeyboard() { - AddAssert("no beatmaps visible", () => Carousel.ChildrenOfType().Count(p => p.Alpha > 0), () => Is.Zero); + AddAssert("no beatmaps visible", () => Carousel.ChildrenOfType().Count(p => p.Alpha > 0), () => Is.Zero); CheckNoSelection(); SelectNextPanel(); Select(); - AddUntilStep("some beatmaps visible", () => Carousel.ChildrenOfType().Count(p => p.Alpha > 0), () => Is.GreaterThan(0)); + AddUntilStep("some beatmaps visible", () => Carousel.ChildrenOfType().Count(p => p.Alpha > 0), () => Is.GreaterThan(0)); AddAssert("keyboard selected is expanded", () => GetKeyboardSelectedPanel()?.Expanded.Value, () => Is.True); CheckNoSelection(); Select(); - AddUntilStep("no beatmaps visible", () => Carousel.ChildrenOfType().Count(p => p.Alpha > 0), () => Is.Zero); + AddUntilStep("no beatmaps visible", () => Carousel.ChildrenOfType().Count(p => p.Alpha > 0), () => Is.Zero); AddAssert("keyboard selected is collapsed", () => GetKeyboardSelectedPanel()?.Expanded.Value, () => Is.False); CheckNoSelection(); } @@ -121,8 +121,8 @@ namespace osu.Game.Tests.Visual.SongSelectV2 SelectNextGroup(); WaitForGroupSelection(0, 0); - AddAssert("keyboard selected panel is beatmap", GetKeyboardSelectedPanel, Is.TypeOf); - AddAssert("selected panel is beatmap", GetSelectedPanel, Is.TypeOf); + AddAssert("keyboard selected panel is beatmap", GetKeyboardSelectedPanel, Is.TypeOf); + AddAssert("selected panel is beatmap", GetSelectedPanel, Is.TypeOf); ClickVisiblePanel(0); AddAssert("keyboard selected panel is group", GetKeyboardSelectedPanel, Is.TypeOf); @@ -132,7 +132,7 @@ namespace osu.Game.Tests.Visual.SongSelectV2 AddAssert("keyboard selected panel is group", GetKeyboardSelectedPanel, Is.TypeOf); AddAssert("keyboard selected panel is expanded", () => GetKeyboardSelectedPanel()?.Expanded.Value, () => Is.True); - AddAssert("selected panel is still beatmap", GetSelectedPanel, Is.TypeOf); + AddAssert("selected panel is still beatmap", GetSelectedPanel, Is.TypeOf); } [Test] @@ -147,7 +147,7 @@ namespace osu.Game.Tests.Visual.SongSelectV2 // open first group Select(); CheckNoSelection(); - AddUntilStep("some beatmaps visible", () => Carousel.ChildrenOfType().Count(p => p.Alpha > 0), () => Is.GreaterThan(0)); + AddUntilStep("some beatmaps visible", () => Carousel.ChildrenOfType().Count(p => p.Alpha > 0), () => Is.GreaterThan(0)); SelectNextPanel(); Select(); @@ -172,24 +172,24 @@ namespace osu.Game.Tests.Visual.SongSelectV2 [Test] public void TestInputHandlingWithinGaps() { - AddAssert("no beatmaps visible", () => !GetVisiblePanels().Any()); + AddAssert("no beatmaps visible", () => !GetVisiblePanels().Any()); // Clicks just above the first group panel should not actuate any action. ClickVisiblePanelWithOffset(0, new Vector2(0, -(PanelGroupStarDifficulty.HEIGHT / 2 + 1))); - AddAssert("no beatmaps visible", () => !GetVisiblePanels().Any()); + AddAssert("no beatmaps visible", () => !GetVisiblePanels().Any()); // add lenience to avoid floating-point inaccuracies at edge. ClickVisiblePanelWithOffset(0, new Vector2(0, -(PanelGroup.HEIGHT / 2 - 1))); - AddUntilStep("wait for beatmaps visible", () => GetVisiblePanels().Any()); + AddUntilStep("wait for beatmaps visible", () => GetVisiblePanels().Any()); CheckNoSelection(); // Beatmap panels expand their selection area to cover holes from spacing. - ClickVisiblePanelWithOffset(0, new Vector2(0, -(CarouselItem.DEFAULT_HEIGHT / 2 + 1))); + ClickVisiblePanelWithOffset(0, new Vector2(0, -(CarouselItem.DEFAULT_HEIGHT / 2 + 1))); WaitForGroupSelection(0, 0); - ClickVisiblePanelWithOffset(1, new Vector2(0, (CarouselItem.DEFAULT_HEIGHT / 2 + 1))); + ClickVisiblePanelWithOffset(1, new Vector2(0, (CarouselItem.DEFAULT_HEIGHT / 2 + 1))); WaitForGroupSelection(0, 1); } diff --git a/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarouselFiltering.cs b/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarouselFiltering.cs index 2381ebcf6e..805d5d3213 100644 --- a/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarouselFiltering.cs +++ b/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarouselFiltering.cs @@ -257,7 +257,6 @@ namespace osu.Game.Tests.Visual.SongSelectV2 } [Test] - [Ignore("Difficulty sorting is broken when set headers are included.")] // todo: fix. public void TestSortingWithDifficultyFiltered() { const int diffs_per_set = 3; @@ -279,17 +278,16 @@ namespace osu.Game.Tests.Visual.SongSelectV2 SortBy(SortMode.Difficulty); WaitForFiltering(); - CheckDisplayedBeatmapSetsCount(3); CheckDisplayedBeatmapsCount(local_set_count * diffs_per_set); ApplyToFilter("filter to normal", c => c.SearchText = "Normal"); + WaitForFiltering(); - CheckDisplayedBeatmapSetsCount(local_set_count); CheckDisplayedBeatmapsCount(local_set_count); ApplyToFilter("filter to insane", c => c.SearchText = "Insane"); + WaitForFiltering(); - CheckDisplayedBeatmapSetsCount(local_set_count); CheckDisplayedBeatmapsCount(local_set_count); } } diff --git a/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarouselNoGrouping.cs b/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarouselNoGrouping.cs index efb39e2cc9..d3d9ca210d 100644 --- a/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarouselNoGrouping.cs +++ b/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarouselNoGrouping.cs @@ -6,6 +6,7 @@ using NUnit.Framework; using osu.Framework.Testing; using osu.Game.Beatmaps; using osu.Game.Graphics.Carousel; +using osu.Game.Screens.Select.Filter; using osu.Game.Screens.SelectV2; using osuTK; using osuTK.Input; @@ -236,6 +237,28 @@ namespace osu.Game.Tests.Visual.SongSelectV2 WaitForSelection(0, 3); } + [Test] + public void TestDifficultySortingWithNoGroups() + { + AddBeatmaps(2, 3); + WaitForDrawablePanels(); + + SortAndGroupBy(SortMode.Difficulty, GroupMode.All); + WaitForFiltering(); + + AddUntilStep("standalone panels displayed", () => GetVisiblePanels().Any()); + + SelectNextGroup(); + WaitForSelection(0, 0); + + SelectNextGroup(); + WaitForSelection(1, 0); + + SelectNextPanel(); + Select(); + WaitForSelection(0, 1); + } + private void checkSelectionIterating(bool isIterating) { object? selection = null;