Exemplo n.º 1
0
 protected internal void EnableSimulatedInputSource()
 {
     InputSourceSimulated = new InputSourceSimulated();
     if (Input != null)
     {
         InitializeSimulatedInputSource();
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Checks adding/removal of keyboard and mouse
        /// </summary>
        void TestConnectedDevices()
        {
            Assert.True(Input.HasMouse);
            Assert.NotNull(Input.Mouse);
            Assert.True(Input.HasPointer);
            Assert.NotNull(Input.Pointer);
            Assert.True(Input.HasKeyboard);
            Assert.NotNull(Input.Keyboard);
            Assert.False(Input.HasGamePad);
            Assert.False(Input.HasGameController);

            bool keyboardAdded   = false;
            bool keyboardRemoved = false;

            Input.DeviceRemoved += (sender, args) =>
            {
                Assert.Equal(DeviceChangedEventType.Removed, args.Type);
                if (args.Device is KeyboardSimulated)
                {
                    keyboardRemoved = true;
                }
            };
            Input.DeviceAdded += (sender, args) =>
            {
                Assert.Equal(DeviceChangedEventType.Added, args.Type);
                if (args.Device is KeyboardSimulated)
                {
                    keyboardAdded = true;
                }
            };

            // Check keyboard removal
            InputSourceSimulated.RemoveAllKeyboards();
            Assert.True(keyboardRemoved);
            Assert.False(keyboardAdded);
            Assert.Null(Input.Keyboard);
            Assert.False(Input.HasKeyboard);

            // Check keyboard addition
            InputSourceSimulated.AddKeyboard();
            Assert.True(keyboardAdded);
            Assert.NotNull(Input.Keyboard);
            Assert.True(Input.HasKeyboard);

            // Test not crashing with no keyboard/mouse in a few update loops
            InputSourceSimulated.RemoveAllKeyboards();
            InputSourceSimulated.RemoveAllMice();

            for (int i = 0; i < 3; i++)
            {
                Input.Update(DrawTime);
            }

            // Reset input source state
            EnableSimulatedInputSource();
        }
Exemplo n.º 3
0
 private void InitializeSimulatedInputSource()
 {
     if (InputSourceSimulated != null)
     {
         Input.Sources.Clear();
         Input.Sources.Add(InputSourceSimulated);
         MouseSimulated    = InputSourceSimulated.AddMouse();
         KeyboardSimulated = InputSourceSimulated.AddKeyboard();
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// Checks adding/removing gamepads and index assignment
        /// </summary>
        void TestGamePad()
        {
            Assert.Equal(0, InputSourceSimulated.GamePads.Count);
            Assert.False(Input.HasGamePad);
            Assert.Null(Input.DefaultGamePad);

            var gamePad0 = InputSourceSimulated.AddGamePad();

            Assert.Equal(1, Input.GamePadCount);
            Assert.True(Input.HasGamePad);
            Assert.NotNull(Input.DefaultGamePad);

            // Add another gamepad
            var gamePad1 = InputSourceSimulated.AddGamePad();

            // Test automatic index assignment
            Assert.Equal(0, gamePad0.Index);
            Assert.Equal(1, gamePad1.Index);

            Assert.Equal(1, Input.GetGamePadsByIndex(0).Count());
            Assert.Equal(1, Input.GetGamePadsByIndex(1).Count());

            // Test putting both gamepads on the same index
            gamePad1.Index = 0;
            Assert.Equal(2, Input.GetGamePadsByIndex(0).Count());
            Assert.Equal(0, Input.GetGamePadsByIndex(1).Count());

            // Test reassign suggestions
            gamePad1.Index = Input.GetFreeGamePadIndex(gamePad1);
            gamePad0.Index = Input.GetFreeGamePadIndex(gamePad0);
            Assert.True(gamePad1.Index == 0 || gamePad0.Index == 0);
            Assert.True(gamePad0.Index != gamePad1.Index);

            // Test button states
            gamePad0.SetButton(GamePadButton.A, true);
            Input.Update(DrawTime);

            Assert.True(gamePad0.IsButtonPressed(GamePadButton.A));
            Assert.False(gamePad0.IsButtonReleased(GamePadButton.A));
            Assert.True(gamePad0.IsButtonDown(GamePadButton.A));

            gamePad0.SetButton(GamePadButton.A, false);
            Input.Update(DrawTime);

            Assert.False(gamePad0.IsButtonPressed(GamePadButton.A));
            Assert.True(gamePad0.IsButtonReleased(GamePadButton.A));
            Assert.False(gamePad0.IsButtonDown(GamePadButton.A));

            InputSourceSimulated.RemoveGamePad(gamePad0);
            InputSourceSimulated.RemoveGamePad(gamePad1);

            Assert.Equal(0, Input.GamePadCount);
        }
Exemplo n.º 5
0
        public GameTestingSystem(IServiceRegistry registry) : base(registry)
        {
            DrawOrder = int.MaxValue;
            Enabled   = true;
            Visible   = true;

            // Switch to simulated input
            var input = registry.GetSafeServiceAs <InputManager>();

            input.Sources.Clear();
            input.Sources.Add(inputSourceSimulated = new InputSourceSimulated());
            keyboardSimulated = inputSourceSimulated.AddKeyboard();
            mouseSimulated    = inputSourceSimulated.AddMouse();
        }