63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
from unittest import mock
|
|
|
|
import numpy as np
|
|
import pytest
|
|
from bec_lib import messages
|
|
|
|
from csaxs_bec.scans.owis_grid import OwisGrid
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"scan_msg",
|
|
[
|
|
messages.ScanQueueMessage(
|
|
scan_type="owis_grid",
|
|
parameter={
|
|
"args": {
|
|
"start_y": 0,
|
|
"end_y": 1,
|
|
"interval_y": 10,
|
|
"start_x": 0,
|
|
"end_x": 1,
|
|
"interval_x": 5,
|
|
},
|
|
"kwargs": {"exp_time": 0.1, "readout_time": 3e-3},
|
|
},
|
|
queue="primary",
|
|
metadata={"RID": "1234"},
|
|
)
|
|
],
|
|
)
|
|
def test_owis_grid(scan_msg):
|
|
dm = mock.MagicMock()
|
|
request = OwisGrid(*scan_msg.content["parameter"]["args"].values(), device_manager=dm)
|
|
request.high_velocity = 10
|
|
request.high_acc_time = 0.2
|
|
request.base_velocity = 0.0625
|
|
# pylint: disable=protected-access
|
|
request.stubs._get_from_rpc = lambda x: mock.MagicMock()
|
|
with (
|
|
mock.patch.object(request.stubs, "get_req_status", return_value=1),
|
|
mock.patch.object(
|
|
request, "get_initial_motor_properties"
|
|
) as mock_get_init_motor_properties,
|
|
):
|
|
scan_instructions = list(request.run())
|
|
mock_get_init_motor_properties.assert_called_once()
|
|
assert request.point_id == scan_msg.content["parameter"]["args"]["interval_x"]
|
|
assert np.isclose(
|
|
request.target_velocity,
|
|
(
|
|
(
|
|
scan_msg.content["parameter"]["args"]["end_y"]
|
|
- scan_msg.content["parameter"]["args"]["start_y"]
|
|
)
|
|
/ scan_msg.content["parameter"]["args"]["interval_y"]
|
|
)
|
|
/ (
|
|
scan_msg.content["parameter"]["kwargs"]["exp_time"]
|
|
+ scan_msg.content["parameter"]["kwargs"]["readout_time"]
|
|
),
|
|
rtol=1e-2,
|
|
)
|