File size: 1,510 Bytes
8096125
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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)