def test_query_with_write_only_cmd(self): protocol = MockProtocol() transport = MockTransport() cmd = Command(write='HEADER') with pytest.raises(AttributeError) as excinfo: cmd.query(transport, protocol) assert str(excinfo.value) == 'Command is not queryable'
def test_simulation_with_query_and_writeable_cmd(self): protocol = MockProtocol() transport = SimulatedTransport() cmd = Command('HEADER?', 'HEADER', Integer) response = cmd.query(transport, protocol) assert isinstance(response, int) assert cmd._simulation_buffer == [Integer().dump(response)]
def test_query_with_generator_type(self): protocol = MockProtocol(response=['1', '2', '3']) transport = MockTransport() cmd = Command(query=('HEADER', it.repeat(Integer()))) response = cmd.query(transport, protocol) assert protocol.transport == transport assert protocol.header == 'HEADER' assert protocol.data == () assert response == [1, 2, 3]
def test_query_without_message_data_and_multi_data_response(self): protocol = MockProtocol(response=['1', '2']) transport = MockTransport() cmd = Command(query=('HEADER', [Integer, Integer])) response = cmd.query(transport, protocol) assert protocol.transport == transport assert protocol.header == 'HEADER' assert protocol.data == () assert response == [1, 2]
def test_simulation_with_query_only_cmd(self): protocol = MockProtocol() transport = SimulatedTransport() cmd = Command(query=('HEADER', [Integer, Integer])) response = cmd.query(transport, protocol) assert len(response) == 2 for item in response: assert isinstance(item, int) # query only should not buffer simulated response with pytest.raises(AttributeError): cmd._simulation_buffer