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

View File

@@ -0,0 +1,71 @@
import sys
sys.path.append('src/')
from nameHandling.base import ComponentName, NameStyleBproto
from protocol_components.message import FactoryMessage, Message
from protocol_components.field import FactoryField
from errors import BprotoDuplicateNameError, BprotoMessageIDAlreadyUsed
def test_message_factory():
factory = FactoryMessage()
field1 = FactoryField().assemble("field1", 0, "uint64", 4, None)
field2 = FactoryField().assemble("field2", 1, "uint64", 4, None)
field3 = FactoryField().assemble("field3", 2, "uint64", 4, None)
field4 = FactoryField().assemble("field4", 3, "uint64", 4, None)
factory.add_field(field3)
factory.add_field(field2)
factory.add_field(field4)
factory.add_field(field1)
message: Message = factory.assemble("TestMessage", 42)
assert message.name == "TestMessage"
assert isinstance(message.name, ComponentName)
assert isinstance(message.get_name(), ComponentName)
assert message.message_index_number == 42
assert message.get_identifier() == 42
assert message.fields == {
NameStyleBproto.fromStr("field1"): field1,
NameStyleBproto.fromStr("field2"): field2,
NameStyleBproto.fromStr("field3"): field3,
NameStyleBproto.fromStr("field4"): field4
}
assert isinstance(list(message.fields.keys())[0], ComponentName)
assert message.get_size_bytes() == 8 * 4 * 4
assert message.get_size_bits() == 64 * 4 * 4
def test_message_factory_error_duplicate_name():
field1 = FactoryField().assemble("field1", 0, "uint64", 4, None)
field2 = FactoryField().assemble("field1", 1, "uint64", 4, None)
factory = FactoryMessage()
factory.add_field(field1)
factory.add_field(field2)
try:
factory.assemble("TestMessage", 42)
assert False
except Exception as e:
assert isinstance(e, BprotoDuplicateNameError)
def test_message_factory_error_duplicate_index():
field1 = FactoryField().assemble("field1", 0, "uint64", 4, None)
field2 = FactoryField().assemble("field2", 0, "uint64", 4, None)
factory = FactoryMessage()
factory.add_field(field1)
factory.add_field(field2)
try:
factory.assemble("TestMessage", 42)
assert False
except Exception as e:
assert isinstance(e, BprotoMessageIDAlreadyUsed)