def test__undiscovered_blob_size() -> None: """ Test the BlobGoal class' _undiscovered_blob_size method. """ goal1 = BlobGoal((0, 0, 0)) pos1 = (0, 0) board1 = [[(0, 0, 0), (0, 0, 0)], [(0, 0, 0), (0, 0, 0)]] visited1 = [[-1, -1], [-1, -1]] assert goal1._undiscovered_blob_size(pos1, board1, visited1) == 4 assert visited1 == [[1, 1], [1, 1]] assert goal1._undiscovered_blob_size(pos1, board1, visited1) == 0 goal2 = BlobGoal((0, 255, 0)) pos2 = (0, 0) board2 = [[(0, 255, 0), (0, 0, 0)], [(0, 0, 0), (0, 255, 0)]] visited2 = [[-1, -1], [-1, -1]] assert goal2._undiscovered_blob_size(pos2, board2, visited2) == 1 assert visited2 == [[1, 0], [0, -1]] assert goal2._undiscovered_blob_size(pos2, board2, visited2) == 0 goal3 = goal1 # (0, 0, 0) pos3 = (1, 1) board3 = [[(0, 255, 0), (0, 0, 0), (0, 255, 0)], [(0, 0, 0), (0, 255, 0), (0, 255, 0)], [(0, 255, 0), (0, 0, 0), (0, 255, 0)]] visited3 = [[-1, -1, -1], [-1, -1, -1], [-1, -1, -1]] assert goal3._undiscovered_blob_size(pos3, board3, visited3) == 0 assert visited3 == [[-1, -1, -1], [-1, 0, -1], [-1, -1, -1]] assert goal3._undiscovered_blob_size(pos3, board3, visited3) == 0 goal4 = goal1 # (0, 0, 0) pos4 = (0, 1) board4 = [[(0, 0, 0), (0, 0, 0), (0, 255, 0)], [(0, 0, 0), (0, 255, 0), (0, 255, 0)], [(0, 0, 0), (0, 0, 0), (0, 255, 0)]] visited4 = [[1, -1, -1], [-1, -1, -1], [-1, 1, -1]] assert goal4._undiscovered_blob_size(pos4, board4, visited4) == 1 assert visited4 == [[1, 1, 0], [-1, 0, -1], [-1, 1, -1]] assert goal4._undiscovered_blob_size(pos4, board4, visited4) == 0
def test_undiscovered_blob_size2() -> None: blocky = Block((0, 0), 16, (199, 44, 58), 0, 1) by = _flatten(blocky) block = Block((0, 0), 16, None, 0, 1) b1 = Block((8, 0), 8, (1, 128, 181), 1, 1) b2 = Block((0, 0), 8, (199, 44, 58), 1, 1) b3 = Block((0, 8), 8, (1, 128, 181), 1, 1) b4 = Block((8, 8), 8, (255, 211, 92), 1, 1) block.children = [b1, b2, b3, b4] fb = _flatten(block) goal1 = BlobGoal((199, 44, 58)) goal2 = BlobGoal((1, 128, 181)) v = [[-1, -1], [-1, -1]] b = [[-1, -1], [-1, -1]] assert goal1._undiscovered_blob_size((0, 0), by, v) == 4 assert goal2._undiscovered_blob_size((0, 1), fb, b) == 1
def test__undiscovered_blob_size_one_colour_one_block(self) -> None: board = [[COLOUR_LIST[0]]] visited = [[-1]] pos = (0, 0) goal = BlobGoal(COLOUR_LIST[0]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 1 goal = BlobGoal(COLOUR_LIST[1]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[2]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[3]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0
def test_undiscovered_blob_size() -> None: board = [[(199, 44, 58), (199, 44, 58), (199, 44, 58), (255, 211, 92)], [(199, 44, 58), (199, 44, 58), (1, 128, 181), (199, 44, 58)], [(1, 128, 181), (1, 128, 181), (199, 44, 58), (255, 211, 92)], [(1, 128, 181), (1, 128, 181), (255, 211, 92), (199, 44, 58)]] visited = [[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]] pos = (0, 2) goal1 = BlobGoal((199, 44, 58)) result = goal1._undiscovered_blob_size(pos, board, visited) assert result == 5 assert visited[1][1] == 1
def test_blobgoal__undiscovered_blob_size() -> None: """Test BlobGoal._undiscovered_blob_size. - gives largest blob of the colour and position - updates visited """ block = Block((0, 0), 100, (1, 128, 181), 0, 1) assert block.smash() block.children[0].colour = (1, 128, 181) block.children[1].colour = (1, 128, 181) block.children[2].colour = (0, 0, 0) block.children[3].colour = (0, 0, 0) goal = BlobGoal((1, 128, 181)) flattened = _flatten(block) visited = [[-1, -1], [-1, -1]] assert goal._undiscovered_blob_size((1, 0), flattened, visited) == 2 assert visited == [[1, 0], [1, 0]]
def test__undiscovered_blob_size_two_colours_four_blocks(self) -> None: board = [[COLOUR_LIST[0], COLOUR_LIST[0]], [COLOUR_LIST[1], COLOUR_LIST[1]]] visited = [[-1, -1], [-1, -1]] pos = (0, 0) goal = BlobGoal(COLOUR_LIST[0]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 2 goal = BlobGoal(COLOUR_LIST[1]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[2]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[3]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 pos = (0, 1) visited = [[-1, -1], [-1, -1]] goal = BlobGoal(COLOUR_LIST[0]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 2 goal = BlobGoal(COLOUR_LIST[1]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[2]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[3]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 pos = (1, 0) visited = [[-1, -1], [-1, -1]] goal = BlobGoal(COLOUR_LIST[1]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 2 goal = BlobGoal(COLOUR_LIST[0]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[2]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[3]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 pos = (1, 1) visited = [[-1, -1], [-1, -1]] goal = BlobGoal(COLOUR_LIST[1]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 2 goal = BlobGoal(COLOUR_LIST[0]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[2]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[3]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0
def test__undiscovered_blob_size_multiple_levels(self) -> None: board = [ [COLOUR_LIST[0], COLOUR_LIST[0], COLOUR_LIST[1], COLOUR_LIST[1]], [COLOUR_LIST[0], COLOUR_LIST[0], COLOUR_LIST[1], COLOUR_LIST[1]], [COLOUR_LIST[2], COLOUR_LIST[2], COLOUR_LIST[2], COLOUR_LIST[0]], [COLOUR_LIST[2], COLOUR_LIST[2], COLOUR_LIST[0], COLOUR_LIST[0]] ] visited = [[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]] pos = (0, 0) goal = BlobGoal(COLOUR_LIST[0]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 4 goal = BlobGoal(COLOUR_LIST[1]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[2]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[3]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 pos = (0, 3) visited = [[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]] goal = BlobGoal(COLOUR_LIST[1]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 4 goal = BlobGoal(COLOUR_LIST[0]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[2]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[3]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 pos = (3, 0) visited = [[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]] goal = BlobGoal(COLOUR_LIST[2]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 5 goal = BlobGoal(COLOUR_LIST[0]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[1]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[3]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 pos = (3, 3) visited = [[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]] goal = BlobGoal(COLOUR_LIST[0]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 3 goal = BlobGoal(COLOUR_LIST[1]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[2]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0 goal = BlobGoal(COLOUR_LIST[3]) score = goal._undiscovered_blob_size(pos, board, visited) assert score == 0