Init Commit: Moved bproto to seperate repo
This commit is contained in:
71
test/compiler/test_message.py
Normal file
71
test/compiler/test_message.py
Normal 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)
|
||||
Reference in New Issue
Block a user