class ObstacleGridTest(unittest.TestCase): """ Test obstacle mechanism in OrthogonalGrid """ def setUp(self): self.grid = OrthogonalGrid(3, 3, []) self.obstacle_grid = OrthogonalGrid(3, 3, [Coord(1, 1), Coord(0, 1)]) def test_add_obstacle(self): self.grid.insert_obstacle(Coord(1, 1)) self.assertEqual({Coord(1, 1)}, self.grid.obstacles())
def test_l_wall(self): """ An L-shaped wall is between the start and end. Test to see if A* goes around wall instead of walking straight up to it. Expected outcome: P P P P P X X E S . X . . . X . """ grid = OrthogonalGrid( 4, 4, [Coord(2, 1), Coord(2, 2), Coord(1, 2), Coord(0, 2)]) expected_path = { Coord(1, 0), Coord(2, 0), Coord(3, 0), Coord(3, 1), Coord(3, 2), Coord(3, 3), Coord(2, 3) } actual_path = AStar(grid, manhattan).execute((Coord(1, 0), Coord(2, 3))) self.assertEqual(expected_path, set(actual_path))
def test_tricky_path(self): tricky_grid = OrthogonalGrid(3, 3, [Coord(0, 1), Coord(2, 1)]) path = set( AStar(tricky_grid, manhattan).execute((Coord(0, 0), Coord(2, 2)))) expected = { Coord(0, 0), Coord(1, 0), Coord(1, 1), Coord(1, 2), Coord(2, 2) } coord_path = set(map(lambda cell: Coord(cell.x, cell.y), path)) self.assertEqual(expected, coord_path)
class GridTest(unittest.TestCase): def setUp(self): self.grid = OrthogonalGrid(3, 3, []) def test_is_adjacent(self): self.assertFalse(self.grid.is_adjacent(Coord(0, 0), Coord(0, 0))) self.assertFalse(self.grid.is_adjacent(Coord(0, 0), Coord(1, 2))) self.assertFalse(self.grid.is_adjacent(Coord(-1, 0), Coord(1, 2))) self.assertFalse(self.grid.is_adjacent(Coord(-1, 0), Coord(-1, 2))) self.assertTrue(self.grid.is_adjacent(Coord(0, 0), Coord(0, 1))) self.assertTrue(self.grid.is_adjacent(Coord(1, 1), Coord(0, 1))) def test_neighbors(self): neighbors = self.grid.neighbors(Coord(1, 1)) expected = {Coord(1, 2), Coord(0, 1), Coord(2, 1), Coord(1, 0)} self.assertEqual(expected, set(neighbors)) def test_out_of_bound_neighbors(self): neighbors = self.grid.neighbors(Coord(0, -1)) self.assertEqual(set(), set(neighbors), "Expected coords not equivalent to actual coords.")
def setUp(self): obstacles = [Coord(2, 0), Coord(2, 1), Coord(0, 1), Coord(0, 2)] self.grid = OrthogonalGrid(3, 3, obstacles)
def setUp(self): self.grid = OrthogonalGrid(2, 2, []) self.maker = AStar(self.grid, manhattan)
def setUp(self): self.grid = OrthogonalGrid(2, 2, [])
def setUp(self): self.grid = OrthogonalGrid(3, 3, []) self.obstacle_grid = OrthogonalGrid(3, 3, [Coord(1, 1), Coord(0, 1)])
def setUp(self): self.grid = OrthogonalGrid(3, 3, [])