def test_decompress_algorithm_requires_elem_size(algorithm): with pytest.raises(ValueError) as e: decompress( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", algorithm, ) assert str(e.value) == "algorithm requires argument 'elem_size'"
def test_decompress_elem_size_must_be_positive(algorithm, elem_size): with pytest.raises(ValueError) as e: decompress( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", algorithm, elem_size=elem_size, ) assert str(e.value) == "'elem_size' must be positive"
def test_decompress_keyword_args(algorithm): assert (decompress( data=b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", algorithm=algorithm, elem_size=1, ) == b"") with pytest.raises(TypeError) as e: decompress( data=b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", algorithm=algorithm, zaphod=1, ) assert str( e.value) == "'zaphod' is an invalid keyword argument for this function"
def test_decompress_positional_args(): assert (decompress( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "lz4-h5", ) == b"") with pytest.raises(TypeError) as e: decompress( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "lz4-h5", 1, ) if sys.version_info >= (3, 7): assert str( e.value ) == "function takes at most 2 positional arguments (3 given)" else: assert str( e.value ) == "Function takes at most 2 positional arguments (3 given)"
def decompress_channel_data(channel): data = channel["data"] if isinstance(data, (np.ndarray, np.generic)): return data dimensions, encoded = data compression = channel["compression"] data_type = channel["data_type"] dtype = {"uint8": "u1", "uint16le": "<u2", "uint32le": "<u4"}[data_type] elem_size = {"uint8": 1, "uint16le": 2, "uint32le": 4}[data_type] if compression == "bslz4": decompressed = decompress(encoded, "bslz4-h5", elem_size=elem_size) elif compression == "lz4": decompressed = decompress(encoded, "lz4-h5") elif compression == "none": decompressed = encoded else: raise NotImplementedError(f"unknown compression: {compression}") return np.frombuffer(decompressed, dtype=dtype).reshape(dimensions)
def test_decompress_empty(encoded, kwargs): assert decompress(encoded, **kwargs) == b""
def test_decompress_unknown_algorithm(algorithm): with pytest.raises(ValueError) as e: decompress(b"", algorithm) assert str(e.value) == f"unknown algorithm: '{algorithm}'"
def test_decompress_error(encoded, kwargs): with pytest.raises(RuntimeError) as e: decompress(encoded, **kwargs) assert str(e.value) == "error decompressing stream"
def test_decompress_turing(encoded, kwargs, expected): assert decompress(encoded, **kwargs) == expected