From d9bf239c3914bcdbd187317f5e80fa340d4b4478 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 15 Nov 2019 21:12:07 +0100 Subject: [PATCH] rover: use direction when going forward --- rover/rover.py | 10 ++++++++++ rover/test_rover.py | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/rover/rover.py b/rover/rover.py index cfa893c..2190364 100644 --- a/rover/rover.py +++ b/rover/rover.py @@ -19,3 +19,13 @@ class Rover(BaseModel): pos: Vector = Vector(x=0, y=0) planet_size: Vector = Vector(x=100, y=100) dir: Direction = Direction.NORTH + + def forward(self): + if self.dir == Direction.NORTH: + self.pos.y += 1 + elif self.dir == Direction.SOUTH: + self.pos.y -= 1 + elif self.dir == Direction.EAST: + self.pos.x += 1 + elif self.dir == Direction.WEST: + self.pos.x -= 1 diff --git a/rover/test_rover.py b/rover/test_rover.py index f886133..f5a00ca 100644 --- a/rover/test_rover.py +++ b/rover/test_rover.py @@ -19,3 +19,44 @@ def test_rover_has_direction(): def test_rover_default_direction_is_north(): rov = Rover() assert rov.dir == Direction.NORTH + + +def test_rover_can_go_forward_once_going_north(): + rov = Rover( + pos=Vector(x=0, y=0), planet_size=Vector(x=10, y=10), dir=Direction.NORTH + ) + rov.forward() + assert rov.pos == Vector(x=0, y=1) + + +def test_rover_can_go_forward_twice_going_north(): + rov = Rover( + pos=Vector(x=0, y=0), planet_size=Vector(x=10, y=10), dir=Direction.NORTH + ) + rov.forward() + rov.forward() + assert rov.pos == Vector(x=0, y=2) + + +def test_rover_can_go_forward_going_east(): + rov = Rover( + pos=Vector(x=0, y=0), planet_size=Vector(x=10, y=10), dir=Direction.EAST + ) + rov.forward() + assert rov.pos == Vector(x=1, y=0) + + +def test_rover_can_go_forward_going_south(): + rov = Rover( + pos=Vector(x=0, y=1), planet_size=Vector(x=10, y=10), dir=Direction.SOUTH + ) + rov.forward() + assert rov.pos == Vector(x=0, y=0) + + +def test_rover_can_go_forward_going_west(): + rov = Rover( + pos=Vector(x=1, y=0), planet_size=Vector(x=10, y=10), dir=Direction.WEST + ) + rov.forward() + assert rov.pos == Vector(x=0, y=0)