public void ExecuteCommands_WhenRotateRightCommand_TheRoverRotatesRight(int x, int y, Direction start_dir, Direction end_dir)
        {
            _plutoRover = new PlutoRover(x, y, start_dir, _defaultGridWidth, _defaultGridHeight, _mockObstaclesChecker.Object);

            _plutoRover.ExecuteCommands("R");

            Assert.Equal(x, _plutoRover.Position.X);
            Assert.Equal(y, _plutoRover.Position.Y);
            Assert.Equal(end_dir, _plutoRover.Position.Direction);
        }
        public void ExecuteCommands_WhenMoveBackwardCommand_TheRoverMovesBackward(int start_x, int start_y, Direction direction, int end_x, int end_y)
        {
            _plutoRover = new PlutoRover(start_x, start_y, direction, _defaultGridWidth, _defaultGridHeight, _mockObstaclesChecker.Object);

            _plutoRover.ExecuteCommands("B");

            Assert.Equal(end_x, _plutoRover.Position.X);
            Assert.Equal(end_y, _plutoRover.Position.Y);
            Assert.Equal(direction, _plutoRover.Position.Direction);
        }
        public void ExecuteCommands_WhenRoverFindsAnObstacle_TheRoverReportsAFailure(
            int start_x, int start_y, Direction direction, int obstacle_x, int obstacle_y, string cmd)
        {
            SetupObstacle(obstacle_x, obstacle_y);
            _plutoRover = new PlutoRover(start_x, start_y, direction, _defaultGridWidth, _defaultGridHeight, _mockObstaclesChecker.Object);

            var result = _plutoRover.ExecuteCommands(cmd);

            Assert.Equal(Status.Failure, result.Status);
        }
        public void ExecuteCommands_WhenMoveBackwardCommandOverTheGridLimit_TheRoverWrapsAround(
            int start_x, int start_y, int gridWidth, int gridHeight, Direction direction, int end_x, int end_y)
        {
            _plutoRover = new PlutoRover(start_x, start_y, direction, gridWidth, gridHeight, _mockObstaclesChecker.Object);

            _plutoRover.ExecuteCommands("B");

            Assert.Equal(end_x, _plutoRover.Position.X);
            Assert.Equal(end_y, _plutoRover.Position.Y);
            Assert.Equal(direction, _plutoRover.Position.Direction);
        }