def deserialize(cls, data, field_bytes): pair_size = ADDR_SIZE_IN_BYTES + field_bytes assert len(data) % (pair_size) == 0,\ f'Data must consist of pairs of address (8 bytes) and value ({field_bytes} bytes).' pair_stream = (data[pair_size * i:pair_size * (i + 1)] for i in range(len(data) // pair_size)) return cls( (RelocatableValue.from_bytes(pair[:ADDR_SIZE_IN_BYTES], 'little'), RelocatableValue.from_bytes(pair[ADDR_SIZE_IN_BYTES:], 'little')) for pair in pair_stream)
def test_relocatable_value_serialization(byte_order, n_bytes): for num in [19, RelocatableValue(2, 5)]: assert RelocatableValue.from_bytes( RelocatableValue.to_bytes(num, n_bytes, byte_order), byte_order) == num