61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
from unittest import mock
|
|
|
|
import pytest
|
|
from utils import SocketMock
|
|
|
|
from ophyd_devices.galil.fupr_ophyd import FuprGalilController, FuprGalilMotor
|
|
|
|
|
|
@pytest.fixture
|
|
def fsamroy():
|
|
FuprGalilController._reset_controller()
|
|
fsamroy_motor = FuprGalilMotor(
|
|
"A", name="fsamroy", host="mpc2680.psi.ch", port=8081, socket_cls=SocketMock
|
|
)
|
|
fsamroy_motor.controller.on()
|
|
assert isinstance(fsamroy_motor.controller, FuprGalilController)
|
|
yield fsamroy_motor
|
|
fsamroy_motor.controller.off()
|
|
fsamroy_motor.controller._reset_controller()
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"pos,msg_received,msg_put,sign",
|
|
[
|
|
(-0.5, b" -12800\n\r", [b"TPA\r", b"MG_BGA\r", b"TPA\r"], 1),
|
|
(-0.5, b" 12800\n\r", [b"TPA\r", b"MG_BGA\r", b"TPA\r"], -1),
|
|
],
|
|
)
|
|
def test_axis_get(fsamroy, pos, msg_received, msg_put, sign):
|
|
fsamroy.sign = sign
|
|
fsamroy.device_manager = mock.MagicMock()
|
|
fsamroy.controller.sock.flush_buffer()
|
|
fsamroy.controller.sock.buffer_recv = msg_received
|
|
val = fsamroy.read()
|
|
assert val["fsamroy"]["value"] == pos
|
|
assert fsamroy.readback.get() == pos
|
|
assert fsamroy.controller.sock.buffer_put == msg_put
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"target_pos,socket_put_messages,socket_get_messages",
|
|
[
|
|
(
|
|
0,
|
|
[b"MG axisref\r", b"PAA=0\r", b"PAA=0\r", b"BGA\r"],
|
|
[b"1.00", b"-1", b":", b":", b":", b":", b"-1"],
|
|
)
|
|
],
|
|
)
|
|
def test_axis_put(fsamroy, target_pos, socket_put_messages, socket_get_messages):
|
|
fsamroy.controller.sock.flush_buffer()
|
|
fsamroy.controller.sock.buffer_recv = socket_get_messages
|
|
fsamroy.user_setpoint.put(target_pos)
|
|
assert fsamroy.controller.sock.buffer_put == socket_put_messages
|
|
|
|
|
|
def test_drive_axis_to_limit(fsamroy):
|
|
fsamroy.controller.sock.flush_buffer()
|
|
with pytest.raises(NotImplementedError):
|
|
fsamroy.controller.drive_axis_to_limit(0, "forward")
|