public void ProcessInput_Mouse_ShouldSetActionStatesAccordingToHardwareInputAndInputMapping(bool left, bool middle, bool right, bool x1, bool x2, bool expectedFire, bool expectedZoom, bool expectedAltFire, bool expectedMelee) { // Arrange var inputSceneBuilder = new InputSceneBuilder(); inputSceneBuilder.AddInputWithSampleMouseActionMappings(out var inputComponent, out var fire, out var zoom, out var altFire, out var melee); var scene = inputSceneBuilder.Build(); var hardwareInput = GetMouseInput(new MouseInputBuilder { LeftButton = left, MiddleButton = middle, RightButton = right, XButton1 = x1, XButton2 = x2 }); _inputProvider.Capture().Returns(hardwareInput); // Act _inputSystem.ProcessInput(scene); // Assert Assert.That(inputComponent.GetActionState(fire.ActionName), Is.EqualTo(expectedFire)); Assert.That(inputComponent.GetActionState(zoom.ActionName), Is.EqualTo(expectedZoom)); Assert.That(inputComponent.GetActionState(altFire.ActionName), Is.EqualTo(expectedAltFire)); Assert.That(inputComponent.GetActionState(melee.ActionName), Is.EqualTo(expectedMelee)); }
public void ProcessInput_Keyboard_ShouldCallActionBindingsAccordingToHardwareInputAndInputMapping(bool right, bool left, bool up, bool space, int expectedRightCount, int expectedLeftCount, int expectedJumpCount) { // Arrange var inputSceneBuilder = new InputSceneBuilder(); inputSceneBuilder.AddInputWithSampleKeyboardActionMappings(out var inputComponent, out var moveRight, out var moveLeft, out var jump); var scene = inputSceneBuilder.Build(); var moveRightCallCounter = 0; var moveLeftCallCounter = 0; var jumpCallCounter = 0; inputComponent.BindAction(moveRight.ActionName, () => { moveRightCallCounter++; }); inputComponent.BindAction(moveLeft.ActionName, () => { moveLeftCallCounter++; }); inputComponent.BindAction(jump.ActionName, () => { jumpCallCounter++; }); var hardwareInput = GetKeyboardInput(new KeyboardInputBuilder { Right = right, Left = left, Up = up, Space = space }); _inputProvider.Capture().Returns(hardwareInput); // Act _inputSystem.ProcessInput(scene); // Assert Assert.That(moveRightCallCounter, Is.EqualTo(expectedRightCount)); Assert.That(moveLeftCallCounter, Is.EqualTo(expectedLeftCount)); Assert.That(jumpCallCounter, Is.EqualTo(expectedJumpCount)); }
public void ProcessInput_Keyboard_ShouldSetAxisStatesAccordingToHardwareInputAndInputMapping(bool up, bool down, bool right, bool left, bool space, double expectedUp, double expectedRight) { // Arrange var inputSceneBuilder = new InputSceneBuilder(); inputSceneBuilder.AddInputWithSampleKeyboardAxisMappings(out var inputComponent, out var moveUp, out var moveRight); var scene = inputSceneBuilder.Build(); var hardwareInput = GetKeyboardInput(new KeyboardInputBuilder { Up = up, Down = down, Right = right, Left = left, Space = space }); _inputProvider.Capture().Returns(hardwareInput); // Act _inputSystem.ProcessInput(scene); // Assert Assert.That(inputComponent.GetAxisState(moveUp.AxisName), Is.EqualTo(expectedUp)); Assert.That(inputComponent.GetAxisState(moveRight.AxisName), Is.EqualTo(expectedRight)); }
public void ProcessInput_ShouldCaptureHardwareInputOnce() { // Arrange var inputSceneBuilder = new InputSceneBuilder(); var scene = inputSceneBuilder.Build(); // Act _inputSystem.ProcessInput(scene); // Assert _inputProvider.Received(1).Capture(); }
public void ProcessInput_ShouldCallAxisBindingsEachTimeRegardlessHardwareInput() { // Arrange var inputSceneBuilder = new InputSceneBuilder(); inputSceneBuilder.AddInputWithSampleKeyboardAxisMappings(out var inputComponent, out var moveUp, out _); var scene = inputSceneBuilder.Build(); var callCounter = 0; inputComponent.BindAxis(moveUp.AxisName, value => { callCounter++; }); var allFalseHardwareInput = GetKeyboardInput(new KeyboardInputBuilder { Up = false, Down = false, Right = false, Left = false, Space = false }); var allTrueHardwareInput = GetKeyboardInput(new KeyboardInputBuilder { Up = true, Down = true, Right = true, Left = true, Space = true }); // Act for (var i = 0; i < 10; i++) { _inputProvider.Capture().Returns(allFalseHardwareInput); _inputSystem.ProcessInput(scene); _inputProvider.Capture().Returns(allTrueHardwareInput); _inputSystem.ProcessInput(scene); _inputProvider.Capture().Returns(allTrueHardwareInput); _inputSystem.ProcessInput(scene); _inputProvider.Capture().Returns(allFalseHardwareInput); _inputSystem.ProcessInput(scene); } // Assert Assert.That(callCounter, Is.EqualTo(40)); }
public void ProcessInput_ShouldCallActionBindingsCorrectNumberOfTimes_WhenExecutedTwice(bool first, bool second, int expectedCount) { // Arrange var inputSceneBuilder = new InputSceneBuilder(); inputSceneBuilder.AddInputWithSampleKeyboardActionMappings(out var inputComponent, out var moveRight, out _, out _); var scene = inputSceneBuilder.Build(); var hardwareInput1 = GetKeyboardInput(new KeyboardInputBuilder { Up = false, Down = false, Right = first, Left = false, Space = false }); var hardwareInput2 = GetKeyboardInput(new KeyboardInputBuilder { Up = false, Down = false, Right = second, Left = false, Space = false }); // fill in action states based on hardwareInput _inputProvider.Capture().Returns(hardwareInput1); _inputSystem.ProcessInput(scene); var callCounter = 0; inputComponent.BindAction(moveRight.ActionName, () => { callCounter++; }); // Act _inputProvider.Capture().Returns(hardwareInput1); _inputSystem.ProcessInput(scene); _inputProvider.Capture().Returns(hardwareInput2); _inputSystem.ProcessInput(scene); // Assert Assert.That(callCounter, Is.EqualTo(expectedCount)); }
public void ProcessInput_Mouse_ShouldCallAxisBindingsAccordingToHardwareInputAndInputMapping(int xPos, int yPos, double expectedLookRight, double expectedLookUp) { // Arrange var inputSceneBuilder = new InputSceneBuilder(); inputSceneBuilder.AddInputWithSampleMouseAxisMappings(out var inputComponent, out var lookRight, out var lookUp); var scene = inputSceneBuilder.Build(); var lookRightCallCounter = 0; var lookUpCallCounter = 0; var lookRightState = 0.0; var lookUpState = 0.0; inputComponent.BindAxis(lookRight.AxisName, value => { lookRightCallCounter++; lookRightState = value; }); inputComponent.BindAxis(lookUp.AxisName, value => { lookUpCallCounter++; lookUpState = value; }); var hardwareInput = GetMouseInput(new MouseInputBuilder { PositionDelta = new Vector2(xPos, yPos) }); _inputProvider.Capture().Returns(hardwareInput); // Act _inputSystem.ProcessInput(scene); // Assert Assert.That(lookRightCallCounter, Is.EqualTo(1)); Assert.That(lookUpCallCounter, Is.EqualTo(1)); Assert.That(lookRightState, Is.EqualTo(expectedLookRight)); Assert.That(lookUpState, Is.EqualTo(expectedLookUp)); }
public void ProcessInput_ShouldNotThrowException_WhenEntityIsAddedInInputBindingFunction() { // Arrange var inputSceneBuilder = new InputSceneBuilder(); inputSceneBuilder.AddInputWithSampleKeyboardActionMappings(out var inputComponent, out _, out _, out var jump); var scene = inputSceneBuilder.Build(); inputComponent.BindAction(jump.ActionName, () => { scene.AddEntity(new Entity()); }); var hardwareInput = GetKeyboardInput(new KeyboardInputBuilder { Space = true }); _inputProvider.Capture().Returns(hardwareInput); // Act // Assert Assert.That(() => _inputSystem.ProcessInput(scene), Throws.Nothing); }
public void ProcessInput_Mouse_ShouldCallActionBindingsAccordingToHardwareInputAndInputMapping(bool left, bool middle, bool right, bool x1, bool x2, int expectedFireCount, int expectedZoomCount, int expectedAltFireCount, int expectedMeleeCount) { // Arrange var inputSceneBuilder = new InputSceneBuilder(); inputSceneBuilder.AddInputWithSampleMouseActionMappings(out var inputComponent, out var fire, out var zoom, out var altFire, out var melee); var scene = inputSceneBuilder.Build(); var fireCallCounter = 0; var zoomCallCounter = 0; var altFireCallCounter = 0; var meleeCallCounter = 0; inputComponent.BindAction(fire.ActionName, () => { fireCallCounter++; }); inputComponent.BindAction(zoom.ActionName, () => { zoomCallCounter++; }); inputComponent.BindAction(altFire.ActionName, () => { altFireCallCounter++; }); inputComponent.BindAction(melee.ActionName, () => { meleeCallCounter++; }); var hardwareInput = GetMouseInput(new MouseInputBuilder { LeftButton = left, MiddleButton = middle, RightButton = right, XButton1 = x1, XButton2 = x2 }); _inputProvider.Capture().Returns(hardwareInput); // Act _inputSystem.ProcessInput(scene); // Assert Assert.That(fireCallCounter, Is.EqualTo(expectedFireCount)); Assert.That(zoomCallCounter, Is.EqualTo(expectedZoomCount)); Assert.That(altFireCallCounter, Is.EqualTo(expectedAltFireCount)); Assert.That(meleeCallCounter, Is.EqualTo(expectedMeleeCount)); }
public void ProcessInput_ShouldSetHardwareInputOnAllInputComponents() { // Arrange var inputSceneBuilder = new InputSceneBuilder(); inputSceneBuilder.AddInput(out var inputComponentOfEntity1); inputSceneBuilder.AddInput(out var inputComponentOfEntity2); inputSceneBuilder.AddInput(out var inputComponentOfEntity3); var scene = inputSceneBuilder.Build(); var hardwareInput = HardwareInput.Empty; _inputProvider.Capture().Returns(hardwareInput); // Act _inputSystem.ProcessInput(scene); // Assert Assert.That(inputComponentOfEntity1.HardwareInput, Is.EqualTo(hardwareInput)); Assert.That(inputComponentOfEntity2.HardwareInput, Is.EqualTo(hardwareInput)); Assert.That(inputComponentOfEntity3.HardwareInput, Is.EqualTo(hardwareInput)); }
public void ProcessInput_Mouse_ShouldSetAxisStatesAccordingToHardwareInputAndInputMapping(int xPos, int yPos, double expectedLookRight, double expectedLookUp) { // Arrange var inputSceneBuilder = new InputSceneBuilder(); inputSceneBuilder.AddInputWithSampleMouseAxisMappings(out var inputComponent, out var lookRight, out var lookUp); var scene = inputSceneBuilder.Build(); var hardwareInput = GetMouseInput(new MouseInputBuilder { PositionDelta = new Vector2(xPos, yPos) }); _inputProvider.Capture().Returns(hardwareInput); // Act _inputSystem.ProcessInput(scene); // Assert Assert.That(inputComponent.GetAxisState(lookRight.AxisName), Is.EqualTo(expectedLookRight)); Assert.That(inputComponent.GetAxisState(lookUp.AxisName), Is.EqualTo(expectedLookUp)); }