public void changes_direction(RoverInstruction instruction, CameraDirection initialDirection, CameraDirection expectedDirection) { var rover = new Rover(new Coordinate(0, 0), initialDirection); rover.SendInstruction(instruction); Assert.AreEqual(expectedDirection, rover.CameraDirection); }
public void GetRoverEntry_SavesValuesProperly() { var testInstructions = new RoverInstruction[] { RoverInstruction.Left, RoverInstruction.Move }; var testRover = GetRoverEntry(testInstructions); Assert.Equal(testRover.instructions, testInstructions); Assert.Equal(testRover.rover, DefaultRover); Assert.Equal(testRover.currentPosition, DefaultPosition); }
public void RoverEntry_DeconstructsProperly() { var testInstructions = new RoverInstruction[] { RoverInstruction.Left, RoverInstruction.Move }; var testRover = GetRoverEntry(testInstructions); var(rover, currentPosition, instructions) = testRover; Assert.Equal(instructions, testInstructions); Assert.Equal(rover, DefaultRover); Assert.Equal(currentPosition, DefaultPosition); }
public Position Move(Position currentPosition, RoverInstruction command) { switch (command) { case RoverInstruction.Left: case RoverInstruction.Right: return(Turn(currentPosition, command)); default: return(MoveForward(currentPosition)); } }
public void move_returnsAPositionOnTheCurrentHeading_WhenMovingForward(Direction facing, int expectedX, int expectedY) { const RoverInstruction MOVE = RoverInstruction.Move; var initialPosition = GetInitialPosition(facing); var testRover = GetDefaultRover(); var testPosition = testRover.Move(initialPosition, MOVE); Assert.True(testPosition.facing == facing, "Position should remain the same after movement"); Assert.True(testPosition.X == expectedX, $"when {facing}: X {expectedX} == actualX {testPosition.X}"); Assert.True(testPosition.Y == expectedY, $"when {facing}: Y {expectedY} == actualY {testPosition.Y}"); }
public void Simulation_AddRover_AddsRoversToList() { var simulationBoundary = new Position(1, 1); var createdSimulation = new DefaultSimulation(simulationBoundary); var roverInitialPosition = new Position(0, 0); var roverInstructions = new RoverInstruction[] { RoverInstruction.Left, RoverInstruction.Move }; createdSimulation.AddRover(roverInitialPosition, roverInstructions); var(rover, currentPosition, instructionList) = createdSimulation.roverList[0]; Assert.IsType <DefaultRover>(rover); Assert.Equal(currentPosition, roverInitialPosition); Assert.Equal(instructionList, roverInstructions); }
public bool PerformInstruction(RoverInstruction instruction) { switch (instruction) { case RoverInstruction.R: rover.TurnRight(); break; case RoverInstruction.L: rover.TurnLeft(); break; case RoverInstruction.M: return(MoveRover()); } return(true); }
public void SendInstruction(RoverInstruction instruction) { switch (instruction) { case RoverInstruction.L: this.TurnLeft(); break; case RoverInstruction.R: this.TurnRight(); break; case RoverInstruction.M: { this.MoveRover(); break; } } }
private Position Turn(Position currentPosition, RoverInstruction turnDirection) { int facing = 0; switch (turnDirection) { case RoverInstruction.Left: facing = (int)currentPosition.facing - 1; break; case RoverInstruction.Right: facing = (int)currentPosition.facing + 1; break; } facing = facing < 0 ? 3 : facing; Direction newFacing = (Direction)(facing % 4); return(new Position(currentPosition.X, currentPosition.Y, newFacing)); }
public void ConvertValueToInstruction_ConvertsToInstruction_WhenValidValueGiven(char valueToConvert, RoverInstruction expectedInstruction) { var conversionResult = RoverInstructions.ConvertValueToInstruction(valueToConvert); Assert.True(conversionResult == expectedInstruction); }
public void move_CanTurnProperly_WhenTurningLeftAndRight(Direction currentDirection, RoverInstruction turnDirection, Direction expectedFacing) { var testRover = GetDefaultRover(); var testPosition = GetInitialPosition(currentDirection); Position movementResult = testRover.Move(testPosition, turnDirection); Assert.True(movementResult.facing == expectedFacing);; }