Skip to content

Commit

Permalink
Fix handling of empty opaque fields
Browse files Browse the repository at this point in the history
ref #533
  • Loading branch information
jklmnn committed Jan 4, 2021
1 parent 5501894 commit 04bbb34
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 0 deletions.
4 changes: 4 additions & 0 deletions rflx/pyrflx/typevalue.py
Original file line number Diff line number Diff line change
Expand Up @@ -385,6 +385,10 @@ def value(self) -> bytes:
def bitstring(self) -> Bitstring:
self._raise_initialized()
assert self._value is not None
size = self.size
assert isinstance(size, Number)
if size.value == 0:
return Bitstring("")
return Bitstring(format(int.from_bytes(self._value, "big"), f"0{self.size}b"))

@property
Expand Down
8 changes: 8 additions & 0 deletions tests/unit/pyrflx_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,14 @@ def test_message_value_required_fields(tlv_message_value: MessageValue) -> None:
assert tlv_message_value.required_fields == []


def test_message_value_empty_opaque_field(tlv_message_value: MessageValue) -> None:
tlv_message_value.set("Tag", "Msg_Data")
tlv_message_value.set("Length", 0)
tlv_message_value.set("Value", b"")
assert tlv_message_value.valid_message
assert tlv_message_value.bytestring == b"\x40\x00"


def test_message_value_field_eq() -> None:
f1 = MessageValue.Field(OpaqueValue(Opaque()), "f1")
assert f1 == MessageValue.Field(OpaqueValue(Opaque()), "f1")
Expand Down

0 comments on commit 04bbb34

Please sign in to comment.