mirror of
https://github.com/bec-project/ophyd_devices.git
synced 2025-06-23 11:27:57 +02:00
fix: cleanup, add test for ddg base class
This commit is contained in:
75
tests/test_delay_generator.py
Normal file
75
tests/test_delay_generator.py
Normal file
@ -0,0 +1,75 @@
|
||||
import threading
|
||||
from unittest import mock
|
||||
|
||||
import ophyd
|
||||
import pytest
|
||||
|
||||
from ophyd_devices.devices.delay_generator_645 import (
|
||||
DelayGenerator,
|
||||
DelayGeneratorError,
|
||||
TriggerSource,
|
||||
)
|
||||
from ophyd_devices.tests.utils import (
|
||||
MockPV,
|
||||
patch_dual_pvs,
|
||||
patch_functions_required_for_connection,
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def mock_ddg():
|
||||
name = "ddg"
|
||||
prefix = "X12SA-CPCL-DDG3:"
|
||||
with mock.patch.object(ophyd, "cl") as mock_cl:
|
||||
mock_cl.get_pv = MockPV
|
||||
mock_cl.thread_class = threading.Thread
|
||||
ddg = DelayGenerator(name=name, prefix=prefix)
|
||||
patch_functions_required_for_connection(ddg)
|
||||
patch_dual_pvs(ddg)
|
||||
yield ddg
|
||||
|
||||
|
||||
def test_ddg_init(mock_ddg):
|
||||
"""This test the initialization of the DelayGenerator"""
|
||||
assert mock_ddg.name == "ddg"
|
||||
assert mock_ddg.prefix == "X12SA-CPCL-DDG3:"
|
||||
|
||||
|
||||
def test_set_trigger(mock_ddg):
|
||||
"""This test the set_trigger method of the DelayGenerator"""
|
||||
mock_ddg.set_trigger(TriggerSource.SINGLE_SHOT)
|
||||
assert mock_ddg.source.get() == 5
|
||||
mock_ddg.set_trigger(TriggerSource.INTERNAL)
|
||||
assert mock_ddg.source.get() == 0
|
||||
|
||||
|
||||
def test_burst_enable(mock_ddg):
|
||||
"""This test the burst_enable method of the DelayGenerator"""
|
||||
count = 10
|
||||
delay = 0.1
|
||||
period = 0.2
|
||||
|
||||
mock_ddg.burst_enable(count=count, delay=delay, period=period)
|
||||
assert mock_ddg.burstMode.get() == 1
|
||||
assert mock_ddg.burstCount.get() == count
|
||||
assert mock_ddg.burstDelay.get() == delay
|
||||
assert mock_ddg.burstPeriod.get() == period
|
||||
assert mock_ddg.burstConfig.get() == 0
|
||||
with pytest.raises(DelayGeneratorError):
|
||||
delay = -1
|
||||
mock_ddg.burst_enable(count=count, delay=delay, period=period)
|
||||
with pytest.raises(DelayGeneratorError):
|
||||
delay = 0
|
||||
period = 0
|
||||
mock_ddg.burst_enable(count=count, delay=delay, period=period)
|
||||
|
||||
|
||||
def test_check_if_ddg_okay(mock_ddg):
|
||||
"""This test the is_ddg_okay method of the DelayGenerator"""
|
||||
# Test for when the status is okay
|
||||
mock_ddg.status._read_pv.mock_data = "STATUS OK"
|
||||
assert mock_ddg.check_if_ddg_okay() is None
|
||||
# Test for when the status is not okay
|
||||
mock_ddg.status._read_pv.mock_data = "STATUS NOT OK"
|
||||
with pytest.raises(DelayGeneratorError):
|
||||
mock_ddg.check_if_ddg_okay()
|
Reference in New Issue
Block a user