From b311308ada7bd524a0557323eaa8a4f3c197d6b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Mon, 20 Dec 2021 22:09:01 +0100 Subject: [PATCH] Add more comprehensive test of multiple selection --- .../TestSceneSliderControlPointPiece.cs | 45 +++++++++++++++++-- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/osu.Game.Rulesets.Osu.Tests/Editor/TestSceneSliderControlPointPiece.cs b/osu.Game.Rulesets.Osu.Tests/Editor/TestSceneSliderControlPointPiece.cs index 7afe9d91e0..7ae66b7ba7 100644 --- a/osu.Game.Rulesets.Osu.Tests/Editor/TestSceneSliderControlPointPiece.cs +++ b/osu.Game.Rulesets.Osu.Tests/Editor/TestSceneSliderControlPointPiece.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System.Linq; +using Humanizer; using NUnit.Framework; using osu.Framework.Testing; using osu.Framework.Utils; @@ -49,6 +50,46 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor AddBlueprint(new TestSliderBlueprint(slider), drawableObject); }); + [Test] + public void TestSelection() + { + moveMouseToControlPoint(0); + AddStep("click left mouse", () => InputManager.Click(MouseButton.Left)); + assertSelectionCount(1); + assertSelected(0); + + moveMouseToControlPoint(3); + AddStep("click left mouse", () => InputManager.Click(MouseButton.Left)); + assertSelectionCount(1); + assertSelected(3); + + AddStep("press control", () => InputManager.PressKey(Key.ControlLeft)); + moveMouseToControlPoint(2); + AddStep("click left mouse", () => InputManager.Click(MouseButton.Left)); + assertSelectionCount(2); + assertSelected(2); + assertSelected(3); + + moveMouseToControlPoint(0); + AddStep("click left mouse", () => InputManager.Click(MouseButton.Left)); + assertSelectionCount(3); + assertSelected(0); + assertSelected(2); + assertSelected(3); + + AddStep("release control", () => InputManager.ReleaseKey(Key.ControlLeft)); + AddStep("click left mouse", () => InputManager.Click(MouseButton.Left)); + assertSelectionCount(1); + assertSelected(0); + + void assertSelectionCount(int count) => + AddAssert($"{count} control point pieces selected", () => this.ChildrenOfType().Count(piece => piece.IsSelected.Value) == count); + + void assertSelected(int index) => + AddAssert($"{(index + 1).ToOrdinalWords()} control point piece selected", + () => this.ChildrenOfType().Single(piece => piece.ControlPoint == slider.Path.ControlPoints[index]).IsSelected.Value); + } + [Test] public void TestDragControlPoint() { @@ -94,10 +135,6 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor assertControlPointPosition(4, new Vector2(550, 200)); AddStep("release control", () => InputManager.ReleaseKey(Key.LControl)); - - moveMouseToControlPoint(3); - AddStep("click left mouse", () => InputManager.Click(MouseButton.Left)); - AddAssert("only one control point piece selected", () => this.ChildrenOfType().Count(piece => piece.IsSelected.Value) == 1); } [Test]