"""Overlay base projector: session cache and no fisheye resize fallback.""" from __future__ import annotations import numpy as np from orisys_app_shared.analysis.overlay_base import OverlayBaseProjector def test_overlay_projector_reuses_the_same_frame_id() -> None: calls: list[int] = [] def project(frame: np.ndarray) -> np.ndarray: calls.append(1) out = np.zeros((8, 8, 3), dtype=np.uint8) out[..., 1] = 40 return out projector = OverlayBaseProjector(sensor_type="finger", project=project) first = projector.project(np.zeros((32, 32, 3), dtype=np.uint8), frame_id=7) second = projector.project(np.ones((32, 32, 3), dtype=np.uint8) * 9, frame_id=7) assert len(calls) == 1 assert first is second third = projector.project(np.zeros((32, 32, 3), dtype=np.uint8), frame_id=8) assert len(calls) == 2 assert third is not second projector.close() def test_open_from_unknown_sensor_type_returns_none() -> None: class _Prov: sensor_type = "unknown" sensor_config_ref = "" assert OverlayBaseProjector.open_from_provenance(_Prov()) is None