def test_get_next_with_no_child_and_all_open_neighbors_returns_first_available( ): """ Verifies that `get_next` returns the first available neighbor if all are open. """ grid = Grid(((3, -1, -1), (-1, 2, -1), (0, -1, -1))) assert get_next(grid[0][0]).location == (0, 1) assert get_next(grid[1][1]).location == (0, 1)
def test_get_next_with_last_child_returns_none(): """ Verifies that `get_next` on a point with its last possible child returns None. """ grid = Grid(((3, -1, -1), (-1, 2, -1), (0, -1, -1))) grid[1][1].child = grid[1][0] assert get_next(grid[1][1]) is None
def test_get_next_with_first_of_multiple_children_returns_next_child(): """ Verifies that `get_next` on a point with a child returns the correct next point. """ grid = Grid(((3, -1, -1), (-1, 2, -1), (0, -1, -1))) grid[1][1].child = grid[0][1] assert get_next(grid[1][1]).location == (1, 2)
def test_get_next_with_one_remaining_segment_skips_point_on_new_segment(): """ Verifies that `get_next`, on last allowed segment, skips points on new segments. """ grid = Grid(((-1, -1, -1, -1), (1, -1, -1, 0))) grid[1][0].child = grid[1][1] assert get_next(grid[1][1]).location == (1, 2)
def test_get_next_with_greater_than_two_remaining_segments_skips_sinks(): """ Verifies that `get_next` skips a sink not on the last allowed segment. """ grid = Grid(((-1, 0, -1), (4, -1, 0), (-1, -1, -1))) current = grid[1][1] # Set partial path to current grid[1][0].child = current assert get_next(current).location == (2, 1)
def test_get_next_with_no_child_and_some_open_neighbors_returns_first_available( ): """ Verifies that `get_next` returns the first available neighbor if some are open. """ grid = Grid(((3, -1, -1), (-1, 2, -1), (0, -1, -1))) # Set partial path from "3" draw_path(grid, ((0, 0), (0, 1), (0, 2), (1, 2))) assert get_next(grid[1][1]).location == (2, 1)
def test_get_next_with_no_child_and_no_open_neighbors_returns_none(): """Verifies that `get_next` returns None if no neighbors are open.""" grid = Grid(((4, -1, 1), (0, -1, -1), (-1, -1, 0))) # Set (incorrect) path from "4" draw_path(grid, ((0, 0), (0, 1), (1, 1), (1, 2), (2, 2))) assert get_next(grid[1][2]) is None