Skip to content

Commit

Permalink
Add test for udp driver send_rsp_recv_cmd method
Browse files Browse the repository at this point in the history
  • Loading branch information
nehpetsde committed May 10, 2017
1 parent 5e543e1 commit 29d72c0
Showing 1 changed file with 57 additions and 0 deletions.
57 changes: 57 additions & 0 deletions tests/test_clf_udp.py
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,7 @@ def test_listen_tta_tt2_uid4_activated(self, device):
assert target.brty == '106A'
assert target.tt2_cmd == HEX('3000')
assert device.socket.sendto.mock_calls == RSP_CALLS(exchange[:-1])
return target

def test_listen_tta_tt2_uid7_activated(self, device):
exchange = [
Expand Down Expand Up @@ -1021,6 +1022,10 @@ def test_listen_dep_timeout_error(self, device):
assert device.listen_dep(target, 0.001) is None
assert device.socket.sendto.mock_calls == []

#
# SEND/RECV DATA
#

def test_send_cmd_recv_rsp(self, device):
target = self.test_sense_tta_with_tt1_target_found(device)
cdata, rdata = ('01020304', '05060708')
Expand All @@ -1044,3 +1049,55 @@ def test_send_cmd_recv_rsp(self, device):
with pytest.raises(nfc.clf.TransmissionError):
device.send_cmd_recv_rsp(target, HEX(cdata), 1)
device.socket.sendto.assert_called_with(*CMD106A(cdata))

device.socket.sendto.side_effect = [len(CMD106A(cdata)[0])+1]
device.socket.recvfrom.side_effect = []
with pytest.raises(nfc.clf.TransmissionError):
device.send_cmd_recv_rsp(target, HEX(cdata), 1)
device.socket.sendto.assert_called_with(*CMD106A(cdata))

device.socket.sendto.side_effect = [len(CMD106A(cdata)[0])]
device.socket.recvfrom.side_effect = [RSP424F(rdata), RSP106A(rdata)]
assert device.send_cmd_recv_rsp(target, HEX(cdata), 1) == HEX(rdata)
device.socket.sendto.assert_called_with(*CMD106A(cdata))

def test_send_rsp_recv_cmd(self, device):
target = self.test_listen_tta_tt2_uid4_activated(device)
cdata, rdata = ('01020304', '05060708')

device.socket.sendto.side_effect = [len(RSP106A(rdata)[0])]
device.socket.recvfrom.side_effect = [CMD106A(cdata)]
assert device.send_rsp_recv_cmd(target, HEX(rdata), 1) == HEX(cdata)
device.socket.sendto.assert_called_with(*RSP106A(rdata))

device.socket.sendto.side_effect = [len(RSP106A(rdata)[0])]
device.socket.recvfrom.side_effect = [CMD106A(cdata)]
assert device.send_rsp_recv_cmd(target, HEX(rdata), None) == HEX(cdata)
device.socket.sendto.assert_called_with(*RSP106A(rdata))

device.socket.sendto.side_effect = []
device.socket.recvfrom.side_effect = [CMD106A(cdata)]
assert device.send_rsp_recv_cmd(target, None, 1) == HEX(cdata)

device.socket.sendto.side_effect = [len(RSP106A(rdata)[0])]
device.socket.recvfrom.side_effect = []
assert device.send_rsp_recv_cmd(target, HEX(rdata), 0) is None
device.socket.sendto.assert_called_with(*RSP106A(rdata))

device.socket.sendto.side_effect = [len(RSP106A(rdata)[0])]
device.socket.recvfrom.side_effect = [CMD106A('')]
with pytest.raises(nfc.clf.TransmissionError):
device.send_rsp_recv_cmd(target, HEX(rdata), 1)
device.socket.sendto.assert_called_with(*RSP106A(rdata))

def test_recv_data_timeout_error(self, mocker, device): # noqa: F811
target = self.test_sense_tta_with_tt1_target_found(device)
mocker.patch('nfc.clf.udp.select.select').return_value = ([], [], [])
with pytest.raises(nfc.clf.TimeoutError):
device.send_cmd_recv_rsp(target, None, 0.001)

def test_get_max_send_data_size(self, device):
assert device.get_max_send_data_size(None) == 290

def test_get_max_recv_data_size(self, device):
assert device.get_max_recv_data_size(None) == 290

0 comments on commit 29d72c0

Please sign in to comment.