Пример #1
0
def test_footer_with_implicit_padding(params_footer_with_implicit_padding):
    params = params_footer_with_implicit_padding
    dtree = params['dtree']
    assert model.get_size(dtree.root.footer) == 14

    assert model.get_size(dtree.root.footer) == dtree.root.footer.footer_size
    assert model.get_size(dtree.root.items) == 12
    assert model.get_size(dtree.root) == 33
Пример #2
0
def test_footer_complex(params_footer_complex):
    params = params_footer_complex
    dtree = params['dtree']
    assert model.get_size(dtree.root.footer) == 14

    assert model.get_size(dtree.root.footer) == dtree.root.footer.footer_size
    assert model.get_size(dtree.root.footer.footer_contents) == 6
    assert memoryview(dtree.root.footer.footer_contents) == 'footer'
    assert memoryview(dtree.root.contents) == 'some random data'

    assert model.get_size(dtree.root) == 30
Пример #3
0
def test_array_items(params_array_items):
    params = params_array_items
    dtree, sizeof_array = params['dtree'], params['sizeof_array']
    assert len(dtree.integers) == 10
    assert model.get_size(dtree.integers) == sizeof_array
    for i in range(10):
        mapped_i = (i * 7) % 10
        assert dtree.integers[mapped_i].value == mapped_i
Пример #4
0
def test_sst_index_block(spec_sst_index, data_sst_index_block_1):
    data, nb_entries = (data_sst_index_block_1['data'],
                        data_sst_index_block_1['nb_entries'])
    dtree = model.DataTree(data, spec_sst_index)
    assert len(dtree.entries) == nb_entries
    last_index = None
    for i, entry in enumerate(dtree.entries):
        last_index = i
        model.make_python_object(entry)
    assert last_index == nb_entries - 1
    assert len(dtree.restarts) == dtree.nb_restarts
    assert model.get_size(dtree.restarts) == dtree.nb_restarts * 4
Пример #5
0
def test_slack_span_simple(params_simple):
    params = params_simple
    dtree, lengths, control_size = (params['dtree'], params['lengths'],
                                    params['control_size'])
    if 'data_lengths' in params:
        data_lengths = params['data_lengths']
    else:
        data_lengths = lengths

    assert len(dtree.blocks) == len(lengths)
    for i, block in enumerate(dtree.blocks):
        contents = memoryview(block.contents)
        assert len(contents) == lengths[i]
        assert contents[:data_lengths[i]] == ''.join([chr(i)] *
                                                     data_lengths[i])
        assert model.get_size(block) >= 10
        assert model.get_size(block) == model.get_size(dtree.blocks[i:i + 1])
        padding_len = max(10 - (control_size + lengths[i]), 0)
        try:
            assert (memoryview(block.padding) == '\xff' * padding_len)
        except AttributeError:
            assert padding_len == 0
Пример #6
0
def test_slack_static_span(params_subblocks):
    import sys
    #model.enable_debug_mode()
    params = params_subblocks
    dtree, block_counts = params['dtree'], params['block_counts']

    cur_offset = 0
    for (blocktype, block_array) in enumerate([
            dtree.huge_blocks, dtree.big_blocks, dtree.avg_blocks,
            dtree.small_blocks
    ]):
        assert len(block_array) == block_counts[blocktype]
        for block in block_array:
            for sub_block in block.sub_blocks:
                assert model.get_offset(sub_block) == cur_offset
                contents = model.make_python_object(sub_block.contents)
                assert contents == ''.join([chr(blocktype)] * len(contents))
                cur_offset += model.get_size(sub_block)