public void TestReValidatedDrawableReceivesClick() { var receptors = new InputReceptor[2]; AddStep("create hierarchy", () => { Children = new Drawable[] { receptors[0] = new InputReceptor { Size = new Vector2(100) }, receptors[1] = new InputReceptor { Size = new Vector2(100) } }; }); AddStep("move mouse to receptors", () => InputManager.MoveMouseTo(receptors[0])); AddStep("press button", () => InputManager.PressButton(MouseButton.Left)); AddStep("remove receptor 0", () => Remove(receptors[0])); AddStep("add back receptor 0", () => Add(receptors[0])); AddStep("release button", () => InputManager.ReleaseButton(MouseButton.Left)); AddAssert("receptor 0 received click", () => receptors[0].ClickReceived); }
public void TestReleaseAlwaysPressedToOriginalTargets() { InputReceptor receptorBelow = null; InputReceptor receptorAbove = null; AddStep("setup", () => { Child = new TestKeyBindingContainer { RelativeSizeAxes = Axes.Both, Children = new Drawable[] { receptorBelow = new InputReceptor(true) { Size = new Vector2(100), }, receptorAbove = new InputReceptor(false) { Size = new Vector2(100), Position = new Vector2(100), } } }; }); // Input is positional AddStep("move mouse to receptorBelow", () => InputManager.MoveMouseTo(receptorBelow)); AddStep("press keybind1", () => InputManager.PressKey(Key.Up)); AddAssert("receptorBelow received press", () => receptorBelow.PressedReceived); AddStep("move mouse to receptorAbove", () => InputManager.MoveMouseTo(receptorAbove)); AddStep("release keybind1", () => InputManager.ReleaseKey(Key.Up)); AddAssert("receptorBelow received release", () => receptorBelow.ReleasedReceived); }
public void TestNoLongerValidDrawableDoesNotReceiveClick() { var receptors = new InputReceptor[2]; AddStep("create hierarchy", () => { Children = new Drawable[] { receptors[0] = new InputReceptor { Size = new Vector2(100) }, receptors[1] = new InputReceptor { Size = new Vector2(100) } }; }); AddStep("move mouse to receptors", () => InputManager.MoveMouseTo(receptors[0])); AddStep("press button", () => InputManager.PressButton(MouseButton.Left)); AddStep("remove receptor 0", () => Remove(receptors[0])); AddStep("release button", () => InputManager.ReleaseButton(MouseButton.Left)); AddAssert("receptor 0 did not receive click", () => !receptors[0].ClickReceived); }
public void TestNoLongerValidDrawableDoesNotReceiveRepeat() { var receptors = new InputReceptor[2]; AddStep("create hierarchy", () => { Children = new Drawable[] { receptors[0] = new InputReceptor { Size = new Vector2(100) }, receptors[1] = new InputReceptor { Size = new Vector2(100) } }; }); AddStep("press key", () => InputManager.PressKey(Key.A)); AddUntilStep("wait for repeat on receptor 0", () => receptors[0].RepeatReceived); AddStep("remove receptor 0 & reset repeat", () => { Remove(receptors[0]); receptors[0].RepeatReceived = false; receptors[1].RepeatReceived = false; }); AddUntilStep("wait for repeat on receptor 1", () => receptors[1].RepeatReceived); AddAssert("receptor 0 did not receive repeat", () => !receptors[0].RepeatReceived); }
public void TestJoystickReleaseOnlyPropagatedToOriginalTargets() { var receptors = new InputReceptor[3]; AddStep("create hierarchy", () => { Children = new Drawable[] { receptors[0] = new InputReceptor { Size = new Vector2(100), Press = () => true }, receptors[1] = new InputReceptor { Size = new Vector2(100) } }; }); AddStep("press a button", () => InputManager.PressJoystickButton(JoystickButton.Button1)); AddStep("add receptor above", () => { Add(receptors[2] = new InputReceptor { Size = new Vector2(100), Press = () => true, Release = () => true }); }); AddStep("release key", () => InputManager.ReleaseJoystickButton(JoystickButton.Button1)); AddAssert("receptor 0 handled key down", () => receptors[0].PressReceived); AddAssert("receptor 0 handled key up", () => receptors[0].ReleaseReceived); AddAssert("receptor 1 handled key down", () => receptors[1].PressReceived); AddAssert("receptor 1 handled key up", () => receptors[1].ReleaseReceived); AddAssert("receptor 2 did not handle key down", () => !receptors[2].PressReceived); AddAssert("receptor 2 did not handle key up", () => !receptors[2].ReleaseReceived); }
public void TestKeyUpOnlyPropagatedToOriginalTargets() { var receptors = new InputReceptor[3]; AddStep("create hierarchy", () => { Children = new Drawable[] { receptors[0] = new InputReceptor { Size = new Vector2(100), KeyDown = () => true }, receptors[1] = new InputReceptor { Size = new Vector2(100) } }; }); AddStep("press key", () => InputManager.PressKey(Key.A)); AddStep("add receptor above", () => { Add(receptors[2] = new InputReceptor { Size = new Vector2(100), KeyDown = () => true, KeyUp = () => true }); }); AddStep("release key", () => InputManager.ReleaseKey(Key.A)); AddAssert("receptor 0 handled key down", () => receptors[0].DownReceived); AddAssert("receptor 0 handled key up", () => receptors[0].UpReceived); AddAssert("receptor 1 handled key down", () => receptors[1].DownReceived); AddAssert("receptor 1 handled key up", () => receptors[1].UpReceived); AddAssert("receptor 2 did not handle key down", () => !receptors[2].DownReceived); AddAssert("receptor 2 did not handle key up", () => !receptors[2].UpReceived); }
public void TestNoLongerValidDrawableDoesNotReceiveDoubleClick() { InputReceptor receptor = null; AddStep("create hierarchy", () => { Child = receptor = new InputReceptor { Size = new Vector2(100), Click = () => true }; }); AddStep("move mouse to receptor", () => InputManager.MoveMouseTo(receptor)); AddStep("click", () => InputManager.Click(MouseButton.Left)); AddStep("remove receptor and double click", () => { Remove(receptor); // Test correctness can be asserted by removing this line and ensuring the test fails InputManager.Click(MouseButton.Left); // Done immediately after due to double clicks being frame-dependent (timing) }); AddAssert("receptor did not receive double click", () => !receptor.DoubleClickReceived); }