Beispiel #1
0
def test_relative_count(
    initial_value_block_0: int,
    initial_value_block_1: int,
    initial_value_block_2: int,
    add_0: int,
    add_1: int,
    add_2: int,
) -> None:
    assume(initial_value_block_0 + add_0 <= 512)
    assume(initial_value_block_1 + add_1 <= 512)
    assume(initial_value_block_2 + add_2 <= 512)

    initial_values = [
        initial_value_block_0, initial_value_block_1, initial_value_block_2
    ]

    adds = [add_0, add_1, add_2]

    packed_count = 0
    for basic_block_index, initial_value in enumerate(initial_values):
        packed_count = Poppy._add_relative_count(
            basic_block_index=basic_block_index,
            packed_relative_counts=packed_count,
            pop_count=initial_value)

    for basic_block_index, initial_value in enumerate(initial_values):
        assert Poppy._get_relative_count(
            basic_block_index=basic_block_index,
            packed_relative_counts=packed_count) == initial_value

    for basic_block_index, add in enumerate(adds):
        packed_count = Poppy._add_relative_count(
            basic_block_index=basic_block_index,
            packed_relative_counts=packed_count,
            pop_count=add)

    for basic_block_index, (initial_value,
                            add) in enumerate(zip(initial_values, adds)):
        assert Poppy._get_relative_count(
            basic_block_index=basic_block_index,
            packed_relative_counts=packed_count) == initial_value + add
Beispiel #2
0
def test_l2_layer(bb: bytes) -> None:
    assume(len(bb) % 8 == 0)
    bits = bitarray()
    bits.frombytes(bb)
    poppy = Poppy(bits)

    for byte_offset in range(0, len(bb), 64):
        basic_block_idx = (byte_offset % 256) // 64
        if basic_block_idx != 3:
            # Calculate the sum of the bits in the 64-byte block.
            bit_start = 8 * byte_offset
            bit_end = min(len(bits), bit_start + 512)
            expected_pop_count = sum(bits[bit_start:bit_end])

            level_2_idx = (byte_offset // 256) * 2 + 1
            packed_relative_counts = poppy._level_1[level_2_idx]
            actual_pop_count = poppy._get_relative_count(
                basic_block_index=basic_block_idx,
                packed_relative_counts=packed_relative_counts)

            assert expected_pop_count == actual_pop_count