diff --git a/rover.py b/rover.py index f3142320fba1bd0a36114bdfe0227ef51e447059..2d9adc91f02aa764efe6e3fa8f3980d58a3d497c 100644 --- a/rover.py +++ b/rover.py @@ -88,6 +88,18 @@ class Rover: self.x += 1 elif self.direction == 'W': self.x -= 1 + elif self.direction == 'NE': + self.x += 1 + self.y += 1 + elif self.direction == 'NW': + self.x -= 1 + self.y += 1 + elif self.direction == 'SE': + self.x += 1 + self.y -= 1 + elif self.direction == 'SW': + self.x -= 1 + self.y -= 1 def move_backward(self): if self.direction == 'N': @@ -98,6 +110,18 @@ class Rover: self.x -= 1 elif self.direction == 'W': self.x += 1 + elif self.direction == 'NE': + self.x -= 1 + self.y -= 1 + elif self.direction == 'NW': + self.x += 1 + self.y -= 1 + elif self.direction == 'SE': + self.x -= 1 + self.y += 1 + elif self.direction == 'SW': + self.x += 1 + self.y += 1 def turn_left(self): current_index = self.directions.index(self.direction) @@ -265,5 +289,31 @@ class TestRover(unittest.TestCase): control.execute_command('R') self.assertEqual(rover.direction, 'NW') + # Test Sequence Processing + def test_sequence_processing(self): + rover = Rover(3, 5, 'N') + control = MissionControl(rover) + + control.execute_command('F') + self.assertEqual((rover.x, rover.y), (3,6)) + self.assertEqual(rover.direction, 'N') + + control.execute_command('RF') + self.assertEqual((rover.x, rover.y), (4,7)) + self.assertEqual(rover.direction, 'NE') + + control.execute_command('RFF') + self.assertEqual((rover.x, rover.y), (6,7)) + self.assertEqual(rover.direction, 'E') + + control.execute_command('BBBBBLL') + self.assertEqual((rover.x, rover.y), (1,7)) + self.assertEqual(rover.direction, 'N') + + control.execute_command('BRRRFLF') + self.assertEqual((rover.x, rover.y), (3,5)) + self.assertEqual(rover.direction, 'E') + + if __name__ == '__main__': unittest.main() \ No newline at end of file