Skip to content

Commit

Permalink
Test message parsing with Message'Size
Browse files Browse the repository at this point in the history
ref #525
  • Loading branch information
jklmnn committed Jan 20, 2021
1 parent 868c5c8 commit f52771f
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 0 deletions.
11 changes: 11 additions & 0 deletions tests/data/fixtures/pyrflx.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ def fixture_pyrflx() -> pyrflx.PyRFLX:
f"{SPEC_DIR}/null_message.rflx",
f"{SPEC_DIR}/tlv.rflx",
f"{SPEC_DIR}/tlv_with_checksum.rflx",
f"{SPEC_DIR}/message_size.rflx",
],
skip_model_verification=True,
)
Expand Down Expand Up @@ -179,3 +180,13 @@ def fixture_array_message_package(pyrflx_: pyrflx.PyRFLX) -> pyrflx.Package:
@pytest.fixture(name="array_message_value")
def fixture_array_message_value(array_message_package: pyrflx.Package) -> pyrflx.MessageValue:
return array_message_package["Message"]


@pytest.fixture(name="message_size_package", scope="session")
def fixture_message_size_package(pyrflx_: pyrflx.PyRFLX) -> pyrflx.Package:
return pyrflx_["Message_Size"]


@pytest.fixture(name="message_size")
def fixture_message_size(message_size_package: pyrflx.Package) -> pyrflx.MessageValue:
return message_size_package["Msg"]
15 changes: 15 additions & 0 deletions tests/data/specs/message_size.rflx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package Message_Size is

type T is mod 2**8;

type Msg is
message
A : T
then B
with Size => A * 8;
B : Opaque
then null
if Message'Size = (A + 1) * 8;
end message;

end Message_Size;
8 changes: 8 additions & 0 deletions tests/unit/pyrflx_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ def test_pyrflx_iterator(pyrflx_: PyRFLX) -> None:
"Ethernet",
"ICMP",
"IPv4",
"Message_Size",
"TLS_Alert",
"TLS_Record",
"TLV",
Expand Down Expand Up @@ -1156,3 +1157,10 @@ def test_unaligned_field_serialization(data: bytes, f1: int, f2: int, f3: int) -
assert msg.get("F2") == f2
assert msg.get("F3") == f3
assert data == msg.bytestring


def test_message_size(message_size: MessageValue) -> None:
message_size.parse(b"\x02\x01\x02")
assert message_size.valid_message
assert message_size.get("A") == 2
assert message_size.get("B") == b"\x01\x02"

0 comments on commit f52771f

Please sign in to comment.