def test_solving_solvable_mazes(self): solvable_maze_numbers = ['1', '2', '3', '4'] for num in solvable_maze_numbers: with open('mazesolver/tests/boards/board-1-' + num + '.txt') as f: ms = MazeSolver(f.read()) ms.solve() assert ms.success
def test_is_goal_reached(self): maze = '.#.\nAB.' ms = MazeSolver(maze) assert ms.is_goal_reached((0, 0), (0, 0)) is False assert ms.is_goal_reached((1, 0), (0, 0)) is False assert ms.is_goal_reached((1, 1), (0, 0)) is True
def test_complex_neighbours_case(self): maze = '######\n' + \ '..A.#B\n' + \ '.####.\n' + \ '......\n' ms = MazeSolver(maze) assert ms.neighbors((1, 2)) == ( (1, 3), (1, 1), ) assert ms.neighbors((2, 5)) == ( (3, 5), (1, 5), )
def test_init_with_file(self): with open('mazesolver/tests/boards/board-1-1.txt') as f: ms = MazeSolver(f.read()) assert ms.maze.shape == (7, 20)
def test_neighbours(self): maze = 'A#B\n.#.\n...' ms = MazeSolver(maze) assert ms.neighbors((0, 0)) == ((1, 0),)
def test_reachable(self): maze = 'A#B\n.#.\n...' ms = MazeSolver(maze) # Check all points within maze assert ms.reachable((0, 0)) is True assert ms.reachable((0, 1)) is False assert ms.reachable((0, 2)) is True assert ms.reachable((1, 0)) is True assert ms.reachable((1, 1)) is False assert ms.reachable((1, 2)) is True assert ms.reachable((2, 0)) is True assert ms.reachable((2, 1)) is True assert ms.reachable((2, 2)) is True # Out of bounds assert ms.reachable((-1, 0)) is False assert ms.reachable((0, -1)) is False assert ms.reachable((3, -1)) is False assert ms.reachable((0, 3)) is False
def test_start_and_goal_index(self): maze = '.#.\nAB.' ms = MazeSolver(maze) assert ms.start == (1, 0,) assert ms.goal == (1, 1,)
def test_dimensions_of_maze(self): maze = '.#.\nAB.' ms = MazeSolver(maze) assert ms.width == 3 assert ms.height == 2
def test_simple_maze_string(self): maze = '.#\nAB' ms = MazeSolver(maze) assert np.array_equal(ms.maze, np.array([['.', '#'], ['A', 'B']]))
from mazesolver import MazeSolver ########################################################### ########################################################### # EXECUTION: ########################################################### ########################################################### #MazeSolver.solveMazeImage("labyrinth.png", (1, 0)) #MazeSolver.solveMazeImage("labyrinth2.png", (1, 0)) MazeSolver.solveMazeImage("labyrinth3.png", (1, 0)) #MazeSolver.solveMazeImage("labyrinth4.png", (1, 0)) #MazeSolver.solveMazeImage("labyrinth5.png", (1, 0))
from sys import argv from mazesolver import MazeSolver, TerrainMazeSolver if argv[1] == '1': board_paths = 'mazesolver/tests/boards/board-1-' for board_number in [1, 2, 3, 4]: with open(board_paths + str(board_number) + '.txt') as board_file: maze_solver = MazeSolver(board_file.read()) maze_solver.visualize() if argv[1] == '2': board_paths = 'mazesolver/tests/boards/board-2-' for board_number in [1, 2, 3, 4]: with open(board_paths + str(board_number) + '.txt') as board_file: maze_solver = TerrainMazeSolver(board_file.read()) maze_solver.visualize() if argv[1] == '3': base_path = 'mazesolver/tests/boards/' board_names = ( ('board-1-1.txt', MazeSolver), ('board-2-1.txt', TerrainMazeSolver), ) methods = ('Astar', 'Dijkstra', 'BFS',) for board_name, Solver in board_names: for method in methods: with open(base_path + board_name) as board_file: