phase 4
This commit is contained in:
@@ -6,14 +6,14 @@ from pathlib import Path
|
||||
import numpy as np
|
||||
import pytest
|
||||
|
||||
from detect.models import BoundingBox, Frame
|
||||
from detect.profiles.base import RegionAnalysisConfig
|
||||
from detect.profiles.soccer import SoccerBroadcastProfile
|
||||
from core.detect.models import BoundingBox, Frame
|
||||
from core.detect.stages.models import RegionAnalysisConfig
|
||||
from core.detect.profile import get_profile, get_stage_config
|
||||
|
||||
|
||||
# Load edges module directly — gpu/models/__init__.py has GPU-only imports
|
||||
_spec = importlib.util.spec_from_file_location(
|
||||
"cv_edges", Path("gpu/models/cv/edges.py"),
|
||||
"cv_edges", Path("core/gpu/models/cv/edges.py"),
|
||||
)
|
||||
_edges_mod = importlib.util.module_from_spec(_spec)
|
||||
_spec.loader.exec_module(_edges_mod)
|
||||
@@ -40,8 +40,8 @@ def _make_frame_with_lines(seq: int = 0) -> Frame:
|
||||
# --- Config ---
|
||||
|
||||
def test_soccer_profile_has_region_analysis_config():
|
||||
profile = SoccerBroadcastProfile()
|
||||
config = profile.region_analysis_config()
|
||||
profile = get_profile("soccer_broadcast")
|
||||
config = RegionAnalysisConfig(**get_stage_config(profile, "detect_edges"))
|
||||
assert isinstance(config, RegionAnalysisConfig)
|
||||
assert config.enabled is True
|
||||
|
||||
@@ -133,9 +133,9 @@ def test_detect_edges_debug_blank_frame():
|
||||
|
||||
def test_stage_disabled(monkeypatch):
|
||||
"""When disabled, returns empty dict."""
|
||||
monkeypatch.setattr("detect.emit.push_detect_event", lambda *a, **kw: None)
|
||||
monkeypatch.setattr("core.detect.emit.push_detect_event", lambda *a, **kw: None)
|
||||
|
||||
from detect.stages.edge_detector import detect_edge_regions
|
||||
from core.detect.stages.edge_detector import detect_edge_regions
|
||||
|
||||
config = RegionAnalysisConfig(enabled=False)
|
||||
result = detect_edge_regions([_make_frame()], config, job_id="test")
|
||||
@@ -144,9 +144,9 @@ def test_stage_disabled(monkeypatch):
|
||||
|
||||
def test_stage_local_blank(monkeypatch):
|
||||
"""Local mode on blank frames returns empty boxes."""
|
||||
monkeypatch.setattr("detect.emit.push_detect_event", lambda *a, **kw: None)
|
||||
monkeypatch.setattr("core.detect.emit.push_detect_event", lambda *a, **kw: None)
|
||||
|
||||
from detect.stages.edge_detector import detect_edge_regions
|
||||
from core.detect.stages.edge_detector import detect_edge_regions
|
||||
|
||||
config = RegionAnalysisConfig()
|
||||
result = detect_edge_regions([_make_frame()], config, job_id="test")
|
||||
@@ -156,9 +156,9 @@ def test_stage_local_blank(monkeypatch):
|
||||
|
||||
def test_stage_local_with_lines(monkeypatch):
|
||||
"""Local mode on frame with lines should find regions."""
|
||||
monkeypatch.setattr("detect.emit.push_detect_event", lambda *a, **kw: None)
|
||||
monkeypatch.setattr("core.detect.emit.push_detect_event", lambda *a, **kw: None)
|
||||
|
||||
from detect.stages.edge_detector import detect_edge_regions
|
||||
from core.detect.stages.edge_detector import detect_edge_regions
|
||||
|
||||
config = RegionAnalysisConfig()
|
||||
frame = _make_frame_with_lines()
|
||||
@@ -174,22 +174,22 @@ def test_stage_local_with_lines(monkeypatch):
|
||||
|
||||
def test_detect_edges_in_nodes():
|
||||
"""detect_edges must be in the pipeline node list."""
|
||||
from detect.graph import NODES, NODE_FUNCTIONS
|
||||
from core.detect.graph import NODES, NODE_FUNCTIONS
|
||||
|
||||
assert "detect_edges" in NODES
|
||||
node_names = [name for name, _ in NODE_FUNCTIONS]
|
||||
assert "detect_edges" in node_names
|
||||
|
||||
# Must be after filter_scenes, before detect_objects
|
||||
# Must be after field_segmentation, before detect_objects
|
||||
idx = NODES.index("detect_edges")
|
||||
assert NODES[idx - 1] == "filter_scenes"
|
||||
assert NODES[idx - 1] == "field_segmentation"
|
||||
assert NODES[idx + 1] == "detect_objects"
|
||||
|
||||
|
||||
# --- State ---
|
||||
|
||||
def test_state_has_edge_regions_field():
|
||||
from detect.state import DetectState
|
||||
from core.detect.state import DetectState
|
||||
|
||||
hints = DetectState.__annotations__
|
||||
assert "edge_regions_by_frame" in hints
|
||||
|
||||
Reference in New Issue
Block a user