From 789810069858456380b52403a3de6fde6d065b28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Mon, 17 Jun 2024 15:54:45 +0200 Subject: [PATCH] Add testing for keyboard control of path during selection --- .../TestScenePathControlPointVisualiser.cs | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/osu.Game.Rulesets.Osu.Tests/Editor/TestScenePathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu.Tests/Editor/TestScenePathControlPointVisualiser.cs index 9af028fd8c..4813cc089c 100644 --- a/osu.Game.Rulesets.Osu.Tests/Editor/TestScenePathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu.Tests/Editor/TestScenePathControlPointVisualiser.cs @@ -15,6 +15,7 @@ using osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Tests.Visual; using osuTK; +using osuTK.Input; namespace osu.Game.Rulesets.Osu.Tests.Editor { @@ -177,6 +178,60 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor addAssertPointPositionChanged(points, i); } + [Test] + public void TestChangingControlPointTypeViaTab() + { + createVisualiser(true); + + addControlPointStep(new Vector2(200), PathType.LINEAR); + addControlPointStep(new Vector2(300)); + addControlPointStep(new Vector2(500, 300)); + addControlPointStep(new Vector2(700, 200)); + addControlPointStep(new Vector2(500, 100)); + + AddStep("select first control point", () => visualiser.Pieces[0].IsSelected.Value = true); + AddStep("press tab", () => InputManager.Key(Key.Tab)); + assertControlPointPathType(0, PathType.BEZIER); + + AddStep("press shift-tab", () => + { + InputManager.PressKey(Key.LShift); + InputManager.Key(Key.Tab); + InputManager.ReleaseKey(Key.LShift); + }); + assertControlPointPathType(0, PathType.LINEAR); + + AddStep("press shift-tab", () => + { + InputManager.PressKey(Key.LShift); + InputManager.Key(Key.Tab); + InputManager.ReleaseKey(Key.LShift); + }); + assertControlPointPathType(0, PathType.BSpline(4)); + + AddStep("press shift-tab", () => + { + InputManager.PressKey(Key.LShift); + InputManager.Key(Key.Tab); + InputManager.ReleaseKey(Key.LShift); + }); + assertControlPointPathType(0, PathType.BEZIER); + + AddStep("select third last control point", () => + { + visualiser.Pieces[0].IsSelected.Value = false; + visualiser.Pieces[2].IsSelected.Value = true; + }); + AddRepeatStep("press tab", () => InputManager.Key(Key.Tab), 3); + assertControlPointPathType(2, PathType.PERFECT_CURVE); + + AddStep("press tab", () => InputManager.Key(Key.Tab)); + assertControlPointPathType(2, PathType.BSpline(4)); + + AddStep("press tab", () => InputManager.Key(Key.Tab)); + assertControlPointPathType(2, null); + } + private void addAssertPointPositionChanged(Vector2[] points, int index) { AddAssert($"Point at {points.ElementAt(index)} changed",