Init Commit: Moved bproto to seperate repo

This commit is contained in:
AlexanderHD27
2025-04-14 14:43:03 +02:00
commit 45bfc724fc
125 changed files with 10822 additions and 0 deletions

197
test/output/test_encdec.py Normal file
View File

@@ -0,0 +1,197 @@
import sys
sys.path.append('src/')
sys.path.append('test/')
sys.path.append('test/backend_output/python')
def test_HCP_encdec_MessageMotionUpdate():
# ignore: F401
from backend_output.python.HCP_protocol_packets import HcpMessageMotionUpdate
from backend_output.python.HCP_protocol_bitfield import HcpBitfieldEnables
from backend_output.python.HCP_protocol_enum import HcpEnumInlineMotionUpdateDangerLvl
src_msg = HcpMessageMotionUpdate(
speed=[2, 3, 4],
stearing=0.3,
name="Hello HCP!",
enable=[True, False, True, False],
heading="N",
enables=HcpBitfieldEnables(
a=True, b=False, c=True
),
danger_lvl=HcpEnumInlineMotionUpdateDangerLvl.ERROR
)
data = src_msg.to_bytes()
isinstance(data, bytes)
dest_msg = HcpMessageMotionUpdate().from_bytes(data)
assert isinstance(dest_msg.speed, list)
assert isinstance(dest_msg.speed[0], int)
assert src_msg.speed == dest_msg.speed
assert isinstance(dest_msg.stearing, float)
assert round(src_msg.stearing * 1000) == round(dest_msg.stearing * 1000)
assert isinstance(dest_msg.name, str)
assert src_msg.name == dest_msg.name
assert isinstance(dest_msg.enable, list)
assert isinstance(dest_msg.enable[0], bool)
assert src_msg.enable == dest_msg.enable
assert isinstance(dest_msg.heading, str)
assert src_msg.heading == dest_msg.heading
assert isinstance(dest_msg.enables.a, bool)
assert isinstance(dest_msg.enables.b, bool)
assert isinstance(dest_msg.enables.c, bool)
assert src_msg.enables.a == dest_msg.enables.a
assert src_msg.enables.b == dest_msg.enables.b
assert src_msg.enables.c == dest_msg.enables.c
assert isinstance(src_msg.danger_lvl, HcpEnumInlineMotionUpdateDangerLvl)
assert src_msg.danger_lvl.value == dest_msg.danger_lvl.value
def test_HCP_encdec_MessageMotionUpdate_failure():
# ignore: F401
from backend_output.python.HCP_protocol_packets import HcpMessageMotionUpdate
from backend_output.python.HCP_protocol_bitfield import HcpBitfieldEnables
from backend_output.python.HCP_protocol_enum import HcpEnumInlineMotionUpdateDangerLvl
from backend_output.python.bproto_error import bproto_PackageErrorInvalidMessageID, bproto_PackageErrorInvalidSize
src_msg = HcpMessageMotionUpdate(
speed=[2, 3, 4],
stearing=0.3,
name="Hello HCP!",
enable=[True, False, True, False],
heading="N",
enables=HcpBitfieldEnables(
a=True, b=False, c=True
),
danger_lvl=HcpEnumInlineMotionUpdateDangerLvl.ERROR
)
data = src_msg.to_bytes()
try:
HcpMessageMotionUpdate().from_bytes(b"\xaa" + data[1:])
except Exception as e:
isinstance(e, bproto_PackageErrorInvalidMessageID)
data = src_msg.to_bytes()
try:
HcpMessageMotionUpdate().from_bytes(data[:10])
except Exception as e:
isinstance(e, bproto_PackageErrorInvalidSize)
def test_HCP_encdec_HcpMessageError():
# ignore: F401
from backend_output.python.HCP_protocol_packets import HcpMessageError
from backend_output.python.HCP_protocol_bitfield import HcpBitfieldInlineErrorEnables
from backend_output.python.HCP_protocol_enum import HcpEnumInlineErrorRecoveryStatus
src_msg = HcpMessageError(
recovery_status=HcpEnumInlineErrorRecoveryStatus.YES,
enables=HcpBitfieldInlineErrorEnables(
test=True, asd=False, b=True, c=False, aa=True
)
)
data = src_msg.to_bytes()
isinstance(data, bytes)
dest_msg = HcpMessageError().from_bytes(data)
assert src_msg.recovery_status.value == dest_msg.recovery_status.value
assert src_msg.enables.test == dest_msg.enables.test
assert src_msg.enables.asd == dest_msg.enables.asd
assert src_msg.enables.b == dest_msg.enables.b
assert src_msg.enables.c == dest_msg.enables.c
assert src_msg.enables.aa == dest_msg.enables.aa
def test_HCP_encdec_HcpMessageError_failure():
# ignore: F401
from backend_output.python.HCP_protocol_packets import HcpMessageError
from backend_output.python.HCP_protocol_bitfield import HcpBitfieldInlineErrorEnables
from backend_output.python.HCP_protocol_enum import HcpEnumInlineErrorRecoveryStatus
from backend_output.python.bproto_error import bproto_PackageErrorInvalidMessageID, bproto_PackageErrorInvalidSize
src_msg = HcpMessageError(
recovery_status=HcpEnumInlineErrorRecoveryStatus.YES,
enables=HcpBitfieldInlineErrorEnables(
test=True, asd=False, b=True, c=False, aa=True
)
)
data = src_msg.to_bytes()
try:
HcpMessageError().from_bytes(b"\xaa" + data[1:])
except Exception as e:
isinstance(e, bproto_PackageErrorInvalidMessageID)
data = src_msg.to_bytes()
try:
HcpMessageError().from_bytes(data[:3])
except Exception as e:
isinstance(e, bproto_PackageErrorInvalidSize)
def test_generic_parse_package():
# ignore: F401
from backend_output.python.HCP_protocol_packets import HcpMessageError, HcpMessageMotionUpdate, parse_package
from backend_output.python.HCP_protocol_bitfield import HcpBitfieldInlineErrorEnables, HcpBitfieldEnables
from backend_output.python.HCP_protocol_enum import HcpEnumInlineErrorRecoveryStatus, HcpEnumInlineMotionUpdateDangerLvl
from backend_output.python.bproto_error import bproto_PackageErrorInvalidMessageID, bproto_PackageErrorInvalidSize
src_msg1 = HcpMessageError(
recovery_status=HcpEnumInlineErrorRecoveryStatus.YES,
enables=HcpBitfieldInlineErrorEnables(
test=True, asd=False, b=True, c=False, aa=True
)
)
src_msg2 = HcpMessageMotionUpdate(
speed=[2, 3, 4],
stearing=0.3,
name="Hello HCP!",
enable=[True, False, True, False],
heading="N",
enables=HcpBitfieldEnables(
a=True, b=False, c=True
),
danger_lvl=HcpEnumInlineMotionUpdateDangerLvl.ERROR
)
dest_msg1, parsed_size = parse_package(src_msg1.to_bytes())
assert parsed_size == 5
assert isinstance(dest_msg1, HcpMessageError)
dest_msg2, parsed_size = parse_package(src_msg2.to_bytes())
assert parsed_size == 58
assert isinstance(dest_msg2, HcpMessageMotionUpdate)
try:
parse_package(b"\xaa" + src_msg2.to_bytes()[1:])
except Exception as e:
isinstance(e, bproto_PackageErrorInvalidMessageID)
try:
parse_package(src_msg1.to_bytes()[:2])
except Exception as e:
isinstance(e, bproto_PackageErrorInvalidSize)
try:
parse_package(src_msg2.to_bytes()[:2])
except Exception as e:
isinstance(e, bproto_PackageErrorInvalidSize)