将后端迁入 backend/,完善根目录 .gitignore,删除误提交的 .mypy_cache 缓存文件。 Co-authored-by: Cursor <cursoragent@cursor.com>
37 lines
1.0 KiB
Python
37 lines
1.0 KiB
Python
from __future__ import annotations
|
|
|
|
from app.algorithm_runner.cli import _resolve_source_mode, _stream_time_for_frame
|
|
|
|
|
|
def test_resolve_source_mode_auto_detects_local_video(tmp_path) -> None:
|
|
video = tmp_path / "case.mp4"
|
|
video.write_bytes(b"")
|
|
|
|
assert _resolve_source_mode(str(video), "auto") == "file"
|
|
|
|
|
|
def test_resolve_source_mode_auto_keeps_rtsp_realtime() -> None:
|
|
assert _resolve_source_mode("rtsp://127.0.0.1:8554/demo", "auto") == "realtime"
|
|
|
|
|
|
def test_resolve_source_mode_respects_explicit_choice() -> None:
|
|
assert _resolve_source_mode("rtsp://127.0.0.1:8554/demo", "file") == "file"
|
|
|
|
|
|
def test_realtime_stream_time_uses_frame_index_not_wall_clock() -> None:
|
|
assert _stream_time_for_frame(
|
|
source_mode="realtime",
|
|
cap_pos_msec=999_999.0,
|
|
frame_idx=50,
|
|
fps_hint=25.0,
|
|
) == 2.0
|
|
|
|
|
|
def test_file_stream_time_prefers_capture_timestamp() -> None:
|
|
assert _stream_time_for_frame(
|
|
source_mode="file",
|
|
cap_pos_msec=1234.0,
|
|
frame_idx=50,
|
|
fps_hint=25.0,
|
|
) == 1.234
|