三维未激活采样显示灰点,二维增加深度叠箭头。
分析对话框默认使用传感器对话框保存的标定,关闭按钮改为保存。框选曲线时数值卡片仍显示光标读数。相关单测通过。
This commit is contained in:
@@ -6,11 +6,13 @@ import json
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
from orisys_app_shared.analysis.bare_video import VideoFacts
|
||||
from orisys_app_shared.i18n import t
|
||||
from orisys_app_shared.sensors import scan_sensor_catalog
|
||||
from orisys_studio.ui import sensor_picker as picker_module
|
||||
from orisys_studio.ui.sensor_dialog import ROLE_DEFAULT, ROLE_FILE, ROLE_NONE, SensorDialog
|
||||
from orisys_studio.ui.sensor_picker import SensorPickerWidget
|
||||
from orisys_studio.ui.video_analysis_dialog import VideoAnalysisDialog
|
||||
from PySide6.QtWidgets import QWidget
|
||||
|
||||
CONFIG = {
|
||||
@@ -319,3 +321,71 @@ def test_apply_while_running_queues_set_pending_calibration(make_window, tmp_pat
|
||||
window.apply_live_calibration_choice()
|
||||
assert pending == []
|
||||
assert window.statusBar().currentMessage() == t("sensor.live_calibration_remembered")
|
||||
|
||||
|
||||
def _facts(path: Path) -> VideoFacts:
|
||||
return VideoFacts(path=path, frame_count=4, fps=10.0, width=8, height=8)
|
||||
|
||||
|
||||
def test_analysis_prompt_defaults_to_the_saved_sensor_file(make_window, tmp_path):
|
||||
"""The file saved from the sensor dialog is the analysis prompt's starting choice."""
|
||||
window = make_window()
|
||||
entry = window.sensor_picker.selected_entry()
|
||||
assert entry is not None
|
||||
assert window.live_calibration_for(entry.ref) is None
|
||||
cal = tmp_path / "picked.json"
|
||||
cal.write_text("{}", encoding="utf-8")
|
||||
window.set_live_calibration_choice(role=ROLE_FILE, path=cal)
|
||||
dialog = VideoAnalysisDialog(
|
||||
video=tmp_path / "clip.mp4",
|
||||
facts=_facts(tmp_path / "clip.mp4"),
|
||||
catalog=scan_sensor_catalog(),
|
||||
window=window,
|
||||
initial_profile=entry.ref,
|
||||
remembered_calibration=window.live_calibration_for,
|
||||
)
|
||||
try:
|
||||
assert dialog.calibration_combo.currentData() == ROLE_FILE
|
||||
assert dialog._chosen_calibration() == cal
|
||||
finally:
|
||||
dialog.deleteLater()
|
||||
|
||||
|
||||
def test_analysis_prompt_keeps_its_default_until_a_choice_is_saved(
|
||||
make_window, tmp_path
|
||||
):
|
||||
window = make_window()
|
||||
dialog = VideoAnalysisDialog(
|
||||
video=tmp_path / "clip.mp4",
|
||||
facts=_facts(tmp_path / "clip.mp4"),
|
||||
catalog=scan_sensor_catalog(),
|
||||
window=window,
|
||||
initial_profile="shipped/box",
|
||||
remembered_calibration=window.live_calibration_for,
|
||||
)
|
||||
try:
|
||||
assert dialog.calibration_combo.currentData() == ROLE_DEFAULT
|
||||
finally:
|
||||
dialog.deleteLater()
|
||||
|
||||
|
||||
def test_a_reopened_analysis_setup_still_beats_the_saved_file(make_window, tmp_path):
|
||||
window = make_window()
|
||||
entry = window.sensor_picker.selected_entry()
|
||||
assert entry is not None
|
||||
cal = tmp_path / "picked.json"
|
||||
cal.write_text("{}", encoding="utf-8")
|
||||
window.set_live_calibration_choice(role=ROLE_FILE, path=cal)
|
||||
dialog = VideoAnalysisDialog(
|
||||
video=tmp_path / "clip.mp4",
|
||||
facts=_facts(tmp_path / "clip.mp4"),
|
||||
catalog=scan_sensor_catalog(),
|
||||
window=window,
|
||||
initial_profile=entry.ref,
|
||||
prefer_no_calibration=True,
|
||||
remembered_calibration=window.live_calibration_for,
|
||||
)
|
||||
try:
|
||||
assert dialog.calibration_combo.currentData() == ROLE_NONE
|
||||
finally:
|
||||
dialog.deleteLater()
|
||||
|
||||
Reference in New Issue
Block a user