Add photo_stitcher/tests/test_core.py
This commit is contained in:
parent
acc7424738
commit
566e751f68
1 changed files with 47 additions and 0 deletions
47
photo_stitcher/tests/test_core.py
Normal file
47
photo_stitcher/tests/test_core.py
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
import os
|
||||||
|
import tempfile
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from PIL import Image
|
||||||
|
|
||||||
|
from photo_stitcher import core
|
||||||
|
|
||||||
|
def create_temp_image(color: tuple[int, int, int], size=(10, 10)) -> str:
|
||||||
|
temp_dir = tempfile.mkdtemp()
|
||||||
|
img_path = os.path.join(temp_dir, f"test_{color[0]}_{color[1]}_{color[2]}.png")
|
||||||
|
img = Image.new("RGB", size, color=color)
|
||||||
|
img.save(img_path)
|
||||||
|
return img_path
|
||||||
|
|
||||||
|
def test_combine_images_creates_output(tmp_path: Path):
|
||||||
|
img1 = create_temp_image((255, 0, 0))
|
||||||
|
img2 = create_temp_image((0, 0, 255))
|
||||||
|
output_file = tmp_path / "combined.tif"
|
||||||
|
|
||||||
|
core.combine_images([img1, img2], str(output_file))
|
||||||
|
|
||||||
|
assert output_file.exists(), "Output file should exist after combining."
|
||||||
|
with Image.open(output_file) as result_img:
|
||||||
|
assert result_img.size == (10, 10), "Output size should match input images."
|
||||||
|
|
||||||
|
|
||||||
|
def test_combine_images_invalid_input_raises(tmp_path: Path):
|
||||||
|
output_file = tmp_path / "fail.tif"
|
||||||
|
with pytest.raises((FileNotFoundError, ValueError, OSError)):
|
||||||
|
core.combine_images(["non_existent.jpg"], str(output_file))
|
||||||
|
|
||||||
|
|
||||||
|
def test_combine_images_empty_list_raises(tmp_path: Path):
|
||||||
|
output_file = tmp_path / "empty.tif"
|
||||||
|
with pytest.raises(ValueError):
|
||||||
|
core.combine_images([], str(output_file))
|
||||||
|
|
||||||
|
|
||||||
|
def test_combine_images_with_corrupt_file(tmp_path: Path):
|
||||||
|
# Create a fake broken image file
|
||||||
|
broken_path = tmp_path / "broken.jpg"
|
||||||
|
broken_path.write_text("not an image")
|
||||||
|
output_file = tmp_path / "out.tif"
|
||||||
|
with pytest.raises((OSError, ValueError)):
|
||||||
|
core.combine_images([str(broken_path)], str(output_file))
|
||||||
Loading…
Reference in a new issue