public RoverCoordinates MoveBackward(RoverCoordinates roverCoordinates, Direction direction) { var x = roverCoordinates.X; var y = roverCoordinates.Y; switch (direction) { case Direction.N: y = roverCoordinates.Y > 0 ? roverCoordinates.Y - 1 : _maxYCoordinate; break; case Direction.S: y = roverCoordinates.Y < _maxYCoordinate ? roverCoordinates.Y + 1 : 0; break; case Direction.E: x = roverCoordinates.X > 0 ? roverCoordinates.X - 1 : _maxXCoordinate; break; case Direction.W: x = roverCoordinates.X < _maxXCoordinate ? roverCoordinates.X + 1 : 0; break; } return(new RoverCoordinates(x, y)); }
public void RoverCanProcessSingleCommandWithoutStoring() { Rover r = new Rover(); // starting at (0,0), facing North char command = 'F'; RoverCoordinates dest = new RoverCoordinates(0, 1); r.ProcessSingleCommand(command); // should move to (0,1), facing North Assert.True(r.Coordinates.Equals(dest)); }
public void RoverCanNavigateInASquare() { Rover r = new Rover(); // default coords and direction char[] commands = { 'F', 'L', 'F', 'L', 'F', 'F', 'L', 'F', 'F', 'L', 'F', 'L', 'F' }; r.StoreCommands(commands); r.ProcessAllCommands(); // Should end back at the starting point RoverCoordinates dest = new RoverCoordinates(0, 0); Assert.True(dest.Equals(r.Coordinates)); }
public void RoverCanMoveForwardFourSpaces() { Rover r = new Rover(); // default coords and direction char[] commands = { 'F', 'F', 'F', 'F' }; r.StoreCommands(commands); r.ProcessAllCommands(); // Should move forward 4 spots RoverCoordinates dest = new RoverCoordinates(0, 4); Assert.True(dest.Equals(r.Coordinates)); }
public void Run_WrongArgumentForGetStepCount_WrongStepCount() { var drmock = Substitute.For <IDirection>(); var service = new Rover("rover1", new ConsoleInputService(), new ConsoleOutputService(), drmock); service.Movement = "M"; RoverCoordinates c = new RoverCoordinates() { XPoint = 0, YPoint = 0, Heading = 'V' }; service.roverCoordinate = c; service.Run(new MapCoordinates() { X = 1, Y = 1 }); drmock.DidNotReceive().GetStepCount(Arg.Is <char>(x => x == 'V')); }