示例#1
0
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'"
示例#2
0
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"
示例#3
0
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"
示例#4
0
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)
示例#6
0
def test_decompress_empty(encoded, kwargs):
    assert decompress(encoded, **kwargs) == b""
示例#7
0
def test_decompress_unknown_algorithm(algorithm):
    with pytest.raises(ValueError) as e:
        decompress(b"", algorithm)
    assert str(e.value) == f"unknown algorithm: '{algorithm}'"
示例#8
0
def test_decompress_error(encoded, kwargs):
    with pytest.raises(RuntimeError) as e:
        decompress(encoded, **kwargs)
    assert str(e.value) == "error decompressing stream"
示例#9
0
def test_decompress_turing(encoded, kwargs, expected):
    assert decompress(encoded, **kwargs) == expected