コード例 #1
0
        public void GetDroneCoordinatesFromApiTest()
        {
            int              recordCount          = 0;
            string           droneNavigationInput = "5 5\r\n1 2 N\r\nLMLMLMLMM";
            DroneOutputModel expectedResult       = new DroneOutputModel()
            {
                PositionX = 1, PositionY = 3, Heading = "N"
            };

            using (var container = builder.Build())
            {
                var droneNavigationService = container.Resolve <IDroneNavigationService>();
                var model = droneNavigationService.GetDroneCoordinatesFromApi(droneNavigationInput);
                model.Wait();
                recordCount = model.Result.Count;
                if (model.Result != null && model.Result.Count > 0)
                {
                    var result = model.Result[0];
                    Assert.AreEqual(expectedResult.PositionX, result.PositionX);
                    Assert.AreEqual(expectedResult.PositionY, result.PositionY);
                    Assert.AreEqual(expectedResult.Heading, result.Heading);
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Processes the navigation instructions
        /// </summary>
        /// <param name="droneInputCommand"></param>
        /// <returns></returns>
        private DroneOutputModel ExecuteCommand(DroneInputModel droneInputCommand)
        {
            var commands = droneInputCommand.Instructions.ToCharArray();
            DroneOutputModel finalCoodinates = new DroneOutputModel();

            foreach (char command in commands)
            {
                switch (command)
                {
                case 'L':
                    switch (droneInputCommand.Position.Heading)
                    {
                    case "E":
                        droneInputCommand.Position.Heading = "N";
                        break;

                    case "N":
                        droneInputCommand.Position.Heading = "W";
                        break;

                    case "W":
                        droneInputCommand.Position.Heading = "S";
                        break;

                    case "S":
                        droneInputCommand.Position.Heading = "E";
                        break;
                    }
                    break;

                case 'R':
                    switch (droneInputCommand.Position.Heading)
                    {
                    case "E":
                        droneInputCommand.Position.Heading = "S";
                        break;

                    case "N":
                        droneInputCommand.Position.Heading = "E";
                        break;

                    case "W":
                        droneInputCommand.Position.Heading = "N";
                        break;

                    case "S":
                        droneInputCommand.Position.Heading = "W";
                        break;
                    }
                    break;

                case 'M':
                    droneInputCommand = Move(droneInputCommand);
                    break;
                }
            }

            finalCoodinates.PositionX = droneInputCommand.Position.PositionX;
            finalCoodinates.PositionY = droneInputCommand.Position.PositionY;
            finalCoodinates.Heading   = droneInputCommand.Position.Heading;

            return(finalCoodinates);
        }
コード例 #3
0
 public DroneInputModel()
 {
     Position = new DroneOutputModel();
 }