コード例 #1
0
ファイル: test_rover.py プロジェクト: tkudla/py-rover-mars
    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)
コード例 #2
0
ファイル: test_plateau.py プロジェクト: tkudla/py-rover-mars
    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)
コード例 #3
0
ファイル: test_plateau.py プロジェクト: tkudla/py-rover-mars
    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")
コード例 #4
0
ファイル: test_plateau.py プロジェクト: tkudla/py-rover-mars
 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)
コード例 #5
0
ファイル: test_plateau.py プロジェクト: tkudla/py-rover-mars
    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)
コード例 #6
0
ファイル: test_plateau.py プロジェクト: tkudla/py-rover-mars
    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")
コード例 #7
0
ファイル: test_plateau.py プロジェクト: tkudla/py-rover-mars
    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)
コード例 #8
0
ファイル: test_rover.py プロジェクト: tkudla/py-rover-mars
    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())
コード例 #9
0
ファイル: test_rover.py プロジェクト: tkudla/py-rover-mars
    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)
コード例 #10
0
    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)