public void RoverExecutesCommandSequenceThatLeadsIntoObstacle() { var grid = new GridBuilder() .WithDimensions(2, 2) .WithObstacleAt(1, 1) .Build(); var startingPosition = new PositionBuilder() .OnGrid(grid) .WithCoordinates(new Coordinates(0, 0)) .Facing(DirectionEnum.North) .Build(); var rover = new RoverBuilder() .AtPosition(startingPosition) .Build(); var roverControl = new RoverControlBuilder() .ForRover(rover) .Build(); roverControl.SendCommands("frf"); roverControl.InvokeCommands(); var endingPosition = new PositionBuilder() .OnGrid(grid) .WithCoordinates(new Coordinates(0, 1)) .Facing(DirectionEnum.East) .Build(); Assert.Equal(endingPosition, rover.Position); }
public void RoverRunsIntoObstacleAndReports() { var grid = new GridBuilder() .WithDimensions(2, 2) .WithObstacleAt(1, 0) .Build(); var startingPosition = new PositionBuilder() .OnGrid(grid) .WithCoordinates(new Coordinates(0, 0)) .Facing(DirectionEnum.West) .Build(); var rover = new RoverBuilder() .AtPosition(startingPosition) .Build(); var roverControl = new RoverControlBuilder() .ForRover(rover) .Build(); roverControl.SendCommands("f"); var detectedObstacle = roverControl.InvokeCommands(); Assert.Equal(startingPosition, rover.Position); Assert.True(detectedObstacle); Assert.Empty(roverControl.Commands); }
public void RoverMovesBackwards(Position startingPosition, Position positionAfterMovement) { var rover = new RoverBuilder() .AtPosition(startingPosition) .Build(); var roverControl = new RoverControlBuilder() .ForRover(rover) .Build(); roverControl.SendCommands("B"); roverControl.InvokeCommands(); Assert.Equal(positionAfterMovement, rover.Position); }
public void RoverWrapsGridMovingForward(Position startingPosition, Position positionAfterWrap) { var rover = new RoverBuilder() .AtPosition(startingPosition) .Build(); var roverControl = new RoverControlBuilder() .ForRover(rover) .Build(); roverControl.SendCommands("f"); roverControl.InvokeCommands(); Assert.Equal(positionAfterWrap, rover.Position); }
public void RoverReceievesCommands() { var rover = new RoverBuilder() .AtDefaultPosition() .Build(); var roverControl = new RoverControlBuilder() .ForRover(rover) .Build(); roverControl.SendCommands("fblr"); Assert.Equal(4, roverControl.Commands.Count); Assert.Contains(roverControl.Commands, command => command is RoverCommandForward); Assert.Contains(roverControl.Commands, command => command is RoverCommandBackwards); Assert.Contains(roverControl.Commands, command => command is RoverCommandTurnLeft); Assert.Contains(roverControl.Commands, command => command is RoverCommandTurnRight); }