31750f0f84
支持显式无载荷置零、处理线程内切换模型及完整标定包快照。shared、界面检查与兼容测试通过;Studio 全量仍有一项回放停止时序测试失败。
37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
"""Unloaded confirmation is separate from reset and model failures stay visible."""
|
|
|
|
from types import SimpleNamespace
|
|
|
|
import pytest
|
|
from PySide6.QtWidgets import QMessageBox
|
|
|
|
from orisys_studio.app_window import StudioMainWindow
|
|
from orisys_studio.ui.toolbar import ToolbarWidget
|
|
|
|
|
|
@pytest.mark.parametrize("confirmed", [False, True])
|
|
def test_unloaded_zero_requires_operator_confirmation(monkeypatch, confirmed):
|
|
requested = []
|
|
messages = []
|
|
host = SimpleNamespace(
|
|
_session_phase="running",
|
|
_active_worker=SimpleNamespace(request_calibration_zero=lambda: requested.append(True)),
|
|
statusBar=lambda: SimpleNamespace(showMessage=messages.append))
|
|
monkeypatch.setattr(QMessageBox, "question", lambda *args: QMessageBox.StandardButton.Yes
|
|
if confirmed else QMessageBox.StandardButton.No)
|
|
StudioMainWindow._on_calibration_zero(host)
|
|
assert bool(requested) == confirmed
|
|
|
|
|
|
def test_model_status_and_zero_control_are_cleared_on_playback(qt_app):
|
|
toolbar = ToolbarWidget()
|
|
toolbar.set_reset_enabled(True)
|
|
toolbar.set_model_calibration_status({"fn": "zero_unavailable"})
|
|
assert not toolbar.btn_calibration_zero.isHidden()
|
|
assert "FN" in toolbar.model_state.text()
|
|
assert toolbar.btn_calibration_zero.isEnabled()
|
|
toolbar.set_run_role("playback")
|
|
assert toolbar.btn_calibration_zero.isHidden()
|
|
assert toolbar.model_state.isHidden()
|
|
toolbar.close()
|