Skip to content
Snippets Groups Projects
Commit 69d99fb7 authored by Thomas Kluyver's avatar Thomas Kluyver
Browse files

Add some tests

parent 940df880
No related branches found
No related tags found
No related merge requests found
......@@ -2,3 +2,4 @@ build/
dist/
wheelhouse/
*.egg-info
__pycache__/
import zlib
import pytest
from zlib_into import compress_into, decompress_into
def test_compress_into():
buf_size = 5000
data_in = b'abcde' * 5000
buf = bytearray(buf_size)
n_bytes_out = compress_into(data_in, buf)
assert isinstance(n_bytes_out, int)
assert 0 < n_bytes_out < buf_size
# Remaining space in buffer should not have been touched
assert bytes(buf[n_bytes_out:]) == b'\0' * (buf_size - n_bytes_out)
# Roundtrip
assert zlib.decompress(buf[:n_bytes_out]) == data_in
def test_compress_into_err():
buf_size = 5000
data_in = b'abcde' * 5000
buf = bytearray(5000)
with pytest.raises(BufferError):
compress_into(memoryview(data_in)[::2], buf) # Input not contiguous
with pytest.raises(TypeError):
compress_into(data_in, memoryview(buf).toreadonly()) # Output not writable
with pytest.raises(BufferError):
compress_into(data_in, buf[:10]) # Output too small
def test_decompress_into():
expanded_data = b'abcde' * 5000
compressed_data = zlib.compress(expanded_data)
buf = bytearray(len(expanded_data) + 10)
n_bytes_out = decompress_into(compressed_data, buf)
assert isinstance(n_bytes_out, int)
assert n_bytes_out == len(expanded_data)
assert buf[:n_bytes_out] == expanded_data
# Remaining space in buffer should not have been touched
assert bytes(buf[n_bytes_out:]) == b'\0' * (len(buf) - n_bytes_out)
# Exactly the right amount of space
buf2 = bytearray(len(expanded_data))
assert decompress_into(compressed_data, buf2) == len(expanded_data)
# Not enough space, by 1 byte
buf3 = bytearray(len(expanded_data) - 1)
with pytest.raises(BufferError):
decompress_into(compressed_data, buf3)
def test_decompress_into_err():
expanded_data = b'abcde' * 5000
compressed_data = zlib.compress(expanded_data)
buf = bytearray(len(expanded_data) + 10)
with pytest.raises(BufferError):
compress_into(memoryview(compressed_data)[::2], buf) # Input not contiguous
with pytest.raises(TypeError):
compress_into(compressed_data, memoryview(buf).toreadonly()) # Output not writable
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment