Files
AareDAQ/tests/unit/devices/test_experimental_hutch_shutter.py

61 lines
1.8 KiB
Python

from unittest.mock import MagicMock, patch
from aarecommon.models.beamline import MXBeamline
from aare.devices.experimental_hutch_shutter import ExperimentalHutchShutter
@patch("aare.devices.experimental_hutch_shutter.PV")
def test_shutter_init(mock_pv):
ExperimentalHutchShutter(MXBeamline.X06DA)
assert mock_pv.call_count == 3
# Check if PV names are correct
args = [call.args[0] for call in mock_pv.call_args_list]
assert "X06DA-EH1-PSYS:SH-A-CLOSE-SET" in args
assert "X06DA-EH1-PSYS:SH-A-OPEN-SET" in args
assert "X06DA-OP-PSH1-EMLS-0010:OPEN" in args
@patch("aare.devices.experimental_hutch_shutter.PV")
def test_shutter_state(mock_pv):
# Mocking self._state
mock_state_pv = MagicMock()
mock_pv.side_effect = [MagicMock(), MagicMock(), mock_state_pv]
shutter = ExperimentalHutchShutter(MXBeamline.X06DA)
mock_state_pv.get.return_value = "Open"
assert shutter.state() is True
mock_state_pv.get.return_value = 1
assert shutter.state() is True
mock_state_pv.get.return_value = "Not Open"
assert shutter.state() is False
mock_state_pv.get.return_value = 0
assert shutter.state() is False
mock_state_pv.get.return_value = "Unknown"
assert shutter.state() is False
@patch("aare.devices.experimental_hutch_shutter.PV")
def test_shutter_open_close(mock_pv):
mock_close = MagicMock()
mock_open = MagicMock()
mock_state = MagicMock()
mock_pv.side_effect = [mock_close, mock_open, mock_state]
shutter = ExperimentalHutchShutter(MXBeamline.X06DA)
shutter.open()
assert mock_open.put.call_count == 3
mock_open.put.assert_any_call(0)
mock_open.put.assert_any_call(1)
shutter.close()
assert mock_close.put.call_count == 2
mock_close.put.assert_any_call(1)
mock_close.put.assert_any_call(0)