mirror of
https://github.com/jopohl/urh.git
synced 2026-03-04 15:34:01 +01:00
Improve performance of tests and fix some minor bugs in insert sine dialog and "apply to all" action
154 lines
7.3 KiB
Python
154 lines
7.3 KiB
Python
from PyQt5.QtCore import Qt
|
|
from PyQt5.QtGui import QDropEvent
|
|
from PyQt5.QtTest import QTest
|
|
from PyQt5.QtWidgets import QApplication
|
|
|
|
from tests.QtTestCase import QtTestCase
|
|
from urh.controller.dialogs.ModulatorDialog import ModulatorDialog
|
|
from urh.util.Logger import logger
|
|
|
|
|
|
class TestModulatorGUI(QtTestCase):
|
|
|
|
def setUp(self):
|
|
super().setUp()
|
|
self.form.ui.tabWidget.setCurrentIndex(2)
|
|
|
|
logger.debug("Preparing Modulation dialog")
|
|
self.dialog, _ = self.form.generator_tab_controller.prepare_modulation_dialog()
|
|
QApplication.instance().processEvents()
|
|
QTest.qWait(self.WAIT_TIMEOUT_BEFORE_NEW)
|
|
|
|
if self.SHOW:
|
|
self.dialog.show()
|
|
|
|
logger.debug("Initializing Modulation dialog")
|
|
self.dialog.initialize("1111")
|
|
logger.debug("Preparation success")
|
|
|
|
def test_add_remove_modulator(self):
|
|
self.assertEqual(len(self.dialog.modulators), 1)
|
|
self.dialog.ui.btnAddModulation.click()
|
|
self.assertEqual(len(self.dialog.modulators), 2)
|
|
self.dialog.ui.btnAddModulation.click()
|
|
self.assertEqual(len(self.dialog.modulators), 3)
|
|
self.app.processEvents()
|
|
self.dialog.ui.btnRemoveModulation.click()
|
|
self.assertEqual(len(self.dialog.modulators), 2)
|
|
self.dialog.ui.btnRemoveModulation.click()
|
|
self.assertEqual(len(self.dialog.modulators), 1)
|
|
self.assertFalse(self.dialog.ui.btnRemoveModulation.isEnabled())
|
|
|
|
def test_edit_carrier(self):
|
|
self.dialog.ui.doubleSpinBoxCarrierFreq.setValue(1e9)
|
|
self.dialog.ui.doubleSpinBoxCarrierFreq.editingFinished.emit()
|
|
self.assertEqual(self.dialog.current_modulator.carrier_freq_hz, 1e9)
|
|
|
|
self.dialog.ui.doubleSpinBoxCarrierPhase.setValue(100)
|
|
self.dialog.ui.doubleSpinBoxCarrierPhase.editingFinished.emit()
|
|
self.assertEqual(self.dialog.current_modulator.carrier_phase_deg, 100)
|
|
|
|
def test_edit_data(self):
|
|
bits = self.dialog.current_modulator.display_bits
|
|
self.dialog.ui.linEdDataBits.setText("10101010")
|
|
self.dialog.ui.linEdDataBits.editingFinished.emit()
|
|
self.assertEqual(self.dialog.current_modulator.display_bits, "10101010")
|
|
|
|
assert isinstance(self.dialog, ModulatorDialog)
|
|
|
|
self.dialog.restore_bits_action.trigger()
|
|
self.dialog.ui.linEdDataBits.editingFinished.emit()
|
|
self.assertEqual(self.dialog.current_modulator.display_bits, bits)
|
|
|
|
self.dialog.ui.spinBoxSamplesPerSymbol.setValue(1337)
|
|
self.dialog.ui.spinBoxSamplesPerSymbol.editingFinished.emit()
|
|
self.assertEqual(self.dialog.current_modulator.samples_per_symbol, 1337)
|
|
|
|
self.dialog.ui.spinBoxSampleRate.setValue(5e6)
|
|
self.dialog.ui.spinBoxSampleRate.editingFinished.emit()
|
|
self.assertEqual(self.dialog.current_modulator.sample_rate, 5e6)
|
|
|
|
def test_zoom(self):
|
|
self.dialog.ui.gVModulated.zoom(1.1)
|
|
self.assertIn(int(self.dialog.ui.gVModulated.view_rect().width()),
|
|
[int(self.dialog.ui.gVCarrier.view_rect().width())-1,
|
|
int(self.dialog.ui.gVCarrier.view_rect().width()),
|
|
int(self.dialog.ui.gVCarrier.view_rect().width()+1)])
|
|
|
|
self.assertIn(int(self.dialog.ui.gVModulated.view_rect().width()),
|
|
[int(self.dialog.ui.gVData.view_rect().width())-1,
|
|
int(self.dialog.ui.gVData.view_rect().width()),
|
|
int(self.dialog.ui.gVData.view_rect().width()+1)])
|
|
|
|
self.dialog.ui.gVModulated.zoom(1.01)
|
|
|
|
self.assertIn(int(self.dialog.ui.gVModulated.view_rect().width()),
|
|
[int(self.dialog.ui.gVCarrier.view_rect().width())-1,
|
|
int(self.dialog.ui.gVCarrier.view_rect().width()),
|
|
int(self.dialog.ui.gVCarrier.view_rect().width()+1)])
|
|
|
|
self.assertIn(int(self.dialog.ui.gVModulated.view_rect().width()),
|
|
[int(self.dialog.ui.gVData.view_rect().width())-1,
|
|
int(self.dialog.ui.gVData.view_rect().width()),
|
|
int(self.dialog.ui.gVData.view_rect().width()+1)])
|
|
|
|
def test_edit_modulation(self):
|
|
self.dialog.ui.comboBoxModulationType.setCurrentText("Amplitude Shift Keying (ASK)")
|
|
self.assertEqual(self.dialog.ui.labelParameters.text(), "Amplitudes in %:")
|
|
|
|
self.dialog.ui.comboBoxModulationType.setCurrentText("Frequency Shift Keying (FSK)")
|
|
self.assertEqual(self.dialog.ui.labelParameters.text(), "Frequencies in Hz:")
|
|
|
|
self.dialog.ui.comboBoxModulationType.setCurrentText("Gaussian Frequency Shift Keying (GFSK)")
|
|
self.assertEqual(self.dialog.ui.labelParameters.text(), "Frequencies in Hz:")
|
|
self.dialog.ui.spinBoxGaussBT.setValue(0.5)
|
|
self.dialog.ui.spinBoxGaussBT.editingFinished.emit()
|
|
self.assertEqual(self.dialog.current_modulator.gauss_bt, 0.5)
|
|
self.dialog.ui.spinBoxGaussFilterWidth.setValue(5)
|
|
self.dialog.ui.spinBoxGaussFilterWidth.editingFinished.emit()
|
|
self.assertEqual(self.dialog.current_modulator.gauss_filter_width, 5)
|
|
|
|
self.dialog.ui.comboBoxModulationType.setCurrentText("Phase Shift Keying (PSK)")
|
|
self.assertEqual(self.dialog.ui.labelParameters.text(), "Phases in degree:")
|
|
|
|
self.dialog.ui.comboBoxModulationType.setCurrentText("Amplitude Shift Keying (ASK)")
|
|
self.assertEqual(self.dialog.ui.labelParameters.text(), "Amplitudes in %:")
|
|
|
|
self.assertEqual(int(self.dialog.ui.lSamplesInViewModulated.text()),
|
|
int(self.dialog.ui.gVModulated.view_rect().width()))
|
|
|
|
def test_signal_view(self):
|
|
self.add_signal_to_form("esaver.complex16s")
|
|
signal = self.form.signal_tab_controller.signal_frames[0].signal
|
|
|
|
tree_view = self.dialog.ui.treeViewSignals
|
|
tree_model = tree_view.model()
|
|
item = tree_model.rootItem.children[0].children[0]
|
|
index = tree_model.createIndex(0, 0, item)
|
|
rect = tree_view.visualRect(index)
|
|
QTest.mousePress(tree_view.viewport(), Qt.LeftButton, pos=rect.center())
|
|
mime_data = tree_model.mimeData([index])
|
|
drag_drop = QDropEvent(rect.center(), Qt.CopyAction | Qt.MoveAction, mime_data, Qt.LeftButton, Qt.NoModifier)
|
|
drag_drop.acceptProposedAction()
|
|
self.dialog.ui.gVOriginalSignal.dropEvent(drag_drop)
|
|
self.assertEqual(self.dialog.ui.gVOriginalSignal.sceneRect().width(), signal.num_samples)
|
|
|
|
self.dialog.ui.cbShowDataBitsOnly.click()
|
|
self.dialog.ui.chkBoxLockSIV.click()
|
|
|
|
self.assertEqual(int(self.dialog.ui.gVOriginalSignal.view_rect().width()),
|
|
int(self.dialog.ui.gVModulated.view_rect().width()))
|
|
|
|
freq = self.dialog.ui.doubleSpinBoxCarrierFreq.value()
|
|
self.dialog.ui.btnAutoDetect.click()
|
|
self.assertNotEqual(freq, self.dialog.ui.doubleSpinBoxCarrierFreq.value())
|
|
|
|
self.dialog.ui.comboBoxModulationType.setCurrentText("Frequency Shift Keying (FSK)")
|
|
self.dialog.ui.btnAutoDetect.click()
|
|
|
|
self.assertEqual(self.dialog.ui.lCurrentSearchResult.text(), "1")
|
|
self.dialog.ui.btnSearchNext.click()
|
|
self.assertEqual(self.dialog.ui.lCurrentSearchResult.text(), "2")
|
|
self.dialog.ui.btnSearchPrev.click()
|
|
self.assertEqual(self.dialog.ui.lCurrentSearchResult.text(), "1")
|