From 95bcc66045cd0b69783ae8724b7ee4b9a3139343 Mon Sep 17 00:00:00 2001 From: georgi Date: Fri, 30 May 2025 01:26:50 +0200 Subject: [PATCH] Add tests for grid nodes --- tests/image/test_grid_nodes.py | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 tests/image/test_grid_nodes.py diff --git a/tests/image/test_grid_nodes.py b/tests/image/test_grid_nodes.py new file mode 100644 index 0000000..94e3d21 --- /dev/null +++ b/tests/image/test_grid_nodes.py @@ -0,0 +1,38 @@ +import pytest +from io import BytesIO +from PIL import Image + +from nodetool.metadata.types import ImageRef +from nodetool.nodes.lib.grid import SliceImageGrid, CombineImageGrid +from nodetool.workflows.processing_context import ProcessingContext + +buffer = BytesIO() +Image.new("RGB", (100, 100), color="blue").save(buffer, format="PNG") +DUMMY_IMAGE = ImageRef(data=buffer.getvalue()) + + +@pytest.mark.asyncio +async def test_slice_image_grid(context: ProcessingContext): + node = SliceImageGrid(image=DUMMY_IMAGE, columns=2, rows=2) + tiles = await node.process(context) + assert len(tiles) == 4 + for tile in tiles: + pil = await context.image_to_pil(tile) + assert pil.size == (50, 50) + + +@pytest.mark.asyncio +async def test_combine_image_grid(context: ProcessingContext): + slice_node = SliceImageGrid(image=DUMMY_IMAGE, columns=2, rows=2) + tiles = await slice_node.process(context) + combine_node = CombineImageGrid(tiles=tiles, columns=2) + combined = await combine_node.process(context) + pil = await context.image_to_pil(combined) + assert pil.size == (100, 100) + + +@pytest.mark.asyncio +async def test_combine_image_grid_no_tiles(context: ProcessingContext): + node = CombineImageGrid(tiles=[], columns=2) + with pytest.raises(ValueError): + await node.process(context)