def run(size, chan=None, df=0, success=True, reader=None, cfg=None): if cfg is None: cfg = config.fastest() tx_data = os.urandom(size) tx_audio = BytesIO() main.send(config=cfg, src=BytesIO(tx_data), dst=tx_audio, gain=0.5) data = tx_audio.getvalue() data = common.loads(data) if chan is not None: data = chan(data) if df: sampler = sampling.Sampler(data, sampling.Interpolator()) sampler.freq += df data = sampler.take(len(data)) data = common.dumps(data) rx_audio = BytesIO(data) rx_data = BytesIO() dump = BytesIO() if reader: rx_audio = reader(rx_audio) try: result = main.recv(config=cfg, src=rx_audio, dst=rx_data, dump_audio=dump, pylab=None) finally: rx_audio.close() rx_data = rx_data.getvalue() assert data.startswith(dump.getvalue()) assert result == success if success: assert rx_data == tx_data
def test_resample(): x = np.sin(2*np.pi * 10 * np.linspace(0, 1, 1001)) src = BytesIO(common.dumps(x)) dst = BytesIO() sampling.resample(src=src, dst=dst, df=0.0) y = common.loads(dst.getvalue()) err = x[:len(y)] - y assert np.max(np.abs(err)) < 1e-4 dst = BytesIO() sampling.resample(src=BytesIO(b'\x00\x00'), dst=dst, df=0.0) assert dst.tell() == 0
def test_resample(): x = np.sin(2 * np.pi * 10 * np.linspace(0, 1, 1001)) src = BytesIO(common.dumps(x)) dst = BytesIO() sampling.resample(src=src, dst=dst, df=0.0) y = common.loads(dst.getvalue()) err = x[:len(y)] - y assert np.max(np.abs(err)) < 1e-4 dst = BytesIO() sampling.resample(src=BytesIO(b'\x00\x00'), dst=dst, df=0.0) assert dst.tell() == 0
def run(size, chan=None, df=0, success=True, cfg=None): if cfg is None: cfg = config.fastest() tx_data = os.urandom(size) tx_audio = BytesIO() main.send(config=cfg, src=BytesIO(tx_data), dst=tx_audio, gain=0.5) data = tx_audio.getvalue() data = common.loads(data) if chan is not None: data = chan(data) if df: sampler = sampling.Sampler(data, sampling.Interpolator()) sampler.freq += df data = sampler.take(len(data)) data = common.dumps(data) rx_audio = BytesIO(data) rx_data = BytesIO() dump = BytesIO() try: result = main.recv(config=cfg, src=rx_audio, dst=rx_data, dump_audio=dump, pylab=None) finally: rx_audio.close() rx_data = rx_data.getvalue() assert data.startswith(dump.getvalue()) assert result == success if success: assert rx_data == tx_data
def test_dumps_loads(): x = np.array([.1, .4, .2, .6, .3, .5]) y = common.loads(common.dumps(x)) assert all(x == y)