class Struct(Structure): f1 = FixedLengthField(2) f2 = FixedLengthField(1, skip=0) f3 = FixedLengthField(3) class Meta: alignment = a
class Struct(Structure): bit1 = BitField(length=1, realign=True) byte = FixedLengthField(length=1) bit2 = BitField(length=1) class Meta: alignment = 2
def test_obtain_value(self): class En(enum.Enum): TEST = b'b' field = EnumField(FixedLengthField(1), En) self.assertFieldToStreamEqual(b'b', En.TEST, field) self.assertFieldToStreamEqual(b'b', 'TEST', field) self.assertFieldToStreamEqual(b'b', b'b', field) with self.assertRaises(TypeError): self.assertFieldToStreamEqual(b'b', 'x', field)
def test_length(self): self.assertFieldStreamEqual(b"\x02\x01\x00\x01", [513, 1], ArrayField(IntegerField(2, 'big'), length=4, name='field'), parsed_fields={'field': None}) self.assertFieldStreamEqual(b"\x02\x01\x00\x01", [b"\x02\x01\x00\x01"], ArrayField(FixedLengthField(-1), length=4, name='field'), parsed_fields={'field': None}) self.assertFieldStreamEqual(b"\x02\x01\x00\x01", [b"\x02\x01", b"\x00\x01"], ArrayField(FixedLengthField(2), length=4, name='field'), parsed_fields={'field': None}) self.assertFieldStreamEqual(b"\x02\x01\x00\x01", [b"\x02\x01", b"\x00\x01"], ArrayField(FixedLengthField(2), length=-1, name='field'), parsed_fields={'field': None})
def test_len(self): self.assertEqual(1, len(EnumField(FixedLengthField(1), enum.Enum)))
class SubStructure(Structure): length = IntegerField(1, signed=False) numbers = ArrayField(FixedLengthField(length=lambda s: s.length), count='length')
class S(Structure): a = FixedLengthField(length=6) class Meta: capture_raw = True
class Struct1(Structure): byte1 = FixedLengthField(length=1)
class Inner(Structure): o = FixedLengthField(length=2) a = FixedLengthField(length=2)
class Struct(Structure): bit1 = BitField(length=1) bit2 = BitField(length=1) byte = FixedLengthField(length=1)
class TestStructure(Structure): field2 = FixedLengthField(length='length', lazy=True) field3 = FixedLengthField(length=1) length = IntegerField(offset=-1, length=1, lazy=True)
class TestStructure(Structure): field1 = FixedLengthField(length=1, lazy=True) field2 = IntegerField(offset=1, length=1, lazy=True)
class TestStructure(Structure): field1 = IntegerField(length=1, lazy=True) field2 = FixedLengthField(length='field1', lazy=True) field3 = FixedLengthField(length=1)
class TestStructure(Structure): field1 = FixedLengthField(length=3, lazy=True)
class TestStructure(Structure): field1 = TerminatedField(b'\0', lazy=True) field2 = FixedLengthField(length=3, lazy=True) field3 = TerminatedField(b'\0', lazy=True)
class TestStructure(Structure): a = FixedLengthField(length=-1) class Meta: length = 3
class S(Structure): o = FixedLengthField(length=2) a = StructureField(Inner) class Meta: capture_raw = True
class Struct(Structure): byte1 = EnumField(FixedLengthField(1), En)
class Struct1(Structure): b = FixedLengthField(length=lambda c: c._.length, )
class ShortStructure(Structure): text = FixedLengthField(length=3)
class TestStructure(Structure): field1 = FixedLengthField(length=3, offset=2)
class S(Structure): a = FixedLengthField(length=6)
class UnlimitedFixedLengthStructure(Structure): text = FixedLengthField(length=-1)
class TestStructure(Structure): field1 = FixedLengthField(length=3) field2 = FixedLengthField(length=2, offset=-3)
class StructureThatSkips(Structure): s = StructureField(ShortStructure, length=5) text = FixedLengthField(length=3)
class TestStructure(Structure): field1 = FixedLengthField(length=3) field2 = FixedLengthField(length=2, skip=2)
class TestStruct(Structure): length = IntegerField(1) content = FixedLengthField(this.length)
class TestStructure(Structure): field1 = FixedLengthField(length=5) field2 = FixedLengthField(length=5) class Meta: checks = [lambda c: c.field1 == c.field2]