def test_transceive_communication_errors(self, tag, clf_error, tag_error): tag.clf.exchange.side_effect = clf_error with pytest.raises(nfc.tag.tt2.Type2TagCommandError) as excinfo: tag.transceive(b'\x01') assert excinfo.value.errno == tag_error tag.clf.exchange.assert_called_with(HEX('01'), 0.1) assert tag.clf.exchange.call_count == 3
def test_transceive_error(self, tag, exception, message): tag.clf.exchange.side_effect = exception with pytest.raises(nfc.tag.tt1.Type1TagCommandError) as excinfo: tag.transceive(HEX('01')) assert str(excinfo.value) == message tag.clf.exchange.assert_called_with(HEX('01'), 0.1) assert tag.clf.exchange.call_count == 3
def test_transceive_with_runtime_error(self, tag): tag.clf.exchange.side_effect = nfc.clf.CommunicationError with pytest.raises(RuntimeError) as excinfo: tag.transceive(HEX('01')) assert repr(excinfo.value) == \ "RuntimeError('unexpected CommunicationError()',)" tag.clf.exchange.assert_called_with(HEX('01'), 0.1) assert tag.clf.exchange.call_count == 3
def test_transceive_with_runtime_error(self, tag): tag.clf.exchange.side_effect = nfc.clf.CommunicationError with pytest.raises(RuntimeError) as excinfo: tag.transceive(b'\x01') assert repr(excinfo.value) == \ "RuntimeError('unexpected CommunicationError()',)" tag.clf.exchange.assert_called_with(HEX('01'), 0.1) assert tag.clf.exchange.call_count == 3
def test_transceive_timeout_value(self, tag, timeout_value): commands = [ (HEX('01'), 0.1), (HEX('02'), timeout_value), (HEX('03'), timeout_value), ] responses = [ HEX('10'), HEX('20'), HEX('30'), ] tag.clf.exchange.side_effect = responses assert tag.transceive(HEX('01')) == HEX('10') assert tag.transceive(HEX('02'), timeout_value) == HEX('20') assert tag.transceive(HEX('03'), timeout=timeout_value) == HEX('30') assert tag.clf.exchange.mock_calls == [call(*_) for _ in commands]
def test_transceive_timeout_value(self, tag, timeout_value): commands = [ (HEX('01'), 0.1), (HEX('02'), timeout_value), (HEX('03'), timeout_value), ] responses = [ HEX('10'), HEX('20'), HEX('30'), ] tag.clf.exchange.side_effect = responses assert tag.transceive(HEX('01')) == HEX('10') assert tag.transceive(HEX('02'), timeout_value) == HEX('20') assert tag.transceive(HEX('03'), timeout=timeout_value) == HEX('30') assert tag.clf.exchange.mock_calls == [mock.call(*_) for _ in commands]
def test_transceive_number_of_retries(self, tag, number_of_retries): commands = number_of_retries * [ (HEX('01'), 0.1), ] + [ (HEX('01'), 0.1), ] responses = number_of_retries * [nfc.clf.CommunicationError] + [ HEX('10'), ] tag.clf.exchange.side_effect = responses assert tag.transceive(b'\x01', retries=number_of_retries) == b'\x10' assert tag.clf.exchange.mock_calls == [call(*_) for _ in commands] tag.clf.exchange.reset_mock() tag.clf.exchange.side_effect = responses assert tag.transceive(b'\x01', 0.1, number_of_retries) == b'\x10' assert tag.clf.exchange.mock_calls == [call(*_) for _ in commands]
def test_transceive_number_of_retries(self, tag, number_of_retries): commands = number_of_retries * [ (HEX('01'), 0.1), ] + [ (HEX('01'), 0.1), ] responses = number_of_retries * [ nfc.clf.CommunicationError ] + [ HEX('10'), ] tag.clf.exchange.side_effect = responses assert tag.transceive(b'\x01', retries=number_of_retries) == b'\x10' assert tag.clf.exchange.mock_calls == [mock.call(*_) for _ in commands] tag.clf.exchange.reset_mock() tag.clf.exchange.side_effect = responses assert tag.transceive(b'\x01', 0.1, number_of_retries) == b'\x10' assert tag.clf.exchange.mock_calls == [mock.call(*_) for _ in commands]
def test_transceive_target_gone(self, tag): tag._target = None with pytest.raises(nfc.tag.tt2.Type2TagCommandError) as excinfo: tag.transceive(HEX('00')) assert excinfo.value.errno == nfc.tag.TIMEOUT_ERROR
def test_transceive_error(self, tag, exception, message): tag.clf.exchange.side_effect = exception with pytest.raises(nfc.tag.tt1.Type1TagCommandError) as excinfo: tag.transceive(bytearray(8)) assert str(excinfo.value) == message assert tag.clf.exchange.call_count == 3