Добавить порт SETProtocol v2 для TMS320F2812
This commit is contained in:
42
python/tests/test_setprotocol_can.py
Normal file
42
python/tests/test_setprotocol_can.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from setprotocol import Frame, FrameFlag, MessageType, build_frame, decode_datagram
|
||||
from setprotocol.can import CanAddress, CanFrame, CanReassembler, segment
|
||||
|
||||
|
||||
def test_can_id_roundtrip():
|
||||
value = CanAddress(destination=13, source=0, priority=1, channel=7)
|
||||
assert CanAddress.unpack(value.pack()) == value
|
||||
|
||||
|
||||
def test_segmented_setp_frame_roundtrip():
|
||||
packet = build_frame(
|
||||
Frame(
|
||||
message_type=MessageType.FW_DATA,
|
||||
sequence=0x1234,
|
||||
payload=bytes(range(76)),
|
||||
flags=FrameFlag.ACK_REQUIRED | FrameFlag.PRIORITY,
|
||||
source=0,
|
||||
destination=13,
|
||||
)
|
||||
)
|
||||
frames = segment(packet, CanAddress(13, 0, priority=1, channel=1))
|
||||
assert len(frames) == 14
|
||||
reassembler = CanReassembler()
|
||||
restored = None
|
||||
for now_ms, frame in enumerate(frames):
|
||||
restored = reassembler.feed(frame, now_ms)
|
||||
assert restored == packet
|
||||
assert decode_datagram(restored).payload == bytes(range(76))
|
||||
|
||||
|
||||
def test_reassembler_rejects_wrong_sequence():
|
||||
packet = build_frame(Frame(MessageType.PING, 1, source=0, destination=13))
|
||||
frames = segment(packet, CanAddress(13, 0))
|
||||
reassembler = CanReassembler()
|
||||
assert reassembler.feed(frames[0], 0) is None
|
||||
damaged = CanFrame(frames[1].can_id, bytes((0x22,)) + frames[1].data[1:])
|
||||
try:
|
||||
reassembler.feed(damaged, 1)
|
||||
except ValueError as error:
|
||||
assert "последовательность" in str(error)
|
||||
else:
|
||||
raise AssertionError("wrong sequence must fail")
|
||||
Reference in New Issue
Block a user