public void ShouldConvertCommandToJsonCorrectly() { //Arrange var testCommand = new UpdateSteeringInfoCommand(10, 10, true); var resultBytes = new byte[0]; var tcpRawClientMock = new Mock <ITcpRawClient>(); tcpRawClientMock.Setup(x => x.Send(It.IsAny <byte[]>())) .Callback <byte[]>(x => resultBytes = x); var tcpRawClientsFactoryMock = new Mock <ITcpRawClientsFactory>(); tcpRawClientsFactoryMock.Setup(x => x.Create(It.IsAny <IpAddress>())) .Returns(tcpRawClientMock.Object); var tcpFacade = new TcpFacade(new IpAddress("127.0.0.1", 1234), tcpRawClientsFactoryMock.Object); //Act tcpFacade.Send(testCommand); //Assert var jsonTestCommand = JsonConvert.SerializeObject(testCommand, Formatting.None); var stringResult = Encoding.UTF8.GetString(resultBytes); Assert.That(stringResult, Is.EqualTo(jsonTestCommand)); }
public void ShouldCalculateSteeringCorrectly(int power, int steering, int expectedLeft, int expectedRight) { //Arrange var resultCommand = new UpdateSteeringInfoCommand(0, 0, false); var connectionServiceMock = new Mock <IConnectionsService>(); connectionServiceMock.Setup(x => x.SendCommand(It.IsAny <UpdateSteeringInfoCommand>())) .Callback <UpdateSteeringInfoCommand>(x => { resultCommand = x; }); var steeringService = new SteeringService(connectionServiceMock.Object); //Act steeringService.UpdateSteeringInfo(power, steering, true); //Assert Assert.That(resultCommand.LeftSidePower, Is.EqualTo(expectedLeft)); Assert.That(resultCommand.RightSidePower, Is.EqualTo(expectedRight)); }
/// <param name="power">value from 0 to 100</param> /// <param name="steering">value from -100 to 100, where values lower than zero means left side, /// and higher than zero right side</param> public void UpdateSteeringInfo(int power, int steering, bool reverseGear, IpAddress ipAddress) { power = power > 100 ? 100 : power; steering = steering > 100 ? 100 : steering; steering = steering < -100 ? -100 : steering; var left = power; var right = power; if (steering < 0 && power > 0) { left = power - Math.Abs(steering) * power / 100; } else if (steering > 0 && power > 0) { right = power - Math.Abs(steering) * power / 100; } var command = new UpdateSteeringInfoCommand(left, right, reverseGear); this._connectionsService.SendCommand(command, new IpAddress(IPAddress.Loopback.ToString(), 1234)); }