示例#1
0
        public void MoveRobot_MovingRightAndCheckBounds_ReturnsTrue()
        {
            var board    = new Board();
            var toyRobot = new ToyRobot();

            // placing robot at 1,2,EAST
            toyRobot.Execute("PLACE 1,2,EAST", board);

            // moves to 2,2
            toyRobot.MoveForward(board);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.X, actual: 2);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.Y, actual: 2);

            // moves to 3,2
            toyRobot.MoveForward(board);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.X, actual: 3);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.Y, actual: 2);

            // moves to 4,2
            toyRobot.MoveForward(board);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.X, actual: 4);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.Y, actual: 2);

            // moves to 4,2
            toyRobot.MoveForward(board);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.X, actual: 4);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.Y, actual: 2);

            // moves to 4,2
            toyRobot.MoveForward(board);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.X, actual: 4);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.Y, actual: 2);
        }
示例#2
0
        public void MoveRobot_MovingUpAndCheckBounds_ReturnsTrue()
        {
            var board    = new Board();
            var toyRobot = new ToyRobot();

            // placing robot at 1,2,NORTH
            toyRobot.Execute("PLACE 1,2,NORTH", board);

            // moves to 1,3
            toyRobot.MoveForward(board);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.X, actual: 1);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.Y, actual: 3);

            // moves to 1,4
            toyRobot.MoveForward(board);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.X, actual: 1);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.Y, actual: 4);

            // moves to 1,4
            toyRobot.MoveForward(board);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.X, actual: 1);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.Y, actual: 4);

            // moves to 1,4
            toyRobot.MoveForward(board);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.X, actual: 1);
            Assert.AreEqual(expected: toyRobot.CurrentPosition.Y, actual: 4);
        }
示例#3
0
        public void Move_WhenStatusIsOff()
        {
            var robot = new ToyRobot(new TableSurface(), _exceptionFactory);

            Exception ex = Assert.Throws <SafeException>(() => robot.MoveForward());

            Assert.Equal("please place this robot first", ex.Message);
        }
示例#4
0
        public void Move_WhenStatusIsOn_AtBoundary_InValidMovement(CompassDirections currentDirection, int currentPositionX, int currentPositionY)
        {
            var robot = new ToyRobot(new TableSurface(), _exceptionFactory);

            robot.Place(new RobotPosition {
                X = currentPositionX, Y = currentPositionY, Direction = currentDirection
            });

            Exception ex = Assert.Throws <SafeException>(() => robot.MoveForward());

            Assert.Equal("please place this robot first", ex.Message);
        }
示例#5
0
        public void Move_WhenStatusIsOn_AtBoundary_ValidMovement(CompassDirections currentDirection, int currentPositionX, int currentPositionY, int expectedPositionX, int expectedPositionY)
        {
            var robot = new ToyRobot(new TableSurface(), _exceptionFactory);

            robot.Place(new RobotPosition {
                X = currentPositionX, Y = currentPositionY, Direction = currentDirection
            });
            robot.MoveForward();

            Assert.Equal(RobotStatus.On, robot.Status);
            Assert.Equal(expectedPositionX, robot.Position.X);
            Assert.Equal(expectedPositionY, robot.Position.Y);
            Assert.Equal(currentDirection, robot.Position.Direction);
        }
示例#6
0
        public void Place_WhenStatusIsOn_InvaliadPosition(CompassDirections direction, int positionX, int positionY)
        {
            var robot = new ToyRobot(new TableSurface(), _exceptionFactory);

            robot.Place(new RobotPosition {
                X = 2, Y = 2, Direction = CompassDirections.NORTH
            });
            robot.MoveForward();

            Exception ex = Assert.Throws <SafeException>(() => robot.Place(new RobotPosition {
                X = positionX, Y = positionY, Direction = direction
            }));

            Assert.Equal("the robot cannot place to expected postion", ex.Message);
        }
示例#7
0
        public void Place_WhenStatusIsOn_ValiadPosition(CompassDirections direction, int positionX, int positionY)
        {
            var robot = new ToyRobot(new TableSurface(), _exceptionFactory);

            robot.Place(new RobotPosition {
                X = 2, Y = 2, Direction = CompassDirections.NORTH
            });
            robot.MoveForward();
            robot.Place(new RobotPosition {
                X = positionX, Y = positionY, Direction = direction
            });

            Assert.Equal(RobotStatus.On, robot.Status);
            Assert.Equal(positionX, robot.Position.X);
            Assert.Equal(positionY, robot.Position.Y);
            Assert.Equal(direction, robot.Position.Direction);
        }