public void Robot_PlacedAndTurnedLeft_ReportsCorrectPosition()
        {
            var robot = new Robot();

            robot.Place(1, 1, Facing.North);
            robot.Left();
            Assert.AreEqual("1,1,WEST", robot.Report());
        }
        public void Robot_InitialisedButNotPlaced_CannotBeTurned()
        {
            var robot  = new Robot();
            var result = robot.Left();

            Assert.IsFalse(result);
            Assert.AreEqual("Robot cannot turn until it has been placed on the table.", robot.LastError);
        }
        public void Robot_PlacedMovedAndTurned_ReportsCorrectPosition()
        {
            var robot = new Robot();

            robot.Place(1, 2, Facing.East);
            robot.Move();
            robot.Move();
            robot.Left();
            robot.Move();
            Assert.AreEqual("3,3,NORTH", robot.Report());
        }
示例#4
0
        /// <summary>
        /// Sends incoming command to robot.
        /// </summary>
        /// <param name="userInput">command for robot</param>
        /// <returns></returns>
        public string ExecuteSingleCommand(string userInput)
        {
            try
            {
                string           output    = userInput;
                CommandArguments arguments = new CommandArguments();
                if (ParseCommand(userInput, arguments))
                {
                    switch (arguments.Instruction)
                    {
                    case Command.PLACE:
                        _robot.Place(arguments.X, arguments.Y, arguments.Face);
                        break;

                    case Command.MOVE:
                        _robot.Move();
                        break;

                    case Command.LEFT:
                        _robot.Left();
                        break;

                    case Command.RIGHT:
                        _robot.Right();
                        break;

                    case Command.REPORT:
                        output = _robot.Report();
                        Console.WriteLine(output);
                        break;

                    default:
                        break;
                    }
                }
                return(output);
            }
            catch (Exception)
            {
                throw;
            }
        }