pdl: Define exhaustive array tests
Add test constructs for all possible array types
based on the combination of type (byte, scalar, enum,
static struct, dynamic struct) and size (constant,
with size field, with count field, undefined)
Test: atest --host pdl_python_generator_test
(cherry picked from https://android-review.googlesource.com/q/commit:81c0b910eb885b335c259b9018dd78554a062f29)
Merged-In: Ide5f90fa18e7be17660f3c45c4d6972662556127
Change-Id: Ide5f90fa18e7be17660f3c45c4d6972662556127
diff --git a/tools/pdl/scripts/generate_python_backend.py b/tools/pdl/scripts/generate_python_backend.py
index d903af6..30ea7f3 100755
--- a/tools/pdl/scripts/generate_python_backend.py
+++ b/tools/pdl/scripts/generate_python_backend.py
@@ -310,6 +310,8 @@
self.append_(f"fields['{field.id}'] = {field.id}")
if size is not None:
self.append_(f"span = span[{size}:]")
+ else:
+ self.append_(f"span = bytes()")
# Drop the padding
if padded_size:
@@ -631,17 +633,20 @@
size_modifier = f' + {value_field.size_modifier}'
if isinstance(value_field, (ast.PayloadField, ast.BodyField)):
- self.append_(f"_size = len(payload or self.payload or []){size_modifier}")
- self.append_(f"if _size > {max_size}:")
+ self.append_(f"_payload_size = len(payload or self.payload or []){size_modifier}")
+ self.append_(f"if _payload_size > {max_size}:")
self.append_(f" print(f\"Invalid length for payload field:" +
- f" {{_size}} > {max_size}; the packet cannot be generated\")")
+ f" {{_payload_size}} > {max_size}; the packet cannot be generated\")")
self.append_(f" raise Exception(\"Invalid payload length\")")
- array_size = "_size"
+ array_size = "_payload_size"
elif isinstance(value_field, ast.ArrayField) and value_field.width:
array_size = f"(len(self.{value_field.id}) * {int(value_field.width / 8)}{size_modifier})"
+ elif isinstance(value_field, ast.ArrayField) and isinstance(value_field.type, ast.EnumDeclaration):
+ array_size = f"(len(self.{value_field.id}) * {int(value_field.type.width / 8)}{size_modifier})"
elif isinstance(value_field, ast.ArrayField):
- self.append_(f"_size = sum([elt.size for elt in self.{value_field.id}]){size_modifier}")
- array_size = "_size"
+ self.append_(
+ f"_{value_field.id}_size = sum([elt.size for elt in self.{value_field.id}]){size_modifier}")
+ array_size = f"_{value_field.id}_size"
else:
raise Exception("Unsupported field type")
self.value.append(f"({array_size} << {shift})")
diff --git a/tools/pdl/tests/canonical/be_test_file.pdl b/tools/pdl/tests/canonical/be_test_file.pdl
index 41c16b2..bfbdfe5 100644
--- a/tools/pdl/tests/canonical/be_test_file.pdl
+++ b/tools/pdl/tests/canonical/be_test_file.pdl
@@ -218,76 +218,113 @@
a: UnsizedCustomField,
}
-// Array fields
-// Array element types
+// Array field configurations.
+// Add constructs for all configurations of type, size, and padding:
+//
+// - type: u8, u16, enum, struct with static size, struct with dynamic size
+// - size: constant, with size field, with count field, unspecified
+//
+// The type u8 is tested separately since it is likely to be handled
+// idiomatically by the specific language generators.
-// Array with scalar elements.
-packet Packet_Array_Field_ScalarElement {
+packet Packet_Array_Field_ByteElement_ConstantSize {
+ array: 8[4],
+}
+
+packet Packet_Array_Field_ByteElement_VariableSize {
+ _size_(array) : 4,
+ _reserved_: 4,
+ array: 8[],
+}
+
+packet Packet_Array_Field_ByteElement_VariableCount {
+ _count_(array) : 4,
+ _reserved_: 4,
+ array: 8[],
+}
+
+packet Packet_Array_Field_ByteElement_UnknownSize {
+ array: 8[],
+}
+
+packet Packet_Array_Field_ScalarElement_ConstantSize {
array: 16[4],
}
-// Array with enum elements.
-packet Packet_Array_Field_EnumElement {
- array: Enum16[4],
-}
-
-// Array with sized structure elements.
-packet Packet_Array_Field_SizedStructElement {
- array: SizedStruct[4],
-}
-
-// Array with variable sized structure elements.
-packet Packet_Array_Field_UnsizedStructElement {
- array: UnsizedStruct[4],
-}
-
-// Array configurations
-
-// Array with sized elements, and a variable count.
-// The parser must extract as many elements as specified by the count from
-// the remaining span. The parser should generate a dynamic array size guard.
-packet Packet_Array_Field_SizedElement_VariableCount {
- _count_(array) : 4,
- _reserved_: 4,
- array: 16[],
-}
-
-// The parser must extract as many elements as possible from
-// the span with the specified size. The parser should generate a
-// dynamic array size guard.
-packet Packet_Array_Field_SizedElement_VariableSize {
+packet Packet_Array_Field_ScalarElement_VariableSize {
_size_(array) : 4,
_reserved_: 4,
array: 16[],
}
-// The parser must extract as many elements as specified by the
-// static array count. The parser should generate a static array size guard.
-packet Packet_Array_Field_SizedElement_ConstantSize {
- array: 16[8],
-}
-
-// The parser must extract as many elements as specified by the count from
-// the remaining span. No size guard possible.
-packet Packet_Array_Field_UnsizedElement_VariableCount {
+packet Packet_Array_Field_ScalarElement_VariableCount {
_count_(array) : 4,
_reserved_: 4,
- array: UnsizedStruct[],
+ array: 16[],
}
-// The parser must extract as many elements as possible from
-// the span with the specified size. The parser should generate a
-// dynamic array size guard.
+packet Packet_Array_Field_ScalarElement_UnknownSize {
+ array: 16[],
+}
+
+packet Packet_Array_Field_EnumElement_ConstantSize {
+ array: Enum16[4],
+}
+
+packet Packet_Array_Field_EnumElement_VariableSize {
+ _size_(array) : 4,
+ _reserved_: 4,
+ array: Enum16[],
+}
+
+packet Packet_Array_Field_EnumElement_VariableCount {
+ _count_(array) : 4,
+ _reserved_: 4,
+ array: Enum16[],
+}
+
+packet Packet_Array_Field_EnumElement_UnknownSize {
+ array: Enum16[],
+}
+
+packet Packet_Array_Field_SizedElement_ConstantSize {
+ array: SizedStruct[4],
+}
+
+packet Packet_Array_Field_SizedElement_VariableSize {
+ _size_(array) : 4,
+ _reserved_: 4,
+ array: SizedStruct[],
+}
+
+packet Packet_Array_Field_SizedElement_VariableCount {
+ _count_(array) : 4,
+ _reserved_: 4,
+ array: SizedStruct[],
+}
+
+packet Packet_Array_Field_SizedElement_UnknownSize {
+ array: SizedStruct[],
+}
+
+packet Packet_Array_Field_UnsizedElement_ConstantSize {
+ array: UnsizedStruct[4],
+}
+
packet Packet_Array_Field_UnsizedElement_VariableSize {
_size_(array) : 4,
_reserved_: 4,
array: UnsizedStruct[],
}
-// The parser must extract as many elements as specified by the
-// static array count. No size guard possible.
-packet Packet_Array_Field_UnsizedElement_ConstantSize {
- array: UnsizedStruct[8],
+packet Packet_Array_Field_UnsizedElement_VariableCount {
+ _count_(array) : 4,
+ _reserved_: 4,
+ array: UnsizedStruct[],
+}
+
+packet Packet_Array_Field_UnsizedElement_UnknownSize {
+ array: UnsizedStruct[],
}
// The parser must support complex size modifiers on arrays whose size is
@@ -497,90 +534,150 @@
s: Struct_Custom_Field_VariableSize_,
}
-// Array fields
-// Array element types
+// Array field configurations.
+// Add constructs for all configurations of type, size, and padding:
+//
+// - type: u8, u16, enum, struct with static size, struct with dynamic size
+// - size: constant, with size field, with count field, unspecified
+//
+// The type u8 is tested separately since it is likely to be handled
+// idiomatically by the specific language generators.
-// Array with scalar elements.
-struct Struct_Array_Field_ScalarElement_ {
- array: 16[4],
+struct Struct_Array_Field_ByteElement_ConstantSize_ {
+ array: 8[4],
}
-packet Struct_Array_Field_ScalarElement {
- s: Struct_Array_Field_ScalarElement_,
+packet Struct_Array_Field_ByteElement_ConstantSize {
+ s: Struct_Array_Field_ByteElement_ConstantSize_,
}
-// Array with enum elements.
-struct Struct_Array_Field_EnumElement_ {
- array: Enum16[4],
+struct Struct_Array_Field_ByteElement_VariableSize_ {
+ _size_(array) : 4,
+ _reserved_: 4,
+ array: 8[],
}
-packet Struct_Array_Field_EnumElement {
- s: Struct_Array_Field_EnumElement_,
+packet Struct_Array_Field_ByteElement_VariableSize {
+ s: Struct_Array_Field_ByteElement_VariableSize_,
}
-// Array with sized structure elements.
-struct Struct_Array_Field_SizedStructElement_ {
- array: SizedStruct[4],
-}
-packet Struct_Array_Field_SizedStructElement {
- s: Struct_Array_Field_SizedStructElement_,
-}
-
-// Array with variable sized structure elements.
-struct Struct_Array_Field_UnsizedStructElement_ {
- array: UnsizedStruct[4],
-}
-packet Struct_Array_Field_UnsizedStructElement {
- s: Struct_Array_Field_UnsizedStructElement_,
-}
-
-// Array configurations
-
-// Array with sized elements, and a variable count.
-// The parser must extract as many elements as specified by the count from
-// the remaining span. The parser should generate a dynamic array size guard.
-struct Struct_Array_Field_SizedElement_VariableCount_ {
+struct Struct_Array_Field_ByteElement_VariableCount_ {
_count_(array) : 4,
_reserved_: 4,
- array: 16[],
+ array: 8[],
}
-packet Struct_Array_Field_SizedElement_VariableCount {
- s: Struct_Array_Field_SizedElement_VariableCount_,
+packet Struct_Array_Field_ByteElement_VariableCount {
+ s: Struct_Array_Field_ByteElement_VariableCount_,
}
-// The parser must extract as many elements as possible from
-// the span with the specified size. The parser should generate a
-// dynamic array size guard.
-struct Struct_Array_Field_SizedElement_VariableSize_ {
+struct Struct_Array_Field_ByteElement_UnknownSize_ {
+ array: 8[],
+}
+packet Struct_Array_Field_ByteElement_UnknownSize {
+ s: Struct_Array_Field_ByteElement_UnknownSize_,
+}
+
+struct Struct_Array_Field_ScalarElement_ConstantSize_ {
+ array: 16[4],
+}
+packet Struct_Array_Field_ScalarElement_ConstantSize {
+ s: Struct_Array_Field_ScalarElement_ConstantSize_,
+}
+
+struct Struct_Array_Field_ScalarElement_VariableSize_ {
_size_(array) : 4,
_reserved_: 4,
array: 16[],
}
-packet Struct_Array_Field_SizedElement_VariableSize {
- s: Struct_Array_Field_SizedElement_VariableSize_,
+packet Struct_Array_Field_ScalarElement_VariableSize {
+ s: Struct_Array_Field_ScalarElement_VariableSize_,
}
-// The parser must extract as many elements as specified by the
-// static array count. The parser should generate a static array size guard.
+struct Struct_Array_Field_ScalarElement_VariableCount_ {
+ _count_(array) : 4,
+ _reserved_: 4,
+ array: 16[],
+}
+packet Struct_Array_Field_ScalarElement_VariableCount {
+ s: Struct_Array_Field_ScalarElement_VariableCount_,
+}
+
+struct Struct_Array_Field_ScalarElement_UnknownSize_ {
+ array: 16[],
+}
+packet Struct_Array_Field_ScalarElement_UnknownSize {
+ s: Struct_Array_Field_ScalarElement_UnknownSize_,
+}
+
+struct Struct_Array_Field_EnumElement_ConstantSize_ {
+ array: Enum16[4],
+}
+packet Struct_Array_Field_EnumElement_ConstantSize {
+ s: Struct_Array_Field_EnumElement_ConstantSize_,
+}
+
+struct Struct_Array_Field_EnumElement_VariableSize_ {
+ _size_(array) : 4,
+ _reserved_: 4,
+ array: Enum16[],
+}
+packet Struct_Array_Field_EnumElement_VariableSize {
+ s: Struct_Array_Field_EnumElement_VariableSize_,
+}
+
+struct Struct_Array_Field_EnumElement_VariableCount_ {
+ _count_(array) : 4,
+ _reserved_: 4,
+ array: Enum16[],
+}
+packet Struct_Array_Field_EnumElement_VariableCount {
+ s: Struct_Array_Field_EnumElement_VariableCount_,
+}
+
+struct Struct_Array_Field_EnumElement_UnknownSize_ {
+ array: Enum16[],
+}
+packet Struct_Array_Field_EnumElement_UnknownSize {
+ s: Struct_Array_Field_EnumElement_UnknownSize_,
+}
+
struct Struct_Array_Field_SizedElement_ConstantSize_ {
- array: 16[8],
+ array: SizedStruct[4],
}
packet Struct_Array_Field_SizedElement_ConstantSize {
s: Struct_Array_Field_SizedElement_ConstantSize_,
}
-// The parser must extract as many elements as specified by the count from
-// the remaining span. No size guard possible.
-struct Struct_Array_Field_UnsizedElement_VariableCount_ {
- _count_(array) : 4,
+struct Struct_Array_Field_SizedElement_VariableSize_ {
+ _size_(array) : 4,
_reserved_: 4,
- array: UnsizedStruct[],
+ array: SizedStruct[],
}
-packet Struct_Array_Field_UnsizedElement_VariableCount {
- s: Struct_Array_Field_UnsizedElement_VariableCount_,
+packet Struct_Array_Field_SizedElement_VariableSize {
+ s: Struct_Array_Field_SizedElement_VariableSize_,
}
-// The parser must extract as many elements as possible from
-// the span with the specified size. The parser should generate a
-// dynamic array size guard.
+struct Struct_Array_Field_SizedElement_VariableCount_ {
+ _count_(array) : 4,
+ _reserved_: 4,
+ array: SizedStruct[],
+}
+packet Struct_Array_Field_SizedElement_VariableCount {
+ s: Struct_Array_Field_SizedElement_VariableCount_,
+}
+
+struct Struct_Array_Field_SizedElement_UnknownSize_ {
+ array: SizedStruct[],
+}
+packet Struct_Array_Field_SizedElement_UnknownSize {
+ s: Struct_Array_Field_SizedElement_UnknownSize_,
+}
+
+struct Struct_Array_Field_UnsizedElement_ConstantSize_ {
+ array: UnsizedStruct[4],
+}
+packet Struct_Array_Field_UnsizedElement_ConstantSize {
+ s: Struct_Array_Field_UnsizedElement_ConstantSize_,
+}
+
struct Struct_Array_Field_UnsizedElement_VariableSize_ {
_size_(array) : 4,
_reserved_: 4,
@@ -590,13 +687,20 @@
s: Struct_Array_Field_UnsizedElement_VariableSize_,
}
-// The parser must extract as many elements as specified by the
-// static array count. No size guard possible.
-struct Struct_Array_Field_UnsizedElement_ConstantSize_ {
- array: UnsizedStruct[8],
+struct Struct_Array_Field_UnsizedElement_VariableCount_ {
+ _count_(array) : 4,
+ _reserved_: 4,
+ array: UnsizedStruct[],
}
-packet Struct_Array_Field_UnsizedElement_ConstantSize {
- s: Struct_Array_Field_UnsizedElement_ConstantSize_,
+packet Struct_Array_Field_UnsizedElement_VariableCount {
+ s: Struct_Array_Field_UnsizedElement_VariableCount_,
+}
+
+struct Struct_Array_Field_UnsizedElement_UnknownSize_ {
+ array: UnsizedStruct[],
+}
+packet Struct_Array_Field_UnsizedElement_UnknownSize {
+ s: Struct_Array_Field_UnsizedElement_UnknownSize_,
}
// The parser must support complex size modifiers on arrays whose size is
diff --git a/tools/pdl/tests/canonical/be_test_vectors.json b/tools/pdl/tests/canonical/be_test_vectors.json
index c0ba1b2..e03357e 100644
--- a/tools/pdl/tests/canonical/be_test_vectors.json
+++ b/tools/pdl/tests/canonical/be_test_vectors.json
@@ -1103,23 +1103,205 @@
]
},
{
- "packet": "Packet_Array_Field_ScalarElement",
+ "packet": "Packet_Array_Field_ByteElement_ConstantSize",
"tests": [
{
- "packed": "841c842e84388c4a",
+ "packed": "83848586",
"unpacked": {
"array": [
- 33820,
- 33838,
- 33848,
- 35914
+ 131,
+ 132,
+ 133,
+ 134
]
}
}
]
},
{
- "packet": "Packet_Array_Field_EnumElement",
+ "packet": "Packet_Array_Field_ByteElement_VariableSize",
+ "tests": [
+ {
+ "packed": "00",
+ "unpacked": {
+ "array": []
+ }
+ },
+ {
+ "packed": "0f8780898a8b8c8d8e8f889192939495",
+ "unpacked": {
+ "array": [
+ 135,
+ 128,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 136,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_ByteElement_VariableCount",
+ "tests": [
+ {
+ "packed": "00",
+ "unpacked": {
+ "array": []
+ }
+ },
+ {
+ "packed": "0f969790999a9b9c9d9e9f98a1a2a3a4",
+ "unpacked": {
+ "array": [
+ 150,
+ 151,
+ 144,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 152,
+ 161,
+ 162,
+ 163,
+ 164
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_ByteElement_UnknownSize",
+ "tests": [
+ {
+ "packed": "",
+ "unpacked": {
+ "array": []
+ }
+ },
+ {
+ "packed": "a5a6a7",
+ "unpacked": {
+ "array": [
+ 165,
+ 166,
+ 167
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_ScalarElement_ConstantSize",
+ "tests": [
+ {
+ "packed": "a541ad53ad65ad77",
+ "unpacked": {
+ "array": [
+ 42305,
+ 44371,
+ 44389,
+ 44407
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_ScalarElement_VariableSize",
+ "tests": [
+ {
+ "packed": "00",
+ "unpacked": {
+ "array": []
+ }
+ },
+ {
+ "packed": "0ead81b593b5a5b5b7b5c1bdd3bde5",
+ "unpacked": {
+ "array": [
+ 44417,
+ 46483,
+ 46501,
+ 46519,
+ 46529,
+ 48595,
+ 48613
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_ScalarElement_VariableCount",
+ "tests": [
+ {
+ "packed": "00",
+ "unpacked": {
+ "array": []
+ }
+ },
+ {
+ "packed": "0fbdf7be01c613c625c637c641ce53ce65ce77ce81d693d6a5d6b7d6c1ded3",
+ "unpacked": {
+ "array": [
+ 48631,
+ 48641,
+ 50707,
+ 50725,
+ 50743,
+ 50753,
+ 52819,
+ 52837,
+ 52855,
+ 52865,
+ 54931,
+ 54949,
+ 54967,
+ 54977,
+ 57043
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_ScalarElement_UnknownSize",
+ "tests": [
+ {
+ "packed": "",
+ "unpacked": {
+ "array": []
+ }
+ },
+ {
+ "packed": "dee5def7df01",
+ "unpacked": {
+ "array": [
+ 57061,
+ 57079,
+ 57089
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_EnumElement_ConstantSize",
"tests": [
{
"packed": "aabbccddaabbccdd",
@@ -1135,10 +1317,118 @@
]
},
{
- "packet": "Packet_Array_Field_SizedStructElement",
+ "packet": "Packet_Array_Field_EnumElement_VariableSize",
"tests": [
{
- "packed": "00ff8b00",
+ "packed": "0eaabbccddaabbccddaabbccddaabb",
+ "unpacked": {
+ "array": [
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707
+ ]
+ }
+ },
+ {
+ "packed": "00",
+ "unpacked": {
+ "array": []
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_EnumElement_VariableCount",
+ "tests": [
+ {
+ "packed": "0faabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabb",
+ "unpacked": {
+ "array": [
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707
+ ]
+ }
+ },
+ {
+ "packed": "00",
+ "unpacked": {
+ "array": []
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_EnumElement_UnknownSize",
+ "tests": [
+ {
+ "packed": "aabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccdd",
+ "unpacked": {
+ "array": [
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445
+ ]
+ }
+ },
+ {
+ "packed": "",
+ "unpacked": {
+ "array": []
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_SizedElement_ConstantSize",
+ "tests": [
+ {
+ "packed": "00ffe200",
"unpacked": {
"array": [
{
@@ -1148,7 +1438,7 @@
"a": 255
},
{
- "a": 139
+ "a": 226
},
{
"a": 0
@@ -1159,34 +1449,65 @@
]
},
{
- "packet": "Packet_Array_Field_UnsizedStructElement",
+ "packet": "Packet_Array_Field_SizedElement_VariableSize",
"tests": [
{
- "packed": "00038d8e8f0003889192",
+ "packed": "0f00ffe400ffe500ffe600ffe700ffe0",
"unpacked": {
"array": [
{
- "array": []
+ "a": 0
},
{
- "array": [
- 141,
- 142,
- 143
- ]
+ "a": 255
},
{
- "array": []
+ "a": 228
},
{
- "array": [
- 136,
- 145,
- 146
- ]
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 229
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 230
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 231
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 224
}
]
}
+ },
+ {
+ "packed": "00",
+ "unpacked": {
+ "array": []
+ }
}
]
},
@@ -1194,159 +1515,53 @@
"packet": "Packet_Array_Field_SizedElement_VariableCount",
"tests": [
{
- "packed": "00",
- "unpacked": {
- "array": []
- }
- },
- {
- "packed": "0f94b794c19cd39ce59cf79d01a513a525a537a541ad53ad65ad77ad81b593",
- "unpacked": {
- "array": [
- 38071,
- 38081,
- 40147,
- 40165,
- 40183,
- 40193,
- 42259,
- 42277,
- 42295,
- 42305,
- 44371,
- 44389,
- 44407,
- 44417,
- 46483
- ]
- }
- }
- ]
- },
- {
- "packet": "Packet_Array_Field_SizedElement_VariableSize",
- "tests": [
- {
- "packed": "00",
- "unpacked": {
- "array": []
- }
- },
- {
- "packed": "0eb5a5b5b7b5c1bdd3bde5bdf7be01",
- "unpacked": {
- "array": [
- 46501,
- 46519,
- 46529,
- 48595,
- 48613,
- 48631,
- 48641
- ]
- }
- }
- ]
- },
- {
- "packet": "Packet_Array_Field_SizedElement_ConstantSize",
- "tests": [
- {
- "packed": "c613c625c637c641ce53ce65ce77ce81",
- "unpacked": {
- "array": [
- 50707,
- 50725,
- 50743,
- 50753,
- 52819,
- 52837,
- 52855,
- 52865
- ]
- }
- }
- ]
- },
- {
- "packet": "Packet_Array_Field_UnsizedElement_VariableCount",
- "tests": [
- {
- "packed": "0f0003d2d3d40003d5d6d70003d0d9da0003dbdcdd0003dedfd80003e1e2e30003e4e5e600",
+ "packed": "0f00ffea00ffeb00ffec00ffed00ffee",
"unpacked": {
"array": [
{
- "array": []
+ "a": 0
},
{
- "array": [
- 210,
- 211,
- 212
- ]
+ "a": 255
},
{
- "array": []
+ "a": 234
},
{
- "array": [
- 213,
- 214,
- 215
- ]
+ "a": 0
},
{
- "array": []
+ "a": 255
},
{
- "array": [
- 208,
- 217,
- 218
- ]
+ "a": 235
},
{
- "array": []
+ "a": 0
},
{
- "array": [
- 219,
- 220,
- 221
- ]
+ "a": 255
},
{
- "array": []
+ "a": 236
},
{
- "array": [
- 222,
- 223,
- 216
- ]
+ "a": 0
},
{
- "array": []
+ "a": 255
},
{
- "array": [
- 225,
- 226,
- 227
- ]
+ "a": 237
},
{
- "array": []
+ "a": 0
},
{
- "array": [
- 228,
- 229,
- 230
- ]
+ "a": 255
},
{
- "array": []
+ "a": 238
}
]
}
@@ -1360,47 +1575,113 @@
]
},
{
- "packet": "Packet_Array_Field_UnsizedElement_VariableSize",
+ "packet": "Packet_Array_Field_SizedElement_UnknownSize",
"tests": [
{
- "packed": "0f0003eaebec0003edeeef0003e8f1f2",
+ "packed": "00ffe800fff100fff200fff300fff400fff500fff600fff700fff000fff900ff",
"unpacked": {
"array": [
{
- "array": []
+ "a": 0
},
{
- "array": [
- 234,
- 235,
- 236
- ]
+ "a": 255
},
{
- "array": []
+ "a": 232
},
{
- "array": [
- 237,
- 238,
- 239
- ]
+ "a": 0
},
{
- "array": []
+ "a": 255
},
{
- "array": [
- 232,
- 241,
- 242
- ]
+ "a": 241
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 242
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 243
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 244
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 245
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 246
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 247
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 240
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 249
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
}
]
}
},
{
- "packed": "00",
+ "packed": "",
"unpacked": {
"array": []
}
@@ -1411,7 +1692,7 @@
"packet": "Packet_Array_Field_UnsizedElement_ConstantSize",
"tests": [
{
- "packed": "0003f6f7f00003f9fafb0003fcfdfe0003f80102",
+ "packed": "0003fbfcfd0003fef801",
"unpacked": {
"array": [
{
@@ -1419,29 +1700,9 @@
},
{
"array": [
- 246,
- 247,
- 240
- ]
- },
- {
- "array": []
- },
- {
- "array": [
- 249,
- 250,
- 251
- ]
- },
- {
- "array": []
- },
- {
- "array": [
+ 251,
252,
- 253,
- 254
+ 253
]
},
{
@@ -1449,9 +1710,9 @@
},
{
"array": [
+ 254,
248,
- 1,
- 2
+ 1
]
}
]
@@ -1460,10 +1721,10 @@
]
},
{
- "packet": "Packet_Array_Field_UnsizedElement_SizeModifier",
+ "packet": "Packet_Array_Field_UnsizedElement_VariableSize",
"tests": [
{
- "packed": "0d00030607000003090a0b00",
+ "packed": "0f0003050607000300090a00030b0c0d",
"unpacked": {
"array": [
{
@@ -1471,9 +1732,9 @@
},
{
"array": [
+ 5,
6,
- 7,
- 0
+ 7
]
},
{
@@ -1481,19 +1742,26 @@
},
{
"array": [
+ 0,
9,
- 10,
- 11
+ 10
]
},
{
"array": []
+ },
+ {
+ "array": [
+ 11,
+ 12,
+ 13
+ ]
}
]
}
},
{
- "packed": "02",
+ "packed": "00",
"unpacked": {
"array": []
}
@@ -1501,37 +1769,52 @@
]
},
{
- "packet": "Packet_Array_Field_SizedElement_VariableSize_Padded",
+ "packet": "Packet_Array_Field_UnsizedElement_VariableCount",
"tests": [
{
- "packed": "0000000000000000000000000000000000",
- "unpacked": {
- "array": []
- }
- },
- {
- "packed": "0e0878108a109c10ae10b818ca18dc0000",
+ "packed": "0f00031112130003141516000317101900031a1b1c00031d1e1f0003182122000323242500",
"unpacked": {
"array": [
- 2168,
- 4234,
- 4252,
- 4270,
- 4280,
- 6346,
- 6364
- ]
- }
- }
- ]
- },
- {
- "packet": "Packet_Array_Field_UnsizedElement_VariableCount_Padded",
- "tests": [
- {
- "packed": "0700031d1e1f0003182122000323242500",
- "unpacked": {
- "array": [
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 17,
+ 18,
+ 19
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 20,
+ 21,
+ 22
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 23,
+ 16,
+ 25
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 26,
+ 27,
+ 28
+ ]
+ },
{
"array": []
},
@@ -1569,6 +1852,301 @@
}
},
{
+ "packed": "00",
+ "unpacked": {
+ "array": []
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_UnsizedElement_UnknownSize",
+ "tests": [
+ {
+ "packed": "0003292a2b00032c2d2e00032f283100033233340003353637000330393a00033b3c3d00033e3f3800034142430003444546000347404900034a4b4c00034d4e4f000348515200035354550003565750",
+ "unpacked": {
+ "array": [
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 41,
+ 42,
+ 43
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 44,
+ 45,
+ 46
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 47,
+ 40,
+ 49
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 50,
+ 51,
+ 52
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 53,
+ 54,
+ 55
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 48,
+ 57,
+ 58
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 59,
+ 60,
+ 61
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 62,
+ 63,
+ 56
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 65,
+ 66,
+ 67
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 68,
+ 69,
+ 70
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 71,
+ 64,
+ 73
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 74,
+ 75,
+ 76
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 77,
+ 78,
+ 79
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 72,
+ 81,
+ 82
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 83,
+ 84,
+ 85
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 86,
+ 87,
+ 80
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "packed": "",
+ "unpacked": {
+ "array": []
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_UnsizedElement_SizeModifier",
+ "tests": [
+ {
+ "packed": "0d00035c5d5e00035f586100",
+ "unpacked": {
+ "array": [
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 92,
+ 93,
+ 94
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 95,
+ 88,
+ 97
+ ]
+ },
+ {
+ "array": []
+ }
+ ]
+ }
+ },
+ {
+ "packed": "02",
+ "unpacked": {
+ "array": []
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_SizedElement_VariableSize_Padded",
+ "tests": [
+ {
+ "packed": "0000000000000000000000000000000000",
+ "unpacked": {
+ "array": []
+ }
+ },
+ {
+ "packed": "0e632e63386b4a6b5c6b6e6b78738a0000",
+ "unpacked": {
+ "array": [
+ 25390,
+ 25400,
+ 27466,
+ 27484,
+ 27502,
+ 27512,
+ 29578
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_UnsizedElement_VariableCount_Padded",
+ "tests": [
+ {
+ "packed": "07000373747500037677700003797a7b00",
+ "unpacked": {
+ "array": [
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 115,
+ 116,
+ 117
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 118,
+ 119,
+ 112
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 121,
+ 122,
+ 123
+ ]
+ },
+ {
+ "array": []
+ }
+ ]
+ }
+ },
+ {
"packed": "0000000000000000000000000000000000",
"unpacked": {
"array": []
@@ -1596,10 +2174,10 @@
"packet": "ScalarChild_A"
},
{
- "packed": "000129",
+ "packed": "00017f",
"unpacked": {
"a": 0,
- "b": 41
+ "b": 127
},
"packet": "ScalarChild_A"
},
@@ -1620,10 +2198,10 @@
"packet": "ScalarChild_B"
},
{
- "packed": "01022953",
+ "packed": "01027c01",
"unpacked": {
"a": 1,
- "c": 10579
+ "c": 31745
},
"packet": "ScalarChild_B"
},
@@ -1644,10 +2222,10 @@
"packet": "AliasedChild_A"
},
{
- "packed": "02012f",
+ "packed": "020185",
"unpacked": {
"a": 2,
- "b": 47
+ "b": 133
},
"packet": "AliasedChild_A"
},
@@ -1668,10 +2246,10 @@
"packet": "AliasedChild_B"
},
{
- "packed": "03022981",
+ "packed": "03028437",
"unpacked": {
"a": 3,
- "c": 10625
+ "c": 33847
},
"packet": "AliasedChild_B"
}
@@ -1697,10 +2275,10 @@
"packet": "EnumChild_A"
},
{
- "packed": "aabb012c",
+ "packed": "aabb0182",
"unpacked": {
"a": 43707,
- "b": 44
+ "b": 130
},
"packet": "EnumChild_A"
},
@@ -1721,10 +2299,10 @@
"packet": "EnumChild_B"
},
{
- "packed": "ccdd02296e",
+ "packed": "ccdd02841c",
"unpacked": {
"a": 52445,
- "c": 10606
+ "c": 33820
},
"packet": "EnumChild_B"
}
@@ -1752,11 +2330,11 @@
}
},
{
- "packed": "319199a1a9b1bc01",
+ "packed": "84444c545c646f01",
"unpacked": {
"s": {
"a": 1,
- "c": 27904725774197624
+ "c": 74459583098702046
}
}
},
@@ -1779,11 +2357,11 @@
}
},
{
- "packed": "319199a1a9b1bc02",
+ "packed": "84444c545c646f02",
"unpacked": {
"s": {
"a": 2,
- "c": 27904725774197624
+ "c": 74459583098702046
}
}
}
@@ -1811,11 +2389,11 @@
}
},
{
- "packed": "39d1d9e1e9f1f800",
+ "packed": "8c848c949ca4ac00",
"unpacked": {
"s": {
"a": 0,
- "c": 8137403700410620
+ "c": 19776118031536726
}
}
},
@@ -1838,38 +2416,38 @@
}
},
{
- "packed": "39d1d9e1e9f1f87f",
+ "packed": "8c848c949ca4ac7f",
"unpacked": {
"s": {
"a": 127,
- "c": 8137403700410620
+ "c": 19776118031536726
}
}
},
{
- "packed": "0000000000000019",
+ "packed": "0000000000000047",
"unpacked": {
"s": {
- "a": 25,
+ "a": 71,
"c": 0
}
}
},
{
- "packed": "fffffffffffffe19",
+ "packed": "fffffffffffffe47",
"unpacked": {
"s": {
- "a": 25,
+ "a": 71,
"c": 36028797018963967
}
}
},
{
- "packed": "39d1d9e1e9f1f819",
+ "packed": "8c848c949ca4ac47",
"unpacked": {
"s": {
- "a": 25,
- "c": 8137403700410620
+ "a": 71,
+ "c": 19776118031536726
}
}
}
@@ -1888,18 +2466,18 @@
}
},
{
- "packed": "000000000000000748494a4b4c4d4e",
+ "packed": "00000000000000079e9fa0a1a2a3a4",
"unpacked": {
"s": {
"a": 0,
"b": [
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78
+ 158,
+ 159,
+ 160,
+ 161,
+ 162,
+ 163,
+ 164
]
}
}
@@ -1914,44 +2492,44 @@
}
},
{
- "packed": "ffffffffffffffff48494a4b4c4d4e",
+ "packed": "ffffffffffffffff9e9fa0a1a2a3a4",
"unpacked": {
"s": {
"a": 2305843009213693951,
"b": [
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78
+ 158,
+ 159,
+ 160,
+ 161,
+ 162,
+ 163,
+ 164
]
}
}
},
{
- "packed": "4105090d11151a38",
+ "packed": "965e62666a6e70e8",
"unpacked": {
"s": {
- "a": 585645117384336199,
+ "a": 1354400743188975133,
"b": []
}
}
},
{
- "packed": "4105090d11151a3f48494a4b4c4d4e",
+ "packed": "965e62666a6e70ef9e9fa0a1a2a3a4",
"unpacked": {
"s": {
- "a": 585645117384336199,
+ "a": 1354400743188975133,
"b": [
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78
+ 158,
+ 159,
+ 160,
+ 161,
+ 162,
+ 163,
+ 164
]
}
}
@@ -1971,18 +2549,18 @@
}
},
{
- "packed": "00000000000000075758595a5b5c5d",
+ "packed": "0000000000000007adaeafa0b1b2b3",
"unpacked": {
"s": {
"a": 0,
"b": [
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93
+ 173,
+ 174,
+ 175,
+ 160,
+ 177,
+ 178,
+ 179
]
}
}
@@ -1997,44 +2575,44 @@
}
},
{
- "packed": "ffffffffffffffff5758595a5b5c5d",
+ "packed": "ffffffffffffffffadaeafa0b1b2b3",
"unpacked": {
"s": {
"a": 2305843009213693951,
"b": [
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93
+ 173,
+ 174,
+ 175,
+ 160,
+ 177,
+ 178,
+ 179
]
}
}
},
{
- "packed": "27a828a929aa2ab0",
+ "packed": "d2d353d454d555e0",
"unpacked": {
"s": {
- "a": 357197333822522710,
+ "a": 1898947267434031804,
"b": []
}
}
},
{
- "packed": "27a828a929aa2ab75758595a5b5c5d",
+ "packed": "d2d353d454d555e7adaeafa0b1b2b3",
"unpacked": {
"s": {
- "a": 357197333822522710,
+ "a": 1898947267434031804,
"b": [
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93
+ 173,
+ 174,
+ 175,
+ 160,
+ 177,
+ 178,
+ 179
]
}
}
@@ -2061,10 +2639,10 @@
}
},
{
- "packed": "55e5f60616263207",
+ "packed": "bb4b5b6b7b8b9d07",
"unpacked": {
"s": {
- "b": 48356435694472292
+ "b": 105437353324517178
}
}
}
@@ -2090,10 +2668,10 @@
}
},
{
- "packed": "6caccced0d2d5581",
+ "packed": "b77797b7d7f80081",
"unpacked": {
"s": {
- "b": 61178587270240939
+ "b": 103282828492402689
}
}
}
@@ -2145,12 +2723,12 @@
}
},
{
- "packed": "00005baf0a",
+ "packed": "0000f105f6",
"unpacked": {
"s": {
"a": 0,
- "b": 23471,
- "crc": 10
+ "b": 61701,
+ "crc": 246
}
}
},
@@ -2175,42 +2753,42 @@
}
},
{
- "packed": "ffff5baf08",
+ "packed": "fffff105f4",
"unpacked": {
"s": {
"a": 65535,
- "b": 23471,
- "crc": 8
+ "b": 61701,
+ "crc": 244
}
}
},
{
- "packed": "5b2d000088",
+ "packed": "f083000073",
"unpacked": {
"s": {
- "a": 23341,
+ "a": 61571,
"b": 0,
- "crc": 136
+ "crc": 115
}
}
},
{
- "packed": "5b2dffff86",
+ "packed": "f083ffff71",
"unpacked": {
"s": {
- "a": 23341,
+ "a": 61571,
"b": 65535,
- "crc": 134
+ "crc": 113
}
}
},
{
- "packed": "5b2d5baf92",
+ "packed": "f083f10569",
"unpacked": {
"s": {
- "a": 23341,
- "b": 23471,
- "crc": 146
+ "a": 61571,
+ "b": 61701,
+ "crc": 105
}
}
}
@@ -2242,13 +2820,13 @@
}
},
{
- "packed": "0000005df8",
+ "packed": "000000f34e",
"unpacked": {
"s": {
"payload": [],
"crc": 0,
"a": 0,
- "b": 24056
+ "b": 62286
}
}
},
@@ -2275,199 +2853,199 @@
}
},
{
- "packed": "00ffff5df8",
+ "packed": "00fffff34e",
"unpacked": {
"s": {
"payload": [],
"crc": 0,
"a": 65535,
- "b": 24056
+ "b": 62286
}
}
},
{
- "packed": "005d760000",
+ "packed": "00f2cc0000",
"unpacked": {
"s": {
"payload": [],
"crc": 0,
- "a": 23926,
+ "a": 62156,
"b": 0
}
}
},
{
- "packed": "005d76ffff",
+ "packed": "00f2ccffff",
"unpacked": {
"s": {
"payload": [],
"crc": 0,
- "a": 23926,
+ "a": 62156,
"b": 65535
}
}
},
{
- "packed": "005d765df8",
+ "packed": "00f2ccf34e",
"unpacked": {
"s": {
"payload": [],
"crc": 0,
- "a": 23926,
- "b": 24056
+ "a": 62156,
+ "b": 62286
}
}
},
{
- "packed": "70717273743a00000000",
+ "packed": "c6c7c8c9cae800000000",
"unpacked": {
"s": {
"payload": [
- 112,
- 113,
- 114,
- 115,
- 116
+ 198,
+ 199,
+ 200,
+ 201,
+ 202
],
- "crc": 58,
+ "crc": 232,
"a": 0,
"b": 0
}
}
},
{
- "packed": "70717273743a0000ffff",
+ "packed": "c6c7c8c9cae80000ffff",
"unpacked": {
"s": {
"payload": [
- 112,
- 113,
- 114,
- 115,
- 116
+ 198,
+ 199,
+ 200,
+ 201,
+ 202
],
- "crc": 58,
+ "crc": 232,
"a": 0,
"b": 65535
}
}
},
{
- "packed": "70717273743a00005df8",
+ "packed": "c6c7c8c9cae80000f34e",
"unpacked": {
"s": {
"payload": [
- 112,
- 113,
- 114,
- 115,
- 116
+ 198,
+ 199,
+ 200,
+ 201,
+ 202
],
- "crc": 58,
+ "crc": 232,
"a": 0,
- "b": 24056
+ "b": 62286
}
}
},
{
- "packed": "70717273743affff0000",
+ "packed": "c6c7c8c9cae8ffff0000",
"unpacked": {
"s": {
"payload": [
- 112,
- 113,
- 114,
- 115,
- 116
+ 198,
+ 199,
+ 200,
+ 201,
+ 202
],
- "crc": 58,
+ "crc": 232,
"a": 65535,
"b": 0
}
}
},
{
- "packed": "70717273743affffffff",
+ "packed": "c6c7c8c9cae8ffffffff",
"unpacked": {
"s": {
"payload": [
- 112,
- 113,
- 114,
- 115,
- 116
+ 198,
+ 199,
+ 200,
+ 201,
+ 202
],
- "crc": 58,
+ "crc": 232,
"a": 65535,
"b": 65535
}
}
},
{
- "packed": "70717273743affff5df8",
+ "packed": "c6c7c8c9cae8fffff34e",
"unpacked": {
"s": {
"payload": [
- 112,
- 113,
- 114,
- 115,
- 116
+ 198,
+ 199,
+ 200,
+ 201,
+ 202
],
- "crc": 58,
+ "crc": 232,
"a": 65535,
- "b": 24056
+ "b": 62286
}
}
},
{
- "packed": "70717273743a5d760000",
+ "packed": "c6c7c8c9cae8f2cc0000",
"unpacked": {
"s": {
"payload": [
- 112,
- 113,
- 114,
- 115,
- 116
+ 198,
+ 199,
+ 200,
+ 201,
+ 202
],
- "crc": 58,
- "a": 23926,
+ "crc": 232,
+ "a": 62156,
"b": 0
}
}
},
{
- "packed": "70717273743a5d76ffff",
+ "packed": "c6c7c8c9cae8f2ccffff",
"unpacked": {
"s": {
"payload": [
- 112,
- 113,
- 114,
- 115,
- 116
+ 198,
+ 199,
+ 200,
+ 201,
+ 202
],
- "crc": 58,
- "a": 23926,
+ "crc": 232,
+ "a": 62156,
"b": 65535
}
}
},
{
- "packed": "70717273743a5d765df8",
+ "packed": "c6c7c8c9cae8f2ccf34e",
"unpacked": {
"s": {
"payload": [
- 112,
- 113,
- 114,
- 115,
- 116
+ 198,
+ 199,
+ 200,
+ 201,
+ 202
],
- "crc": 58,
- "a": 23926,
- "b": 24056
+ "crc": 232,
+ "a": 62156,
+ "b": 62286
}
}
}
@@ -2488,16 +3066,16 @@
}
},
{
- "packed": "00037a7b7c",
+ "packed": "0003d0d1d2",
"unpacked": {
"a": {
"a": 0
},
"b": {
"array": [
- 122,
- 123,
- 124
+ 208,
+ 209,
+ 210
]
}
}
@@ -2514,25 +3092,25 @@
}
},
{
- "packed": "ff037a7b7c",
+ "packed": "ff03d0d1d2",
"unpacked": {
"a": {
"a": 255
},
"b": {
"array": [
- 122,
- 123,
- 124
+ 208,
+ 209,
+ 210
]
}
}
},
{
- "packed": "7900",
+ "packed": "cf00",
"unpacked": {
"a": {
- "a": 121
+ "a": 207
},
"b": {
"array": []
@@ -2540,16 +3118,16 @@
}
},
{
- "packed": "79037a7b7c",
+ "packed": "cf03d0d1d2",
"unpacked": {
"a": {
- "a": 121
+ "a": 207
},
"b": {
"array": [
- 122,
- 123,
- 124
+ 208,
+ 209,
+ 210
]
}
}
@@ -2557,17 +3135,17 @@
]
},
{
- "packet": "Struct_Array_Field_ScalarElement",
+ "packet": "Struct_Array_Field_ByteElement_ConstantSize",
"tests": [
{
- "packed": "5f7e5fc0a042a0c4",
+ "packed": "d3d4d5d6",
"unpacked": {
"s": {
"array": [
- 24446,
- 24512,
- 41026,
- 41156
+ 211,
+ 212,
+ 213,
+ 214
]
}
}
@@ -2575,7 +3153,215 @@
]
},
{
- "packet": "Struct_Array_Field_EnumElement",
+ "packet": "Struct_Array_Field_ByteElement_VariableSize",
+ "tests": [
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ },
+ {
+ "packed": "0fd7d8d9dadbdcdddedfe0e1e2e3e4e5",
+ "unpacked": {
+ "s": {
+ "array": [
+ 215,
+ 216,
+ 217,
+ 218,
+ 219,
+ 220,
+ 221,
+ 222,
+ 223,
+ 224,
+ 225,
+ 226,
+ 227,
+ 228,
+ 229
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_ByteElement_VariableCount",
+ "tests": [
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ },
+ {
+ "packed": "0fe6e7e8e9eaebecedeeeff0f1f2f3f4",
+ "unpacked": {
+ "s": {
+ "array": [
+ 230,
+ 231,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 237,
+ 238,
+ 239,
+ 240,
+ 241,
+ 242,
+ 243,
+ 244
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_ByteElement_UnknownSize",
+ "tests": [
+ {
+ "packed": "",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ },
+ {
+ "packed": "f5f6f7",
+ "unpacked": {
+ "s": {
+ "array": [
+ 245,
+ 246,
+ 247
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_ScalarElement_ConstantSize",
+ "tests": [
+ {
+ "packed": "fe39febbff3dff80",
+ "unpacked": {
+ "s": {
+ "array": [
+ 65081,
+ 65211,
+ 65341,
+ 65408
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_ScalarElement_VariableSize",
+ "tests": [
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ },
+ {
+ "packed": "0e004200c4014601c8024a02cc034e",
+ "unpacked": {
+ "s": {
+ "array": [
+ 66,
+ 196,
+ 326,
+ 456,
+ 586,
+ 716,
+ 846
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_ScalarElement_VariableCount",
+ "tests": [
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ },
+ {
+ "packed": "0f03d0045204d4055605d8065a06dc075e07e0086208e4096609e80a6a0aec",
+ "unpacked": {
+ "s": {
+ "array": [
+ 976,
+ 1106,
+ 1236,
+ 1366,
+ 1496,
+ 1626,
+ 1756,
+ 1886,
+ 2016,
+ 2146,
+ 2276,
+ 2406,
+ 2536,
+ 2666,
+ 2796
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_ScalarElement_UnknownSize",
+ "tests": [
+ {
+ "packed": "",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ },
+ {
+ "packed": "0b6e0bf00c72",
+ "unpacked": {
+ "s": {
+ "array": [
+ 2926,
+ 3056,
+ 3186
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_EnumElement_ConstantSize",
"tests": [
{
"packed": "aabbccddaabbccdd",
@@ -2593,10 +3379,130 @@
]
},
{
- "packet": "Struct_Array_Field_SizedStructElement",
+ "packet": "Struct_Array_Field_EnumElement_VariableSize",
"tests": [
{
- "packed": "00ff8500",
+ "packed": "0eaabbccddaabbccddaabbccddaabb",
+ "unpacked": {
+ "s": {
+ "array": [
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707
+ ]
+ }
+ }
+ },
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_EnumElement_VariableCount",
+ "tests": [
+ {
+ "packed": "0faabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabb",
+ "unpacked": {
+ "s": {
+ "array": [
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707
+ ]
+ }
+ }
+ },
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_EnumElement_UnknownSize",
+ "tests": [
+ {
+ "packed": "aabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccdd",
+ "unpacked": {
+ "s": {
+ "array": [
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445
+ ]
+ }
+ }
+ },
+ {
+ "packed": "",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_SizedElement_ConstantSize",
+ "tests": [
+ {
+ "packed": "00ff3300",
"unpacked": {
"s": {
"array": [
@@ -2607,7 +3513,7 @@
"a": 255
},
{
- "a": 133
+ "a": 51
},
{
"a": 0
@@ -2619,36 +3525,69 @@
]
},
{
- "packet": "Struct_Array_Field_UnsizedStructElement",
+ "packet": "Struct_Array_Field_SizedElement_VariableSize",
"tests": [
{
- "packed": "000387888900038a8b8c",
+ "packed": "0f00ff3500ff3600ff3700ff3800ff39",
"unpacked": {
"s": {
"array": [
{
- "array": []
+ "a": 0
},
{
- "array": [
- 135,
- 136,
- 137
- ]
+ "a": 255
},
{
- "array": []
+ "a": 53
},
{
- "array": [
- 138,
- 139,
- 140
- ]
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 54
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 55
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 56
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 57
}
]
}
}
+ },
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
}
]
},
@@ -2656,170 +3595,54 @@
"packet": "Struct_Array_Field_SizedElement_VariableCount",
"tests": [
{
- "packed": "00",
- "unpacked": {
- "s": {
- "array": []
- }
- }
- },
- {
- "packed": "0fa411a493a515a597a619a69ba71da79fa821a8a3a925a9a7aa29aaabab2d",
- "unpacked": {
- "s": {
- "array": [
- 42001,
- 42131,
- 42261,
- 42391,
- 42521,
- 42651,
- 42781,
- 42911,
- 43041,
- 43171,
- 43301,
- 43431,
- 43561,
- 43691,
- 43821
- ]
- }
- }
- }
- ]
- },
- {
- "packet": "Struct_Array_Field_SizedElement_VariableSize",
- "tests": [
- {
- "packed": "00",
- "unpacked": {
- "s": {
- "array": []
- }
- }
- },
- {
- "packed": "0eabafac31acb3ad35adb7ae39aebb",
- "unpacked": {
- "s": {
- "array": [
- 43951,
- 44081,
- 44211,
- 44341,
- 44471,
- 44601,
- 44731
- ]
- }
- }
- }
- ]
- },
- {
- "packet": "Struct_Array_Field_SizedElement_ConstantSize",
- "tests": [
- {
- "packed": "af3dafbfb001f083f105f187f209f28b",
- "unpacked": {
- "s": {
- "array": [
- 44861,
- 44991,
- 45057,
- 61571,
- 61701,
- 61831,
- 61961,
- 62091
- ]
- }
- }
- }
- ]
- },
- {
- "packet": "Struct_Array_Field_UnsizedElement_VariableCount",
- "tests": [
- {
- "packed": "0f0003cccdce0003cfd0d10003d2d3d40003d5d6d70003d8d9da0003dbdcdd0003dedfe000",
+ "packed": "0f00ff3b00ff3c00ff3d00ff3e00ff3f",
"unpacked": {
"s": {
"array": [
{
- "array": []
+ "a": 0
},
{
- "array": [
- 204,
- 205,
- 206
- ]
+ "a": 255
},
{
- "array": []
+ "a": 59
},
{
- "array": [
- 207,
- 208,
- 209
- ]
+ "a": 0
},
{
- "array": []
+ "a": 255
},
{
- "array": [
- 210,
- 211,
- 212
- ]
+ "a": 60
},
{
- "array": []
+ "a": 0
},
{
- "array": [
- 213,
- 214,
- 215
- ]
+ "a": 255
},
{
- "array": []
+ "a": 61
},
{
- "array": [
- 216,
- 217,
- 218
- ]
+ "a": 0
},
{
- "array": []
+ "a": 255
},
{
- "array": [
- 219,
- 220,
- 221
- ]
+ "a": 62
},
{
- "array": []
+ "a": 0
},
{
- "array": [
- 222,
- 223,
- 224
- ]
+ "a": 255
},
{
- "array": []
+ "a": 63
}
]
}
@@ -2836,49 +3659,115 @@
]
},
{
- "packet": "Struct_Array_Field_UnsizedElement_VariableSize",
+ "packet": "Struct_Array_Field_SizedElement_UnknownSize",
"tests": [
{
- "packed": "0f0003e4e5e60003e7e8e90003eaebec",
+ "packed": "00ff4100ff4200ff4300ff4400ff4500ff4600ff4700ff4800ff4900ff4a00ff",
"unpacked": {
"s": {
"array": [
{
- "array": []
+ "a": 0
},
{
- "array": [
- 228,
- 229,
- 230
- ]
+ "a": 255
},
{
- "array": []
+ "a": 65
},
{
- "array": [
- 231,
- 232,
- 233
- ]
+ "a": 0
},
{
- "array": []
+ "a": 255
},
{
- "array": [
- 234,
- 235,
- 236
- ]
+ "a": 66
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 67
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 68
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 69
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 70
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 71
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 72
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 73
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 74
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
}
]
}
}
},
{
- "packed": "00",
+ "packed": "",
"unpacked": {
"s": {
"array": []
@@ -2891,7 +3780,7 @@
"packet": "Struct_Array_Field_UnsizedElement_ConstantSize",
"tests": [
{
- "packed": "0003f0f1f20003f3f4f50003f6f7f80003f9fafb",
+ "packed": "00034c4d4e00034f5051",
"unpacked": {
"s": {
"array": [
@@ -2900,9 +3789,9 @@
},
{
"array": [
- 240,
- 241,
- 242
+ 76,
+ 77,
+ 78
]
},
{
@@ -2910,29 +3799,9 @@
},
{
"array": [
- 243,
- 244,
- 245
- ]
- },
- {
- "array": []
- },
- {
- "array": [
- 246,
- 247,
- 248
- ]
- },
- {
- "array": []
- },
- {
- "array": [
- 249,
- 250,
- 251
+ 79,
+ 80,
+ 81
]
}
]
@@ -2942,10 +3811,10 @@
]
},
{
- "packet": "Struct_Array_Field_UnsizedElement_SizeModifier",
+ "packet": "Struct_Array_Field_UnsizedElement_VariableSize",
"tests": [
{
- "packed": "0d0003c00102000303040500",
+ "packed": "0f0003555657000358595a00035b5c5d",
"unpacked": {
"s": {
"array": [
@@ -2954,9 +3823,9 @@
},
{
"array": [
- 192,
- 1,
- 2
+ 85,
+ 86,
+ 87
]
},
{
@@ -2964,9 +3833,338 @@
},
{
"array": [
- 3,
- 4,
- 5
+ 88,
+ 89,
+ 90
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 91,
+ 92,
+ 93
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_UnsizedElement_VariableCount",
+ "tests": [
+ {
+ "packed": "0f00036162630003646566000367686900036a6b6c00036d6e6f0003707172000373747500",
+ "unpacked": {
+ "s": {
+ "array": [
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 97,
+ 98,
+ 99
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 100,
+ 101,
+ 102
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 103,
+ 104,
+ 105
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 106,
+ 107,
+ 108
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 109,
+ 110,
+ 111
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 112,
+ 113,
+ 114
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 115,
+ 116,
+ 117
+ ]
+ },
+ {
+ "array": []
+ }
+ ]
+ }
+ }
+ },
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_UnsizedElement_UnknownSize",
+ "tests": [
+ {
+ "packed": "0003797a7b00037c7d7e00037f408100038283840003858687000388898a00038b8c8d00038e8f9000039192930003949596000397989900039a9b9c00039d9e9f0003a0a1a20003a3a4a50003a6a7a8",
+ "unpacked": {
+ "s": {
+ "array": [
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 121,
+ 122,
+ 123
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 124,
+ 125,
+ 126
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 127,
+ 64,
+ 129
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 130,
+ 131,
+ 132
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 133,
+ 134,
+ 135
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 136,
+ 137,
+ 138
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 139,
+ 140,
+ 141
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 142,
+ 143,
+ 144
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 145,
+ 146,
+ 147
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 148,
+ 149,
+ 150
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 151,
+ 152,
+ 153
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 154,
+ 155,
+ 156
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 157,
+ 158,
+ 159
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 160,
+ 161,
+ 162
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 163,
+ 164,
+ 165
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 166,
+ 167,
+ 168
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "packed": "",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_UnsizedElement_SizeModifier",
+ "tests": [
+ {
+ "packed": "0d0003acadae0003afb0b100",
+ "unpacked": {
+ "s": {
+ "array": [
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 172,
+ 173,
+ 174
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 175,
+ 176,
+ 177
]
},
{
@@ -2998,17 +4196,17 @@
}
},
{
- "packed": "0e024a02cc034e03d0045204d405560000",
+ "packed": "0ead76adf8ae7aaefcaf7eafc0f0420000",
"unpacked": {
"s": {
"array": [
- 586,
- 716,
- 846,
- 976,
- 1106,
- 1236,
- 1366
+ 44406,
+ 44536,
+ 44666,
+ 44796,
+ 44926,
+ 44992,
+ 61506
]
}
}
@@ -3019,7 +4217,7 @@
"packet": "Struct_Array_Field_UnsizedElement_VariableCount_Padded",
"tests": [
{
- "packed": "07000317181900031a1b1c00031d1e1f00",
+ "packed": "070003c3c4c50003c6c7c80003c9cacb00",
"unpacked": {
"s": {
"array": [
@@ -3028,9 +4226,9 @@
},
{
"array": [
- 23,
- 24,
- 25
+ 195,
+ 196,
+ 197
]
},
{
@@ -3038,9 +4236,9 @@
},
{
"array": [
- 26,
- 27,
- 28
+ 198,
+ 199,
+ 200
]
},
{
@@ -3048,9 +4246,9 @@
},
{
"array": [
- 29,
- 30,
- 31
+ 201,
+ 202,
+ 203
]
},
{
diff --git a/tools/pdl/tests/canonical/le_test_file.pdl b/tools/pdl/tests/canonical/le_test_file.pdl
index fa06829..a6c7610 100644
--- a/tools/pdl/tests/canonical/le_test_file.pdl
+++ b/tools/pdl/tests/canonical/le_test_file.pdl
@@ -228,76 +228,113 @@
a: UnsizedCustomField,
}
-// Array fields
-// Array element types
+// Array field configurations.
+// Add constructs for all configurations of type, size, and padding:
+//
+// - type: u8, u16, enum, struct with static size, struct with dynamic size
+// - size: constant, with size field, with count field, unspecified
+//
+// The type u8 is tested separately since it is likely to be handled
+// idiomatically by the specific language generators.
-// Array with scalar elements.
-packet Packet_Array_Field_ScalarElement {
+packet Packet_Array_Field_ByteElement_ConstantSize {
+ array: 8[4],
+}
+
+packet Packet_Array_Field_ByteElement_VariableSize {
+ _size_(array) : 4,
+ _reserved_: 4,
+ array: 8[],
+}
+
+packet Packet_Array_Field_ByteElement_VariableCount {
+ _count_(array) : 4,
+ _reserved_: 4,
+ array: 8[],
+}
+
+packet Packet_Array_Field_ByteElement_UnknownSize {
+ array: 8[],
+}
+
+packet Packet_Array_Field_ScalarElement_ConstantSize {
array: 16[4],
}
-// Array with enum elements.
-packet Packet_Array_Field_EnumElement {
- array: Enum16[4],
-}
-
-// Array with sized structure elements.
-packet Packet_Array_Field_SizedStructElement {
- array: SizedStruct[4],
-}
-
-// Array with variable sized structure elements.
-packet Packet_Array_Field_UnsizedStructElement {
- array: UnsizedStruct[4],
-}
-
-// Array configurations
-
-// Array with sized elements, and a variable count.
-// The parser must extract as many elements as specified by the count from
-// the remaining span. The parser should generate a dynamic array size guard.
-packet Packet_Array_Field_SizedElement_VariableCount {
- _count_(array) : 4,
- _reserved_: 4,
- array: 16[],
-}
-
-// The parser must extract as many elements as possible from
-// the span with the specified size. The parser should generate a
-// dynamic array size guard.
-packet Packet_Array_Field_SizedElement_VariableSize {
+packet Packet_Array_Field_ScalarElement_VariableSize {
_size_(array) : 4,
_reserved_: 4,
array: 16[],
}
-// The parser must extract as many elements as specified by the
-// static array count. The parser should generate a static array size guard.
-packet Packet_Array_Field_SizedElement_ConstantSize {
- array: 16[8],
-}
-
-// The parser must extract as many elements as specified by the count from
-// the remaining span. No size guard possible.
-packet Packet_Array_Field_UnsizedElement_VariableCount {
+packet Packet_Array_Field_ScalarElement_VariableCount {
_count_(array) : 4,
_reserved_: 4,
- array: UnsizedStruct[],
+ array: 16[],
}
-// The parser must extract as many elements as possible from
-// the span with the specified size. The parser should generate a
-// dynamic array size guard.
+packet Packet_Array_Field_ScalarElement_UnknownSize {
+ array: 16[],
+}
+
+packet Packet_Array_Field_EnumElement_ConstantSize {
+ array: Enum16[4],
+}
+
+packet Packet_Array_Field_EnumElement_VariableSize {
+ _size_(array) : 4,
+ _reserved_: 4,
+ array: Enum16[],
+}
+
+packet Packet_Array_Field_EnumElement_VariableCount {
+ _count_(array) : 4,
+ _reserved_: 4,
+ array: Enum16[],
+}
+
+packet Packet_Array_Field_EnumElement_UnknownSize {
+ array: Enum16[],
+}
+
+packet Packet_Array_Field_SizedElement_ConstantSize {
+ array: SizedStruct[4],
+}
+
+packet Packet_Array_Field_SizedElement_VariableSize {
+ _size_(array) : 4,
+ _reserved_: 4,
+ array: SizedStruct[],
+}
+
+packet Packet_Array_Field_SizedElement_VariableCount {
+ _count_(array) : 4,
+ _reserved_: 4,
+ array: SizedStruct[],
+}
+
+packet Packet_Array_Field_SizedElement_UnknownSize {
+ array: SizedStruct[],
+}
+
+packet Packet_Array_Field_UnsizedElement_ConstantSize {
+ array: UnsizedStruct[4],
+}
+
packet Packet_Array_Field_UnsizedElement_VariableSize {
_size_(array) : 4,
_reserved_: 4,
array: UnsizedStruct[],
}
-// The parser must extract as many elements as specified by the
-// static array count. No size guard possible.
-packet Packet_Array_Field_UnsizedElement_ConstantSize {
- array: UnsizedStruct[8],
+packet Packet_Array_Field_UnsizedElement_VariableCount {
+ _count_(array) : 4,
+ _reserved_: 4,
+ array: UnsizedStruct[],
+}
+
+packet Packet_Array_Field_UnsizedElement_UnknownSize {
+ array: UnsizedStruct[],
}
// The parser must support complex size modifiers on arrays whose size is
@@ -535,90 +572,150 @@
s: Struct_Custom_Field_VariableSize_,
}
-// Array fields
-// Array element types
+// Array field configurations.
+// Add constructs for all configurations of type, size, and padding:
+//
+// - type: u8, u16, enum, struct with static size, struct with dynamic size
+// - size: constant, with size field, with count field, unspecified
+//
+// The type u8 is tested separately since it is likely to be handled
+// idiomatically by the specific language generators.
-// Array with scalar elements.
-struct Struct_Array_Field_ScalarElement_ {
- array: 16[4],
+struct Struct_Array_Field_ByteElement_ConstantSize_ {
+ array: 8[4],
}
-packet Struct_Array_Field_ScalarElement {
- s: Struct_Array_Field_ScalarElement_,
+packet Struct_Array_Field_ByteElement_ConstantSize {
+ s: Struct_Array_Field_ByteElement_ConstantSize_,
}
-// Array with enum elements.
-struct Struct_Array_Field_EnumElement_ {
- array: Enum16[4],
+struct Struct_Array_Field_ByteElement_VariableSize_ {
+ _size_(array) : 4,
+ _reserved_: 4,
+ array: 8[],
}
-packet Struct_Array_Field_EnumElement {
- s: Struct_Array_Field_EnumElement_,
+packet Struct_Array_Field_ByteElement_VariableSize {
+ s: Struct_Array_Field_ByteElement_VariableSize_,
}
-// Array with sized structure elements.
-struct Struct_Array_Field_SizedStructElement_ {
- array: SizedStruct[4],
-}
-packet Struct_Array_Field_SizedStructElement {
- s: Struct_Array_Field_SizedStructElement_,
-}
-
-// Array with variable sized structure elements.
-struct Struct_Array_Field_UnsizedStructElement_ {
- array: UnsizedStruct[4],
-}
-packet Struct_Array_Field_UnsizedStructElement {
- s: Struct_Array_Field_UnsizedStructElement_,
-}
-
-// Array configurations
-
-// Array with sized elements, and a variable count.
-// The parser must extract as many elements as specified by the count from
-// the remaining span. The parser should generate a dynamic array size guard.
-struct Struct_Array_Field_SizedElement_VariableCount_ {
+struct Struct_Array_Field_ByteElement_VariableCount_ {
_count_(array) : 4,
_reserved_: 4,
- array: 16[],
+ array: 8[],
}
-packet Struct_Array_Field_SizedElement_VariableCount {
- s: Struct_Array_Field_SizedElement_VariableCount_,
+packet Struct_Array_Field_ByteElement_VariableCount {
+ s: Struct_Array_Field_ByteElement_VariableCount_,
}
-// The parser must extract as many elements as possible from
-// the span with the specified size. The parser should generate a
-// dynamic array size guard.
-struct Struct_Array_Field_SizedElement_VariableSize_ {
+struct Struct_Array_Field_ByteElement_UnknownSize_ {
+ array: 8[],
+}
+packet Struct_Array_Field_ByteElement_UnknownSize {
+ s: Struct_Array_Field_ByteElement_UnknownSize_,
+}
+
+struct Struct_Array_Field_ScalarElement_ConstantSize_ {
+ array: 16[4],
+}
+packet Struct_Array_Field_ScalarElement_ConstantSize {
+ s: Struct_Array_Field_ScalarElement_ConstantSize_,
+}
+
+struct Struct_Array_Field_ScalarElement_VariableSize_ {
_size_(array) : 4,
_reserved_: 4,
array: 16[],
}
-packet Struct_Array_Field_SizedElement_VariableSize {
- s: Struct_Array_Field_SizedElement_VariableSize_,
+packet Struct_Array_Field_ScalarElement_VariableSize {
+ s: Struct_Array_Field_ScalarElement_VariableSize_,
}
-// The parser must extract as many elements as specified by the
-// static array count. The parser should generate a static array size guard.
+struct Struct_Array_Field_ScalarElement_VariableCount_ {
+ _count_(array) : 4,
+ _reserved_: 4,
+ array: 16[],
+}
+packet Struct_Array_Field_ScalarElement_VariableCount {
+ s: Struct_Array_Field_ScalarElement_VariableCount_,
+}
+
+struct Struct_Array_Field_ScalarElement_UnknownSize_ {
+ array: 16[],
+}
+packet Struct_Array_Field_ScalarElement_UnknownSize {
+ s: Struct_Array_Field_ScalarElement_UnknownSize_,
+}
+
+struct Struct_Array_Field_EnumElement_ConstantSize_ {
+ array: Enum16[4],
+}
+packet Struct_Array_Field_EnumElement_ConstantSize {
+ s: Struct_Array_Field_EnumElement_ConstantSize_,
+}
+
+struct Struct_Array_Field_EnumElement_VariableSize_ {
+ _size_(array) : 4,
+ _reserved_: 4,
+ array: Enum16[],
+}
+packet Struct_Array_Field_EnumElement_VariableSize {
+ s: Struct_Array_Field_EnumElement_VariableSize_,
+}
+
+struct Struct_Array_Field_EnumElement_VariableCount_ {
+ _count_(array) : 4,
+ _reserved_: 4,
+ array: Enum16[],
+}
+packet Struct_Array_Field_EnumElement_VariableCount {
+ s: Struct_Array_Field_EnumElement_VariableCount_,
+}
+
+struct Struct_Array_Field_EnumElement_UnknownSize_ {
+ array: Enum16[],
+}
+packet Struct_Array_Field_EnumElement_UnknownSize {
+ s: Struct_Array_Field_EnumElement_UnknownSize_,
+}
+
struct Struct_Array_Field_SizedElement_ConstantSize_ {
- array: 16[8],
+ array: SizedStruct[4],
}
packet Struct_Array_Field_SizedElement_ConstantSize {
s: Struct_Array_Field_SizedElement_ConstantSize_,
}
-// The parser must extract as many elements as specified by the count from
-// the remaining span. No size guard possible.
-struct Struct_Array_Field_UnsizedElement_VariableCount_ {
- _count_(array) : 4,
+struct Struct_Array_Field_SizedElement_VariableSize_ {
+ _size_(array) : 4,
_reserved_: 4,
- array: UnsizedStruct[],
+ array: SizedStruct[],
}
-packet Struct_Array_Field_UnsizedElement_VariableCount {
- s: Struct_Array_Field_UnsizedElement_VariableCount_,
+packet Struct_Array_Field_SizedElement_VariableSize {
+ s: Struct_Array_Field_SizedElement_VariableSize_,
}
-// The parser must extract as many elements as possible from
-// the span with the specified size. The parser should generate a
-// dynamic array size guard.
+struct Struct_Array_Field_SizedElement_VariableCount_ {
+ _count_(array) : 4,
+ _reserved_: 4,
+ array: SizedStruct[],
+}
+packet Struct_Array_Field_SizedElement_VariableCount {
+ s: Struct_Array_Field_SizedElement_VariableCount_,
+}
+
+struct Struct_Array_Field_SizedElement_UnknownSize_ {
+ array: SizedStruct[],
+}
+packet Struct_Array_Field_SizedElement_UnknownSize {
+ s: Struct_Array_Field_SizedElement_UnknownSize_,
+}
+
+struct Struct_Array_Field_UnsizedElement_ConstantSize_ {
+ array: UnsizedStruct[4],
+}
+packet Struct_Array_Field_UnsizedElement_ConstantSize {
+ s: Struct_Array_Field_UnsizedElement_ConstantSize_,
+}
+
struct Struct_Array_Field_UnsizedElement_VariableSize_ {
_size_(array) : 4,
_reserved_: 4,
@@ -628,13 +725,20 @@
s: Struct_Array_Field_UnsizedElement_VariableSize_,
}
-// The parser must extract as many elements as specified by the
-// static array count. No size guard possible.
-struct Struct_Array_Field_UnsizedElement_ConstantSize_ {
- array: UnsizedStruct[8],
+struct Struct_Array_Field_UnsizedElement_VariableCount_ {
+ _count_(array) : 4,
+ _reserved_: 4,
+ array: UnsizedStruct[],
}
-packet Struct_Array_Field_UnsizedElement_ConstantSize {
- s: Struct_Array_Field_UnsizedElement_ConstantSize_,
+packet Struct_Array_Field_UnsizedElement_VariableCount {
+ s: Struct_Array_Field_UnsizedElement_VariableCount_,
+}
+
+struct Struct_Array_Field_UnsizedElement_UnknownSize_ {
+ array: UnsizedStruct[],
+}
+packet Struct_Array_Field_UnsizedElement_UnknownSize {
+ s: Struct_Array_Field_UnsizedElement_UnknownSize_,
}
// The parser must support complex size modifiers on arrays whose size is
diff --git a/tools/pdl/tests/canonical/le_test_vectors.json b/tools/pdl/tests/canonical/le_test_vectors.json
index 1598e90..243952c 100644
--- a/tools/pdl/tests/canonical/le_test_vectors.json
+++ b/tools/pdl/tests/canonical/le_test_vectors.json
@@ -1103,23 +1103,205 @@
]
},
{
- "packet": "Packet_Array_Field_ScalarElement",
+ "packet": "Packet_Array_Field_ByteElement_ConstantSize",
"tests": [
{
- "packed": "1c842e8438844a8c",
+ "packed": "83848586",
"unpacked": {
"array": [
- 33820,
- 33838,
- 33848,
- 35914
+ 131,
+ 132,
+ 133,
+ 134
]
}
}
]
},
{
- "packet": "Packet_Array_Field_EnumElement",
+ "packet": "Packet_Array_Field_ByteElement_VariableSize",
+ "tests": [
+ {
+ "packed": "00",
+ "unpacked": {
+ "array": []
+ }
+ },
+ {
+ "packed": "0f8780898a8b8c8d8e8f889192939495",
+ "unpacked": {
+ "array": [
+ 135,
+ 128,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 136,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_ByteElement_VariableCount",
+ "tests": [
+ {
+ "packed": "00",
+ "unpacked": {
+ "array": []
+ }
+ },
+ {
+ "packed": "0f969790999a9b9c9d9e9f98a1a2a3a4",
+ "unpacked": {
+ "array": [
+ 150,
+ 151,
+ 144,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 152,
+ 161,
+ 162,
+ 163,
+ 164
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_ByteElement_UnknownSize",
+ "tests": [
+ {
+ "packed": "",
+ "unpacked": {
+ "array": []
+ }
+ },
+ {
+ "packed": "a5a6a7",
+ "unpacked": {
+ "array": [
+ 165,
+ 166,
+ 167
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_ScalarElement_ConstantSize",
+ "tests": [
+ {
+ "packed": "41a553ad65ad77ad",
+ "unpacked": {
+ "array": [
+ 42305,
+ 44371,
+ 44389,
+ 44407
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_ScalarElement_VariableSize",
+ "tests": [
+ {
+ "packed": "00",
+ "unpacked": {
+ "array": []
+ }
+ },
+ {
+ "packed": "0e81ad93b5a5b5b7b5c1b5d3bde5bd",
+ "unpacked": {
+ "array": [
+ 44417,
+ 46483,
+ 46501,
+ 46519,
+ 46529,
+ 48595,
+ 48613
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_ScalarElement_VariableCount",
+ "tests": [
+ {
+ "packed": "00",
+ "unpacked": {
+ "array": []
+ }
+ },
+ {
+ "packed": "0ff7bd01be13c625c637c641c653ce65ce77ce81ce93d6a5d6b7d6c1d6d3de",
+ "unpacked": {
+ "array": [
+ 48631,
+ 48641,
+ 50707,
+ 50725,
+ 50743,
+ 50753,
+ 52819,
+ 52837,
+ 52855,
+ 52865,
+ 54931,
+ 54949,
+ 54967,
+ 54977,
+ 57043
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_ScalarElement_UnknownSize",
+ "tests": [
+ {
+ "packed": "",
+ "unpacked": {
+ "array": []
+ }
+ },
+ {
+ "packed": "e5def7de01df",
+ "unpacked": {
+ "array": [
+ 57061,
+ 57079,
+ 57089
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_EnumElement_ConstantSize",
"tests": [
{
"packed": "bbaaddccbbaaddcc",
@@ -1135,10 +1317,118 @@
]
},
{
- "packet": "Packet_Array_Field_SizedStructElement",
+ "packet": "Packet_Array_Field_EnumElement_VariableSize",
"tests": [
{
- "packed": "00ff8b00",
+ "packed": "0ebbaaddccbbaaddccbbaaddccbbaa",
+ "unpacked": {
+ "array": [
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707
+ ]
+ }
+ },
+ {
+ "packed": "00",
+ "unpacked": {
+ "array": []
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_EnumElement_VariableCount",
+ "tests": [
+ {
+ "packed": "0fbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaa",
+ "unpacked": {
+ "array": [
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707
+ ]
+ }
+ },
+ {
+ "packed": "00",
+ "unpacked": {
+ "array": []
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_EnumElement_UnknownSize",
+ "tests": [
+ {
+ "packed": "bbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddcc",
+ "unpacked": {
+ "array": [
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445
+ ]
+ }
+ },
+ {
+ "packed": "",
+ "unpacked": {
+ "array": []
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_SizedElement_ConstantSize",
+ "tests": [
+ {
+ "packed": "00ffe200",
"unpacked": {
"array": [
{
@@ -1148,7 +1438,7 @@
"a": 255
},
{
- "a": 139
+ "a": 226
},
{
"a": 0
@@ -1159,34 +1449,65 @@
]
},
{
- "packet": "Packet_Array_Field_UnsizedStructElement",
+ "packet": "Packet_Array_Field_SizedElement_VariableSize",
"tests": [
{
- "packed": "00038d8e8f0003889192",
+ "packed": "0f00ffe400ffe500ffe600ffe700ffe0",
"unpacked": {
"array": [
{
- "array": []
+ "a": 0
},
{
- "array": [
- 141,
- 142,
- 143
- ]
+ "a": 255
},
{
- "array": []
+ "a": 228
},
{
- "array": [
- 136,
- 145,
- 146
- ]
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 229
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 230
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 231
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 224
}
]
}
+ },
+ {
+ "packed": "00",
+ "unpacked": {
+ "array": []
+ }
}
]
},
@@ -1194,159 +1515,53 @@
"packet": "Packet_Array_Field_SizedElement_VariableCount",
"tests": [
{
- "packed": "00",
- "unpacked": {
- "array": []
- }
- },
- {
- "packed": "0fb794c194d39ce59cf79c019d13a525a537a541a553ad65ad77ad81ad93b5",
- "unpacked": {
- "array": [
- 38071,
- 38081,
- 40147,
- 40165,
- 40183,
- 40193,
- 42259,
- 42277,
- 42295,
- 42305,
- 44371,
- 44389,
- 44407,
- 44417,
- 46483
- ]
- }
- }
- ]
- },
- {
- "packet": "Packet_Array_Field_SizedElement_VariableSize",
- "tests": [
- {
- "packed": "00",
- "unpacked": {
- "array": []
- }
- },
- {
- "packed": "0ea5b5b7b5c1b5d3bde5bdf7bd01be",
- "unpacked": {
- "array": [
- 46501,
- 46519,
- 46529,
- 48595,
- 48613,
- 48631,
- 48641
- ]
- }
- }
- ]
- },
- {
- "packet": "Packet_Array_Field_SizedElement_ConstantSize",
- "tests": [
- {
- "packed": "13c625c637c641c653ce65ce77ce81ce",
- "unpacked": {
- "array": [
- 50707,
- 50725,
- 50743,
- 50753,
- 52819,
- 52837,
- 52855,
- 52865
- ]
- }
- }
- ]
- },
- {
- "packet": "Packet_Array_Field_UnsizedElement_VariableCount",
- "tests": [
- {
- "packed": "0f0003d2d3d40003d5d6d70003d0d9da0003dbdcdd0003dedfd80003e1e2e30003e4e5e600",
+ "packed": "0f00ffea00ffeb00ffec00ffed00ffee",
"unpacked": {
"array": [
{
- "array": []
+ "a": 0
},
{
- "array": [
- 210,
- 211,
- 212
- ]
+ "a": 255
},
{
- "array": []
+ "a": 234
},
{
- "array": [
- 213,
- 214,
- 215
- ]
+ "a": 0
},
{
- "array": []
+ "a": 255
},
{
- "array": [
- 208,
- 217,
- 218
- ]
+ "a": 235
},
{
- "array": []
+ "a": 0
},
{
- "array": [
- 219,
- 220,
- 221
- ]
+ "a": 255
},
{
- "array": []
+ "a": 236
},
{
- "array": [
- 222,
- 223,
- 216
- ]
+ "a": 0
},
{
- "array": []
+ "a": 255
},
{
- "array": [
- 225,
- 226,
- 227
- ]
+ "a": 237
},
{
- "array": []
+ "a": 0
},
{
- "array": [
- 228,
- 229,
- 230
- ]
+ "a": 255
},
{
- "array": []
+ "a": 238
}
]
}
@@ -1360,47 +1575,113 @@
]
},
{
- "packet": "Packet_Array_Field_UnsizedElement_VariableSize",
+ "packet": "Packet_Array_Field_SizedElement_UnknownSize",
"tests": [
{
- "packed": "0f0003eaebec0003edeeef0003e8f1f2",
+ "packed": "00ffe800fff100fff200fff300fff400fff500fff600fff700fff000fff900ff",
"unpacked": {
"array": [
{
- "array": []
+ "a": 0
},
{
- "array": [
- 234,
- 235,
- 236
- ]
+ "a": 255
},
{
- "array": []
+ "a": 232
},
{
- "array": [
- 237,
- 238,
- 239
- ]
+ "a": 0
},
{
- "array": []
+ "a": 255
},
{
- "array": [
- 232,
- 241,
- 242
- ]
+ "a": 241
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 242
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 243
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 244
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 245
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 246
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 247
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 240
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 249
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
}
]
}
},
{
- "packed": "00",
+ "packed": "",
"unpacked": {
"array": []
}
@@ -1411,7 +1692,7 @@
"packet": "Packet_Array_Field_UnsizedElement_ConstantSize",
"tests": [
{
- "packed": "0003f6f7f00003f9fafb0003fcfdfe0003f80102",
+ "packed": "0003fbfcfd0003fef801",
"unpacked": {
"array": [
{
@@ -1419,29 +1700,9 @@
},
{
"array": [
- 246,
- 247,
- 240
- ]
- },
- {
- "array": []
- },
- {
- "array": [
- 249,
- 250,
- 251
- ]
- },
- {
- "array": []
- },
- {
- "array": [
+ 251,
252,
- 253,
- 254
+ 253
]
},
{
@@ -1449,9 +1710,9 @@
},
{
"array": [
+ 254,
248,
- 1,
- 2
+ 1
]
}
]
@@ -1460,10 +1721,10 @@
]
},
{
- "packet": "Packet_Array_Field_UnsizedElement_SizeModifier",
+ "packet": "Packet_Array_Field_UnsizedElement_VariableSize",
"tests": [
{
- "packed": "0d00030607000003090a0b00",
+ "packed": "0f0003050607000300090a00030b0c0d",
"unpacked": {
"array": [
{
@@ -1471,9 +1732,9 @@
},
{
"array": [
+ 5,
6,
- 7,
- 0
+ 7
]
},
{
@@ -1481,19 +1742,26 @@
},
{
"array": [
+ 0,
9,
- 10,
- 11
+ 10
]
},
{
"array": []
+ },
+ {
+ "array": [
+ 11,
+ 12,
+ 13
+ ]
}
]
}
},
{
- "packed": "02",
+ "packed": "00",
"unpacked": {
"array": []
}
@@ -1501,37 +1769,52 @@
]
},
{
- "packet": "Packet_Array_Field_SizedElement_VariableSize_Padded",
+ "packet": "Packet_Array_Field_UnsizedElement_VariableCount",
"tests": [
{
- "packed": "0000000000000000000000000000000000",
- "unpacked": {
- "array": []
- }
- },
- {
- "packed": "0e78088a109c10ae10b810ca18dc180000",
+ "packed": "0f00031112130003141516000317101900031a1b1c00031d1e1f0003182122000323242500",
"unpacked": {
"array": [
- 2168,
- 4234,
- 4252,
- 4270,
- 4280,
- 6346,
- 6364
- ]
- }
- }
- ]
- },
- {
- "packet": "Packet_Array_Field_UnsizedElement_VariableCount_Padded",
- "tests": [
- {
- "packed": "0700031d1e1f0003182122000323242500",
- "unpacked": {
- "array": [
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 17,
+ 18,
+ 19
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 20,
+ 21,
+ 22
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 23,
+ 16,
+ 25
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 26,
+ 27,
+ 28
+ ]
+ },
{
"array": []
},
@@ -1569,6 +1852,301 @@
}
},
{
+ "packed": "00",
+ "unpacked": {
+ "array": []
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_UnsizedElement_UnknownSize",
+ "tests": [
+ {
+ "packed": "0003292a2b00032c2d2e00032f283100033233340003353637000330393a00033b3c3d00033e3f3800034142430003444546000347404900034a4b4c00034d4e4f000348515200035354550003565750",
+ "unpacked": {
+ "array": [
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 41,
+ 42,
+ 43
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 44,
+ 45,
+ 46
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 47,
+ 40,
+ 49
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 50,
+ 51,
+ 52
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 53,
+ 54,
+ 55
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 48,
+ 57,
+ 58
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 59,
+ 60,
+ 61
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 62,
+ 63,
+ 56
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 65,
+ 66,
+ 67
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 68,
+ 69,
+ 70
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 71,
+ 64,
+ 73
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 74,
+ 75,
+ 76
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 77,
+ 78,
+ 79
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 72,
+ 81,
+ 82
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 83,
+ 84,
+ 85
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 86,
+ 87,
+ 80
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "packed": "",
+ "unpacked": {
+ "array": []
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_UnsizedElement_SizeModifier",
+ "tests": [
+ {
+ "packed": "0d00035c5d5e00035f586100",
+ "unpacked": {
+ "array": [
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 92,
+ 93,
+ 94
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 95,
+ 88,
+ 97
+ ]
+ },
+ {
+ "array": []
+ }
+ ]
+ }
+ },
+ {
+ "packed": "02",
+ "unpacked": {
+ "array": []
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_SizedElement_VariableSize_Padded",
+ "tests": [
+ {
+ "packed": "0000000000000000000000000000000000",
+ "unpacked": {
+ "array": []
+ }
+ },
+ {
+ "packed": "0e2e6338634a6b5c6b6e6b786b8a730000",
+ "unpacked": {
+ "array": [
+ 25390,
+ 25400,
+ 27466,
+ 27484,
+ 27502,
+ 27512,
+ 29578
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Packet_Array_Field_UnsizedElement_VariableCount_Padded",
+ "tests": [
+ {
+ "packed": "07000373747500037677700003797a7b00",
+ "unpacked": {
+ "array": [
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 115,
+ 116,
+ 117
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 118,
+ 119,
+ 112
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 121,
+ 122,
+ 123
+ ]
+ },
+ {
+ "array": []
+ }
+ ]
+ }
+ },
+ {
"packed": "0000000000000000000000000000000000",
"unpacked": {
"array": []
@@ -1596,10 +2174,10 @@
"packet": "ScalarChild_A"
},
{
- "packed": "000129",
+ "packed": "00017f",
"unpacked": {
"a": 0,
- "b": 41
+ "b": 127
},
"packet": "ScalarChild_A"
},
@@ -1620,10 +2198,10 @@
"packet": "ScalarChild_B"
},
{
- "packed": "01025329",
+ "packed": "0102017c",
"unpacked": {
"a": 1,
- "c": 10579
+ "c": 31745
},
"packet": "ScalarChild_B"
},
@@ -1644,10 +2222,10 @@
"packet": "AliasedChild_A"
},
{
- "packed": "02012f",
+ "packed": "020185",
"unpacked": {
"a": 2,
- "b": 47
+ "b": 133
},
"packet": "AliasedChild_A"
},
@@ -1668,10 +2246,10 @@
"packet": "AliasedChild_B"
},
{
- "packed": "03028129",
+ "packed": "03023784",
"unpacked": {
"a": 3,
- "c": 10625
+ "c": 33847
},
"packet": "AliasedChild_B"
}
@@ -1697,10 +2275,10 @@
"packet": "EnumChild_A"
},
{
- "packed": "bbaa012c",
+ "packed": "bbaa0182",
"unpacked": {
"a": 43707,
- "b": 44
+ "b": 130
},
"packet": "EnumChild_A"
},
@@ -1721,10 +2299,10 @@
"packet": "EnumChild_B"
},
{
- "packed": "ddcc026e29",
+ "packed": "ddcc021c84",
"unpacked": {
"a": 52445,
- "c": 10606
+ "c": 33820
},
"packet": "EnumChild_B"
}
@@ -1750,10 +2328,10 @@
"packet": "PartialChild5_A"
},
{
- "packed": "4036",
+ "packed": "0081",
"unpacked": {
"a": 0,
- "b": 434
+ "b": 1032
},
"packet": "PartialChild5_A"
},
@@ -1774,10 +2352,10 @@
"packet": "PartialChild5_B"
},
{
- "packed": "410dcd0c",
+ "packed": "c1a262a2",
"unpacked": {
"a": 1,
- "c": 6711402
+ "c": 85136662
},
"packet": "PartialChild5_B"
}
@@ -1803,10 +2381,10 @@
"packet": "PartialChild12_A"
},
{
- "packed": "02b0",
+ "packed": "0260",
"unpacked": {
"a": 2,
- "d": 11
+ "d": 6
},
"packet": "PartialChild12_A"
},
@@ -1827,10 +2405,10 @@
"packet": "PartialChild12_B"
},
{
- "packed": "0310e726",
+ "packed": "03d0b191",
"unpacked": {
"a": 3,
- "e": 159345
+ "e": 596765
},
"packet": "PartialChild12_B"
}
@@ -1858,11 +2436,11 @@
}
},
{
- "packed": "017e7c7a78767438",
+ "packed": "012b29272523218f",
"unpacked": {
"s": {
"a": 1,
- "c": 31781301744105724
+ "c": 80574713001038422
}
}
},
@@ -1885,11 +2463,11 @@
}
},
{
- "packed": "027e7c7a78767438",
+ "packed": "022b29272523218f",
"unpacked": {
"s": {
"a": 2,
- "c": 31781301744105724
+ "c": 80574713001038422
}
}
}
@@ -1917,11 +2495,11 @@
}
},
{
- "packed": "008e8c8a88868440",
+ "packed": "003a393735333197",
"unpacked": {
"s": {
"a": 0,
- "c": 9080055930373703
+ "c": 21278408744606877
}
}
},
@@ -1944,38 +2522,38 @@
}
},
{
- "packed": "7f8e8c8a88868440",
+ "packed": "7f3a393735333197",
"unpacked": {
"s": {
"a": 127,
- "c": 9080055930373703
+ "c": 21278408744606877
}
}
},
{
- "packed": "2100000000000000",
+ "packed": "4b00000000000000",
"unpacked": {
"s": {
- "a": 33,
+ "a": 75,
"c": 0
}
}
},
{
- "packed": "21feffffffffffff",
+ "packed": "4bfeffffffffffff",
"unpacked": {
"s": {
- "a": 33,
+ "a": 75,
"c": 36028797018963967
}
}
},
{
- "packed": "218e8c8a88868440",
+ "packed": "4b3a393735333197",
"unpacked": {
"s": {
- "a": 33,
- "c": 9080055930373703
+ "a": 75,
+ "c": 21278408744606877
}
}
}
@@ -1994,18 +2572,18 @@
}
},
{
- "packed": "070000000000000050515253545556",
+ "packed": "0700000000000000a6a7a8a9aaabac",
"unpacked": {
"s": {
"a": 0,
"b": [
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86
+ 166,
+ 167,
+ 168,
+ 169,
+ 170,
+ 171,
+ 172
]
}
}
@@ -2020,44 +2598,44 @@
}
},
{
- "packed": "ffffffffffffffff50515253545556",
+ "packed": "ffffffffffffffffa6a7a8a9aaabac",
"unpacked": {
"s": {
"a": 2305843009213693951,
"b": [
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86
+ 166,
+ 167,
+ 168,
+ 169,
+ 170,
+ 171,
+ 172
]
}
}
},
{
- "packed": "784e4d4c4b4a4948",
+ "packed": "28a4a3a2a1a09f9e",
"unpacked": {
"s": {
- "a": 651097016411728335,
+ "a": 1428753874421052549,
"b": []
}
}
},
{
- "packed": "7f4e4d4c4b4a494850515253545556",
+ "packed": "2fa4a3a2a1a09f9ea6a7a8a9aaabac",
"unpacked": {
"s": {
- "a": 651097016411728335,
+ "a": 1428753874421052549,
"b": [
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86
+ 166,
+ 167,
+ 168,
+ 169,
+ 170,
+ 171,
+ 172
]
}
}
@@ -2077,18 +2655,18 @@
}
},
{
- "packed": "07000000000000005f5c6162636065",
+ "packed": "0700000000000000b5b6b7b4b9babb",
"unpacked": {
"s": {
"a": 0,
"b": [
- 95,
- 92,
- 97,
- 98,
- 99,
- 96,
- 101
+ 181,
+ 182,
+ 183,
+ 180,
+ 185,
+ 186,
+ 187
]
}
}
@@ -2103,44 +2681,44 @@
}
},
{
- "packed": "ffffffffffffffff5f5c6162636065",
+ "packed": "ffffffffffffffffb5b6b7b4b9babb",
"unpacked": {
"s": {
"a": 2305843009213693951,
"b": [
- 95,
- 92,
- 97,
- 98,
- 99,
- 96,
- 101
+ 181,
+ 182,
+ 183,
+ 180,
+ 185,
+ 186,
+ 187
]
}
}
},
{
- "packed": "b08b6b4b2b0beb4a",
+ "packed": "60563616f6d5b5b5",
"unpacked": {
"s": {
- "a": 674802607363813750,
+ "a": 1636700843070114508,
"b": []
}
}
},
{
- "packed": "b78b6b4b2b0beb4a5f5c6162636065",
+ "packed": "67563616f6d5b5b5b5b6b7b4b9babb",
"unpacked": {
"s": {
- "a": 674802607363813750,
+ "a": 1636700843070114508,
"b": [
- 95,
- 92,
- 97,
- 98,
- 99,
- 96,
- 101
+ 181,
+ 182,
+ 183,
+ 180,
+ 185,
+ 186,
+ 187
]
}
}
@@ -2167,10 +2745,10 @@
}
},
{
- "packed": "07aea9a5a19d9965",
+ "packed": "070503fffaf6f2ba",
"unpacked": {
"s": {
- "b": 57195749897360220
+ "b": 105242976510150154
}
}
}
@@ -2196,10 +2774,10 @@
}
},
{
- "packed": "81918b837b736b6b",
+ "packed": "81443e362e261ec6",
"unpacked": {
"s": {
- "b": 60471932491339555
+ "b": 111530389443214473
}
}
}
@@ -2251,12 +2829,12 @@
}
},
{
- "packed": "00006777de",
+ "packed": "0000cdcc99",
"unpacked": {
"s": {
"a": 0,
- "b": 30567,
- "crc": 222
+ "b": 52429,
+ "crc": 153
}
}
},
@@ -2281,42 +2859,42 @@
}
},
{
- "packed": "ffff6777dc",
+ "packed": "ffffcdcc97",
"unpacked": {
"s": {
"a": 65535,
- "b": 30567,
- "crc": 220
+ "b": 52429,
+ "crc": 151
}
}
},
{
- "packed": "45770000bc",
+ "packed": "abcc000077",
"unpacked": {
"s": {
- "a": 30533,
+ "a": 52395,
"b": 0,
- "crc": 188
+ "crc": 119
}
}
},
{
- "packed": "4577ffffba",
+ "packed": "abccffff75",
"unpacked": {
"s": {
- "a": 30533,
+ "a": 52395,
"b": 65535,
- "crc": 186
+ "crc": 117
}
}
},
{
- "packed": "457767779a",
+ "packed": "abcccdcc10",
"unpacked": {
"s": {
- "a": 30533,
- "b": 30567,
- "crc": 154
+ "a": 52395,
+ "b": 52429,
+ "crc": 16
}
}
}
@@ -2348,13 +2926,13 @@
}
},
{
- "packed": "000000f077",
+ "packed": "00000056dd",
"unpacked": {
"s": {
"payload": [],
"crc": 0,
"a": 0,
- "b": 30704
+ "b": 56662
}
}
},
@@ -2381,199 +2959,199 @@
}
},
{
- "packed": "00fffff077",
+ "packed": "00ffff56dd",
"unpacked": {
"s": {
"payload": [],
"crc": 0,
"a": 65535,
- "b": 30704
+ "b": 56662
}
}
},
{
- "packed": "00de770000",
+ "packed": "0034dd0000",
"unpacked": {
"s": {
"payload": [],
"crc": 0,
- "a": 30686,
+ "a": 56628,
"b": 0
}
}
},
{
- "packed": "00de77ffff",
+ "packed": "0034ddffff",
"unpacked": {
"s": {
"payload": [],
"crc": 0,
- "a": 30686,
+ "a": 56628,
"b": 65535
}
}
},
{
- "packed": "00de77f077",
+ "packed": "0034dd56dd",
"unpacked": {
"s": {
"payload": [],
"crc": 0,
- "a": 30686,
- "b": 30704
+ "a": 56628,
+ "b": 56662
}
}
},
{
- "packed": "78797a7b7c6200000000",
+ "packed": "cecfc0d1d20000000000",
"unpacked": {
"s": {
"payload": [
- 120,
- 121,
- 122,
- 123,
- 124
+ 206,
+ 207,
+ 192,
+ 209,
+ 210
],
- "crc": 98,
+ "crc": 0,
"a": 0,
"b": 0
}
}
},
{
- "packed": "78797a7b7c620000ffff",
+ "packed": "cecfc0d1d2000000ffff",
"unpacked": {
"s": {
"payload": [
- 120,
- 121,
- 122,
- 123,
- 124
+ 206,
+ 207,
+ 192,
+ 209,
+ 210
],
- "crc": 98,
+ "crc": 0,
"a": 0,
"b": 65535
}
}
},
{
- "packed": "78797a7b7c620000f077",
+ "packed": "cecfc0d1d200000056dd",
"unpacked": {
"s": {
"payload": [
- 120,
- 121,
- 122,
- 123,
- 124
+ 206,
+ 207,
+ 192,
+ 209,
+ 210
],
- "crc": 98,
+ "crc": 0,
"a": 0,
- "b": 30704
+ "b": 56662
}
}
},
{
- "packed": "78797a7b7c62ffff0000",
+ "packed": "cecfc0d1d200ffff0000",
"unpacked": {
"s": {
"payload": [
- 120,
- 121,
- 122,
- 123,
- 124
+ 206,
+ 207,
+ 192,
+ 209,
+ 210
],
- "crc": 98,
+ "crc": 0,
"a": 65535,
"b": 0
}
}
},
{
- "packed": "78797a7b7c62ffffffff",
+ "packed": "cecfc0d1d200ffffffff",
"unpacked": {
"s": {
"payload": [
- 120,
- 121,
- 122,
- 123,
- 124
+ 206,
+ 207,
+ 192,
+ 209,
+ 210
],
- "crc": 98,
+ "crc": 0,
"a": 65535,
"b": 65535
}
}
},
{
- "packed": "78797a7b7c62fffff077",
+ "packed": "cecfc0d1d200ffff56dd",
"unpacked": {
"s": {
"payload": [
- 120,
- 121,
- 122,
- 123,
- 124
+ 206,
+ 207,
+ 192,
+ 209,
+ 210
],
- "crc": 98,
+ "crc": 0,
"a": 65535,
- "b": 30704
+ "b": 56662
}
}
},
{
- "packed": "78797a7b7c62de770000",
+ "packed": "cecfc0d1d20034dd0000",
"unpacked": {
"s": {
"payload": [
- 120,
- 121,
- 122,
- 123,
- 124
+ 206,
+ 207,
+ 192,
+ 209,
+ 210
],
- "crc": 98,
- "a": 30686,
+ "crc": 0,
+ "a": 56628,
"b": 0
}
}
},
{
- "packed": "78797a7b7c62de77ffff",
+ "packed": "cecfc0d1d20034ddffff",
"unpacked": {
"s": {
"payload": [
- 120,
- 121,
- 122,
- 123,
- 124
+ 206,
+ 207,
+ 192,
+ 209,
+ 210
],
- "crc": 98,
- "a": 30686,
+ "crc": 0,
+ "a": 56628,
"b": 65535
}
}
},
{
- "packed": "78797a7b7c62de77f077",
+ "packed": "cecfc0d1d20034dd56dd",
"unpacked": {
"s": {
"payload": [
- 120,
- 121,
- 122,
- 123,
- 124
+ 206,
+ 207,
+ 192,
+ 209,
+ 210
],
- "crc": 98,
- "a": 30686,
- "b": 30704
+ "crc": 0,
+ "a": 56628,
+ "b": 56662
}
}
}
@@ -2594,16 +3172,16 @@
}
},
{
- "packed": "0003828384",
+ "packed": "0003d8d9da",
"unpacked": {
"a": {
"a": 0
},
"b": {
"array": [
- 130,
- 131,
- 132
+ 216,
+ 217,
+ 218
]
}
}
@@ -2620,25 +3198,25 @@
}
},
{
- "packed": "ff03828384",
+ "packed": "ff03d8d9da",
"unpacked": {
"a": {
"a": 255
},
"b": {
"array": [
- 130,
- 131,
- 132
+ 216,
+ 217,
+ 218
]
}
}
},
{
- "packed": "8100",
+ "packed": "d700",
"unpacked": {
"a": {
- "a": 129
+ "a": 215
},
"b": {
"array": []
@@ -2646,16 +3224,16 @@
}
},
{
- "packed": "8103828384",
+ "packed": "d703d8d9da",
"unpacked": {
"a": {
- "a": 129
+ "a": 215
},
"b": {
"array": [
- 130,
- 131,
- 132
+ 216,
+ 217,
+ 218
]
}
}
@@ -2663,17 +3241,17 @@
]
},
{
- "packet": "Struct_Array_Field_ScalarElement",
+ "packet": "Struct_Array_Field_ByteElement_ConstantSize",
"tests": [
{
- "packed": "568878889a88bc88",
+ "packed": "dbdcddde",
"unpacked": {
"s": {
"array": [
- 34902,
- 34936,
- 34970,
- 35004
+ 219,
+ 220,
+ 221,
+ 222
]
}
}
@@ -2681,7 +3259,215 @@
]
},
{
- "packet": "Struct_Array_Field_EnumElement",
+ "packet": "Struct_Array_Field_ByteElement_VariableSize",
+ "tests": [
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ },
+ {
+ "packed": "0fdfd0e1e2e3e4e5e6e7e8e9eaebeced",
+ "unpacked": {
+ "s": {
+ "array": [
+ 223,
+ 208,
+ 225,
+ 226,
+ 227,
+ 228,
+ 229,
+ 230,
+ 231,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 237
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_ByteElement_VariableCount",
+ "tests": [
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ },
+ {
+ "packed": "0feeefe0f1f2f3f4f5f6f7f8f9fafbfc",
+ "unpacked": {
+ "s": {
+ "array": [
+ 238,
+ 239,
+ 224,
+ 241,
+ 242,
+ 243,
+ 244,
+ 245,
+ 246,
+ 247,
+ 248,
+ 249,
+ 250,
+ 251,
+ 252
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_ByteElement_UnknownSize",
+ "tests": [
+ {
+ "packed": "",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ },
+ {
+ "packed": "fdfef0",
+ "unpacked": {
+ "s": {
+ "array": [
+ 253,
+ 254,
+ 240
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_ScalarElement_ConstantSize",
+ "tests": [
+ {
+ "packed": "1200340056007800",
+ "unpacked": {
+ "s": {
+ "array": [
+ 18,
+ 52,
+ 86,
+ 120
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_ScalarElement_VariableSize",
+ "tests": [
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ },
+ {
+ "packed": "0e9a00bc00de00f000121134115611",
+ "unpacked": {
+ "s": {
+ "array": [
+ 154,
+ 188,
+ 222,
+ 240,
+ 4370,
+ 4404,
+ 4438
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_ScalarElement_VariableCount",
+ "tests": [
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ },
+ {
+ "packed": "0f78119a11bc11de11f01112223422562278229a22bc22de22f02212333433",
+ "unpacked": {
+ "s": {
+ "array": [
+ 4472,
+ 4506,
+ 4540,
+ 4574,
+ 4592,
+ 8722,
+ 8756,
+ 8790,
+ 8824,
+ 8858,
+ 8892,
+ 8926,
+ 8944,
+ 13074,
+ 13108
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_ScalarElement_UnknownSize",
+ "tests": [
+ {
+ "packed": "",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ },
+ {
+ "packed": "563378339a33",
+ "unpacked": {
+ "s": {
+ "array": [
+ 13142,
+ 13176,
+ 13210
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_EnumElement_ConstantSize",
"tests": [
{
"packed": "bbaaddccbbaaddcc",
@@ -2699,10 +3485,130 @@
]
},
{
- "packet": "Struct_Array_Field_SizedStructElement",
+ "packet": "Struct_Array_Field_EnumElement_VariableSize",
"tests": [
{
- "packed": "00ff8d00",
+ "packed": "0ebbaaddccbbaaddccbbaaddccbbaa",
+ "unpacked": {
+ "s": {
+ "array": [
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707
+ ]
+ }
+ }
+ },
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_EnumElement_VariableCount",
+ "tests": [
+ {
+ "packed": "0fbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaa",
+ "unpacked": {
+ "s": {
+ "array": [
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707
+ ]
+ }
+ }
+ },
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_EnumElement_UnknownSize",
+ "tests": [
+ {
+ "packed": "bbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddccbbaaddcc",
+ "unpacked": {
+ "s": {
+ "array": [
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445,
+ 43707,
+ 52445
+ ]
+ }
+ }
+ },
+ {
+ "packed": "",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_SizedElement_ConstantSize",
+ "tests": [
+ {
+ "packed": "00ff3b00",
"unpacked": {
"s": {
"array": [
@@ -2713,7 +3619,7 @@
"a": 255
},
{
- "a": 141
+ "a": 59
},
{
"a": 0
@@ -2725,36 +3631,69 @@
]
},
{
- "packet": "Struct_Array_Field_UnsizedStructElement",
+ "packet": "Struct_Array_Field_SizedElement_VariableSize",
"tests": [
{
- "packed": "00038f80910003929394",
+ "packed": "0f00ff3d00ff3e00ff3f00ff3000ff41",
"unpacked": {
"s": {
"array": [
{
- "array": []
+ "a": 0
},
{
- "array": [
- 143,
- 128,
- 145
- ]
+ "a": 255
},
{
- "array": []
+ "a": 61
},
{
- "array": [
- 146,
- 147,
- 148
- ]
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 62
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 63
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 48
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 65
}
]
}
}
+ },
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
}
]
},
@@ -2762,170 +3701,54 @@
"packet": "Struct_Array_Field_SizedElement_VariableCount",
"tests": [
{
- "packed": "00",
- "unpacked": {
- "s": {
- "array": []
- }
- }
- },
- {
- "packed": "0f8999ab99cd99ef99019a23aa45aa67aa89aaabaacdaaefaa01ab23bb45bb",
- "unpacked": {
- "s": {
- "array": [
- 39305,
- 39339,
- 39373,
- 39407,
- 39425,
- 43555,
- 43589,
- 43623,
- 43657,
- 43691,
- 43725,
- 43759,
- 43777,
- 47907,
- 47941
- ]
- }
- }
- }
- ]
- },
- {
- "packet": "Struct_Array_Field_SizedElement_VariableSize",
- "tests": [
- {
- "packed": "00",
- "unpacked": {
- "s": {
- "array": []
- }
- }
- },
- {
- "packed": "0e67bb89bbabbbcdbbefbb01bc23cc",
- "unpacked": {
- "s": {
- "array": [
- 47975,
- 48009,
- 48043,
- 48077,
- 48111,
- 48129,
- 52259
- ]
- }
- }
- }
- ]
- },
- {
- "packet": "Struct_Array_Field_SizedElement_ConstantSize",
- "tests": [
- {
- "packed": "45cc67cc89ccabcccdccefcc01cd23dd",
- "unpacked": {
- "s": {
- "array": [
- 52293,
- 52327,
- 52361,
- 52395,
- 52429,
- 52463,
- 52481,
- 56611
- ]
- }
- }
- }
- ]
- },
- {
- "packet": "Struct_Array_Field_UnsizedElement_VariableCount",
- "tests": [
- {
- "packed": "0f0003d4d5d60003d7d8d90003dadbdc0003dddedf0003d0e1e20003e3e4e50003e6e7e800",
+ "packed": "0f00ff4300ff4400ff4500ff4600ff47",
"unpacked": {
"s": {
"array": [
{
- "array": []
+ "a": 0
},
{
- "array": [
- 212,
- 213,
- 214
- ]
+ "a": 255
},
{
- "array": []
+ "a": 67
},
{
- "array": [
- 215,
- 216,
- 217
- ]
+ "a": 0
},
{
- "array": []
+ "a": 255
},
{
- "array": [
- 218,
- 219,
- 220
- ]
+ "a": 68
},
{
- "array": []
+ "a": 0
},
{
- "array": [
- 221,
- 222,
- 223
- ]
+ "a": 255
},
{
- "array": []
+ "a": 69
},
{
- "array": [
- 208,
- 225,
- 226
- ]
+ "a": 0
},
{
- "array": []
+ "a": 255
},
{
- "array": [
- 227,
- 228,
- 229
- ]
+ "a": 70
},
{
- "array": []
+ "a": 0
},
{
- "array": [
- 230,
- 231,
- 232
- ]
+ "a": 255
},
{
- "array": []
+ "a": 71
}
]
}
@@ -2942,49 +3765,115 @@
]
},
{
- "packet": "Struct_Array_Field_UnsizedElement_VariableSize",
+ "packet": "Struct_Array_Field_SizedElement_UnknownSize",
"tests": [
{
- "packed": "0f0003ecedee0003efe0f10003f2f3f4",
+ "packed": "00ff4900ff4a00ff4b00ff4c00ff4d00ff4e00ff4f00ff4000ff5100ff5200ff",
"unpacked": {
"s": {
"array": [
{
- "array": []
+ "a": 0
},
{
- "array": [
- 236,
- 237,
- 238
- ]
+ "a": 255
},
{
- "array": []
+ "a": 73
},
{
- "array": [
- 239,
- 224,
- 241
- ]
+ "a": 0
},
{
- "array": []
+ "a": 255
},
{
- "array": [
- 242,
- 243,
- 244
- ]
+ "a": 74
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 75
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 76
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 77
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 78
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 79
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 64
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 81
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
+ },
+ {
+ "a": 82
+ },
+ {
+ "a": 0
+ },
+ {
+ "a": 255
}
]
}
}
},
{
- "packed": "00",
+ "packed": "",
"unpacked": {
"s": {
"array": []
@@ -2997,7 +3886,7 @@
"packet": "Struct_Array_Field_UnsizedElement_ConstantSize",
"tests": [
{
- "packed": "0003f8f9fa0003fbfcfd0003fef0010003020304",
+ "packed": "00035455560003575859",
"unpacked": {
"s": {
"array": [
@@ -3006,9 +3895,9 @@
},
{
"array": [
- 248,
- 249,
- 250
+ 84,
+ 85,
+ 86
]
},
{
@@ -3016,29 +3905,9 @@
},
{
"array": [
- 251,
- 252,
- 253
- ]
- },
- {
- "array": []
- },
- {
- "array": [
- 254,
- 240,
- 1
- ]
- },
- {
- "array": []
- },
- {
- "array": [
- 2,
- 3,
- 4
+ 87,
+ 88,
+ 89
]
}
]
@@ -3048,10 +3917,10 @@
]
},
{
- "packet": "Struct_Array_Field_UnsizedElement_SizeModifier",
+ "packet": "Struct_Array_Field_UnsizedElement_VariableSize",
"tests": [
{
- "packed": "0d000308090a00030b0c0d00",
+ "packed": "0f00035d5e5f00035061620003636465",
"unpacked": {
"s": {
"array": [
@@ -3060,9 +3929,9 @@
},
{
"array": [
- 8,
- 9,
- 10
+ 93,
+ 94,
+ 95
]
},
{
@@ -3070,9 +3939,338 @@
},
{
"array": [
- 11,
- 12,
- 13
+ 80,
+ 97,
+ 98
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 99,
+ 100,
+ 101
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_UnsizedElement_VariableCount",
+ "tests": [
+ {
+ "packed": "0f0003696a6b00036c6d6e00036f607100037273740003757677000378797a00037b7c7d00",
+ "unpacked": {
+ "s": {
+ "array": [
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 105,
+ 106,
+ 107
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 108,
+ 109,
+ 110
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 111,
+ 96,
+ 113
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 114,
+ 115,
+ 116
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 117,
+ 118,
+ 119
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 120,
+ 121,
+ 122
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 123,
+ 124,
+ 125
+ ]
+ },
+ {
+ "array": []
+ }
+ ]
+ }
+ }
+ },
+ {
+ "packed": "00",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_UnsizedElement_UnknownSize",
+ "tests": [
+ {
+ "packed": "00038182830003848586000387888900038a8b8c00038d8e8f0003809192000393949500039697980003999a9b00039c9d9e00039f90a10003a2a3a40003a5a6a70003a8a9aa0003abacad0003aeafa0",
+ "unpacked": {
+ "s": {
+ "array": [
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 129,
+ 130,
+ 131
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 132,
+ 133,
+ 134
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 135,
+ 136,
+ 137
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 138,
+ 139,
+ 140
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 141,
+ 142,
+ 143
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 128,
+ 145,
+ 146
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 147,
+ 148,
+ 149
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 150,
+ 151,
+ 152
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 153,
+ 154,
+ 155
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 156,
+ 157,
+ 158
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 159,
+ 144,
+ 161
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 162,
+ 163,
+ 164
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 165,
+ 166,
+ 167
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 168,
+ 169,
+ 170
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 171,
+ 172,
+ 173
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 174,
+ 175,
+ 160
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "packed": "",
+ "unpacked": {
+ "s": {
+ "array": []
+ }
+ }
+ }
+ ]
+ },
+ {
+ "packet": "Struct_Array_Field_UnsizedElement_SizeModifier",
+ "tests": [
+ {
+ "packed": "0d0003b4b5b60003b7b8b900",
+ "unpacked": {
+ "s": {
+ "array": [
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 180,
+ 181,
+ 182
+ ]
+ },
+ {
+ "array": []
+ },
+ {
+ "array": [
+ 183,
+ 184,
+ 185
]
},
{
@@ -3104,17 +4302,17 @@
}
},
{
- "packed": "0e12113411561178119a11bc11de110000",
+ "packed": "0edebbf0bb12cc34cc56cc78cc9acc0000",
"unpacked": {
"s": {
"array": [
- 4370,
- 4404,
- 4438,
- 4472,
- 4506,
- 4540,
- 4574
+ 48094,
+ 48112,
+ 52242,
+ 52276,
+ 52310,
+ 52344,
+ 52378
]
}
}
@@ -3125,7 +4323,7 @@
"packet": "Struct_Array_Field_UnsizedElement_VariableCount_Padded",
"tests": [
{
- "packed": "0700031f10210003222324000325262700",
+ "packed": "070003cbcccd0003cecfc00003d1d2d300",
"unpacked": {
"s": {
"array": [
@@ -3134,9 +4332,9 @@
},
{
"array": [
- 31,
- 16,
- 33
+ 203,
+ 204,
+ 205
]
},
{
@@ -3144,9 +4342,9 @@
},
{
"array": [
- 34,
- 35,
- 36
+ 206,
+ 207,
+ 192
]
},
{
@@ -3154,9 +4352,9 @@
},
{
"array": [
- 37,
- 38,
- 39
+ 209,
+ 210,
+ 211
]
},
{
@@ -3176,4 +4374,4 @@
}
]
}
-]
+]
\ No newline at end of file