protected internal void EnableSimulatedInputSource() { InputSourceSimulated = new InputSourceSimulated(); if (Input != null) { InitializeSimulatedInputSource(); } }
/// <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(); }
private void InitializeSimulatedInputSource() { if (InputSourceSimulated != null) { Input.Sources.Clear(); Input.Sources.Add(InputSourceSimulated); MouseSimulated = InputSourceSimulated.AddMouse(); KeyboardSimulated = InputSourceSimulated.AddKeyboard(); } }
/// <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); }
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(); }