feat: init
This commit is contained in:
178
test/controller/sub_controllers/test_waveform_popup.py
Normal file
178
test/controller/sub_controllers/test_waveform_popup.py
Normal file
@@ -0,0 +1,178 @@
|
||||
import pytest
|
||||
import random
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def waveform_popup_controller(dummy_view, dummy_controller):
|
||||
from navigate.controller.sub_controllers.waveform_popup import (
|
||||
WaveformPopupController,
|
||||
)
|
||||
from navigate.view.popups.waveform_parameter_popup_window import (
|
||||
WaveformParameterPopupWindow,
|
||||
)
|
||||
|
||||
waveform_constants_popup = WaveformParameterPopupWindow(
|
||||
dummy_view, dummy_controller.configuration_controller
|
||||
)
|
||||
|
||||
return WaveformPopupController(
|
||||
waveform_constants_popup,
|
||||
dummy_controller,
|
||||
dummy_controller.waveform_constants_path,
|
||||
)
|
||||
|
||||
|
||||
def test_populate_experiment_values(waveform_popup_controller):
|
||||
exp_dict = waveform_popup_controller.parent_controller.configuration["experiment"][
|
||||
"MicroscopeState"
|
||||
]
|
||||
resolution = exp_dict["microscope_name"]
|
||||
zoom = exp_dict["zoom"]
|
||||
waveform_constants = waveform_popup_controller.parent_controller.configuration[
|
||||
"waveform_constants"
|
||||
]
|
||||
widgets = waveform_popup_controller.view.get_widgets()
|
||||
|
||||
def assert_widget_values():
|
||||
resolution = exp_dict["microscope_name"]
|
||||
zoom = exp_dict["zoom"]
|
||||
assert widgets["Mode"].get() == resolution
|
||||
assert widgets["Mag"].get() == zoom
|
||||
|
||||
# remote focus
|
||||
remote_focus_dict = waveform_constants["remote_focus_constants"][resolution][
|
||||
zoom
|
||||
]
|
||||
for k in remote_focus_dict.keys():
|
||||
assert widgets[k + " Amp"].get() == remote_focus_dict[k]["amplitude"]
|
||||
assert widgets[k + " Off"].get() == remote_focus_dict[k]["offset"]
|
||||
|
||||
# galvo
|
||||
galvo_dict = waveform_constants["galvo_constants"]
|
||||
for g in galvo_dict.keys():
|
||||
if resolution in [galvo_dict[g].keys()]:
|
||||
galvo_info = galvo_dict[g][resolution][zoom]
|
||||
assert widgets[g + " Amp"].get() == galvo_info["amplitude"]
|
||||
assert widgets[g + " Off"].get() == galvo_info["offset"]
|
||||
|
||||
# delay, fly back time, settle duraation, smoothing
|
||||
assert widgets["Delay"].get() == str(
|
||||
waveform_constants["other_constants"]["remote_focus_delay"]
|
||||
)
|
||||
assert widgets["Ramp_falling"].get() == str(
|
||||
waveform_constants["other_constants"]["remote_focus_ramp_falling"]
|
||||
)
|
||||
assert widgets["Duty"].get() == str(
|
||||
waveform_constants["other_constants"]["remote_focus_settle_duration"]
|
||||
)
|
||||
assert widgets["Smoothing"].get() == str(
|
||||
waveform_constants["other_constants"]["percent_smoothing"]
|
||||
)
|
||||
|
||||
# default values
|
||||
waveform_popup_controller.populate_experiment_values()
|
||||
assert_widget_values()
|
||||
|
||||
# change resolution and/or zoom
|
||||
for microscope_name in waveform_constants["remote_focus_constants"].keys():
|
||||
for z in waveform_constants["remote_focus_constants"][microscope_name].keys():
|
||||
exp_dict["microscope_name"] = microscope_name
|
||||
exp_dict["zoom"] = z
|
||||
waveform_popup_controller.populate_experiment_values()
|
||||
assert_widget_values()
|
||||
|
||||
exp_dict["microscope_name"] = resolution
|
||||
exp_dict["zoom"] = zoom
|
||||
waveform_popup_controller.populate_experiment_values()
|
||||
assert_widget_values()
|
||||
|
||||
# update waveform_constants
|
||||
for k in waveform_constants["remote_focus_constants"][resolution][zoom].keys():
|
||||
amplitude = round(random.random() * 5, 2)
|
||||
offset = round(random.random() * 5, 2)
|
||||
temp = waveform_constants["remote_focus_constants"][resolution][zoom][k]
|
||||
temp["amplitude"] = amplitude
|
||||
temp["offset"] = offset
|
||||
|
||||
# update galvo
|
||||
for g in waveform_constants["galvo_constants"].keys():
|
||||
amplitude = round(random.random() * 5, 2)
|
||||
offset = round(random.random() * 5, 2)
|
||||
temp = waveform_constants["galvo_constants"][g][resolution][zoom]
|
||||
temp["amplitude"] = amplitude
|
||||
temp["offset"] = offset
|
||||
|
||||
for k in [
|
||||
"remote_focus_ramp_falling",
|
||||
"remote_focus_settle_duration",
|
||||
"percent_smoothing",
|
||||
"remote_focus_delay",
|
||||
]:
|
||||
waveform_constants["other_constants"][k] = round(random.random() * 100, 2)
|
||||
|
||||
waveform_popup_controller.populate_experiment_values(force_update=True)
|
||||
assert_widget_values()
|
||||
|
||||
|
||||
def test_show_laser_info(waveform_popup_controller):
|
||||
waveform_popup_controller.show_laser_info()
|
||||
assert True
|
||||
|
||||
|
||||
def test_configure_widget_range(waveform_popup_controller):
|
||||
waveform_popup_controller.configure_widget_range()
|
||||
assert True
|
||||
|
||||
|
||||
def test_estimate_galvo_setting_empty_string(waveform_popup_controller):
|
||||
"""Test if the function returns without calling the camera setting controller."""
|
||||
# Galvo name
|
||||
galvo_name = "galvo_0"
|
||||
|
||||
# Mocked camera setting controller
|
||||
waveform_popup_controller.parent_controller.camera_setting_controller = MagicMock()
|
||||
waveform_popup_controller.parent_controller.camera_setting_controller.mode_widgets[
|
||||
"Pixels"
|
||||
].get = MagicMock(return_value="")
|
||||
waveform_popup_controller.parent_controller.camera_setting_controller.framerate_widgets[
|
||||
"exposure_time"
|
||||
].get = MagicMock()
|
||||
|
||||
waveform_popup_controller.estimate_galvo_setting(galvo_name)
|
||||
waveform_popup_controller.parent_controller.camera_setting_controller.framerate_widgets[
|
||||
"exposure_time"
|
||||
].get.assert_not_called()
|
||||
|
||||
|
||||
def test_estimate_galvo_setting_with_string(waveform_popup_controller):
|
||||
"""Test if the function calls the camera setting controller."""
|
||||
# Galvo name
|
||||
galvo_name = "galvo_0"
|
||||
number_of_pixels = 50
|
||||
|
||||
# Mocked camera setting controller
|
||||
waveform_popup_controller.parent_controller.camera_setting_controller = MagicMock()
|
||||
waveform_popup_controller.parent_controller.camera_setting_controller.mode_widgets[
|
||||
"Pixels"
|
||||
].get = MagicMock(return_value=str(number_of_pixels))
|
||||
waveform_popup_controller.parent_controller.camera_setting_controller.framerate_widgets[
|
||||
"exposure_time"
|
||||
].get = MagicMock()
|
||||
|
||||
# Mocked model
|
||||
waveform_popup_controller.parent_controller.model = MagicMock()
|
||||
mock_model = waveform_popup_controller.parent_controller.model
|
||||
mock_model.get_camera_line_interval_and_exposure_time = MagicMock(
|
||||
return_value=(0.05, 50, 500)
|
||||
)
|
||||
|
||||
# Mocked view
|
||||
waveform_popup_controller.view = MagicMock()
|
||||
waveform_popup_controller.view.inputs[galvo_name].widget.set = MagicMock()
|
||||
|
||||
# Call the function
|
||||
waveform_popup_controller.estimate_galvo_setting(galvo_name)
|
||||
|
||||
# Check to see what the view was called with.
|
||||
waveform_popup_controller.view.inputs[galvo_name].widget.set.assert_called_once()
|
||||
Reference in New Issue
Block a user