示例#1
0
 def test_basic(self):
     parsed_input = InputParser("4 5\n1 2 N\nLML\n3 3 E\nMMR")
     self.assertEqual(parsed_input.grid, Grid(4, 5))
     self.assertEqual(len(parsed_input.rovers_moves), 2)
     self.assertEqual(
         parsed_input.rovers_moves[0][0],
         Rover(Grid(4, 5), Location(1, 2), Direction.N),
     )
     self.assertEqual(parsed_input.rovers_moves[0][1],
                      [Movement.L, Movement.M, Movement.L])
     self.assertEqual(
         parsed_input.rovers_moves[1][0],
         Rover(Grid(4, 5), Location(3, 3), Direction.E),
     )
     self.assertEqual(parsed_input.rovers_moves[1][1],
                      [Movement.M, Movement.M, Movement.R])
示例#2
0
 def test_move_collision(self):
     g = Grid(3, 3)
     r1 = Rover(g, Location(1, 1), Direction.N)
     r2 = Rover(g, Location(2, 2), Direction.S)
     self.assertFalse(
         r1.move(Movement.M, Movement.R, Movement.M, Movement.M))
     self.assertRover(r1, g, Location(1, 2), Direction.E,
                      RoverState.STOPPED)
     self.assertEqual(r2.state, RoverState.OPERATIONAL)
示例#3
0
    def test_hashable(self):
        g = Grid(3, 3)
        r1 = Rover(g, Location(1, 1), Direction.N)
        r2 = Rover(g, Location(2, 2), Direction.N)
        r3 = Rover(g, Location(3, 3), Direction.N)
        rover_set = {r1, r2}
        self.assertIn(r1, rover_set)
        self.assertIn(r2, rover_set)
        self.assertNotIn(r3, rover_set)

        rover_set.add(r3)
        self.assertIn(r3, rover_set)

        self.assertEqual(rover_set, {r2, r3, r1})
示例#4
0
 def test_basic(self):
     parsed = GridParser("3 4")
     self.assertEqual(parsed.grid, Grid(3, 4))
示例#5
0
 def test_disabled_movement(self):
     g = Grid(3, 3)
     r1 = Rover(g, Location(2, 2), Direction.N, RoverState.STOPPED)
     self.assertFalse(r1.move(Movement.M))
     self.assertEqual(r1.location, Location(2, 2))
示例#6
0
 def test_move_border_collision(self):
     g = Grid(3, 3)
     r1 = Rover(g, Location(1, 1), Direction.N)
     self.assertFalse(r1.move(Movement.M, Movement.M, Movement.M))
     self.assertRover(r1, g, Location(1, 3), Direction.N,
                      RoverState.STOPPED)
示例#7
0
 def test_move(self):
     g = Grid(3, 3)
     r1 = Rover(g, Location(1, 1), Direction.N)
     r1.move(Movement.M, Movement.R, Movement.M, Movement.M)
     self.assertRover(r1, g, Location(3, 2), Direction.E,
                      RoverState.OPERATIONAL)
示例#8
0
 def test_move_west(self):
     g = Grid(3, 3)
     r1 = Rover(g, Location(2, 2), Direction.W)
     self.assertTrue(r1.move(Movement.M))
     self.assertRover(r1, g, Location(1, 2), Direction.W)
示例#9
0
 def test_initial_collision(self):
     g = Grid(2, 2)
     r1 = Rover(g, Location(1, 1), Direction.N)
     r2 = Rover(g, Location(1, 1), Direction.E)
     self.assertEqual(r1.state, RoverState.OPERATIONAL)
     self.assertEqual(r2.state, RoverState.ERROR)
示例#10
0
 def _parse(self, data):
     length, width = tuple(map(int, data.split(" ")))
     self.grid = Grid(length, width)