def test_create_navigator(self): console_input = iter(["2 2 1", "x.", ".x"]) mock.builtins.input = lambda: next(console_input) gm = build_map() nav = Navigator(gm) self.assertIsNotNone(nav)
def test_two_moves_on_a_square(self): console_input = iter(["2 2 1", "..", ".."]) mock.builtins.input = lambda: next(console_input) gm = build_map() gm.start_coords() nav = Navigator(gm) for _ in range(2): nav.next_move()
def test_not_square(self): console_input = iter([ "4 2 1", "x...", "...x" ]) mock.builtins.input = lambda: next(console_input) gm = build_map() self.assertEqual(gm.height, 2) self.assertEqual(gm.width, 4)
def test_start_coords_sets_my_position(self): console_input = iter([ "2 2 1", "xx", ".x" ]) mock.builtins.input = lambda: next(console_input) gm = build_map() (x, y) = gm.start_coords() self.assertEqual(gm.player_pos, (x, y))
def test_spiral_outwards(self): console_input = iter( ["5 5 1", ".....", "xxxx.", "...x.", ".xxx.", "....."]) mock.builtins.input = lambda: next(console_input) gm = build_map() gm.player_pos = (2, 2) # Force player pos nav = Navigator(gm) route = nav.plan_route_to((0, 0)) print(route) self.assertEqual(len(route), 16)
def test_avoid_obstacles(self): console_input = iter( ["5 5 1", ".....", ".....", ".....", ".xxxx", "....."]) mock.builtins.input = lambda: next(console_input) gm = build_map() gm.player_pos = (0, 0) # Force player pos nav = Navigator(gm) route = nav.plan_route_to((4, 4)) print(route) self.assertListEqual(route, ['S', 'S', 'S', 'S', 'E', 'E', 'E', 'E'])
def test_impossible_route(self): console_input = iter( ["5 5 1", ".x...", ".x...", ".x...", ".x...", ".x..."]) mock.builtins.input = lambda: next(console_input) gm = build_map() gm.player_pos = (0, 0) # Force player pos nav = Navigator(gm) route = nav.plan_route_to((4, 4)) print(route) self.assertIsNone(route)
def test_start_coords(self): console_input = iter([ "2 2 1", "xx", ".x" ]) mock.builtins.input = lambda: next(console_input) gm = build_map() (x, y) = gm.start_coords() self.assertEqual(x, 0) self.assertEqual(y, 1)
def test_map_sea(self): console_input = iter([ "4 2 1", "x...", "...x" ]) mock.builtins.input = lambda: next(console_input) gm = build_map() self.assertEqual(gm.is_sea(0, 0), False) self.assertEqual(gm.is_sea(1, 0), True) self.assertEqual(gm.is_sea(2, 1), True) self.assertEqual(gm.is_sea(3, 1), False)
def test_map_correct_size(self): console_input = iter([ "2 2 1", "x.", ".x" ]) mock.builtins.input = lambda: next(console_input) gm = build_map() self.assertEqual(gm.player_id, 1) self.assertEqual(gm.height, 2) self.assertEqual(gm.width, 2)
def test_map_land(self): console_input = iter([ "2 2 1", "x.", ".x" ]) mock.builtins.input = lambda: next(console_input) gm = build_map() self.assertEqual(gm.is_land(0, 0), True) self.assertEqual(gm.is_land(1, 0), False) self.assertEqual(gm.is_land(0, 1), False) self.assertEqual(gm.is_land(1, 1), True)
def test_valid_coords(self): console_input = iter([ "2 2 1", "..", ".." ]) mock.builtins.input = lambda: next(console_input) gm = build_map() self.assertEqual(gm.is_valid(0, 0), True) self.assertEqual(gm.is_valid(-1, 0), False) self.assertEqual(gm.is_valid(0, -1), False) self.assertEqual(gm.is_valid(1, 1), True) self.assertEqual(gm.is_valid(2, 0), False) self.assertEqual(gm.is_valid(0, 2), False)