def test_monitor_source_switch(self): freq1 = 1e6 freq2 = 2e6 # TODO: Also test signal type switching (not yet supported by SimulatedDevice) top = Top( devices={ 's1': simulate.SimulatedDevice(freq=freq1), 's2': simulate.SimulatedDevice(freq=freq2), }) top.set_source_name('s1') self.assertEqual(top.state()['monitor'].get().get_fft_info()[0], freq1) top.set_source_name('s2') self.assertEqual(top.state()['monitor'].get().get_fft_info()[0], freq2)
def test_receiver_device_default(self): """ Receiver should default to the monitor device, not other receiver's device. """ top = Top(devices={ 's1': simulate.SimulatedDevice(), 's2': simulate.SimulatedDevice(), }) (_key, receiver1) = top.add_receiver('AM', key='a') top.set_source_name('s2') receiver1.set_device_name('s1') (_key, receiver2) = top.add_receiver('AM', key='b') self.assertEquals(receiver2.get_device_name(), 's2') self.assertEquals(receiver1.get_device_name(), 's1')
def test_auto_retune(self): f1 = 50e6 # avoid 100e6 because that's a default a couple of places dev = simulate.SimulatedDevice(freq=f1, allow_tuning=True) bandwidth = dev.get_rx_driver().get_output_type().get_sample_rate() top = Top(devices={'s1': dev}) (_key, receiver) = top.add_receiver('AM', key='a') # initial state check receiver.set_rec_freq(f1) self.assertEqual(dev.get_freq(), f1) # one "page" up f2 = f1 + bandwidth * 3 / 4 receiver.set_rec_freq(f2) self.assertEqual(dev.get_freq(), f1 + bandwidth) # must wait for tune_delay, which is 0 for simulated source, or it will look still-valid yield deferLater(the_reactor, 0.1, lambda: None) # one "page" down receiver.set_rec_freq(f1) self.assertEqual(dev.get_freq(), f1) yield deferLater(the_reactor, 0.1, lambda: None) # long hop receiver.set_rec_freq(200e6) self.assertEqual(dev.get_freq(), 200e6)
def test_mono(self): top = Top(devices={'s1': simulate.SimulatedDevice(freq=0)}, stereo=False) queue = gr.msg_queue() (_key, _receiver) = top.add_receiver('AM', key='a') top.add_audio_queue(queue, 48000) top.remove_audio_queue(queue)
def test_add_unknown_mode(self): ''' Specifying an unknown mode should not _fail_. ''' top = Top(devices={'s1': simulate.SimulatedDevice(freq=0)}) (_key, receiver) = top.add_receiver('NONSENSE', key='a') self.assertEqual(receiver.get_mode(), 'AM')
def test_mono(self): top = Top(devices={'s1': simulate.SimulatedDevice(freq=0)}, stereo=False) queue = gr.msg_queue() (_key, _receiver) = top.add_receiver('AM', key='a') top.set_unpaused(True) # there should be an attempted start top.add_audio_queue(queue, 48000) top.remove_audio_queue(queue)
def test_receiver_source_switch(self): """ Regression test: Switching sources was not updating receiver input frequency. """ freq1 = 1e6 freq2 = 2e6 top = Top( devices={ 's1': simulate.SimulatedDevice(freq=freq1), 's2': simulate.SimulatedDevice(freq=freq2), }) (_key, receiver) = top.add_receiver('AM', key='a') receiver.set_rec_freq(freq2) receiver.set_device_name('s1') self.assertFalse(receiver.get_is_valid(), 'receiver initially invalid') receiver.set_device_name('s2') self.assertTrue(receiver.get_is_valid(), 'receiver now valid')
def test_monitor_vfo_change(self): freq1 = 1e6 freq2 = 2e6 dev = simulate.SimulatedDevice(freq=freq1, allow_tuning=True) top = Top(devices={'s1': dev}) self.assertEqual(top.state()['monitor'].get().get_fft_info()[0], freq1) dev.set_freq(freq2) yield deferLater(the_reactor, 0.1, lambda: None) # wait for tune delay self.assertEqual(top.state()['monitor'].get().get_fft_info()[0], freq2)
def test_monitor_interest(self): queue = gr.msg_queue() top = Top(devices={'s1': simulate.SimulatedDevice()}) self.assertFalse(top._Top__running) top.get_monitor().get_fft_distributor().subscribe(queue) yield deferLater(the_reactor, 0.1, lambda: None) self.assertTrue(top._Top__running) top.get_monitor().get_fft_distributor().unsubscribe(queue) yield deferLater(the_reactor, 0.1, lambda: None) self.assertFalse(top._Top__running)
def test_source_switch_update(self): ''' Regression test: Switching sources was not updating receiver input frequency. ''' freq = 1e6 top = Top(devices={ 's1': simulate.SimulatedDevice(freq=0), 's2': simulate.SimulatedDevice(freq=freq), }) top.set_source_name('s1') self.assertEqual(top.monitor.get_fft_info()[0], 0) (_key, receiver) = top.add_receiver('AM', key='a') receiver.set_rec_freq(freq) self.assertFalse(receiver.get_is_valid()) top.set_source_name('s2') # TODO: instead of top.monitor, should go through state interface self.assertEqual(top.monitor.get_fft_info()[0], freq) self.assertTrue(receiver.get_is_valid())
def test_close(self): l = [] top = Top( devices={ 'm': merge_devices([ simulate.SimulatedDevice(), Device(components={'c': _DeviceShutdownDetector(l)}) ]) }) top.close_all_devices() self.assertEqual(l, ['close'])
def test_state_smoke(self): state_smoke_test(Top(devices={'s1': simulate.SimulatedDevice()}))
def test_audio_queue_smoke(self): top = Top(devices={'s1': simulate.SimulatedDevice(freq=0)}) queue = gr.msg_queue() top.set_unpaused(True) # there should be an attempted start top.add_audio_queue(queue, 48000) top.remove_audio_queue(queue)