primo commit

This commit is contained in:
VALLONGOL 2025-12-09 15:52:23 +01:00
parent 815478a46a
commit 4e806470e6

47
tests/test_dispatcher.py Normal file
View File

@ -0,0 +1,47 @@
import ctypes
from pybusmonitor1553.core.dispatcher import MessageDispatcher
from pybusmonitor1553.lib1553.headers import (
UDP1553Header,
UDP1553MessageHeader,
CommandWordUnion,
)
from pybusmonitor1553.lib1553.constants import Subaddress
def test_registry_contains_a1():
disp = MessageDispatcher()
key = (Subaddress.RX_SETTINGS, False)
assert key in disp._registry
cls = disp._registry[key]
assert cls.__name__ == "MsgA1"
def test_parse_valid_a1_packet():
disp = MessageDispatcher()
# Build command word for A1 (Subaddress = RX_SETTINGS, transmit=False)
cw = CommandWordUnion(rt_addr=0, sub_addr=int(Subaddress.RX_SETTINGS), word_count=0, transmit=False)
msg_hdr = UDP1553MessageHeader(command_word_union=cw)
udp_hdr = UDP1553Header()
# Convert ctypes structs to raw bytes
header_bytes = ctypes.string_at(ctypes.addressof(udp_hdr), ctypes.sizeof(udp_hdr))
msg_hdr_bytes = ctypes.string_at(ctypes.addressof(msg_hdr), ctypes.sizeof(msg_hdr))
# Minimal data payload (64 bytes = 32 words) - all zeros is fine for parsing
data_bytes = b"\x00" * 64
raw = header_bytes + msg_hdr_bytes + data_bytes
h, msg = disp.parse_packet(raw)
assert h is not None
assert msg is not None
assert msg.__class__.__name__ == "MsgA1"
def test_parse_too_short():
disp = MessageDispatcher()
h, msg = disp.parse_packet(b"\x00\x01")
assert h is None and msg is None