Skip to content

Commit 5569fe8

Browse files
Update test_waveform_popup_controller.py
1 parent 9d0a314 commit 5569fe8

File tree

1 file changed

+83
-10
lines changed

1 file changed

+83
-10
lines changed

test/controller/sub_controllers/test_waveform_popup_controller.py

Lines changed: 83 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pytest
22
import random
3+
from unittest.mock import MagicMock
34

45

56
@pytest.fixture(scope="module")
@@ -23,10 +24,14 @@ def waveform_popup_controller(dummy_view, dummy_controller):
2324

2425

2526
def test_populate_experiment_values(waveform_popup_controller):
26-
exp_dict = waveform_popup_controller.parent_controller.configuration["experiment"]["MicroscopeState"]
27+
exp_dict = waveform_popup_controller.parent_controller.configuration["experiment"][
28+
"MicroscopeState"
29+
]
2730
resolution = exp_dict["microscope_name"]
2831
zoom = exp_dict["zoom"]
29-
waveform_constants = waveform_popup_controller.parent_controller.configuration["waveform_constants"]
32+
waveform_constants = waveform_popup_controller.parent_controller.configuration[
33+
"waveform_constants"
34+
]
3035
widgets = waveform_popup_controller.view.get_widgets()
3136

3237
def assert_widget_values():
@@ -36,7 +41,9 @@ def assert_widget_values():
3641
assert widgets["Mag"].get() == zoom
3742

3843
# remote focus
39-
remote_focus_dict = waveform_constants["remote_focus_constants"][resolution][zoom]
44+
remote_focus_dict = waveform_constants["remote_focus_constants"][resolution][
45+
zoom
46+
]
4047
for k in remote_focus_dict.keys():
4148
assert widgets[k + " Amp"].get() == remote_focus_dict[k]["amplitude"]
4249
assert widgets[k + " Off"].get() == remote_focus_dict[k]["offset"]
@@ -50,11 +57,19 @@ def assert_widget_values():
5057
assert widgets[g + " Off"].get() == galvo_info["offset"]
5158

5259
# delay, fly back time, settle duraation, smoothing
53-
assert widgets["Delay"].get() == str(waveform_constants["other_constants"]["remote_focus_delay"])
54-
assert widgets["Ramp_falling"].get() == str(waveform_constants["other_constants"]["remote_focus_ramp_falling"])
55-
assert widgets["Duty"].get() == str(waveform_constants["other_constants"]["remote_focus_settle_duration"])
56-
assert widgets["Smoothing"].get() == str(waveform_constants["other_constants"]["percent_smoothing"])
57-
60+
assert widgets["Delay"].get() == str(
61+
waveform_constants["other_constants"]["remote_focus_delay"]
62+
)
63+
assert widgets["Ramp_falling"].get() == str(
64+
waveform_constants["other_constants"]["remote_focus_ramp_falling"]
65+
)
66+
assert widgets["Duty"].get() == str(
67+
waveform_constants["other_constants"]["remote_focus_settle_duration"]
68+
)
69+
assert widgets["Smoothing"].get() == str(
70+
waveform_constants["other_constants"]["percent_smoothing"]
71+
)
72+
5873
# default values
5974
waveform_popup_controller.populate_experiment_values()
6075
assert_widget_values()
@@ -71,7 +86,7 @@ def assert_widget_values():
7186
exp_dict["zoom"] = zoom
7287
waveform_popup_controller.populate_experiment_values()
7388
assert_widget_values()
74-
89+
7590
# update waveform_constants
7691
for k in waveform_constants["remote_focus_constants"][resolution][zoom].keys():
7792
amplitude = round(random.random() * 5, 2)
@@ -88,7 +103,12 @@ def assert_widget_values():
88103
temp["amplitude"] = amplitude
89104
temp["offset"] = offset
90105

91-
for k in ["remote_focus_ramp_falling", "remote_focus_settle_duration", "percent_smoothing", "remote_focus_delay"]:
106+
for k in [
107+
"remote_focus_ramp_falling",
108+
"remote_focus_settle_duration",
109+
"percent_smoothing",
110+
"remote_focus_delay",
111+
]:
92112
waveform_constants["other_constants"][k] = round(random.random() * 100, 2)
93113

94114
waveform_popup_controller.populate_experiment_values(force_update=True)
@@ -103,3 +123,56 @@ def test_show_laser_info(waveform_popup_controller):
103123
def test_configure_widget_range(waveform_popup_controller):
104124
waveform_popup_controller.configure_widget_range()
105125
assert True
126+
127+
128+
def test_estimate_galvo_setting_empty_string(waveform_popup_controller):
129+
"""Test if the function returns without calling the camera setting controller."""
130+
# Galvo name
131+
galvo_name = "galvo_0"
132+
133+
# Mocked camera setting controller
134+
waveform_popup_controller.parent_controller.camera_setting_controller = MagicMock()
135+
waveform_popup_controller.parent_controller.camera_setting_controller.mode_widgets[
136+
"Pixels"
137+
].get = MagicMock(return_value="")
138+
waveform_popup_controller.parent_controller.camera_setting_controller.framerate_widgets[
139+
"exposure_time"
140+
].get = MagicMock()
141+
142+
waveform_popup_controller.estimate_galvo_setting(galvo_name)
143+
waveform_popup_controller.parent_controller.camera_setting_controller.framerate_widgets[
144+
"exposure_time"
145+
].get.assert_not_called()
146+
147+
148+
def test_estimate_galvo_setting_with_string(waveform_popup_controller):
149+
"""Test if the function calls the camera setting controller."""
150+
# Galvo name
151+
galvo_name = "galvo_0"
152+
number_of_pixels = 50
153+
154+
# Mocked camera setting controller
155+
waveform_popup_controller.parent_controller.camera_setting_controller = MagicMock()
156+
waveform_popup_controller.parent_controller.camera_setting_controller.mode_widgets[
157+
"Pixels"
158+
].get = MagicMock(return_value=str(number_of_pixels))
159+
waveform_popup_controller.parent_controller.camera_setting_controller.framerate_widgets[
160+
"exposure_time"
161+
].get = MagicMock()
162+
163+
# Mocked model
164+
waveform_popup_controller.parent_controller.model = MagicMock()
165+
mock_model = waveform_popup_controller.parent_controller.model
166+
mock_model.get_camera_line_interval_and_exposure_time = MagicMock(
167+
return_value=(0.05, 50, 500)
168+
)
169+
170+
# Mocked view
171+
waveform_popup_controller.view = MagicMock()
172+
waveform_popup_controller.view.inputs[galvo_name].widget.set = MagicMock()
173+
174+
# Call the function
175+
waveform_popup_controller.estimate_galvo_setting(galvo_name)
176+
177+
# Check to see what the view was called with.
178+
waveform_popup_controller.view.inputs[galvo_name].widget.set.assert_called_once()

0 commit comments

Comments
 (0)