Skip to content

Commit

Permalink
lestarch: formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
LeStarch committed May 9, 2022
1 parent 1c45abf commit cdb6818
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 17 deletions.
4 changes: 3 additions & 1 deletion src/fprime/common/models/serialize/enum_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,9 @@ def serialize(self):
"""
# for enums, take the string value and convert it to
# the numeric equivalent
if self._val is None or (self._val == "UNDEFINED" and "UNDEFINED" not in self.ENUM_DICT):
if self._val is None or (
self._val == "UNDEFINED" and "UNDEFINED" not in self.ENUM_DICT
):
raise NotInitializedException(type(self))
return struct.pack(">i", self.ENUM_DICT[self.val])

Expand Down
4 changes: 3 additions & 1 deletion src/fprime/common/models/serialize/serializable_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@ def construct_type(cls, name, member_list=None):
member_list: list of member definitions in form list of tuples (name, type, format string, description)
"""
if member_list:
member_list = [list(item) + ([None] * (4 -len(item))) for item in member_list]
member_list = [
list(item) + ([None] * (4 - len(item))) for item in member_list
]
# Check that we are dealing with a list
if not isinstance(member_list, list):
raise TypeMismatchException(list, type(member_list))
Expand Down
2 changes: 1 addition & 1 deletion src/fprime/common/models/serialize/type_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ def validate(cls, val):
"""

def __eq__(self, other):
""" Check equality between types """
"""Check equality between types"""
if type(other) != type(self):
return False
return self._val == other._val
Expand Down
61 changes: 47 additions & 14 deletions test/fprime/common/models/serialize/test_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,24 +236,31 @@ def test_enum_off_nominal():


def test_string_nominal():
""" Tests named string types """
"""Tests named string types"""
py_string = "ABC123DEF456"
string_type = StringType.construct_type("MyFancyString", max_length=10)
valid_values_test(string_type, [py_string[:10], py_string[:4], py_string[:7]], [12, 6, 9])
valid_values_test(
string_type, [py_string[:10], py_string[:4], py_string[:7]], [12, 6, 9]
)


def test_string_off_nominal():
""" Tests named string types """
"""Tests named string types"""
py_string = "ABC123DEF456"
string_type = StringType.construct_type("MyFancyString", max_length=10)
invalid_values_test(string_type, [py_string], StringSizeException)



def test_serializable_basic():
""" Serializable type with basic member types """
member_list = [("member1", U32Type, "%d"),("member2", U32Type, "%lu"),("member3", I64Type, "%lld")]
serializable_type = SerializableType.construct_type("BasicSerializable", member_list)
"""Serializable type with basic member types"""
member_list = [
("member1", U32Type, "%d"),
("member2", U32Type, "%lu"),
("member3", I64Type, "%lld"),
]
serializable_type = SerializableType.construct_type(
"BasicSerializable", member_list
)
serializable1 = serializable_type({"member1": 123, "member2": 456, "member3": -234})
bytes1 = serializable1.serialize()
serializable2 = serializable_type()
Expand All @@ -268,13 +275,31 @@ def test_serializable_advanced():

# First setup some classes to represent various member types ensuring that the serializable can handle them
string_member_class = StringType.construct_type("StringMember")
enum_member_class = EnumType.construct_type("EnumMember", {"Option1": 0, "Option2": 6, "Option3": 9})
array_member_class = ArrayType.construct_type("ArrayMember", string_member_class, 3, "%s")
enum_member_class = EnumType.construct_type(
"EnumMember", {"Option1": 0, "Option2": 6, "Option3": 9}
)
array_member_class = ArrayType.construct_type(
"ArrayMember", string_member_class, 3, "%s"
)

field_data = [("field1", string_member_class), ("field2", U32Type), ("field3", enum_member_class), ("field4", array_member_class)]
serializable_class = SerializableType.construct_type("AdvancedSerializable", field_data)
field_data = [
("field1", string_member_class),
("field2", U32Type),
("field3", enum_member_class),
("field4", array_member_class),
]
serializable_class = SerializableType.construct_type(
"AdvancedSerializable", field_data
)

serializable1 = serializable_class({"field1": "abc", "field2": 123, "field3": "Option2", "field4": ["abc", "123", "456"]})
serializable1 = serializable_class(
{
"field1": "abc",
"field2": 123,
"field3": "Option2",
"field4": ["abc", "123", "456"],
}
)
bytes1 = serializable1.serialize()
serializable2 = serializable_class()
serializable2.deserialize(bytes1, 0)
Expand All @@ -285,8 +310,16 @@ def test_array_type():
"""
Tests the ArrayType serialization and deserialization
"""
extra_ctor_args = [("TestArray", I32Type, 2, "%d"), ("TestArray2", U8Type, 4, "%d"),
("TestArray3", StringType.construct_type("TestArrayString", max_length=3), 1, "%s")]
extra_ctor_args = [
("TestArray", I32Type, 2, "%d"),
("TestArray2", U8Type, 4, "%d"),
(
"TestArray3",
StringType.construct_type("TestArrayString", max_length=3),
1,
"%s",
),
]
values = [[32, 1], [0, 1, 2, 3], ["one"]]
sizes = [8, 4, 5]
for ctor_args, values, size in zip(extra_ctor_args, values, sizes):
Expand Down

0 comments on commit cdb6818

Please sign in to comment.