rover: add exception on unknown Commander command
This commit is contained in:
parent
b4ecee8c44
commit
4487269ab6
|
@ -101,7 +101,7 @@ class Commander(BaseModel):
|
||||||
return values
|
return values
|
||||||
|
|
||||||
def parse_execute(self, commands: str) -> None:
|
def parse_execute(self, commands: str) -> None:
|
||||||
for command in commands:
|
for i, command in enumerate(commands):
|
||||||
save: Vector = deepcopy(self.rover.pos)
|
save: Vector = deepcopy(self.rover.pos)
|
||||||
if command == "F":
|
if command == "F":
|
||||||
self.rover.forward()
|
self.rover.forward()
|
||||||
|
@ -111,6 +111,8 @@ class Commander(BaseModel):
|
||||||
self.rover.turn_left()
|
self.rover.turn_left()
|
||||||
elif command == "R":
|
elif command == "R":
|
||||||
self.rover.turn_right()
|
self.rover.turn_right()
|
||||||
|
else:
|
||||||
|
raise ValueError(f"Unknown command: '{command}' (index {i})")
|
||||||
if self.rover.pos in self.obstacles:
|
if self.rover.pos in self.obstacles:
|
||||||
self.rover.pos = save
|
self.rover.pos = save
|
||||||
raise ObstacleError
|
raise ObstacleError
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import pytest
|
import pytest
|
||||||
from pydantic import ValidationError
|
from pydantic import ValidationError
|
||||||
|
|
||||||
from rover import Commander, Direction, ObstacleError, Rover, Vector
|
from rover import Commander, Direction, ObstacleError, Rover, Vector
|
||||||
|
|
||||||
|
|
||||||
|
@ -222,6 +221,12 @@ def test_commander_complex_command():
|
||||||
assert com.rover == Rover(dir=Direction.EAST)
|
assert com.rover == Rover(dir=Direction.EAST)
|
||||||
|
|
||||||
|
|
||||||
|
def test_commander_unknown_command():
|
||||||
|
com = Commander()
|
||||||
|
with pytest.raises(ValueError):
|
||||||
|
com.parse_execute("A")
|
||||||
|
|
||||||
|
|
||||||
def test_commander_command_with_obstacles():
|
def test_commander_command_with_obstacles():
|
||||||
com = Commander(obstacles=[Vector(x=1, y=0), Vector(x=1, y=2)])
|
com = Commander(obstacles=[Vector(x=1, y=0), Vector(x=1, y=2)])
|
||||||
with pytest.raises(ObstacleError):
|
with pytest.raises(ObstacleError):
|
||||||
|
|
Loading…
Reference in a new issue