public void Robot_PlacedOffTable_CannotBePlaced()
        {
            var robot  = new Robot();
            var result = robot.Place(-1, 0, Facing.North);

            Assert.IsFalse(result);
            Assert.AreEqual("Robot cannot be placed there.", robot.LastError);

            result = robot.Place(0, 6, Facing.North);
            Assert.IsFalse(result);
            Assert.AreEqual("Robot cannot be placed there.", robot.LastError);
        }
        public void Robot_PlacedAndTurnedRight_ReportsCorrectPosition()
        {
            var robot = new Robot();

            robot.Place(1, 1, Facing.North);
            robot.Right();
            Assert.AreEqual("1,1,EAST", robot.Report());
        }
        public void Robot_PlacedAndMoved_ReportsCorrectPosition()
        {
            var robot = new Robot();

            robot.Place(1, 1, Facing.North);
            robot.Move();
            Assert.AreEqual("1,2,NORTH", robot.Report());
        }
        public void Robot_Placed_CanReportItsPosition()
        {
            var robot    = new Robot();
            var result   = robot.Place(3, 2, Facing.East);
            var position = robot.Report();

            Assert.IsTrue(result);
            Assert.AreEqual("", robot.LastError);
            Assert.AreEqual("3,2,EAST", position);
        }
        public void Robot_PlacedAndMovedOffTable_CannotBeMoved()
        {
            var robot = new Robot();

            robot.Place(5, 5, Facing.North);
            var result = robot.Move();

            Assert.IsFalse(result);
            Assert.AreEqual("Robot cannot be moved there.", robot.LastError);
            Assert.AreEqual("5,5,NORTH", robot.Report());
        }
        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());
        }
示例#7
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;
            }
        }