import tempfile from pathlib import Path import numpy as np from developer_api import load_image, process_image, save_image, generate_python_snippet def sample_img(): arr = np.zeros((40, 50, 3), dtype=np.uint8) arr[10:30, 10:30] = [100, 150, 200] return arr def test_developer_api_process_image(): img = sample_img() out, meta = process_image(img, "filter", operation_name="Sepia") assert out.shape == img.shape assert meta["operation"] == "Sepia" def test_developer_api_transform_and_morph(): img = sample_img() out_t, meta_t = process_image(img, "transform", operation_name="Rotation", params={"angle": 15}) assert out_t.ndim == 3 assert out_t.shape[2] == 3 out_m, meta_m = process_image(img, "morphology", operation_name="Opening", params={"size": 3}) assert out_m.shape == img.shape def test_developer_api_ar(): img = sample_img() out_ar, meta_ar = process_image(img, "ar", operation_name="Glasses") assert out_ar.shape == img.shape assert "status" in meta_ar def test_generate_python_snippet(): snippet = generate_python_snippet("Sepia", {"contrast": 1.2}) assert "apply_step" in snippet assert "Sepia" in snippet def test_save_and_load_image(): img = sample_img() with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as f: tmp_path = f.name save_image(img, tmp_path) loaded = load_image(tmp_path) assert loaded.shape == img.shape Path(tmp_path).unlink(missing_ok=True)