File: basic_test.py

package info (click to toggle)
liblc3 1.1.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,760 kB
  • sloc: ansic: 12,075; python: 10,948; cpp: 282; makefile: 119
file content (47 lines) | stat: -rw-r--r-- 1,865 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import array
import lc3
import pytest


@pytest.mark.parametrize("bit_depth,decoded_length", [(16, 960), (24, 1440)])
def test_decode_with_bit_depth(bit_depth, decoded_length) -> None:
    decoder = lc3.Decoder(frame_duration_us=10000, sample_rate_hz=48000)
    decoded_frame = decoder.decode(bytes(120), bit_depth=bit_depth)
    assert isinstance(decoded_frame, bytes)
    assert len(decoded_frame) == decoded_length


def test_decode_without_bit_depth() -> None:
    decoder = lc3.Decoder(frame_duration_us=10000, sample_rate_hz=48000)
    decoded_frame = decoder.decode(bytes(120))
    assert isinstance(decoded_frame, array.array)
    assert len(decoded_frame) == 480
    assert all(isinstance(e, float) for e in decoded_frame)


def test_decode_with_bad_bit_depth() -> None:
    decoder = lc3.Decoder(frame_duration_us=10000, sample_rate_hz=48000)
    with pytest.raises(lc3.InvalidArgumentError):
        decoder.decode(bytes(120), bit_depth=128)


@pytest.mark.parametrize("bit_depth", [16, 24])
def test_encode_with_bit_depth(bit_depth) -> None:
    encoder = lc3.Encoder(frame_duration_us=10000, sample_rate_hz=48000)
    encoded_frame = encoder.encode(bytes(1920), num_bytes=120, bit_depth=bit_depth)
    assert isinstance(encoded_frame, bytes)
    assert len(encoded_frame) == 120


@pytest.mark.parametrize("pcm", [bytes(1920), [0.0] * 1920])
def test_encode_without_bit_depth(pcm) -> None:
    encoder = lc3.Encoder(frame_duration_us=10000, sample_rate_hz=48000)
    encoded_frame = encoder.encode(pcm, num_bytes=120, bit_depth=None)
    assert isinstance(encoded_frame, bytes)
    assert len(encoded_frame) == 120


def test_encode_with_bad_bit_depth() -> None:
    encoder = lc3.Encoder(frame_duration_us=10000, sample_rate_hz=48000)
    with pytest.raises(lc3.InvalidArgumentError):
        encoder.encode(bytes(1920), num_bytes=120, bit_depth=128)