test: add device controller test

This commit is contained in:
jack
2026-06-30 13:24:19 -07:00
parent 27292c3bdb
commit 0d5cf9e4ff
+47
View File
@@ -140,3 +140,50 @@ def test_logging_handler(controller):
logger = logging.getLogger("test_logger")
logger.info("Hello QML Activity Log")
assert any("Hello QML Activity Log" in line for line in controller._activity_log)
def test_fresh_session_on_startup(mock_settings):
import tempfile
import shutil
# Configure mock settings with some data to simulate previous session
mock_settings.activity_log = ["[12:00:00] Old message"]
mock_settings.selected_port = "COM9"
mock_settings.last_wafer_info = {"familyCode": "P", "serialNumber": "P00002"}
mock_settings.data_row_count = 50
mock_settings.data_col_count = 244
temp_dir = tempfile.mkdtemp()
try:
new_controller = DeviceController(mock_settings, temp_dir)
# Should start completely fresh (empty/default) ignoring the persisted status
assert len(new_controller._activity_log) == 0
assert new_controller.selectedPort == ""
assert new_controller.lastWaferInfo == ["", "", 0, "", 0, 0]
assert new_controller.dataRowCount == 0
assert new_controller.dataColCount == 0
finally:
shutil.rmtree(temp_dir)
def test_detect_wafer_clears_old_session(controller):
controller._selected_port = "COM1"
controller._last_wafer_info = {"familyCode": "P", "serialNumber": "P00001"}
controller._data_row_count = 10
controller._data_col_count = 244
controller._activity_log.append("[12:00:00] Previous message")
# We mock detect_all_ports to not run long or fail
controller._service.detect_all_ports = MagicMock(return_value=(None, None))
with patch("threading.Thread") as mock_thread:
controller.detectWafer()
# Verify it cleared all session variables and logs immediately at start of detect
assert controller.selectedPort == ""
assert controller.lastWaferInfo == ["", "", 0, "", 0, 0]
assert controller.dataRowCount == 0
assert controller.dataColCount == 0
# Log should only contain "Scanning all ports for wafer ..."
assert len(controller._activity_log) == 1
assert "Scanning all ports" in controller._activity_log[0]