Esempio n. 1
0
 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'
Esempio n. 2
0
 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)]
Esempio n. 3
0
 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]
Esempio n. 4
0
 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]
Esempio n. 5
0
 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