61 lines
1.8 KiB
Python
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)
|