45 lines
1.8 KiB
Python
45 lines
1.8 KiB
Python
import pytest
|
|
|
|
from chafon_rfid.base import CommandRunner, ReaderCommand, ReaderInfoFrame, \
|
|
ReaderResponseFrame, ReaderFrequencyBand
|
|
from chafon_rfid.transport import MockTransport
|
|
|
|
from chafon_rfid.command import CF_GET_READER_INFO, G2_TAG_INVENTORY
|
|
|
|
RESP_READER_INFO = '1100210000160c034e001e0a01000000e651'
|
|
RESP_TAGS_BAD_CHECKSUM = '1500010301010c0000000000000000000003136bb1a6'
|
|
RESP_TAGS_BAD_RETURN_COMMAND = '1500020301010c0000000000000000000003136b89a4'
|
|
|
|
|
|
def test_reader_info_frame():
|
|
transport = MockTransport(bytearray.fromhex(RESP_READER_INFO))
|
|
get_reader_info = ReaderCommand(CF_GET_READER_INFO)
|
|
runner = CommandRunner(transport)
|
|
reader_info = ReaderInfoFrame(runner.run(get_reader_info))
|
|
assert reader_info.result_status == 0
|
|
assert reader_info.resp_cmd == 0x21
|
|
assert reader_info.reader_addr == 0
|
|
assert reader_info.data == bytearray.fromhex('00160c034e001e0a01000000')
|
|
assert reader_info.firmware_version == bytearray([0, 22])
|
|
# 0x4E = 0b 01 00 1110 Max
|
|
# 0x00 = 0b0 Min
|
|
assert reader_info.frequency_band == ReaderFrequencyBand.EU
|
|
assert reader_info.get_max_frequency() == 865.1 + 0.2*14
|
|
assert reader_info.get_min_frequency() == 865.1
|
|
|
|
|
|
def test_reader_frame_bad_checksum():
|
|
transport = MockTransport(bytearray.fromhex(RESP_TAGS_BAD_CHECKSUM))
|
|
get_reader_info = ReaderCommand(G2_TAG_INVENTORY)
|
|
runner = CommandRunner(transport)
|
|
with pytest.raises(ValueError):
|
|
assert ReaderResponseFrame(runner.run(get_reader_info))
|
|
|
|
|
|
# def test_command_runner_bad_return_command():
|
|
# transport = MockTransport(bytearray.fromhex(RESP_TAGS_BAD_RETURN_COMMAND))
|
|
# get_reader_info = ReaderCommand(G2_TAG_INVENTORY)
|
|
# runner = CommandRunner(transport)
|
|
# with pytest.raises(ValueError):
|
|
# ReaderResponseFrame(runner.run(get_reader_info))
|