def test_reset_decompression_context_2(): if lz4.library_version_number() >= 10800: c = lz4frame.compress(b'1234', return_bytearray=False) context = lz4frame.create_decompression_context() try: # Simulate an error by passing junk to decompress d = lz4frame.decompress_chunk(context, c[1:3]) except: pass r = lz4frame.reset_decompression_context(context) assert r is None # And confirm we can use the context after reset d, bytes_read, eof = lz4frame.decompress_chunk(context, c) assert d == b'1234' assert bytes_read == len(c) assert eof == True else: pass
def test_reset_decompression_context_2(): if lz4.library_version_number() >= 10800: c = lz4frame.compress(b'1234', return_bytearray=False) context = lz4frame.create_decompression_context() try: # Simulate an error by passing junk to decompress d = lz4frame.decompress_chunk(context, c[4:]) except RuntimeError: pass r = lz4frame.reset_decompression_context(context) assert r is None # And confirm we can use the context after reset d, bytes_read, eof = lz4frame.decompress_chunk(context, c) assert d == b'1234' assert bytes_read == len(c) assert eof is True else: pass
def test_decompress_chunk_return_type_2(): c = lz4frame.compress(b'', return_bytearray=False) d = lz4frame.create_decompression_context() r, b, e = lz4frame.decompress_chunk( d, c, return_bytearray=True, ) assert isinstance(r, bytearray) assert isinstance(b, int) assert isinstance(e, bool)
def test_decompress_chunk_return_type_1(): c = lz4frame.compress(b'', return_bytearray=False) d = lz4frame.create_decompression_context() r, b, e = lz4frame.decompress_chunk( d, c, return_bytearray=False, ) assert isinstance(r, bytes) assert isinstance(b, int) assert isinstance(e, bool)
def test_decompress_chunk_return_type_4(): c = lz4frame.compress(b'', return_bytearray=False) d = lz4frame.create_decompression_context() r = lz4frame.decompress_chunk( d, c, return_bytearray=True, ) assert isinstance(r, tuple) assert isinstance(r[0], bytearray) assert isinstance(r[1], int) assert isinstance(r[2], bool)
def test_roundtrip_multiframe_3(data): nframes = 4 compressed = b'' ctx = lz4frame.create_compression_context() for _ in range(nframes): compressed += lz4frame.compress_begin(ctx) compressed += lz4frame.compress_chunk(ctx, data) compressed += lz4frame.compress_flush(ctx) decompressed = b'' ctx = lz4frame.create_decompression_context() for _ in range(nframes): d, bytes_read, eof = lz4frame.decompress_chunk(ctx, compressed) decompressed += d assert eof is True assert bytes_read == len(compressed) // nframes assert len(decompressed) == nframes * len(data) assert data * nframes == decompressed
def test_roundtrip_chunked(data, block_size, block_linked, content_checksum, block_checksum, compression_level, auto_flush, store_size): data, c_chunks, d_chunks = data c_context = lz4frame.create_compression_context() kwargs = {} kwargs['compression_level'] = compression_level kwargs['block_size'] = block_size kwargs['block_linked'] = block_linked kwargs['content_checksum'] = content_checksum kwargs['block_checksum'] = block_checksum kwargs['auto_flush'] = auto_flush if store_size is True: kwargs['source_size'] = len(data) compressed = lz4frame.compress_begin(c_context, **kwargs) data_in = get_chunked(data, c_chunks) try: while True: compressed += lz4frame.compress_chunk(c_context, next(data_in)) except StopIteration: pass finally: del data_in compressed += lz4frame.compress_flush(c_context) get_frame_info_check( compressed, len(data), store_size, block_size, block_linked, content_checksum, block_checksum, ) d_context = lz4frame.create_decompression_context() compressed_in = get_chunked(compressed, d_chunks) decompressed = b'' bytes_read = 0 eofs = [] try: while True: d, b, e = lz4frame.decompress_chunk( d_context, next(compressed_in), ) decompressed += d bytes_read += b eofs.append(e) except StopIteration: pass finally: del compressed_in assert bytes_read == len(compressed) assert decompressed == data assert eofs[-1] is True assert (True in eofs[:-2]) is False
def test_roundtrip_chunked(data, block_size, block_linked, content_checksum, block_checksum, compression_level, auto_flush, store_size): data, c_chunks, d_chunks = data c_context = lz4frame.create_compression_context() kwargs = {} kwargs['compression_level'] = compression_level kwargs['block_size'] = block_size kwargs['block_linked'] = block_linked kwargs['content_checksum'] = content_checksum kwargs['block_checksum'] = block_checksum kwargs['auto_flush'] = auto_flush if store_size is True: kwargs['source_size'] = len(data) compressed = lz4frame.compress_begin( c_context, **kwargs ) data_in = get_chunked(data, c_chunks) try: while True: compressed += lz4frame.compress_chunk( c_context, next(data_in) ) except StopIteration: pass finally: del data_in compressed += lz4frame.compress_flush(c_context) get_frame_info_check( compressed, len(data), store_size, block_size, block_linked, content_checksum, block_checksum, ) d_context = lz4frame.create_decompression_context() compressed_in = get_chunked(compressed, d_chunks) decompressed = b'' bytes_read = 0 eofs = [] try: while True: d, b, e = lz4frame.decompress_chunk( d_context, next(compressed_in), ) decompressed += d bytes_read += b eofs.append(e) except StopIteration: pass finally: del compressed_in assert bytes_read == len(compressed) assert decompressed == data assert eofs[-1] is True assert (True in eofs[:-2]) is False