Exemple #1
0
 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
Exemple #2
0
    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
Exemple #3
0
 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),
     )
Exemple #4
0
    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)
Exemple #5
0
    def test_neighbours(self):
        maze = 'A#B\n.#.\n...'
        ms = MazeSolver(maze)

        assert ms.neighbors((0, 0)) == ((1, 0),)
Exemple #6
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
Exemple #7
0
    def test_start_and_goal_index(self):
        maze = '.#.\nAB.'
        ms = MazeSolver(maze)

        assert ms.start == (1, 0,)
        assert ms.goal == (1, 1,)
Exemple #8
0
    def test_dimensions_of_maze(self):
        maze = '.#.\nAB.'
        ms = MazeSolver(maze)

        assert ms.width == 3
        assert ms.height == 2
Exemple #9
0
    def test_simple_maze_string(self):
        maze = '.#\nAB'
        ms = MazeSolver(maze)

        assert np.array_equal(ms.maze, np.array([['.', '#'], ['A', 'B']]))
Exemple #10
0
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))
Exemple #11
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: