Skip to content

Commit df97239

Browse files
author
Ryan Fox
committed
Add some tests for the new FieldArray with num_elements.
1 parent c68ea36 commit df97239

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

suitcase/test/test_fields.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,12 @@ class BasicMessageArrayAfter(Structure):
10431043
after = UBInt8()
10441044

10451045

1046+
# Test a FieldArray that takes a number of elements instead of a size in bytes.
1047+
class BasicMessageArrayNumElements(Structure):
1048+
count = LengthField(UBInt8())
1049+
array = FieldArray(BasicMessage, num_elements_provider=count)
1050+
1051+
10461052
class TestFieldArray(unittest.TestCase):
10471053
def test_pack_valid(self):
10481054
m = BasicMessageArray()
@@ -1112,6 +1118,30 @@ def test_unpack_after_valid(self):
11121118
self.assertEqual(m2.array[0].b2, 0x22)
11131119
self.assertEqual(m2.after, 0)
11141120

1121+
def test_pack_num_elements_valid(self):
1122+
m = BasicMessageArrayNumElements()
1123+
m.array = []
1124+
self.assertEqual(m.pack(), b"\x00")
1125+
1126+
messages = [BasicMessage(), BasicMessage(), BasicMessage()]
1127+
for i, message in enumerate(messages):
1128+
message.b1 = 0x10 + i
1129+
message.b2 = 0x20 + i
1130+
m.array.append(message)
1131+
1132+
self.assertEqual(m.pack(), b"\x03\x10\x20\x11\x21\x12\x22")
1133+
1134+
def test_unpack_num_elements_valid(self):
1135+
m = BasicMessageArrayNumElements.from_data(b"\x02\x22\x33\x44\x55")
1136+
1137+
self.assertEqual(m.count, 2)
1138+
self.assertEqual(len(m.array), 2)
1139+
self.assertIsInstance(m.array[0], BasicMessage)
1140+
self.assertEqual(m.array[0].b1, 0x22)
1141+
self.assertEqual(m.array[0].b2, 0x33)
1142+
self.assertEqual(m.array[1].b1, 0x44)
1143+
self.assertEqual(m.array[1].b2, 0x55)
1144+
11151145

11161146
# Test SubstructureField
11171147
class PascalString16(Structure):

0 commit comments

Comments
 (0)