def test_instrument_default_ack_expected(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) assert inst._ack_expected() is None assert inst._ack_expected("foobar") is None
def test_instrument_write(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) inst.write("foobar") inst._file.write.assert_called_with("foobar")
def test_instrument_query(): """ Expected order of operations: - IK sends command to instrument - Instrument sends ACK, commonly an echo of the command - ACK is verified with _ack_expected function - If ACK is good, do another read which contains our return data - Another read is done to capture the prompt characters sent by the instrument. Read should be equal to the length of the expected prompt - Exception is raised is prompt is not correct """ mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) inst._file.query.return_value = "foobar?" inst.read = mock.MagicMock(side_effect=["foobar?", "datas", "> "]) def new_ack(msg): return msg inst._ack_expected = new_ack inst.prompt = "> " assert inst.query("foobar?") == "datas" inst.read.assert_any_call(-1) inst.read.assert_any_call(2) inst._file.query.assert_called_with("foobar?", size=0) assert inst.read.call_count == 3
def test_instrument_sendcmd_noack_noprompt(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) inst.sendcmd("foobar") inst._file.sendcmd.assert_called_with("foobar")
def test_instrument_query_noack_noprompt(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) inst._file.query.return_value = "datas" assert inst.query("foobar?") == "datas" inst._file.query.assert_called_with("foobar?", -1)
def test_instrument_init(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) assert inst._testing is False assert inst._prompt is None assert inst._terminator == "\n" assert inst._file == mock_filelike
def test_instrument_sendcmd_noack_bad_prompt(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) inst.prompt = "> " inst.read = mock.MagicMock(return_value="* ") inst.sendcmd("foobar")
def test_instrument_query_noack_bad_prompt(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) inst._file.query.return_value = "datas" inst.prompt = "> " inst.read = mock.MagicMock(return_value="* ") _ = inst.query("foobar?")
def test_instrument_sendcmd_noack(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) inst.prompt = "> " inst.read = mock.MagicMock(return_value="> ") inst.sendcmd("foobar") inst.read.assert_called_with(2) inst._file.sendcmd.assert_called_with("foobar")
def test_instrument_query_bad_ack(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) inst.read = mock.MagicMock(return_value="derp") def new_ack(msg): return msg inst._ack_expected = new_ack _ = inst.query("foobar?")
def test_instrument_prompt(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) assert inst.prompt is None inst.prompt = "> " assert inst.prompt == "> " inst.prompt = None assert inst.prompt is None
def test_instrument_terminator(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) terminator = mock.PropertyMock(return_value="\n") type(inst._file).terminator = terminator assert inst.terminator == "\n" terminator.assert_called_with() inst.terminator = "*" terminator.assert_called_with("*")
def test_instrument_timeout(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) timeout = mock.PropertyMock(return_value=1) type(inst._file).timeout = timeout assert inst.timeout == 1 timeout.assert_called_with() inst.timeout = 5 timeout.assert_called_with(5)
def test_instrument_address(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) address = mock.PropertyMock(return_value="/dev/foobar") type(inst._file).address = address assert inst.address == "/dev/foobar" address.assert_called_with() inst.address = "COM1" address.assert_called_with("COM1")
def test_instrument_sendcmd_bad_ack(): with pytest.raises(AcknowledgementError): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) def new_ack(msg): return msg inst._ack_expected = new_ack inst.read = mock.MagicMock(return_value="derp") inst.sendcmd("foobar")
def test_instrument_read(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) inst._file.read.return_value = "foobar" assert inst.read() == "foobar" inst._file.read.assert_called_with(-1, 'utf-8') inst._file = mock.MagicMock() inst._file.read.return_value = "foobar" assert inst.read(6) == "foobar" inst._file.read.assert_called_with(6, 'utf-8')
def test_instrument_sendcmd_noprompt(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) def new_ack(msg): return msg inst._ack_expected = new_ack inst.read = mock.MagicMock(return_value="foobar") inst.sendcmd("foobar") inst.read.assert_called_with() inst._file.sendcmd.assert_called_with("foobar")
def test_instrument_sendcmd_noprompt_multiple_ack(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) def new_ack(msg): return [msg, "second ack"] inst._ack_expected = new_ack inst.read = mock.MagicMock(side_effect=["foobar", "second ack"]) inst.sendcmd("foobar") inst.read.assert_called_with() inst._file.sendcmd.assert_called_with("foobar")
def test_instrument_sendcmd(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) def new_ack(msg): return msg inst._ack_expected = new_ack inst.prompt = "> " inst.read = mock.MagicMock(side_effect=["foobar", "> "]) inst.sendcmd("foobar") inst.read.assert_any_call() inst.read.assert_any_call(2) inst._file.sendcmd.assert_called_with("foobar") assert inst.read.call_count == 2
def test_instrument_query_noack(): """ Expected order of operations: - IK sends command to instrument and gets responce containing our data - Another read is done to capture the prompt characters sent by the instrument. Read should be equal to the length of the expected prompt - Exception is raised is prompt is not correct """ mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) inst._file.query.return_value = "datas" inst.prompt = "> " inst.read = mock.MagicMock(return_value="> ") assert inst.query("foobar?") == "datas" inst._file.query.assert_called_with("foobar?", -1) inst.read.assert_called_with(2)
def test_instrument_query_noprompt(): """ Expected order of operations: - IK sends command to instrument - Instrument sends ACK, commonly an echo of the command - ACK is verified with _ack_expected function - If ACK is good, do another read which contains our return data """ mock_filelike = mock.MagicMock() mock_filelike.__class__ = AbstractCommunicator inst = ik.Instrument(mock_filelike) inst.read = mock.MagicMock(side_effect=["foobar?", "datas"]) def new_ack(msg): return msg inst._ack_expected = new_ack assert inst.query("foobar?") == "datas" inst._file.query.assert_called_with("foobar?", size=0) inst.read.assert_called_with(-1)
def test_instrument_init_bad_filelike(): _ = ik.Instrument(mock.MagicMock())
def test_instrument_init_bad_filelike(): with pytest.raises(TypeError): _ = ik.Instrument(mock.MagicMock())
def test_instrument_init_loopbackcomm(): mock_filelike = mock.MagicMock() mock_filelike.__class__ = LoopbackCommunicator inst = ik.Instrument(mock_filelike) assert inst._testing is True