From 8be0720aa4c45da590143a5cc15218a7c838d267 Mon Sep 17 00:00:00 2001 From: Mika Date: Sun, 22 Mar 2026 03:08:31 +0000 Subject: [PATCH] Add image_processing/tests/test_core.py --- image_processing/tests/test_core.py | 50 +++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 image_processing/tests/test_core.py diff --git a/image_processing/tests/test_core.py b/image_processing/tests/test_core.py new file mode 100644 index 0000000..5eebe72 --- /dev/null +++ b/image_processing/tests/test_core.py @@ -0,0 +1,50 @@ +import os +import numpy as np +import pytest +import cv2 + +from image_processing.core import process_images + +@pytest.fixture +def sample_image_dir(tmp_path): + # Erzeuge ein temporäres Verzeichnis mit synthetischen Testbildern + img_dir = tmp_path / 'data' / 'raw' + img_dir.mkdir(parents=True, exist_ok=True) + for i in range(5): + img = np.full((10, 10, 3), fill_value=50 * i, dtype=np.uint8) + file_path = img_dir / f'img_{i}.jpg' + cv2.imwrite(str(file_path), img) + return img_dir + + +def test_process_images_stacking_result(sample_image_dir): + # Normalfall: Stacking mehrerer gültiger Bilder + images = sorted(str(p) for p in sample_image_dir.glob('*.jpg')) + result = process_images(images) + assert isinstance(result, np.ndarray), 'Ergebnis muss ein NumPy-Array sein.' + assert result.ndim == 3, 'Gestacktes Bild muss eine 3D-Matrix (H, W, C) sein.' + assert result.shape == (10, 10, 3), 'Dimensionen der Ausgabe müssen den Eingabebildern entsprechen.' + assert np.all(result >= 0) and np.all(result <= 255), 'Pixelwerte müssen im gültigen Bereich liegen.' + + +def test_process_images_empty_list(): + # Edge-Case: Leere Liste + with pytest.raises((ValueError, AssertionError, FileNotFoundError)): + _ = process_images([]) + + +def test_process_images_invalid_path(tmp_path): + # Fehlerfall: Nicht vorhandene Datei + fake_path = str(tmp_path / 'does_not_exist.jpg') + with pytest.raises((ValueError, FileNotFoundError, AssertionError)): + _ = process_images([fake_path]) + + +def test_process_images_image_consistency(sample_image_dir): + # Prüfe, dass alle Eingabebilder gleich groß sind und Ergebnis konsistent bleibt + img_paths = sorted(str(p) for p in sample_image_dir.glob('*.jpg')) + sizes = [cv2.imread(p).shape for p in img_paths] + assert len(set(sizes)) == 1, 'Alle Testbilder müssen gleiche Dimensionen haben.' + result = process_images(img_paths) + ref_shape = sizes[0] + assert result.shape == ref_shape, 'Gestacktes Bild muss gleiche Dimension wie Eingabebilder haben.' \ No newline at end of file