コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        /// <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));
        }