added data saving feature
This commit is contained in:
@@ -34,6 +34,7 @@ from python_app.storage.npz.vna_history_json import ( # noqa: E402
|
||||
_normalize_channel,
|
||||
build_vna_history_payload,
|
||||
)
|
||||
from python_app.webui.controller import WebActionError # noqa: E402
|
||||
from python_app.webui.streaming import RingBroadcaster # noqa: E402
|
||||
|
||||
|
||||
@@ -178,21 +179,48 @@ class WebControllerTest(unittest.TestCase):
|
||||
self.assertEqual(self.controller.peek_frame(), {"seq": 1}) # keeps the last frame
|
||||
|
||||
def test_controls_emit_signals(self) -> None:
|
||||
# Controls are synchronous now: each emits a call the GUI slot must finalize.
|
||||
# In-thread, emit() runs the slot directly, so finalizing it returns at once.
|
||||
fired: list[str] = []
|
||||
self.controller.start_requested.connect(lambda: fired.append("start"))
|
||||
self.controller.stop_requested.connect(lambda: fired.append("stop"))
|
||||
self.controller.single_capture_requested.connect(lambda: fired.append("single"))
|
||||
self.controller.capture_requested.connect(lambda: fired.append("capture"))
|
||||
|
||||
def handler(label):
|
||||
def slot(call):
|
||||
fired.append(label)
|
||||
call.done.set()
|
||||
return slot
|
||||
|
||||
self.controller.start_requested.connect(handler("start"))
|
||||
self.controller.stop_requested.connect(handler("stop"))
|
||||
self.controller.single_capture_requested.connect(handler("single"))
|
||||
self.controller.capture_requested.connect(handler("capture"))
|
||||
self.controller.start()
|
||||
self.controller.stop()
|
||||
self.controller.single_capture()
|
||||
self.controller.capture_tmp_reference()
|
||||
self.assertEqual(fired, ["start", "stop", "single", "capture"])
|
||||
|
||||
def test_action_error_is_raised_to_the_caller(self) -> None:
|
||||
# An error the GUI slot records on the call surfaces as WebActionError (HTTP 400).
|
||||
self.controller.start_requested.connect(
|
||||
lambda call: (setattr(call, "error", "destination already exists"), call.done.set())
|
||||
)
|
||||
with self.assertRaisesRegex(WebActionError, "destination already exists"):
|
||||
self.controller.start()
|
||||
|
||||
def test_start_recording_forwards_path_name_count(self) -> None:
|
||||
received: list[tuple[str, str, int]] = []
|
||||
self.controller.start_recording_requested.connect(
|
||||
lambda p, n, c, call: (received.append((p, n, c)), call.done.set())
|
||||
)
|
||||
self.controller.start_recording("/tmp/out", "run1", 250)
|
||||
self.assertEqual(received, [("/tmp/out", "run1", 250)])
|
||||
|
||||
def test_lists_configs_sorted_and_load_emits_signal(self) -> None:
|
||||
self.assertEqual(self.controller.list_configs(), ["alpha.json", "beta.json"])
|
||||
requested: list[str] = []
|
||||
self.controller.load_config_requested.connect(requested.append)
|
||||
self.controller.load_config_requested.connect(
|
||||
lambda name, call: (requested.append(name), call.done.set())
|
||||
)
|
||||
self.controller.load_config("beta.json")
|
||||
self.assertEqual(requested, ["beta.json"])
|
||||
|
||||
@@ -204,7 +232,9 @@ class WebControllerTest(unittest.TestCase):
|
||||
|
||||
def test_save_dataset_forwards_path_and_name(self) -> None:
|
||||
received: list[tuple[str, str]] = []
|
||||
self.controller.save_dataset_requested.connect(lambda p, n: received.append((p, n)))
|
||||
self.controller.save_dataset_requested.connect(
|
||||
lambda p, n, call: (received.append((p, n)), call.done.set())
|
||||
)
|
||||
self.controller.save_dataset("/tmp/out", "run1")
|
||||
self.assertEqual(received, [("/tmp/out", "run1")])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user