From 0d5cf9e4ffa7e2ce737dd35ad615fb0c27c2eee5 Mon Sep 17 00:00:00 2001 From: jack Date: Tue, 30 Jun 2026 13:24:19 -0700 Subject: [PATCH] test: add device controller test --- tests/test_device_controller.py | 47 +++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/tests/test_device_controller.py b/tests/test_device_controller.py index 67f00df..fe16f12 100644 --- a/tests/test_device_controller.py +++ b/tests/test_device_controller.py @@ -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] +