mirror of
https://github.com/bec-project/bec_widgets.git
synced 2026-05-13 01:55:46 +02:00
107 lines
3.4 KiB
Python
107 lines
3.4 KiB
Python
from unittest import mock
|
|
|
|
from bec_lib.device import ReadoutPriority
|
|
|
|
from bec_widgets.widgets.control.device_input.device_combobox.device_combobox import (
|
|
BECDeviceFilter,
|
|
DeviceComboBox,
|
|
DeviceInputConfig,
|
|
)
|
|
|
|
from .client_mocks import mocked_client
|
|
from .conftest import create_widget
|
|
|
|
|
|
def test_device_combobox_init_with_config(qtbot, mocked_client):
|
|
config = {
|
|
"widget_class": "DeviceComboBox",
|
|
"gui_id": "test_gui_id",
|
|
"device_filter": [BECDeviceFilter.POSITIONER.value],
|
|
"default": "samx",
|
|
}
|
|
widget = create_widget(
|
|
qtbot=qtbot,
|
|
widget=DeviceComboBox,
|
|
client=mocked_client,
|
|
config=DeviceInputConfig.model_validate(config),
|
|
)
|
|
|
|
assert widget.config.gui_id == "test_gui_id"
|
|
assert widget.config.device_filter == ["Positioner"]
|
|
assert widget.config.default == "samx"
|
|
|
|
|
|
def test_device_combobox_set_device_filter(qtbot, mocked_client):
|
|
widget = create_widget(qtbot=qtbot, widget=DeviceComboBox, client=mocked_client)
|
|
|
|
widget.set_device_filter(BECDeviceFilter.POSITIONER)
|
|
|
|
assert widget.config.device_filter == ["Positioner"]
|
|
|
|
|
|
def test_device_combobox_set_device_filter_error(qtbot, mocked_client):
|
|
widget = create_widget(qtbot=qtbot, widget=DeviceComboBox, client=mocked_client)
|
|
|
|
widget.set_device_filter("NonExistingClass")
|
|
|
|
assert widget.device_filter == []
|
|
|
|
|
|
def test_device_combobox_set_default_device(qtbot, mocked_client):
|
|
widget = create_widget(qtbot=qtbot, widget=DeviceComboBox, client=mocked_client)
|
|
|
|
widget.set_device("samx")
|
|
|
|
assert widget.config.default == "samx"
|
|
|
|
|
|
def test_device_combobox_get_filters(qtbot, mocked_client):
|
|
widget = create_widget(qtbot=qtbot, widget=DeviceComboBox, client=mocked_client)
|
|
|
|
assert BECDeviceFilter.POSITIONER in widget.get_available_filters()
|
|
assert ReadoutPriority.MONITORED in widget.get_readout_priority_filters()
|
|
|
|
|
|
def test_device_combobox_properties(qtbot, mocked_client):
|
|
widget = create_widget(qtbot=qtbot, widget=DeviceComboBox, client=mocked_client)
|
|
|
|
widget.filter_to_device = True
|
|
widget.filter_to_positioner = True
|
|
widget.filter_to_computed_signal = True
|
|
widget.filter_to_signal = True
|
|
assert widget.device_filter == [
|
|
BECDeviceFilter.DEVICE,
|
|
BECDeviceFilter.POSITIONER,
|
|
BECDeviceFilter.COMPUTED_SIGNAL,
|
|
BECDeviceFilter.SIGNAL,
|
|
]
|
|
|
|
widget.readout_async = True
|
|
widget.readout_baseline = True
|
|
widget.readout_monitored = True
|
|
widget.readout_on_request = True
|
|
assert ReadoutPriority.ASYNC in widget.readout_filter
|
|
assert ReadoutPriority.BASELINE in widget.readout_filter
|
|
assert ReadoutPriority.MONITORED in widget.readout_filter
|
|
assert ReadoutPriority.ON_REQUEST in widget.readout_filter
|
|
|
|
|
|
def test_device_combobox_signal_class_filter(qtbot, mocked_client):
|
|
mocked_client.device_manager.get_bec_signals = mock.MagicMock(
|
|
return_value=[
|
|
("samx", "async_signal", {"signal_class": "AsyncSignal"}),
|
|
("samy", "async_signal", {"signal_class": "AsyncSignal"}),
|
|
("bpm4i", "async_signal", {"signal_class": "AsyncSignal"}),
|
|
]
|
|
)
|
|
widget = create_widget(
|
|
qtbot=qtbot,
|
|
widget=DeviceComboBox,
|
|
client=mocked_client,
|
|
signal_class_filter=["AsyncSignal"],
|
|
)
|
|
|
|
devices = [widget.itemText(i) for i in range(widget.count())]
|
|
assert set(devices) == {"samx", "samy", "bpm4i"}
|
|
assert widget.signal_class_filter == ["AsyncSignal"]
|