1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- # -*- coding: utf-8 -*-
- from pathfinding.core.diagonal_movement import DiagonalMovement
- from pathfinding.core.grid import Grid
- from pathfinding.finder.a_star import AStarFinder
- import numpy as np
- BORDERLESS_GRID = """
- xxx
- xxx
- """
- BORDER_GRID = """
- +---+
- | |
- | |
- +---+
- """
- WALKED_GRID = """
- +---+
- |s# |
- |xe |
- +---+
- """
- SIMPLE_MATRIX = [
- [1, 1, 1],
- [1, 0, 1],
- [1, 1, 1]
- ]
- SIMPLE_WALKED = """
- +---+
- |sx |
- | #x|
- | e|
- +---+
- """
- def test_str():
- """
- test printing the grid
- """
- grid = Grid(height=2, width=3)
- assert grid.grid_str(border=False, empty_chr='x') == BORDERLESS_GRID[1:-1]
- assert grid.grid_str(border=True) == BORDER_GRID[1:-1]
- grid.nodes[0][1].walkable = False
- start = grid.nodes[0][0]
- end = grid.nodes[1][1]
- path = [(0, 1)]
- assert grid.grid_str(path, start, end) == WALKED_GRID[1:-1]
- def test_empty():
- """
- special test for empty values
- """
- matrix = ()
- grid = Grid(matrix=matrix)
- assert grid.grid_str() == '++\n||\n++'
- matrix = np.array(matrix)
- grid = Grid(matrix=matrix)
- assert grid.grid_str() == '++\n||\n++'
- def test_numpy():
- """
- test grid from numpy array
- """
- matrix = np.array(SIMPLE_MATRIX)
- grid = Grid(matrix=matrix)
- start = grid.node(0, 0)
- end = grid.node(2, 2)
- finder = AStarFinder(diagonal_movement=DiagonalMovement.always)
- path, runs = finder.find_path(start, end, grid)
- assert grid.grid_str(path, start, end) == SIMPLE_WALKED[1:-1]
- if __name__ == '__main__':
- test_str()
|