0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-13 19:21:50 +02:00
Files
bec_widgets/tests/unit_tests/test_scan_control_group_box.py

160 lines
5.4 KiB
Python

# pylint: disable = no-name-in-module,missing-class-docstring, missing-module-docstring
from bec_widgets.utils.widget_io import WidgetIO
from bec_widgets.widgets.control.scan_control.scan_group_box import ScanGroupBox
def test_kwarg_box(qtbot):
group_input = {
"name": "Kwarg Test",
"inputs": [
# Test float
{
"arg": False,
"name": "exp_time",
"type": "float",
"display_name": "Exp Time",
"tooltip": "Exposure time in seconds",
"default": 0,
"expert": False,
},
# Test int
{
"arg": False,
"name": "num_points",
"type": "int",
"display_name": "Num Points",
"tooltip": "Number of points",
"default": 1,
"expert": False,
},
# Test bool
{
"arg": False,
"name": "relative",
"type": "bool",
"display_name": "Relative",
"tooltip": "If True, the motors will be moved relative to their current position",
"default": False,
"expert": False,
},
# Test str
{
"arg": False,
"name": "scan_type",
"type": "str",
"display_name": "Scan Type",
"tooltip": "Type of scan",
"default": "line",
"expert": False,
},
],
}
kwarg_box = ScanGroupBox(box_type="kwargs", config=group_input)
assert kwarg_box is not None
assert kwarg_box.box_type == "kwargs"
assert kwarg_box.config == group_input
assert kwarg_box.title() == "Kwarg Test"
# Labels
assert kwarg_box.layout.itemAtPosition(0, 0).widget().text() == "Exp Time"
assert kwarg_box.layout.itemAtPosition(0, 1).widget().text() == "Num Points"
assert kwarg_box.layout.itemAtPosition(0, 2).widget().text() == "Relative"
assert kwarg_box.layout.itemAtPosition(0, 3).widget().text() == "Scan Type"
# Widget 0
assert kwarg_box.widgets[0].__class__.__name__ == "ScanDoubleSpinBox"
assert kwarg_box.widgets[0].arg_name == "exp_time"
assert WidgetIO.get_value(kwarg_box.widgets[0]) == 0
assert kwarg_box.widgets[0].toolTip() == "Exposure time in seconds"
# Widget 1
assert kwarg_box.widgets[1].__class__.__name__ == "ScanSpinBox"
assert kwarg_box.widgets[1].arg_name == "num_points"
assert WidgetIO.get_value(kwarg_box.widgets[1]) == 1
assert kwarg_box.widgets[1].toolTip() == "Number of points"
# Widget 2
assert kwarg_box.widgets[2].__class__.__name__ == "ScanCheckBox"
assert kwarg_box.widgets[2].arg_name == "relative"
assert WidgetIO.get_value(kwarg_box.widgets[2]) == False
assert (
kwarg_box.widgets[2].toolTip()
== "If True, the motors will be moved relative to their current position"
)
# Widget 3
assert kwarg_box.widgets[3].__class__.__name__ == "ScanLineEdit"
assert kwarg_box.widgets[3].arg_name == "scan_type"
assert WidgetIO.get_value(kwarg_box.widgets[3]) == "line"
assert kwarg_box.widgets[3].toolTip() == "Type of scan"
parameters = kwarg_box.get_parameters()
assert parameters == {"exp_time": 0, "num_points": 1, "relative": False, "scan_type": "line"}
def test_arg_box(qtbot):
group_input = {
"name": "Arg Test",
"inputs": [
# Test device
{
"arg": True,
"name": "device",
"type": "str",
"display_name": "Device",
"tooltip": "Device to scan",
"default": "samx",
"expert": False,
},
# Test float
{
"arg": True,
"name": "start",
"type": "float",
"display_name": "Start",
"tooltip": "Start position",
"default": 0,
"expert": False,
},
# Test int
{
"arg": True,
"name": "stop",
"type": "int",
"display_name": "Stop",
"tooltip": "Stop position",
"default": 1,
"expert": False,
},
],
}
arg_box = ScanGroupBox(box_type="args", config=group_input)
assert arg_box is not None
assert arg_box.box_type == "args"
assert arg_box.config == group_input
assert arg_box.title() == "Arg Test"
# Labels
assert arg_box.layout.itemAtPosition(0, 0).widget().text() == "Device"
assert arg_box.layout.itemAtPosition(0, 1).widget().text() == "Start"
assert arg_box.layout.itemAtPosition(0, 2).widget().text() == "Stop"
# Widget 0
assert arg_box.widgets[0].__class__.__name__ == "ScanLineEdit"
assert arg_box.widgets[0].arg_name == "device"
assert WidgetIO.get_value(arg_box.widgets[0]) == "samx"
assert arg_box.widgets[0].toolTip() == "Device to scan"
# Widget 1
assert arg_box.widgets[1].__class__.__name__ == "ScanDoubleSpinBox"
assert arg_box.widgets[1].arg_name == "start"
assert WidgetIO.get_value(arg_box.widgets[1]) == 0
assert arg_box.widgets[1].toolTip() == "Start position"
# Widget 2
assert arg_box.widgets[2].__class__.__name__ == "ScanSpinBox"
assert arg_box.widgets[2].arg_name