def test_intfield_with_variable_bit_lenth(self):
"""
This test verifies that setting an integer value of variable size is correctly exported to the to_bytes
function. This also tests the ability to set a value for the packet upon instantiation.
"""
class int_packet_with_varied_sized_int_fields(models.Packet):
int_field = models.IntField()
int_field_signed = models.IntField(signed=True)
int_field_4_bits = models.IntField(bit_len=4)
int_field_12_bits = models.IntField(bit_len=12)
pkt = int_packet_with_varied_sized_int_fields(
int_field = 0xbeef,
int_field_signed = 0xdead,
int_field_4_bits = 0xa,
int_field_12_bits = 0xbc
)
class c_pkt_struct(ctypes.Structure):
_fields_ = (
('int_field', ctypes.c_uint16),
('int_field_signed', ctypes.c_int16),
('int_field_4_bits', ctypes.c_uint16, 4),
('int_field_12_bits', ctypes.c_uint16, 12),
)
c_pkt = c_pkt_struct()
c_pkt.int_field = 0xbeef
c_pkt.int_field_signed = 0xdead
c_pkt.int_field_4_bits = 0xa
c_pkt.int_field_12_bits = 0xbc
b_str = ctypes.string_at(ctypes.addressof(c_pkt), ctypes.sizeof(c_pkt))
self.assertEquals(b_str, pkt.to_bytes())
评论列表
文章目录