rover: add rover starting on obstacle validation
This commit is contained in:
parent
39d1fcd5ac
commit
7352207636
|
@ -93,6 +93,13 @@ class Commander(BaseModel):
|
||||||
rover: Rover = Rover()
|
rover: Rover = Rover()
|
||||||
obstacles: List[Vector] = []
|
obstacles: List[Vector] = []
|
||||||
|
|
||||||
|
@root_validator()
|
||||||
|
def _rover_should_not_start_on_obstacle(cls, values):
|
||||||
|
rover, obstacles = values.get("rover"), values.get("obstacles")
|
||||||
|
if rover.pos in obstacles:
|
||||||
|
raise ValueError(f"Rover should not start on obstacle ({rover.pos})")
|
||||||
|
return values
|
||||||
|
|
||||||
def parse_execute(self, commands: str):
|
def parse_execute(self, commands: str):
|
||||||
for command in commands:
|
for command in commands:
|
||||||
save: Vector = deepcopy(self.rover.pos)
|
save: Vector = deepcopy(self.rover.pos)
|
||||||
|
|
|
@ -247,3 +247,8 @@ def test_rover_oversize_x_construction():
|
||||||
def test_rover_oversize_y_construction():
|
def test_rover_oversize_y_construction():
|
||||||
with pytest.raises(ValidationError):
|
with pytest.raises(ValidationError):
|
||||||
_ = Rover(pos=Vector(x=0, y=11), planet_size=Vector(x=10, y=10))
|
_ = Rover(pos=Vector(x=0, y=11), planet_size=Vector(x=10, y=10))
|
||||||
|
|
||||||
|
|
||||||
|
def test_commander_have_rover_start_on_obstacle():
|
||||||
|
with pytest.raises(ValidationError):
|
||||||
|
_ = Commander(obstacles=[Vector()])
|
||||||
|
|
Loading…
Reference in a new issue