def test_too_weak(): p = ProcessMock() calib.send(config, p, gain=0.01, limit=32) p.buf.seek(0) for r in calib.detector(config, src=p): assert not r['success'] assert r['msg'] == 'too weak signal'
def test_too_strong(): p = ProcessMock() calib.send(config, p, gain=1.001, limit=32) p.buf.seek(0) for r in calib.detector(config, src=p): assert not r.success assert r.msg == 'too strong signal'
def test_recv_freq_change(): p = ProcessMock() calib.send(config, p, gain=0.5, limit=2) offset = p.buf.tell() // 16 p.buf.seek(offset) messages = [state['msg'] for state in calib.recv_iter(config, p)] assert messages == [ 'good signal', 'good signal', 'good signal', 'frequency change', 'good signal', 'good signal', 'good signal' ]
def test_recv_freq_change(): p = ProcessMock() calib.send(config, p, gain=0.5, limit=2) offset = p.buf.tell() // 16 p.buf.seek(offset) messages = [state['msg'] for state in calib.recv_iter(config, p)] assert messages == [ 'good signal', 'good signal', 'good signal', 'frequency change', 'good signal', 'good signal', 'good signal']
def test_recv_binary_search(): buf = BytesIO() gains = [0.5, 0.25, 0.38, 0.44, 0.41, 0.39, 0.40, 0.40] for gain in gains: calib.send(config, buf, gain=gain, limit=2) buf.seek(0) dump = BytesIO() with mock.patch('subprocess.check_call') as check_call: calib.recv(config, src=buf, volume_cmd='ctl', dump_audio=dump) assert dump.getvalue() == buf.getvalue() gains.append(gains[-1]) fmt = 'ctl {0:.0f}%' expected = [mock.call(shell=True, args=fmt.format(100 * g)) for g in gains] assert check_call.mock_calls == expected
def test_errors(): class WriteError(ProcessMock): def write(self, data): raise KeyboardInterrupt() p = WriteError() with pytest.raises(KeyboardInterrupt): calib.send(config, p, limit=32) assert p.buf.tell() == 0 class ReadError(ProcessMock): def read(self, n): raise KeyboardInterrupt() p = ReadError() with pytest.raises(KeyboardInterrupt): calib.recv(config, p, verbose=True) assert p.buf.tell() == 0
def test_success(): p = ProcessMock() calib.send(config, p, gain=0.5, limit=32) p.buf.seek(0) calib.recv(config, p)
def test_send_max_volume(): with mock.patch('subprocess.check_call') as check_call: calib.send(config, dst=BytesIO(), volume_cmd='ctl', limit=1) assert check_call.mock_calls == [mock.call(shell=True, args='ctl 100%')]