def test_big_maze(self): self.assertEqual( read_maze('MazeTest/maze5.txt')[0], [ '"_xxxx____xxx___xxxxxx___________xx__xxx"\n', '"___xx__xx_x_xxx______x_x__x_x_x_x_x____F__xxx_____x"\n', '"___x__x_x_x___x_x______x____xxx_______xxxxx____xx"\n', '"xx___xx__x______x___xx"\n', '"xxx________xxxxxxxxxxxxx_____xxxx_xxx___"\n', '"_x__"\n', '"______xxxx___xxxxxx_xxxxx_____xxx__xxx_______"\n', '"____xxxx_______xxxxx______xxxx____xxx____xx"\n', '"___xxxxx_xxxxx"\n', '"_xxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"\n', '"_______x________xxxx_____xxx____________________xxx__xxxx____xxx"\n', '"x___xx____xxx_________xx_______xx___xx_______xxx______xx____"\n', '"__xxxxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxx__xxx______x_"\n', '"x_x___x___x___x___x___x___x___x___x___x___x___x___x"\n', '"x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x"\n', '"x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x"\n', '"x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x"\n', '"x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x"\n', '"x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x"\n', '"x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x"\n', '"x___x___x___x___x___x___x___x___x___x___x___x___x____"\n', '"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_"\n', '"____________________________________________________"\n', '"xxx___xx__xx___xxxxx__xxxxx"\n', '"xxxx__xx______xx______xx_S__"\n', '"xx_xx_xx__xx__xx______xxxxx_"\n', '"xx__xxxx__xx__xx______xx____"\n', '"xx___xxx__xx___xxxxx__xxxxx__"\n', '"_____________________________"' ])
def test_wall_maze(self): self.assertEqual( read_maze('MazeTest/maze10.txt')[0], [ '"_____xx____S"\n', '"_____xx_____"\n', '"_____xx_____"\n', '"____________"\n', '"_____xx_____"\n', '"_____xx_____"\n', '"F____xx_____"' ])
def test_many_starts(self): self.assertEqual( read_maze('MazeTest/maze4.txt')[0], [ '"S__xx__xxx"\n', '"___xx__xxS"\n', '"xx__x_____"\n', '"____F_xxx_"\n', '"__x_x_xxxx"\n', '"______x_x_"\n', '"xx_S_xx__x"' ])
def test_many_finishes(self): self.assertEqual( read_maze('MazeTest/maze3.txt')[0], [ '"S__xx__xxx"\n', '"___xx__xx_"\n', '"xx__x_____"\n', '"____x_xxx_"\n', '"__x_x_xxxF"\n', '"______x_x_"\n', '"xx_F_xx__x"' ])
def test_different_column_and_lines_lengths(self): self.assertEqual( read_maze('MazeTest/maze2.txt')[0], [ '"_"\n', '"S__xx__xxx"\n', '"___xx_____"\n', '"xx__x__x__"\n', '"____x__x_____"\n', '"_xxx__x___xx_"\n', '"_____xx_x____"\n', '"xxxxxxx____"\n', '"F_______"' ])
def test_different_line_lengths(self): self.assertEqual( read_maze('MazeTest/maze0.txt')[0], [ '"S__xx__xxx"\n', '"___xx__xx_"\n', '"xx__x______x__"\n', '"____x_xxx__x__"\n', '"__xx__xxxx___F"\n', '"______x_x_"\n', '"xx___xx__x"' ])
def test_back_maze(self): self.assertEqual( read_maze('MazeTest/maze12.txt')[0], [ '"__________"\n', '"__xxxxx__x"\n', '"__x_________________________________________"\n', '"__x_S_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_"\n', '"__x___x_____________________________________"\n', '"__xxxxx___"\n', '"_________F"' ])
def solve_maze(maze_name): solved_maze_name = '{}_solved.txt'.format(splitext(maze_name)[0]) lines, maze_data = read_maze(maze_name) maze = parse_maze(maze_data) path = search_path(maze) draw_path(lines, solved_maze_name, path) with open(solved_maze_name, 'r') as solved_maze_file: solved_maze_data = solved_maze_file.read() return solved_maze_data
def test_hole_maze(self): self.assertEqual( read_maze('MazeTest/maze13.txt')[0], [ '"xxxxxxx"\n', '"xx____S"\n', '"xx_xxxx"\n', '"xx___xx"\n', '"xxxx_xx"\n', '"xxF__xx"' ])
def test_ladder_maze(self): self.assertEqual( read_maze('MazeTest/maze11.txt')[0], [ '"F_______"\n', '"____x__x"\n', '"___x__x_"\n', '"__x__x__"\n', '"__x__x__"\n', '"___x__x_"\n', '"____x__x"\n', '"_____x_S"' ])
def test_closed_maze(self): self.assertEqual( read_maze('MazeTest/maze8.txt')[0], ['"Sxx"\n', '"xxx"\n', '"xxF"'])
def test_second_small_maze(self): self.assertEqual(read_maze('MazeTest/maze7.txt')[0], ['"_S"\n', '"F"'])
def test_first_small_maze(self): self.assertEqual(read_maze('MazeTest/maze6.txt')[0], ['"S"\n', '"F"'])