Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }