def test_initialize(self):

        r = Rover(1, 2, DIRECTIONS["N"], None)
        self.assertEqual(r.x, 1)
        self.assertEqual(r.y, 2)
        self.assertEqual(r.heading, DIRECTIONS["N"])
        self.assertEqual(r.heading.move[1], 1)
Beispiel #2
0
    def test_turn_right_command(self):
        p = Plateau(5, 6)
        r = Rover(2, 5, DIRECTIONS["E"], p)
        c = TurnRightCommand(r)

        c.execute()
        self.assertEqual(str(r.heading), str(DIRECTIONS["S"]))
Beispiel #3
0
    def test_move_forward_command(self):
        p = Plateau(5, 6)
        r = Rover(2, 5, DIRECTIONS["E"], p)
        c = MoveForwardCommand(r)

        c.execute()
        self.assertEqual(r.x, 3)
        self.assertEqual(r.y, 5)
Beispiel #4
0
    def test_initialize(self):
        r = Rover(2, 5, DIRECTIONS["E"], None)
        c1 = MoveForwardCommand(r)
        c2 = TurnRightCommand(r)
        c3 = TurnLeftCommand(r)

        self.assertEqual(c1._mars_rover, r)
        self.assertEqual(c2._mars_rover, r)
        self.assertEqual(c3._mars_rover, r)
Beispiel #5
0
    def test_execute_commands(self):
        p = Plateau(5, 6)
        r = Rover(1, 2, DIRECTIONS["N"], p)
        ci = CommandInvoker()
        cmd1 = MoveForwardCommand(r)

        ci.add_command(cmd1)
        ci.execute_commands()
        self.assertEqual(r.x, 1)
        self.assertEqual(r.y, 3)
Beispiel #6
0
    def parse(self):
        LOG.info(("Parsing input file '{}'.".format(self.input_file)))
        with open(self.input_file, 'r') as f:
            lines = list(filter(None, (line.rstrip() for line in f)))

        if not lines:
            raise ValueError("Input file empty.")

        command_invokers = []
        w, h = self._read_plateau_coords(lines[0])
        grid = Plateau(w, h)
        LOG.debug(
            ("Plateau initialized with width={} and height={}.".format(w, h)))

        for i in range(1, len(lines), 2):
            x, y, d = self._read_rover_details(lines[i])
            mars_rover = Rover(x, y, d, grid)
            LOG.debug(("Rover initialized with x={}, y={} and d='{}'.".format(
                x, y, str(d))))
            command_invokers.append(
                (mars_rover, self._read_commands(mars_rover, lines[i + 1])))

        return command_invokers
 def test_move_forward(self):
     p = Plateau(5, 6)
     r = Rover(1, 2, DIRECTIONS["N"], p)
     r.move_forward()
     self.assertEqual(r.x, 1)
     self.assertEqual(r.y, 3)
 def test_turn_right(self):
     r = Rover(1, 2, DIRECTIONS["N"], None)
     r.turn_right()
     self.assertEqual(str(r.heading), str(DIRECTIONS["E"]))
 def test_string(self):
     r = Rover(1, 2, DIRECTIONS["N"], None)
     rover_to_string = "{} {} {}".format(1, 2, 'N')
     self.assertEqual(str(r), rover_to_string)