mirror of
https://github.com/bec-project/ophyd_devices.git
synced 2025-06-23 11:27:57 +02:00
refactor(psi_device_base): add method to wait for a condition to PSIDeviceBase
This commit is contained in:
49
tests/test_psi_device_base.py
Normal file
49
tests/test_psi_device_base.py
Normal file
@ -0,0 +1,49 @@
|
||||
import pytest
|
||||
|
||||
from ophyd_devices.interfaces.base_classes.psi_device_base import DeviceStoppedError, PSIDeviceBase
|
||||
from ophyd_devices.sim.sim_positioner import SimPositioner
|
||||
|
||||
|
||||
class SimPositionerDevice(PSIDeviceBase, SimPositioner):
|
||||
"""Simulated Positioner Device with PSI Device Base"""
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def device():
|
||||
"""Fixture for Device"""
|
||||
yield SimPositionerDevice(name="device")
|
||||
|
||||
|
||||
def test_psi_device_base_wait_for_signals(device):
|
||||
"""Test wait_for_signals method"""
|
||||
device.motor_is_moving.set(1).wait()
|
||||
|
||||
def check_motor_is_moving():
|
||||
return device.motor_is_moving.get() == 0
|
||||
|
||||
# Timeout
|
||||
assert device.wait_for_condition(check_motor_is_moving, timeout=0.2) is False
|
||||
|
||||
# Stopped
|
||||
device._stopped = True
|
||||
with pytest.raises(DeviceStoppedError):
|
||||
device.wait_for_condition(check_motor_is_moving, timeout=1, check_stopped=True)
|
||||
|
||||
# Success
|
||||
device._stopped = False
|
||||
device.motor_is_moving.set(0).wait()
|
||||
assert device.wait_for_condition(check_motor_is_moving, timeout=1, check_stopped=True) is True
|
||||
|
||||
device.velocity.set(10).wait()
|
||||
|
||||
def check_both_conditions():
|
||||
return device.motor_is_moving.get() == 0 and device.velocity.get() == 10
|
||||
|
||||
# All signals True, default
|
||||
assert device.wait_for_condition(check_both_conditions, timeout=1) is True
|
||||
|
||||
def check_any_conditions():
|
||||
return device.motor_is_moving.get() == 0 or device.velocity.get() == 10
|
||||
|
||||
# Any signal is True
|
||||
assert device.wait_for_condition(check_any_conditions, timeout=1) is True
|
Reference in New Issue
Block a user