public void GivenFacingWest_AndOnTheTopLeft_WhenMovesForward_ShouldMoveToTopRight()
        {
            //Arrange
            _sut = new Rover(_planet, -10, 10, Direction.W);
            var expcPositionString = "10, 10, W";

            //Act
            var isSuccessfulMove = _sut.ProcessCommands("F");
            var currentPosition  = _sut.GetCurrentPosition();

            //Assert
            isSuccessfulMove.Should().BeTrue("Wrapping On TopLeft boundary failed");
            expcPositionString.ToString().Should().Be(currentPosition);
        }
        public void GivenFacingSouth_AndOnTheTopRight_WhenMovesBackward_ShouldMoveToBottomRight()
        {
            //Arrange
            _sut = new Rover(_planet, 10, 10, Direction.S);
            var expcPositionString = "10, -10, S";

            //Act
            var isSuccessfulMove = _sut.ProcessCommands("B");
            var currentPosition  = _sut.GetCurrentPosition();

            //Assert
            isSuccessfulMove.Should().BeTrue("Wrapping On TopRight boundary failed");
            expcPositionString.ToString().Should().Be(currentPosition);
        }
Ejemplo n.º 3
0
        public void GivenBackCommand_WhenRoverMoves_ShouldMoveDownwardsVertically()
        {
            //Arrange
            _sut = new Rover(_planet, 2, 3, Direction.N);

            var expcPositionString = "2, 2, N";

            //Act
            var isSuccess       = _sut.ProcessCommands("B");
            var currentPosition = _sut.GetCurrentPosition();

            //Assert
            isSuccess.Should().BeTrue("Vertial Downwards operation failed");
            expcPositionString.ToString().Should().Be(currentPosition, "Rover is not at expected position");
        }
Ejemplo n.º 4
0
        public void GivenBackwardCommand_WhenRoverMoves_ShouldMoveBackHorizontally()
        {
            //Arrange
            _sut = new Rover(_planet, 2, 3, Direction.E);

            var expcPositionString = "1, 3, E";

            //Act
            var isSuccess       = _sut.ProcessCommands("B");
            var currentPosition = _sut.GetCurrentPosition();

            //Assert
            isSuccess.Should().BeTrue("Horizontal Backward operation failed");
            expcPositionString.ToString().Should().Be(currentPosition, "Rover is not at expected position");
        }
Ejemplo n.º 5
0
        public void GivenSeriesOfCommands_WhenRoverMoves_ShouldMoveToExpectionPosition()
        {
            //Arrange
            _sut = new Rover(_planet, 0, 0, Direction.N);

            var expcPositionString = "2, 2, E";

            //Act
            var isSuccess       = _sut.ProcessCommands("FFRFF");
            var currentPosition = _sut.GetCurrentPosition();

            //Assert
            isSuccess.Should().BeTrue("Rover Move operation failed");
            expcPositionString.ToString().Should().Be(currentPosition, "Rover is not at expected position");
        }
Ejemplo n.º 6
0
        public void GivenObstacleIsPresentImmediately_WhenMovesForward_ShouldNotChangeInPosition()
        {
            //Arrange
            _obstacles = new List <Point>
            {
                new Point(1, 0)
            };
            _planet.SetObstacles(_obstacles);

            _sut = new Rover(_planet, 0, 0, Direction.E);

            var expcPositionString = "0, 0, E";

            //Act
            var isSuccessfulMove = _sut.ProcessCommands("F");
            var currentPosition  = _sut.GetCurrentPosition();

            //Assert
            isSuccessfulMove.Should().BeFalse("Rover moved past obstacle");
            expcPositionString.ToString().Should().Be(currentPosition);
        }
Ejemplo n.º 7
0
        public void GivenCommandsToMove_WhenObstacleIsEncounteredInTheMiddle_ShouldReturnLastSuccessfulPoint()
        {
            //Arrange
            _obstacles = new List <Point>
            {
                new Point(80, 80)
            };
            _planet = new Pluto(100, 0, 100, 0);
            _planet.SetObstacles(_obstacles);

            _sut = new Rover(_planet, 70, 70, Direction.N);

            var expcPositionString = "79, 80, E";

            //Act
            var isSuccessfulMove = _sut.ProcessCommands("FFFFFFFFFFRFFFFFFFFFF");
            var currentPosition  = _sut.GetCurrentPosition();

            //Assert
            isSuccessfulMove.Should().BeFalse("Rover moved past obstacle");
            expcPositionString.ToString().Should().Be(currentPosition);
        }