From d328a90533b8ecd8353f2a4c556851b03e8d1d59 Mon Sep 17 00:00:00 2001 From: Jakub Wlodek Date: Thu, 19 Sep 2024 16:37:13 -0400 Subject: [PATCH] Refactor ADPilatus tests to use the ad_standard_det_factory --- tests/epics/adpilatus/test_pilatus.py | 54 +++++++++++-------- .../adpilatus/test_pilatus_controller.py | 46 ---------------- 2 files changed, 31 insertions(+), 69 deletions(-) delete mode 100644 tests/epics/adpilatus/test_pilatus_controller.py diff --git a/tests/epics/adpilatus/test_pilatus.py b/tests/epics/adpilatus/test_pilatus.py index 7d6145f5a..b5c026ae9 100644 --- a/tests/epics/adpilatus/test_pilatus.py +++ b/tests/epics/adpilatus/test_pilatus.py @@ -3,37 +3,24 @@ from unittest.mock import patch import pytest -from bluesky.run_engine import RunEngine from ophyd_async.core import ( DetectorTrigger, - DeviceCollector, - PathProvider, TriggerInfo, set_mock_value, ) -from ophyd_async.epics import adpilatus +from ophyd_async.epics import adcore, adpilatus @pytest.fixture -async def test_adpilatus( - RE: RunEngine, - static_path_provider: PathProvider, -) -> adpilatus.PilatusDetector: - async with DeviceCollector(mock=True): - test_adpilatus = adpilatus.PilatusDetector("PILATUS:", static_path_provider) - - return test_adpilatus - - -async def test_deadtime_overridable(static_path_provider: PathProvider): - async with DeviceCollector(mock=True): - test_adpilatus = adpilatus.PilatusDetector( - "PILATUS:", - static_path_provider, - readout_time=adpilatus.PilatusReadoutTime.pilatus2, - ) - pilatus_controller = test_adpilatus.controller +def test_adpilatus(ad_standard_det_factory) -> adpilatus.PilatusDetector: + return ad_standard_det_factory(adpilatus.PilatusDetector) + + +async def test_deadtime_overridable(test_adpilatus: adpilatus.PilatusDetector): + pilatus_controller = test_adpilatus._controller + pilatus_controller._readout_time = adpilatus.PilatusReadoutTime.pilatus2 + # deadtime invariant with exposure time assert pilatus_controller.get_deadtime(0) == 2.28e-3 @@ -110,7 +97,7 @@ async def _trigger( async def test_hints_from_hdf_writer(test_adpilatus: adpilatus.PilatusDetector): - assert test_adpilatus.hints == {"fields": ["test_adpilatus"]} + assert test_adpilatus.hints == {"fields": ["test_adpilatus1"]} async def test_unsupported_trigger_excepts(test_adpilatus: adpilatus.PilatusDetector): @@ -144,3 +131,24 @@ async def dummy_open(multiplier: int = 0): ) assert (await test_adpilatus.drv.acquire_time.get_value()) == 1.0 assert (await test_adpilatus.drv.acquire_period.get_value()) == 1.0 + 950e-6 + + +async def test_pilatus_controller(test_adpilatus: adpilatus.PilatusDetector): + pilatus = test_adpilatus._controller + pilatus_driver = pilatus._drv + set_mock_value(pilatus_driver.armed, True) + await pilatus.prepare(TriggerInfo(number=1, trigger=DetectorTrigger.constant_gate)) + await pilatus.arm() + await pilatus.wait_for_idle() + + assert await pilatus_driver.num_images.get_value() == 1 + assert await pilatus_driver.image_mode.get_value() == adcore.ImageMode.multiple + assert ( + await pilatus_driver.trigger_mode.get_value() + == adpilatus.PilatusTriggerMode.ext_enable + ) + assert await pilatus_driver.acquire.get_value() is True + + await pilatus.disarm() + + assert await pilatus_driver.acquire.get_value() is False diff --git a/tests/epics/adpilatus/test_pilatus_controller.py b/tests/epics/adpilatus/test_pilatus_controller.py deleted file mode 100644 index bb825b874..000000000 --- a/tests/epics/adpilatus/test_pilatus_controller.py +++ /dev/null @@ -1,46 +0,0 @@ -import pytest - -from ophyd_async.core import DetectorTrigger, DeviceCollector, set_mock_value -from ophyd_async.core._detector import TriggerInfo -from ophyd_async.epics import adcore, adpilatus - - -@pytest.fixture -async def pilatus_driver(RE) -> adpilatus.PilatusDriverIO: - async with DeviceCollector(mock=True): - drv = adpilatus.PilatusDriverIO("DRIVER:") - - return drv - - -@pytest.fixture -async def pilatus( - RE, pilatus_driver: adpilatus.PilatusDriverIO -) -> adpilatus.PilatusController: - async with DeviceCollector(mock=True): - controller = adpilatus.PilatusController(pilatus_driver, readout_time=2.28) - - return controller - - -async def test_pilatus_controller( - RE, - pilatus: adpilatus.PilatusController, - pilatus_driver: adpilatus.PilatusDriverIO, -): - set_mock_value(pilatus_driver.armed, True) - await pilatus.prepare(TriggerInfo(number=1, trigger=DetectorTrigger.constant_gate)) - await pilatus.arm() - await pilatus.wait_for_idle() - - assert await pilatus_driver.num_images.get_value() == 1 - assert await pilatus_driver.image_mode.get_value() == adcore.ImageMode.multiple - assert ( - await pilatus_driver.trigger_mode.get_value() - == adpilatus.PilatusTriggerMode.ext_enable - ) - assert await pilatus_driver.acquire.get_value() is True - - await pilatus.disarm() - - assert await pilatus_driver.acquire.get_value() is False