def test_maze_to_string(self): """ test that the 'to string' functionality is sane """ m = Maze() m.generator = Prims(3, 3) # fake some maze results, to test against m.grid = np.array([[1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 1], [1, 0, 1, 0, 1, 1, 1], [1, 0, 1, 0, 0, 0, 1], [1, 1, 1, 0, 1, 1, 1], [1, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 1]]) m.start = (5, 0) m.end = (3, 6) m.solutions = [[(5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (4, 5), (3, 5)]] s = str(m).split('\n') self.assertEqual(s[0].strip(), "#######") self.assertEqual(s[2].strip(), "# # ###") self.assertEqual(s[3].strip(), "# # +E") self.assertEqual(s[5].strip(), "S+++++#") self.assertEqual(s[6].strip(), "#######")
def testCuldeSacFiller(self): """test against a maze with outer/inner entraces""" starts = [True, False] ends = [True, False] g = self._example_cul_de_sac_maze() for s in starts: for e in ends: m = Maze() m.generator = Prims(3, 3) m.grid = g if s and e: m.start = (1, 0) m.end = (5, 6) elif not s and not e: m.start = (1, 1) m.end = (5, 5) else: if s: m.start = (1, 1) m.end = (5, 5) else: m.start = (1, 1) m.end = (5, 6) m.solver = CuldeSacFiller() m.solve() for sol in m.solutions: self.assertFalse(self._duplicates_in_solution(sol)) self.assertTrue(self._one_away(m.start, sol[0])) self.assertTrue(self._one_away(m.end, sol[-1]))
def testCuldeSacFiller(self): """ test against a maze with outer/inner entraces """ starts = [True, False] ends = [True, False] g = self._example_cul_de_sac_maze() for s in starts: for e in ends: m = Maze() m.generator = Prims(3, 3) m.grid = g if s and e: m.start = (1, 0) m.end = (5, 6) elif not s and not e: m.start = (1, 1) m.end = (5, 5) else: if s: m.start = (1, 1) m.end = (5, 5) else: m.start = (1, 1) m.end = (5, 6) m.solver = CuldeSacFiller() m.solve() for sol in m.solutions: self.assertFalse(self._duplicates_in_solution(sol)) self.assertTrue(self._one_away(m.start, sol[0])) self.assertTrue(self._one_away(m.end, sol[-1]))
def test_cul_de_sac_filler(self): m = Maze() m.generator = Prims(3, 3) m.generate() m.grid = self._example_cul_de_sac_maze() assert m.grid[(1, 5)] == 0 m.transmuters = [CuldeSacFiller()] m.transmute() assert m.grid[(1, 5)] == 1 self.assertTrue(boundary_is_solid(m.grid)) self.assertTrue(all_corners_complete(m.grid))
def test_cul_de_sac_filler(self): """ Test the CuldeSacFiller leaves the maze in a solvable state """ m = Maze() m.generator = Prims(3, 3) m.generate() m.grid = self._example_cul_de_sac_maze() assert m.grid[(1, 5)] == 0 m.transmuters = [CuldeSacFiller()] m.transmute() assert m.grid[(1, 5)] == 1 assert boundary_is_solid(m.grid) assert all_corners_complete(m.grid)
def test_dead_end_filler(self): m = Maze() m.generator = Prims(3, 3) m.generate() m.start = (1, 0) m.end = (5, 6) m.grid = self._example_cul_de_sac_maze() assert m.grid[(1, 5)] == 0 assert m.grid[(1, 2)] == 0 assert m.grid[(3, 3)] == 0 m.transmuters = [CuldeSacFiller(), DeadEndFiller(99)] m.transmute() assert m.grid[(1, 5)] == 1 assert m.grid[(1, 2)] == 1 assert m.grid[(3, 3)] == 1 self.assertTrue(boundary_is_solid(m.grid)) self.assertTrue(all_corners_complete(m.grid))
def test_dead_end_filler(self): """ Test the CuldeSacFiller and DeadEndFiller leave the maze in a solvable state """ m = Maze() m.generator = Prims(3, 3) m.generate() m.start = (1, 0) m.end = (5, 6) m.grid = self._example_cul_de_sac_maze() assert m.grid[(1, 5)] == 0 assert m.grid[(1, 2)] == 0 assert m.grid[(3, 3)] == 0 m.transmuters = [CuldeSacFiller(), DeadEndFiller(99)] m.transmute() assert m.grid[(1, 5)] == 1 assert m.grid[(1, 2)] == 1 assert m.grid[(3, 3)] == 1 assert boundary_is_solid(m.grid) assert all_corners_complete(m.grid)