コード例 #1
0
        public void ReturnDirectionAccordingly(char directionInfo, Type expectedType)
        {
            var result = DirectionFactory.GetDirection(directionInfo);

            Assert.NotNull(result);
            Assert.Equal(expectedType, result.GetType());
        }
コード例 #2
0
        public void ThrowInvalidDirectionExceptionWhenDirectionInfoIsInvalid()
        {
            char directionInfo = 'X';

            var result = Record.Exception(() => DirectionFactory.GetDirection(directionInfo));

            Assert.NotNull(result);
            Assert.IsType <InvalidDirectionException>(result);
        }
コード例 #3
0
        public void ThrowOutOfPlateauExceptionWhenMoveToNewCoordinatesExceedsBorders()
        {
            DirectionClass direction = DirectionFactory.GetDirection('S');

            var result = Record.Exception(() => borderStrategy.MoveToNewCoordinates(coordinates, direction));

            Assert.NotNull(result);
            Assert.IsType <OutOfPlateauException>(result);
        }
コード例 #4
0
        public void MoveToCoordinatesWhenMoveToNewCoordinatesStaysInBorders()
        {
            DirectionClass direction = DirectionFactory.GetDirection('N');

            var result = borderStrategy.MoveToNewCoordinates(coordinates, direction);

            int expectedCoordX = 0;
            int expectedCoordY = 1;

            Assert.NotNull(result);
            Assert.Equal(expectedCoordX, result.coordX);
            Assert.Equal(expectedCoordY, result.coordY);
        }
コード例 #5
0
        public void WaitAtTheBorderWhenMoveToNewCoordinatesExceedsBorders()
        {
            DirectionClass direction = DirectionFactory.GetDirection('S');

            var result = borderStrategy.MoveToNewCoordinates(coordinates, direction);

            int expectedCoordX = 0;
            int expectedCoordY = 0;

            Assert.NotNull(result);
            Assert.Equal(expectedCoordX, result.coordX);
            Assert.Equal(expectedCoordY, result.coordY);
        }
コード例 #6
0
        /// <summary>
        /// Returns new instance of a Rover object
        /// </summary>
        /// <param name="coordX">Rover's starting coordinate on the X axis</param>
        /// <param name="coordY">Rover's starting coordinate on the Y axis</param>
        /// <param name="directionInfo">Rover's facing direction</param>
        /// <param name="chosenBorderStrategy">Chosen BorderStrategy for the Rover</param>
        /// <returns>New instance of a Rover object</returns>
        public static Rover GetNewRover(int coordX, int coordY, char directionInfo, BorderStrategy chosenBorderStrategy)
        {
            if (coordX < chosenBorderStrategy.lowerBoundryBorderCoordinates.coordX || coordY < chosenBorderStrategy.lowerBoundryBorderCoordinates.coordY || coordX > chosenBorderStrategy.upperBoundryBorderCoordinates.coordX || coordY > chosenBorderStrategy.upperBoundryBorderCoordinates.coordY)
            {
                throw new OutOfPlateauException();
            }

            Rover NewRover = new Rover
            {
                currentDirection     = DirectionFactory.GetDirection(directionInfo),
                chosenBorderStrategy = chosenBorderStrategy,
                currentCoordinates   = new Coordinates(coordX, coordY)
            };

            return(NewRover);
        }