Exemple #1
0
        public TestSceneKeyCounter()
        {
            KeyCounterKeyboard testCounter;

            KeyCounterDisplay kc = new KeyCounterDisplay
            {
                Origin   = Anchor.Centre,
                Anchor   = Anchor.Centre,
                Children = new KeyCounter[]
                {
                    testCounter = new KeyCounterKeyboard(Key.X),
                    new KeyCounterKeyboard(Key.X),
                    new KeyCounterMouse(MouseButton.Left),
                    new KeyCounterMouse(MouseButton.Right),
                },
            };

            AddStep("Add random", () =>
            {
                Key key = (Key)((int)Key.A + RNG.Next(26));
                kc.Add(new KeyCounterKeyboard(key));
            });

            Key testKey = ((KeyCounterKeyboard)kc.Children.First()).Key;

            void addPressKeyStep()
            {
                AddStep($"Press {testKey} key", () =>
                {
                    InputManager.PressKey(testKey);
                    InputManager.ReleaseKey(testKey);
                });
            }

            addPressKeyStep();
            AddAssert($"Check {testKey} counter after keypress", () => testCounter.CountPresses == 1);
            addPressKeyStep();
            AddAssert($"Check {testKey} counter after keypress", () => testCounter.CountPresses == 2);
            AddStep("Disable counting", () => testCounter.IsCounting = false);
            addPressKeyStep();
            AddAssert($"Check {testKey} count has not changed", () => testCounter.CountPresses == 2);

            Add(kc);
        }
        public TestCaseKeyCounter()
        {
            KeyCounterKeyboard   rewindTestKeyCounterKeyboard;
            KeyCounterCollection kc = new KeyCounterCollection
            {
                Origin   = Anchor.Centre,
                Anchor   = Anchor.Centre,
                Children = new KeyCounter[]
                {
                    rewindTestKeyCounterKeyboard = new KeyCounterKeyboard(Key.X),
                    new KeyCounterKeyboard(Key.X),
                    new KeyCounterMouse(MouseButton.Left),
                    new KeyCounterMouse(MouseButton.Right),
                },
            };


            AddStep("Add random", () =>
            {
                Key key = (Key)((int)Key.A + RNG.Next(26));
                kc.Add(new KeyCounterKeyboard(key));
            });
            AddSliderStep("Fade time", 0, 200, 50, v => kc.FadeTime = v);

            Key    testKey = ((KeyCounterKeyboard)kc.Children.First()).Key;
            double time1   = 0;

            AddStep($"Press {testKey} key", () =>
            {
                InputManager.PressKey(testKey);
                InputManager.ReleaseKey(testKey);
            });

            AddAssert($"Check {testKey} counter after keypress", () => rewindTestKeyCounterKeyboard.CountPresses == 1);

            AddStep($"Press {testKey} key", () =>
            {
                InputManager.PressKey(testKey);
                InputManager.ReleaseKey(testKey);
                time1 = Clock.CurrentTime;
            });

            AddAssert($"Check {testKey} counter after keypress", () => rewindTestKeyCounterKeyboard.CountPresses == 2);

            IFrameBasedClock oldClock = null;

            AddStep($"Rewind {testKey} counter once", () =>
            {
                oldClock = rewindTestKeyCounterKeyboard.Clock;
                rewindTestKeyCounterKeyboard.Clock = new FramedOffsetClock(new FixedClock(time1 - 10));
            });

            AddAssert($"Check {testKey} counter after rewind", () => rewindTestKeyCounterKeyboard.CountPresses == 1);

            AddStep($"Rewind {testKey} counter to zero", () => rewindTestKeyCounterKeyboard.Clock = new FramedOffsetClock(new FixedClock(0)));

            AddAssert($"Check {testKey} counter after rewind", () => rewindTestKeyCounterKeyboard.CountPresses == 0);

            AddStep("Restore clock", () => rewindTestKeyCounterKeyboard.Clock = oldClock);

            Add(kc);
        }