mirror of
https://github.com/jopohl/urh.git
synced 2026-03-09 17:56:48 +01:00
add test for modulator dialog
This commit is contained in:
@@ -253,6 +253,8 @@ class GeneratorTabController(QWidget):
|
||||
|
||||
self.has_default_modulation = False
|
||||
|
||||
return c
|
||||
|
||||
@pyqtSlot()
|
||||
def on_table_selection_changed(self):
|
||||
min_row, max_row, start, end = self.ui.tableMessages.selection_range()
|
||||
|
||||
@@ -73,7 +73,7 @@ class Ui_DialogModulation(object):
|
||||
self.doubleSpinBoxCarrierFreq.setSuffix("")
|
||||
self.doubleSpinBoxCarrierFreq.setDecimals(3)
|
||||
self.doubleSpinBoxCarrierFreq.setMinimum(0.0)
|
||||
self.doubleSpinBoxCarrierFreq.setMaximum(99999999.0)
|
||||
self.doubleSpinBoxCarrierFreq.setMaximum(99999999999.0)
|
||||
self.doubleSpinBoxCarrierFreq.setObjectName("doubleSpinBoxCarrierFreq")
|
||||
self.gridLayout.addWidget(self.doubleSpinBoxCarrierFreq, 0, 1, 1, 1)
|
||||
self.label_2 = QtWidgets.QLabel(DialogModulation)
|
||||
|
||||
118
tests/test_modulator_gui.py
Normal file
118
tests/test_modulator_gui.py
Normal file
@@ -0,0 +1,118 @@
|
||||
import unittest
|
||||
|
||||
from PyQt5.QtCore import Qt
|
||||
from PyQt5.QtGui import QDropEvent
|
||||
from PyQt5.QtTest import QTest
|
||||
|
||||
import tests.utils_testing
|
||||
from tests.utils_testing import get_path_for_data_file
|
||||
from urh.controller.MainController import MainController
|
||||
|
||||
app = tests.utils_testing.app
|
||||
|
||||
|
||||
class TestModulatorGUI(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.form = MainController()
|
||||
self.form.add_signalfile(get_path_for_data_file("esaver.complex"))
|
||||
self.signal = self.form.signal_tab_controller.signal_frames[0].signal
|
||||
self.gframe = self.form.generator_tab_controller
|
||||
self.form.ui.tabWidget.setCurrentIndex(2)
|
||||
self.dialog = self.gframe.show_modulation_dialog()
|
||||
|
||||
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.btnRemoveModulation.click()
|
||||
self.assertEqual(len(self.dialog.modulators), 1)
|
||||
|
||||
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")
|
||||
|
||||
self.dialog.ui.btnRestoreBits.click()
|
||||
self.dialog.ui.linEdDataBits.editingFinished.emit()
|
||||
self.assertEqual(self.dialog.current_modulator.display_bits, bits)
|
||||
|
||||
self.dialog.ui.spinBoxBitLength.setValue(1337)
|
||||
self.dialog.ui.spinBoxBitLength.editingFinished.emit()
|
||||
self.assertEqual(self.dialog.current_modulator.samples_per_bit, 1337)
|
||||
|
||||
self.dialog.ui.spinBoxSampleRate.setValue(5e6)
|
||||
self.dialog.ui.spinBoxSampleRate.editingFinished.emit()
|
||||
self.assertEqual(self.dialog.current_modulator.sample_rate, 5e6)
|
||||
|
||||
def test_edit_modulation(self):
|
||||
self.dialog.ui.comboBoxModulationType.setCurrentText("Amplitude Shift Keying (ASK)")
|
||||
self.assertEqual(self.dialog.ui.lParameterfor0.text(), "Amplitude for 0:")
|
||||
self.assertEqual(self.dialog.ui.lParameterfor1.text(), "Amplitude for 1:")
|
||||
self.assertFalse(self.dialog.ui.lGaussBT.isVisible())
|
||||
self.assertFalse(self.dialog.ui.spinBoxGaussBT.isVisible())
|
||||
self.assertFalse(self.dialog.ui.lGaussWidth.isVisible())
|
||||
self.assertFalse(self.dialog.ui.spinBoxGaussFilterWidth.isVisible())
|
||||
|
||||
self.dialog.ui.comboBoxModulationType.setCurrentText("Frequency Shift Keying (FSK)")
|
||||
self.assertEqual(self.dialog.ui.lParameterfor0.text(), "Frequency for 0:")
|
||||
self.assertEqual(self.dialog.ui.lParameterfor1.text(), "Frequency for 1:")
|
||||
self.assertFalse(self.dialog.ui.lGaussBT.isVisible())
|
||||
self.assertFalse(self.dialog.ui.spinBoxGaussBT.isVisible())
|
||||
self.assertFalse(self.dialog.ui.lGaussWidth.isVisible())
|
||||
self.assertFalse(self.dialog.ui.spinBoxGaussFilterWidth.isVisible())
|
||||
|
||||
self.dialog.ui.comboBoxModulationType.setCurrentText("Gaussian Frequency Shift Keying (GFSK)")
|
||||
self.assertEqual(self.dialog.ui.lParameterfor0.text(), "Frequency for 0:")
|
||||
self.assertEqual(self.dialog.ui.lParameterfor1.text(), "Frequency for 1:")
|
||||
self.assertTrue(self.dialog.ui.lGaussBT.isVisible())
|
||||
self.assertTrue(self.dialog.ui.spinBoxGaussBT.isVisible())
|
||||
self.assertTrue(self.dialog.ui.lGaussWidth.isVisible())
|
||||
self.assertTrue(self.dialog.ui.spinBoxGaussFilterWidth.isVisible())
|
||||
|
||||
self.dialog.ui.comboBoxModulationType.setCurrentText("Phase Shift Keying (PSK)")
|
||||
self.assertEqual(self.dialog.ui.lParameterfor0.text(), "Phase (degree) for 0:")
|
||||
self.assertEqual(self.dialog.ui.lParameterfor1.text(), "Phase (degree) for 1:")
|
||||
self.assertFalse(self.dialog.ui.lGaussBT.isVisible())
|
||||
self.assertFalse(self.dialog.ui.spinBoxGaussBT.isVisible())
|
||||
self.assertFalse(self.dialog.ui.lGaussWidth.isVisible())
|
||||
self.assertFalse(self.dialog.ui.spinBoxGaussFilterWidth.isVisible())
|
||||
|
||||
self.dialog.ui.comboBoxModulationType.setCurrentText("Amplitude Shift Keying (ASK)")
|
||||
self.assertEqual(self.dialog.ui.lParameterfor0.text(), "Amplitude for 0:")
|
||||
self.assertEqual(self.dialog.ui.lParameterfor1.text(), "Amplitude for 1:")
|
||||
self.assertFalse(self.dialog.ui.lGaussBT.isVisible())
|
||||
self.assertFalse(self.dialog.ui.spinBoxGaussBT.isVisible())
|
||||
self.assertFalse(self.dialog.ui.lGaussWidth.isVisible())
|
||||
self.assertFalse(self.dialog.ui.spinBoxGaussFilterWidth.isVisible())
|
||||
|
||||
self.assertEqual(int(self.dialog.ui.lSamplesInViewModulated.text()), int(self.dialog.ui.gVModulated.view_rect().width()))
|
||||
|
||||
def test_signal_view(self):
|
||||
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())
|
||||
self.assertEqual(tree_view.selectedIndexes()[0], index)
|
||||
mime_data = tree_model.mimeData(tree_view.selectedIndexes())
|
||||
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(), self.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()))
|
||||
@@ -137,7 +137,7 @@
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>99999999.000000000000000</double>
|
||||
<double>99999999999.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
Reference in New Issue
Block a user