public void ReceivingNativeInput_WhenHooked_CallsFactoryWithReceivedInput() { // Arrange var configuration = MouseEventConfiguration.CreateForAllEvents(); _receiverMock.Setup(f => f.Configuration).Returns(configuration); _receiverMock.Setup(f => f.ReceiveAsync(It.IsAny <MouseInput>())).Returns(Task.FromResult(true)); Action <NativeMouseInput> nativeInputCallback = null; _nativeMouseHookServiceMock.Setup( f => f.Hook( It.IsAny <Action <NativeMouseInput> >())) .Callback <Action <NativeMouseInput> >(a => nativeInputCallback = a); var mouseInput = new MouseInput(MouseInputKey.Right, MouseInputDirection.MouseUp); _mouseInputFactoryMock.Setup(f => f.Create(It.IsAny <NativeMouseInput>())).Returns(mouseInput); _sut.HookMouse(); var nativeMouseInput = new NativeMouseInput(NativeMouseInputKey.Left, NativeMouseInputDirection.MouseDown); // Act nativeInputCallback(nativeMouseInput); // Assert _mouseInputFactoryMock.Verify(f => f.Create(nativeMouseInput), Times.Once); }
public void ReceivingNativeInput_ReceiverNotConfiguredForEvent_DoesNotCallReceiver() { // Arrange var mouseEventConfiguration = new MouseEventConfiguration( Option.CreateApplicible(MouseInputKey.Left), Option.CreateNotApplicable <MouseInputDirection>(true)); _receiverMock.Setup(f => f.ReceiveAsync(It.IsAny <MouseInput>())); _receiverMock.Setup(f => f.Configuration).Returns(mouseEventConfiguration); var mouseInput = new MouseInput(MouseInputKey.Right, MouseInputDirection.MouseUp); _mouseInputFactoryMock.Setup(f => f.Create(It.IsAny <NativeMouseInput>())).Returns(mouseInput); Action <NativeMouseInput> nativeInputCallback = null; _nativeMouseHookServiceMock.Setup( f => f.Hook( It.IsAny <Action <NativeMouseInput> >() )).Callback <Action <NativeMouseInput> >(a => nativeInputCallback = a); _sut.HookMouse(); var nativeKeyboardInput = new NativeMouseInput(NativeMouseInputKey.Right, NativeMouseInputDirection.MouseUp); // Act nativeInputCallback(nativeKeyboardInput); // Assert _receiverMock.Verify(f => f.ReceiveAsync(It.IsAny <MouseInput>()), Times.Never); }
private void OnNativeMouseInput(NativeMouseInput nativeMouseInput) { var keyboardInput = _inputFactory.Create(nativeMouseInput); var receivingTasks = _receivers .Where(receiver => receiver.Configuration.CheckIfApplicable(keyboardInput)) .Select(receiver => receiver.ReceiveAsync(keyboardInput)) .ToArray(); Task.Run(() => Task.WhenAll(receivingTasks)); }
public void Mapping_ReturnesMappedInput() { // Arrange var nativeMouseInput = new NativeMouseInput(NativeMouseInputKey.Left, NativeMouseInputDirection.MouseUp); // Act var actualMouseInput = _sut.Create(nativeMouseInput); // Assert Assert.AreEqual(MouseInputKey.Left, actualMouseInput.InputKey); Assert.AreEqual(MouseInputDirection.MouseUp, actualMouseInput.Direction); }
public MouseInput Create(NativeMouseInput nativeInput) { return(new MouseInput( MapKey(nativeInput.Key), MapDirection(nativeInput.Direction))); }