11import pytest
22import 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
2526def 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):
103123def 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