import sys sys.path.append('src/') from nameHandling.base import ComponentName from protocol_components.protocolFactory import FactoryProtocolDefition from protocol_components.enumeration import FactoryEnumeration, Enumeration from protocol_components.bitfields import FactoryBitfield, Bitfield from protocol_components.dtypes import BprotoFieldBaseType from protocol_components.field import FactoryField from protocol_components.message import FactoryMessage, Message from nameHandling.style.cNameStyle import NameStyleC def test_style_c_fromStr(): try: NameStyleC.fromStr("") assert False except Exception as e: assert isinstance(e, NotImplementedError) def test_style_c_toStr_enum(): assert NameStyleC.toStr(ComponentName(["my", "custom", "Values"]), "enum_name") == "MyCustomValues" assert NameStyleC.toStr(ComponentName(["my", "custom", "enum", "value"]), "enum_item") == "MY_CUSTOM_ENUM_VALUE" assert NameStyleC.toStr(ComponentName(["my", "custom", "class"]), "struct_name") == "MyCustomClass" assert NameStyleC.toStr(ComponentName(["my", "custom", "class", "member"]), "struct_member") == "myCustomClassMember" assert NameStyleC.toStr(ComponentName(["my", "custom", "class"]), "bitfield_name") == "MyCustomClass" assert NameStyleC.toStr(ComponentName(["my", "custom", "class", "member"]), "bitfield_member") == "myCustomClassMember" def test_style_c_preprocessor(): protocol_factory = FactoryProtocolDefition() enum_factory = FactoryEnumeration() enum_factory.add_value("first-Value", 1) enum_factory.add_value("second-Important-Value", 2) protocol_factory.add_enum(enum_factory.assemble("mode")) bitfield_factory = FactoryBitfield() bitfield_factory.add_bit("FirstBit", 0) bitfield_factory.add_bit("SecondBit", 1) protocol_factory.add_bitfield(bitfield_factory.assemble("bitfield1")) message_factory = FactoryMessage() message_factory.add_field(FactoryField().assemble("x", 1, BprotoFieldBaseType.FLOAT32, 2, None)) message_factory.add_field(FactoryField().assemble("y", 2, BprotoFieldBaseType.FLOAT32, 2, None)) protocol_factory.add_message(message_factory.assemble("cordUpdate", 1)) protocol = protocol_factory.assemble("ABCP", 5) protocol = NameStyleC.preprocess(protocol) enum: Enumeration = list(protocol.enums.values())[0] bitfield: Bitfield = list(protocol.bitfields.values())[0] message: Message = list(protocol.messages.values())[0] assert isinstance(enum, Enumeration) assert isinstance(bitfield, Bitfield) assert isinstance(message, Message) assert NameStyleC.toStr(enum.name, "enum_name") == "Abcp_enum_Mode" assert NameStyleC.toStr(bitfield.name, "bitfield_name") == "Abcp_bitfield_Bitfield1" assert NameStyleC.toStr(message.name, "struct_name") == "Abcp_message_CordUpdate" assert enum.values == { ComponentName(["abcp", "_enum_", "mode", "value", "first", "value"]): 1, ComponentName(["abcp", "_enum_", "mode", "value", "second", "important", "value"]): 2 } assert bitfield.bits == { ComponentName(["first", "bit"]): 0, ComponentName(["second", "bit"]): 1 }