File size: 1,789 Bytes
3e66d5d
a358eab
3e66d5d
a358eab
3e66d5d
 
a358eab
3e66d5d
 
a358eab
 
 
 
 
 
 
 
 
3e66d5d
 
 
 
 
 
 
 
 
 
 
 
a358eab
 
 
 
 
 
 
 
 
 
3e66d5d
 
 
 
 
 
 
 
 
 
0faa034
3e66d5d
 
 
0faa034
 
3e66d5d
 
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
53
54
55
56
57
58
59
"""Tests for the Gradio interface."""

from __future__ import annotations

import gradio as gr
from PIL import Image

from facecloak.interface import build_demo
from facecloak.project import PROJECT_NAME


def test_build_demo_returns_gradio_blocks_with_project_title() -> None:
    demo = build_demo()

    assert isinstance(demo, gr.Blocks)
    assert demo.title == PROJECT_NAME


def test_generate_cloak_raises_gracefully_when_image_is_none() -> None:
    """generate_cloak must raise gr.Error for missing input (Step 30)."""
    from facecloak.interface import generate_cloak

    gen = generate_cloak(None, 0.03, 20, 0.1)
    try:
        next(gen)
        raise AssertionError("Expected gr.Error to be raised")
    except gr.Error as exc:
        assert "No image provided" in str(exc)


def test_compare_faces_requires_both_images() -> None:
    from facecloak.interface import compare_faces

    blank = Image.new("RGB", (16, 16), "white")
    try:
        compare_faces(blank, None)
    except gr.Error as exc:
        assert "Please provide both images" in str(exc)
    else:
        raise AssertionError("compare_faces should reject missing inputs.")


def test_interface_has_no_phase_references() -> None:
    """The interface markdown copy must not mention phase numbers."""
    from facecloak.interface import build_demo

    demo = build_demo()
    # The demo object doesn't expose raw text easily; check the source module
    import inspect
    from facecloak import interface

    source = inspect.getsource(interface)
    # Should not contain "Phase 2", "Phase 3" etc. in user-facing strings
    import re

    matches = re.findall(r"\bPhase [0-9]\b", source)
    # Allow zero matches
    assert len(matches) == 0, f"Found phase number references in interface: {matches}"