def test_command(self): """ Tests rover command """ rover = Rover(**self.initial) rover.command("LRLR") self.assertEqual(rover.position_x, self.initial.get("x")) self.assertEqual(rover.position_y, self.initial.get("y")) self.assertEqual(rover.compass.state, Compass.N)
def test_accept_outside(self): """ Tests rover lands outside the plateau """ plateau = Plateau(**self.plateau_default) rover = Rover(**self.rover_default) rover.command("M" * 10) with self.assertRaises(NasaException): plateau.accept(rover)
def test_cell_taken(self): """ Tests if plateau cell taken """ plateau = Plateau(**self.plateau_default) rover1 = Rover(**self.rover_default) rover2 = Rover(**{"x": 1, "y": 1, "direction": "N"}) plateau.accept(rover1) plateau.accept(rover2) with self.assertRaises(NasaException): plateau.move(rover1, "MRM")
def test_accept_valid(self): """ Tests landing OK """ plateau = Plateau(**self.plateau_default) rover = Rover(**self.rover_default) plateau.accept(rover) self.assertIn(rover, plateau.rovers)
def test_move_ok(self): """ Tests rover plateau move was ok """ plateau = Plateau(**self.plateau_default) rover = Rover(**self.rover_default) plateau.move(rover, "RMM") plateau.check_move(rover)
def test_move_outside(self): """ Tests rover move outside plateau """ plateau = Plateau(**self.plateau_default) rover = Rover(**self.rover_default) self.assertEqual(rover.position_x, 0) self.assertEqual(rover.position_y, 0) with self.assertRaises(NasaException): plateau.move(rover, "LMMMMM")
def test_generic(self): """ Generic test for: Test Input: 5 5 1 2 N LMLMLMLMM 3 3 E MMRMMRMRRM Expected Output: 1 3 N 5 1 E """ plateau = Plateau(**self.plateau_default) rover1 = Rover(**{"x": 1, "y": 2, "direction": "N"}) plateau.accept(rover1) plateau.move(rover1, "LMLMLMLMM") self.assertTrue(rover1.state().endswith("1 3 N")) self.assertEqual(rover1.position_x, 1) self.assertEqual(rover1.position_y, 3) self.assertEqual(rover1.compass.state, Compass.N) rover2 = Rover(**{"x": 3, "y": 3, "direction": "E"}) plateau.accept(rover2) plateau.move(rover2, "MMRMMRMRRM") self.assertTrue(rover2.state().endswith("5 1 E")) self.assertEqual(rover2.position_x, 5) self.assertEqual(rover2.position_y, 1) self.assertEqual(rover2.compass.state, Compass.E)
def test_state(self): """ Tests valid state: x y direction """ rover = Rover(**self.initial) rover.command("LLLLM") self.assertTrue(rover.state().endswith("1 2 N"), rover.state())
def test_move(self): """ Tests rover move """ rover = Rover(**self.initial) rover.move() self.assertEqual(rover.position_x, 1) self.assertEqual(rover.position_y, 2) rover.command("LMRM") self.assertEqual(rover.position_x, 0) self.assertEqual(rover.position_y, 3)
try: if regex: return re.match(regex, val).groupdict() except (AttributeError, re.error): raise NasaException("NASA doesn't understand human language...") return val if __name__ == "__main__": try: size = quite(Plateau.RE_SIZE) plateau = Plateau(**size) while True: position = quite(Rover.RE_POSITION) rover = Rover(**position) plateau.accept(rover) plateau.move(rover, quite()) print(rover.state(), file=sys.stdout) except NasaException as e: print("Ops, {}".format(e), file=sys.stderr) sys.exit(1)