@@ -1036,6 +1036,13 @@ class BasicMessageArray(Structure):
10361036 array = FieldArray (BasicMessage , count )
10371037
10381038
1039+ # Test empty FieldArray with content after the array
1040+ class BasicMessageArrayAfter (Structure ):
1041+ count = LengthField (UBInt8 (), multiplier = 2 )
1042+ array = FieldArray (BasicMessage , count )
1043+ after = UBInt8 ()
1044+
1045+
10391046class TestFieldArray (unittest .TestCase ):
10401047 def test_pack_valid (self ):
10411048 m = BasicMessageArray ()
@@ -1071,6 +1078,40 @@ def test_unpack_empty(self):
10711078 self .assertEqual (m .count , 0 )
10721079 self .assertEqual (len (m .array ), 0 )
10731080
1081+ def test_pack_after_valid (self ):
1082+ m = BasicMessageArrayAfter ()
1083+
1084+ m .array = []
1085+ m .after = 1
1086+
1087+ self .assertEqual (m .pack (), b"\x00 \x01 " )
1088+
1089+ # Populate the array.
1090+ m2 = BasicMessageArrayAfter ()
1091+ first = BasicMessage ()
1092+ first .b1 = 0x22
1093+ first .b2 = 0x33
1094+ m2 .array = [first ]
1095+ m2 .after = 0
1096+
1097+ self .assertEquals (m2 .pack (), b"\x01 \x22 \x33 \x00 " )
1098+
1099+ def test_unpack_after_valid (self ):
1100+ m = BasicMessageArrayAfter .from_data (b"\x00 \x11 " )
1101+
1102+ self .assertEqual (m .count , 0 )
1103+ self .assertEqual (len (m .array ), 0 )
1104+ self .assertEqual (m .after , 0x11 )
1105+
1106+ m2 = BasicMessageArrayAfter .from_data (b"\x01 \x11 \x22 \x00 " )
1107+
1108+ self .assertEqual (m2 .count , 1 )
1109+ self .assertEqual (len (m2 .array ), 1 )
1110+ self .assertIsInstance (m2 .array [0 ], BasicMessage )
1111+ self .assertEqual (m2 .array [0 ].b1 , 0x11 )
1112+ self .assertEqual (m2 .array [0 ].b2 , 0x22 )
1113+ self .assertEqual (m2 .after , 0 )
1114+
10741115
10751116# Test SubstructureField
10761117class PascalString16 (Structure ):
0 commit comments