Spaces:
Running
Running
| """tests/test_fusion.py""" | |
| from __future__ import annotations | |
| import pytest | |
| from src.types import EngineResult, GeneratorLabel | |
| def _make_result(engine, verdict, conf, explanation="Test"): | |
| return EngineResult( | |
| engine=engine, verdict=verdict, confidence=conf, | |
| explanation=explanation, processing_time_ms=100.0 | |
| ) | |
| def test_fuser_imports(): | |
| from src.fusion.fuser import Fuser | |
| assert Fuser is not None | |
| def test_fuser_image_returns_detection_response(engine_result_fake): | |
| from src.fusion.fuser import Fuser | |
| from src.engines.coherence.detector import CoherenceDetector | |
| from src.engines.sstgnn.detector import SSTGNNDetector | |
| fuser = Fuser() | |
| results = [engine_result_fake, CoherenceDetector.image_stub(), SSTGNNDetector.image_stub()] | |
| response = fuser.fuse(results, media_type="image", total_ms=100.0) | |
| from src.types import DetectionResponse | |
| assert isinstance(response, DetectionResponse) | |
| assert response.verdict in ("FAKE", "REAL") | |
| assert 0.0 <= response.confidence <= 1.0 | |
| assert len(response.engine_breakdown) == 3 | |
| def test_fuser_high_fake_confidence_returns_fake(): | |
| from src.fusion.fuser import Fuser | |
| fuser = Fuser() | |
| results = [ | |
| _make_result("fingerprint", "FAKE", 0.95), | |
| _make_result("coherence", "FAKE", 0.88), | |
| _make_result("sstgnn", "FAKE", 0.82), | |
| ] | |
| resp = fuser.fuse(results, media_type="video", total_ms=500.0) | |
| assert resp.verdict == "FAKE" | |
| assert resp.confidence > 0.5 | |
| def test_fuser_high_real_confidence_returns_real(): | |
| from src.fusion.fuser import Fuser | |
| fuser = Fuser() | |
| results = [ | |
| _make_result("fingerprint", "REAL", 0.93), | |
| _make_result("coherence", "REAL", 0.88), | |
| _make_result("sstgnn", "REAL", 0.85), | |
| ] | |
| resp = fuser.fuse(results, media_type="video", total_ms=500.0) | |
| assert resp.verdict == "REAL" | |
| def test_fuser_empty_returns_default(): | |
| from src.fusion.fuser import Fuser | |
| fuser = Fuser() | |
| resp = fuser.fuse([], media_type="image", total_ms=0.0) | |
| assert resp.verdict in ("FAKE", "REAL") | |
| def test_fuser_real_verdict_sets_generator_real(): | |
| from src.fusion.fuser import Fuser | |
| fuser = Fuser() | |
| results = [_make_result("fingerprint", "REAL", 0.95)] | |
| resp = fuser.fuse(results, media_type="image", total_ms=100.0) | |
| if resp.verdict == "REAL": | |
| assert resp.attributed_generator == GeneratorLabel.real | |
| def test_types_generator_label_count(): | |
| assert len(GeneratorLabel) == 8 | |
| def test_types_generator_index_mapping(): | |
| from src.types import GENERATOR_INDEX_TO_LABEL | |
| assert GENERATOR_INDEX_TO_LABEL[0] == GeneratorLabel.real | |
| assert GENERATOR_INDEX_TO_LABEL[1] == GeneratorLabel.unknown_gan | |
| assert GENERATOR_INDEX_TO_LABEL[2] == GeneratorLabel.stable_diffusion | |
| assert GENERATOR_INDEX_TO_LABEL[7] == GeneratorLabel.imagen | |
| def test_engine_result_confidence_validator(): | |
| with pytest.raises(Exception): | |
| EngineResult( | |
| engine="test", verdict="FAKE", confidence=1.5, | |
| explanation="x", processing_time_ms=1.0 | |
| ) | |
| def test_engine_result_confidence_rounds(): | |
| r = EngineResult( | |
| engine="test", verdict="FAKE", confidence=0.923456789, | |
| explanation="x", processing_time_ms=1.0 | |
| ) | |
| assert len(str(r.confidence).split(".")[-1]) <= 4 | |