From 835841bf2eb059693c7a91ac029601441adff818 Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Sun, 16 Aug 2015 18:19:06 +0300 Subject: [PATCH] test_calib: test frequency change case --- amodem/calib.py | 21 +++++++++++++-------- amodem/tests/test_calib.py | 12 ++++++++++++ 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/amodem/calib.py b/amodem/calib.py index 8861b56..9473d8d 100644 --- a/amodem/calib.py +++ b/amodem/calib.py @@ -111,13 +111,7 @@ def iter_window(iterable, size): yield block -def recv(config, src, verbose=False, volume_cmd=None, dump_audio=None): - fmt = '{freq:6.0f} Hz: {msg:20s}' - log.info('verbose: %s', verbose) - if verbose: - fields = ['total', 'rms', 'coherency', 'peak'] - fmt += ', '.join('{0}={{{0}:.4f}}'.format(f) for f in fields) - +def recv_iter(config, src, volume_cmd=None, dump_audio=None): volume_ctl = volume_controller(volume_cmd) if dump_audio: @@ -130,4 +124,15 @@ def recv(config, src, verbose=False, volume_cmd=None, dump_audio=None): if _prev['freq'] != _next['freq']: if not curr['success']: curr['msg'] = 'frequency change' - log.info(fmt.format(**curr)) + yield curr + + +def recv(config, src, verbose=False, volume_cmd=None, dump_audio=None): + fmt = '{freq:6.0f} Hz: {msg:20s}' + log.info('verbose: %s', verbose) + if verbose: + fields = ['total', 'rms', 'coherency', 'peak'] + fmt += ', '.join('{0}={{{0}:.4f}}'.format(f) for f in fields) + + for state in recv_iter(config, src, volume_cmd, dump_audio): + log.info(fmt.format(**state)) diff --git a/amodem/tests/test_calib.py b/amodem/tests/test_calib.py index e959dd3..25c921a 100644 --- a/amodem/tests/test_calib.py +++ b/amodem/tests/test_calib.py @@ -146,3 +146,15 @@ def test_recv_binary_search(): 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_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']