def test_close_signal(self): self.add_signal_to_form("ask.complex") sframe = self.form.signal_tab_controller.signal_frames[0] sframe.ui.cbModulationType.setCurrentIndex(0) # ASK sframe.ui.spinBoxInfoLen.setValue(295) sframe.ui.spinBoxCenterOffset.setValue(-0.1667) sframe.refresh() # Move with encoding to generator gframe = self.form.generator_tab_controller gframe.ui.cbViewType.setCurrentIndex(0) item = gframe.tree_model.rootItem.children[0].children[0] index = gframe.tree_model.createIndex(0, 0, item) rect = gframe.ui.treeProtocols.visualRect(index) QTest.mousePress(gframe.ui.treeProtocols.viewport(), Qt.LeftButton, pos=rect.center()) self.assertEqual(gframe.ui.treeProtocols.selectedIndexes()[0], index) mimedata = gframe.tree_model.mimeData(gframe.ui.treeProtocols.selectedIndexes()) gframe.table_model.dropMimeData(mimedata, 1, -1, -1, gframe.table_model.createIndex(0, 0)) self.assertEqual(gframe.table_model.row_count, self.form.compare_frame_controller.protocol_model.row_count) self.form.ui.tabWidget.setCurrentIndex(0) self.form.on_selected_tab_changed(0) sframe.ui.btnCloseSignal.click() self.form.ui.tabWidget.setCurrentIndex(1) self.form.on_selected_tab_changed(1) self.form.ui.tabWidget.setCurrentIndex(2) self.form.on_selected_tab_changed(2) self.assertEqual(1, 1)
def setUp(self): super().setUp() self.add_signal_to_form("steckdose_anlernen.complex") self.form.signal_tab_controller.signal_frames[0].ui.spinBoxNoiseTreshold.setValue(0.06) self.form.signal_tab_controller.signal_frames[0].ui.spinBoxNoiseTreshold.editingFinished.emit() self.form.signal_tab_controller.signal_frames[0].ui.spinBoxCenterOffset.setValue(-0.0127) self.form.signal_tab_controller.signal_frames[0].ui.spinBoxCenterOffset.editingFinished.emit() self.form.signal_tab_controller.signal_frames[0].ui.spinBoxInfoLen.setValue(100) self.form.signal_tab_controller.signal_frames[0].ui.spinBoxInfoLen.editingFinished.emit() self.gframe = self.form.generator_tab_controller self.gframe.ui.cbViewType.setCurrentIndex(1) # hex view self.gframe.modulators.append(Modulator("Prevent Modulation bootstrap when adding first protocol")) self.gframe.refresh_modulators() # Dewhitening mit SyncByte 0x9a7d9a7d, Data Whitening Poly 0x21, Compute and apply CRC16 via X0r, # Rest auf False anlegen und setzen self.form.ui.tabWidget.setCurrentIndex(1) self.form.compare_frame_controller.ui.cbProtoView.setCurrentIndex(1) # Hex decoding = Encoding(["Data Whitening", constants.DECODING_DATAWHITENING, "0x9a7d9a7d;0x21"]) self.form.compare_frame_controller.decodings.append(decoding) self.form.compare_frame_controller.ui.cbDecoding.addItem(decoding.name) self.form.compare_frame_controller.set_decoding(decoding) # Serial Part 1: Bits 207-226 (Dezimal: 91412) (20 Bits) self.form.compare_frame_controller.add_protocol_label(start=206, end=225, messagenr=0, proto_view=0, edit_label_name=False) # Zeros: Bits 227-244 (18 Bits) self.form.compare_frame_controller.add_protocol_label(start=226, end=243, messagenr=0, proto_view=0, edit_label_name=False) # Serial Part 2: Bit 245 - 264 (Dezimal: 1034678) (20 Bits) self.form.compare_frame_controller.add_protocol_label(start=244, end=263, messagenr=0, proto_view=0, edit_label_name=False) self.form.ui.tabWidget.setCurrentIndex(2) item = self.gframe.tree_model.rootItem.children[0].children[0] index = self.gframe.tree_model.createIndex(0, 0, item) rect = self.gframe.ui.treeProtocols.visualRect(index) self.assertEqual(len(self.gframe.ui.treeProtocols.selectedIndexes()), 0) QTest.mousePress(self.gframe.ui.treeProtocols.viewport(), Qt.LeftButton, pos = rect.center()) self.assertEqual(self.gframe.ui.treeProtocols.selectedIndexes()[0], index) mimedata = self.gframe.tree_model.mimeData(self.gframe.ui.treeProtocols.selectedIndexes()) self.gframe.table_model.dropMimeData(mimedata, 1, -1, -1, self.gframe.table_model.createIndex(0, 0)) self.assertEqual(self.gframe.table_model.row_count, 1) self.assertEqual(len(self.gframe.table_model.protocol.protocol_labels), 3) self.dialog = FuzzingDialog(protocol=self.gframe.table_model.protocol, label_index=0, msg_index=0, proto_view=0, parent=self.gframe) self.dialog.finished.connect(self.gframe.refresh_label_list) self.dialog.finished.connect(self.gframe.refresh_table) self.dialog.finished.connect(self.gframe.set_fuzzing_ui_status) if self.SHOW: self.dialog.show()
def add_signal_to_generator(self, signal_index: int): gframe = self.form.generator_tab_controller item = gframe.tree_model.rootItem.children[0].children[signal_index] index = gframe.tree_model.createIndex(signal_index, 0, item) rect = gframe.ui.treeProtocols.visualRect(index) QTest.mousePress(gframe.ui.treeProtocols.viewport(), Qt.LeftButton, pos=rect.center()) self.assertEqual(gframe.ui.treeProtocols.selectedIndexes()[0], index) mimedata = gframe.tree_model.mimeData(gframe.ui.treeProtocols.selectedIndexes()) gframe.table_model.dropMimeData(mimedata, 1, -1, -1, gframe.table_model.createIndex(0, 0))
def test_generator_label(self): labels = self.cframe.proto_analyzer.protocol_labels self.assertEqual(len(labels), 2) # Open Protocol in Generator self.form.ui.tabWidget.setCurrentIndex(2) item = self.gframe.tree_model.rootItem.children[0].children[0] index = self.gframe.tree_model.createIndex(0, 0, item) rect = self.gframe.ui.treeProtocols.visualRect(index) self.assertEqual(len(self.gframe.ui.treeProtocols.selectedIndexes()), 0) QTest.mousePress(self.gframe.ui.treeProtocols.viewport(), Qt.LeftButton, pos=rect.center()) self.assertEqual(self.gframe.ui.treeProtocols.selectedIndexes()[0], index) mimedata = self.gframe.tree_model.mimeData(self.gframe.ui.treeProtocols.selectedIndexes()) self.gframe.table_model.dropMimeData(mimedata, 1, -1, -1, self.gframe.table_model.createIndex(0, 0)) self.assertEqual(self.gframe.table_model.row_count, 3) # Check Label in Generator labels = self.gframe.table_model.protocol.protocol_labels self.assertEqual(len(labels), 2) # Fuzz Label lbl = copy.deepcopy(self.gframe.table_model.protocol.messages[0].message_type[1]) self.gframe.table_model.protocol.messages[0].message_type[1] = lbl lbl.fuzz_values.append("1") lbl.add_fuzz_value() lbl.add_fuzz_value() lbl.add_fuzz_value() lbl.add_fuzz_value() lbl.fuzz_me = Qt.Checked self.assertEqual(len(lbl.fuzz_values), 5) self.gframe.refresh_label_list() self.gframe.refresh_table() self.gframe.ui.btnFuzz.setEnabled(True) self.gframe.ui.btnFuzz.click() self.assertTrue(lbl.active_fuzzing) self.assertIn(lbl, self.gframe.table_model.protocol.messages[0].message_type) self.assertEqual(self.gframe.table_model.row_count, 4 + 3) # Check if Background for fuzzed labels is drawn correctly self.__check_background_is_drawn(lbl, 43, 43) # Delete a line old_row_count = self.gframe.table_model.row_count self.gframe.ui.tableMessages.selectRow(2) QTest.keyClick(self.gframe.ui.tableMessages, Qt.Key_Delete) self.assertEqual(self.gframe.table_model.row_count, old_row_count - 1) self.__check_background_is_drawn(lbl, 43, 43) # Remove everything for i in range(old_row_count): self.gframe.ui.tableMessages.selectRow(0) QTest.keyClick(self.gframe.ui.tableMessages, Qt.Key_Delete) self.assertEqual(self.gframe.table_model.row_count, 0)
def drag_slider(self, slider): ''' Click *slider*, drag from one side to the other, release mouse button repeat to restore inital state''' position = self.get_slider_position(slider) QTest.mouseMove(slider, pos=position.topLeft()) QTest.mousePress(slider, Qt.LeftButton) QTest.mouseMove(slider, pos=position.bottomRight()) QTest.mouseRelease(slider, Qt.LeftButton) QTest.mousePress(slider, Qt.LeftButton) QTest.mouseMove(slider, pos=position.topLeft()) QTest.mouseRelease(slider, Qt.LeftButton)
def mouseDrag(widget, press_on, release_on, button, modifier=None, delay=-1): """ Convenience helper for dragging a QWidget Makes a drag with the mouse. Args: widget (QWidget): press_on (QPoint): this is the position where the mouse is pressed. release_on (QPoint): this is the position where the mouse is released. """ if modifier is None: modifier = Qt.KeyboardModifiers() QTest.mousePress(widget, button, modifier, pos=press_on, delay=delay) QTest.mouseMove(widget, pos=release_on, delay=delay) QTest.mouseRelease(widget, button, modifier, pos=release_on, delay=delay)
def test_signal_view(self): self.add_signal_to_form("esaver.coco") 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")
def test_performance(self): item = self.gframe.tree_model.rootItem.children[0].children[0] index = self.gframe.tree_model.createIndex(0, 0, item) rect = self.gframe.ui.treeProtocols.visualRect(index) QTest.mousePress(self.gframe.ui.treeProtocols.viewport(), Qt.LeftButton, pos = rect.center()) self.assertEqual(self.gframe.ui.treeProtocols.selectedIndexes()[0], index) mimedata = self.gframe.tree_model.mimeData(self.gframe.ui.treeProtocols.selectedIndexes()) self.gframe.table_model.dropMimeData(mimedata, 1, -1, -1, self.gframe.table_model.createIndex(0, 0)) self.assertEqual(self.gframe.table_model.row_count, self.NUM_MESSAGES) indx = self.gframe.table_model.createIndex(int(self.NUM_MESSAGES / 2), int(self.BITS_PER_MESSAGE / 2)) roles = (Qt.DisplayRole, Qt.BackgroundColorRole, Qt.TextAlignmentRole, Qt.TextColorRole, Qt.FontRole) time_for_display = 100 for role in roles: t = time.time() self.gframe.table_model.data(indx, role = role) microseconds = (time.time() - t) * 10 ** 6 self.assertLessEqual(microseconds, 2 * time_for_display, msg=self.__role_to_str(role)) if role == Qt.DisplayRole: time_for_display = microseconds print("{0}: {1} µs".format(self.__role_to_str(role), microseconds))
def test_downPB(self): device = DeviceConnectorMock("Device#1", "Owner", 83) self.widget.attachConnector(device) positionStart = device.currentPosition() downPB = self.widget.ui.downPB QTest.mousePress(downPB, Qt.LeftButton) self.assertEquals(0, device.upCounter) self.assertEquals(1, device.downCounter) self.assertEquals(0, device.stopCounter) QTest.qSleep(1000) QTest.mouseRelease(downPB, Qt.LeftButton) self.assertEquals(0, device.upCounter) self.assertEquals(1, device.downCounter) self.assertEquals(1, device.stopCounter) positionEnd = device.currentPosition() self.assertLess(positionEnd, positionStart)
def test_performance(self): self.cframe = self.form.compare_frame_controller self.gframe = self.form.generator_tab_controller self.form.ui.tabWidget.setCurrentIndex(2) self.cframe.ui.cbProtoView.setCurrentIndex(0) self.gframe.ui.cbViewType.setCurrentIndex(0) proto = self.__build_protocol() self.cframe.add_protocol(proto) proto.qt_signals.protocol_updated.emit() self.assertEqual(self.cframe.protocol_model.row_count, self.NUM_MESSAGES) self.assertEqual(self.cframe.protocol_model.col_count, self.BITS_PER_MESSAGE) self.__add_labels() item = self.gframe.tree_model.rootItem.children[0].children[0] index = self.gframe.tree_model.createIndex(0, 0, item) rect = self.gframe.ui.treeProtocols.visualRect(index) QTest.mousePress(self.gframe.ui.treeProtocols.viewport(), Qt.LeftButton, pos = rect.center()) self.assertEqual(self.gframe.ui.treeProtocols.selectedIndexes()[0], index) mimedata = self.gframe.tree_model.mimeData(self.gframe.ui.treeProtocols.selectedIndexes()) t = time.time() self.gframe.table_model.dropMimeData(mimedata, 1, -1, -1, self.gframe.table_model.createIndex(0, 0)) print("{0}: {1} s".format("Time for dropping mimedata", (time.time() - t))) self.assertEqual(self.gframe.table_model.row_count, self.NUM_MESSAGES) print("==============================00") indx = self.gframe.table_model.createIndex(int(self.NUM_MESSAGES / 2), int(self.BITS_PER_MESSAGE / 2)) roles = (Qt.DisplayRole, Qt.BackgroundColorRole, Qt.TextAlignmentRole, Qt.TextColorRole, Qt.FontRole) time_for_display = 100 for role in roles: t = time.time() self.gframe.table_model.data(indx, role = role) microseconds = (time.time() - t) * 10 ** 6 self.assertLessEqual(microseconds, 2 * time_for_display, msg=self.__role_to_str(role)) if role == Qt.DisplayRole: time_for_display = microseconds print("{0}: {1} µs".format(self.__role_to_str(role), microseconds))
def mouse_drag(widget, start_pos=None, stop_pos=None, button=Qt.LeftButton): """Simulates dragging the mouse from a start position to a stop position :param widget: widget to drag mouse on :type widget: QtWidgets.QWidget :param start_pos: start mouse position :type start_pos: QtCore.QPoint :param stop_pos: stop mouse position :type stop_pos: QtCore.QPoint :param button: button to press while dragging :type button: Qt.MouseButtons """ if start_pos is None: start_pos = widget.rect().topLeft() if stop_pos is None: stop_pos = widget.rect().bottomRight() QTest.mousePress(widget, button, pos=start_pos) event = QMouseEvent(QEvent.MouseMove, stop_pos, button, button, Qt.NoModifier) APP.sendEvent(widget, event) QTest.mouseRelease(widget, button, pos=stop_pos)
def setUp(self): super().setUp() self.add_signal_to_form("steckdose_anlernen.complex") self.form.signal_tab_controller.signal_frames[ 0].ui.spinBoxNoiseTreshold.setValue(0.06) self.form.signal_tab_controller.signal_frames[ 0].ui.spinBoxNoiseTreshold.editingFinished.emit() self.form.signal_tab_controller.signal_frames[ 0].ui.spinBoxCenterOffset.setValue(-0.0127) self.form.signal_tab_controller.signal_frames[ 0].ui.spinBoxCenterOffset.editingFinished.emit() self.form.signal_tab_controller.signal_frames[ 0].ui.spinBoxInfoLen.setValue(100) self.form.signal_tab_controller.signal_frames[ 0].ui.spinBoxInfoLen.editingFinished.emit() self.gframe = self.form.generator_tab_controller self.gframe.ui.cbViewType.setCurrentIndex(1) # hex view self.gframe.modulators.append( Modulator( "Prevent Modulation bootstrap when adding first protocol")) self.gframe.refresh_modulators() # Dewhitening mit SyncByte 0x9a7d9a7d, Data Whitening Poly 0x21, Compute and apply CRC16 via X0r, # Rest auf False anlegen und setzen self.form.ui.tabWidget.setCurrentIndex(1) self.form.compare_frame_controller.ui.cbProtoView.setCurrentIndex( 1) # Hex decoding = Encoding([ "Data Whitening", constants.DECODING_DATAWHITENING, "0x9a7d9a7d;0x21" ]) self.form.compare_frame_controller.decodings.append(decoding) self.form.compare_frame_controller.ui.cbDecoding.addItem(decoding.name) self.form.compare_frame_controller.set_decoding(decoding) # Serial Part 1: Bits 207-226 (Dezimal: 91412) (20 Bits) self.form.compare_frame_controller.add_protocol_label( start=206, end=225, messagenr=0, proto_view=0, edit_label_name=False) # Zeros: Bits 227-244 (18 Bits) self.form.compare_frame_controller.add_protocol_label( start=226, end=243, messagenr=0, proto_view=0, edit_label_name=False) # Serial Part 2: Bit 245 - 264 (Dezimal: 1034678) (20 Bits) self.form.compare_frame_controller.add_protocol_label( start=244, end=263, messagenr=0, proto_view=0, edit_label_name=False) self.form.ui.tabWidget.setCurrentIndex(2) item = self.gframe.tree_model.rootItem.children[0].children[0] index = self.gframe.tree_model.createIndex(0, 0, item) rect = self.gframe.ui.treeProtocols.visualRect(index) self.assertEqual(len(self.gframe.ui.treeProtocols.selectedIndexes()), 0) QTest.mousePress(self.gframe.ui.treeProtocols.viewport(), Qt.LeftButton, pos=rect.center()) self.assertEqual(self.gframe.ui.treeProtocols.selectedIndexes()[0], index) mimedata = self.gframe.tree_model.mimeData( self.gframe.ui.treeProtocols.selectedIndexes()) self.gframe.table_model.dropMimeData( mimedata, 1, -1, -1, self.gframe.table_model.createIndex(0, 0)) self.assertEqual(self.gframe.table_model.row_count, 1) self.assertEqual(len(self.gframe.table_model.protocol.protocol_labels), 3) self.dialog = FuzzingDialogController( protocol=self.gframe.table_model.protocol, label_index=0, msg_index=0, proto_view=0, parent=self.gframe) self.dialog.finished.connect(self.gframe.refresh_label_list) self.dialog.finished.connect(self.gframe.refresh_table) self.dialog.finished.connect(self.gframe.set_fuzzing_ui_status) if self.SHOW: self.dialog.show()
def test_generator_label(self): labels = self.cframe.proto_analyzer.protocol_labels self.assertEqual(len(labels), 2) # Open Protocol in Generator self.form.ui.tabWidget.setCurrentIndex(2) item = self.gframe.tree_model.rootItem.children[0].children[0] index = self.gframe.tree_model.createIndex(0, 0, item) rect = self.gframe.ui.treeProtocols.visualRect(index) self.assertEqual(len(self.gframe.ui.treeProtocols.selectedIndexes()), 0) QTest.mousePress(self.gframe.ui.treeProtocols.viewport(), Qt.LeftButton, pos=rect.center()) self.assertEqual(self.gframe.ui.treeProtocols.selectedIndexes()[0], index) mimedata = self.gframe.tree_model.mimeData( self.gframe.ui.treeProtocols.selectedIndexes()) self.gframe.table_model.dropMimeData( mimedata, 1, -1, -1, self.gframe.table_model.createIndex(0, 0)) self.assertEqual(self.gframe.table_model.row_count, 3) # Check Label in Generator labels = self.gframe.table_model.protocol.protocol_labels self.assertEqual(len(labels), 2) # Fuzz Label lbl = copy.deepcopy( self.gframe.table_model.protocol.messages[0].message_type[1]) self.gframe.table_model.protocol.messages[0].message_type[1] = lbl lbl.fuzz_values.append("1") lbl.add_fuzz_value() lbl.add_fuzz_value() lbl.add_fuzz_value() lbl.add_fuzz_value() lbl.fuzz_me = Qt.Checked self.assertEqual(len(lbl.fuzz_values), 5) self.gframe.refresh_label_list() self.gframe.refresh_table() self.gframe.ui.btnFuzz.setEnabled(True) self.gframe.ui.btnFuzz.click() self.assertTrue(lbl.active_fuzzing) self.assertIn( lbl, self.gframe.table_model.protocol.messages[0].message_type) self.assertEqual(self.gframe.table_model.row_count, 4 + 3) # Check if Background for fuzzed labels is drawn correctly self.__check_background_is_drawn(lbl, 43, 43) # Delete a line old_row_count = self.gframe.table_model.row_count self.gframe.ui.tableMessages.selectRow(2) QTest.keyClick(self.gframe.ui.tableMessages, Qt.Key_Delete) self.assertEqual(self.gframe.table_model.row_count, old_row_count - 1) self.__check_background_is_drawn(lbl, 43, 43) # Remove everything for i in range(old_row_count): self.gframe.ui.tableMessages.selectRow(0) QTest.keyClick(self.gframe.ui.tableMessages, Qt.Key_Delete) self.assertEqual(self.gframe.table_model.row_count, 0)
def setUp(self): self.old_sym_len = constants.SETTINGS.value('rel_symbol_length', type=int) constants.SETTINGS.setValue('rel_symbol_length', 0) # Disable Symbols for this Test self.form = MainController() self.form.add_signalfile( get_path_for_data_file("steckdose_anlernen.complex")) self.form.signal_tab_controller.signal_frames[ 0].ui.spinBoxNoiseTreshold.setValue(0.06) self.form.signal_tab_controller.signal_frames[ 0].ui.spinBoxNoiseTreshold.editingFinished.emit() self.form.signal_tab_controller.signal_frames[ 0].ui.spinBoxCenterOffset.setValue(-0.0127) self.form.signal_tab_controller.signal_frames[ 0].ui.spinBoxCenterOffset.editingFinished.emit() self.form.signal_tab_controller.signal_frames[ 0].ui.spinBoxInfoLen.setValue(100) self.form.signal_tab_controller.signal_frames[ 0].ui.spinBoxInfoLen.editingFinished.emit() self.sframe = self.form.signal_tab_controller.signal_frames[0] self.cframe = self.form.compare_frame_controller self.gframe = self.form.generator_tab_controller # Dewhitening mit SyncByte 0x9a7d9a7d, Data Whitening Poly 0x21, Compute and apply CRC16 via X0r, # Rest auf False anlegen und setzen self.form.ui.tabWidget.setCurrentIndex(1) self.cframe.ui.cbProtoView.setCurrentIndex(1) # Hex decoding = Encoder([ "Data Whitening", constants.DECODING_DATAWHITENING, "0x9a7d9a7d;0x21;0x8" ]) self.cframe.decodings.append(decoding) self.cframe.ui.cbDecoding.addItem(decoding.name) self.cframe.set_decoding(decoding) # CRC Check self.assertEqual(self.cframe.protocol_model.display_data[0][-4:], "0000") # Serial Part 1: Bits 207-226 (Dezimal: 91412) (20 Bits) self.cframe.add_protocol_label(start=206, end=225, messagenr=0, proto_view=0, edit_label_name=False) # Zeros: Bits 227-244 (18 Bits) self.cframe.add_protocol_label(start=226, end=243, messagenr=0, proto_view=0, edit_label_name=False) # Serial Part 2: Bit 245 - 264 (Dezimal: 1034678) (20 Bits) self.cframe.add_protocol_label(start=244, end=263, messagenr=0, proto_view=0, edit_label_name=False) self.form.ui.tabWidget.setCurrentIndex(2) item = self.gframe.tree_model.rootItem.children[0].children[0] index = self.gframe.tree_model.createIndex(0, 0, item) rect = self.gframe.ui.treeProtocols.visualRect(index) self.assertEqual(len(self.gframe.ui.treeProtocols.selectedIndexes()), 0) QTest.mousePress(self.gframe.ui.treeProtocols.viewport(), Qt.LeftButton, pos=rect.center()) self.assertEqual(self.gframe.ui.treeProtocols.selectedIndexes()[0], index) mimedata = self.gframe.tree_model.mimeData( self.gframe.ui.treeProtocols.selectedIndexes()) self.gframe.table_model.dropMimeData( mimedata, 1, -1, -1, self.gframe.table_model.createIndex(0, 0)) self.assertEqual(self.gframe.table_model.row_count, 1) self.assertEqual(len(self.gframe.table_model.protocol.protocol_labels), 3)
def test_generation(self): """ Complex test including much functionality 1) Load a Signal 2) Set Decoding in Compareframe 3) Move with encoding to Generator 4) Generate datafile 5) Read datafile and compare with original signal """ # Load a Signal self.form.add_signalfile(get_path_for_data_file("ask.complex")) sframe = self.form.signal_tab_controller.signal_frames[0] sframe.ui.cbModulationType.setCurrentIndex(0) # ASK sframe.ui.spinBoxInfoLen.setValue(295) sframe.ui.spinBoxCenterOffset.setValue(-0.1667) sframe.refresh() proto = "1011001001011011011011011011011011001000000" self.assertTrue(sframe.ui.txtEdProto.toPlainText().startswith(proto)) # Set Decoding self.form.ui.tabWidget.setCurrentIndex(1) cfc = self.form.compare_frame_controller cfc.ui.cbDecoding.setCurrentIndex(1) # NRZ-I proto_inv = cfc.proto_analyzer.decoded_proto_bits_str[0] self.assertTrue(self.__is_inv_proto(proto, proto_inv)) # Move with encoding to generator gframe = self.form.generator_tab_controller gframe.ui.cbViewType.setCurrentIndex(0) item = gframe.tree_model.rootItem.children[0].children[0] index = gframe.tree_model.createIndex(0, 0, item) rect = gframe.ui.treeProtocols.visualRect(index) QTest.mousePress(gframe.ui.treeProtocols.viewport(), Qt.LeftButton, pos = rect.center()) self.assertEqual(gframe.ui.treeProtocols.selectedIndexes()[0], index) mimedata = gframe.tree_model.mimeData(gframe.ui.treeProtocols.selectedIndexes()) gframe.table_model.dropMimeData(mimedata, 1, -1, -1, gframe.table_model.createIndex(0, 0)) self.assertEqual(proto_inv, gframe.table_model.display_data[0]) self.assertNotEqual(proto, gframe.table_model.display_data[0]) # Generate Datafile modulator = gframe.modulators[0] modulator.modulation_type = 0 modulator.samples_per_bit = 295 modulated_data = gframe.modulate_data() filename = os.path.join(QDir.tempPath(), "generator_test.complex") modulated_data.tofile(filename) # Reload datafile and see if bits match self.form.add_signalfile(filename) sframe = self.form.signal_tab_controller.signal_frames[1] self.assertEqual(sframe.ui.lineEditSignalName.text(), "generator_test") sframe.ui.cbSignalView.setCurrentIndex(1) # ASK sframe.ui.spinBoxInfoLen.setValue(295) sframe.ui.spinBoxInfoLen.editingFinished.emit() sframe.ui.spinBoxCenterOffset.setValue(0.1) sframe.ui.spinBoxCenterOffset.editingFinished.emit() sframe.ui.spinBoxTolerance.setValue(6) sframe.ui.spinBoxTolerance.editingFinished.emit() sframe.refresh() gen_proto = sframe.ui.txtEdProto.toPlainText() gen_proto = gen_proto[:gen_proto.index(" ")] self.assertTrue(proto.startswith(gen_proto))
def test_sniff(self): # Move with encoding to generator gframe = self.form.generator_tab_controller gframe.ui.cbViewType.setCurrentIndex(0) item = gframe.tree_model.rootItem.children[0].children[0] index = gframe.tree_model.createIndex(0, 0, item) rect = gframe.ui.treeProtocols.visualRect(index) QTest.mousePress(gframe.ui.treeProtocols.viewport(), Qt.LeftButton, pos=rect.center()) self.assertEqual(gframe.ui.treeProtocols.selectedIndexes()[0], index) mimedata = gframe.tree_model.mimeData( gframe.ui.treeProtocols.selectedIndexes()) gframe.table_model.dropMimeData(mimedata, 1, -1, -1, gframe.table_model.createIndex(0, 0)) self.assertEqual(gframe.table_model.rowCount(), 3) self.sniff_dialog.ui.cbDevice.setCurrentText( NetworkSDRInterfacePlugin.NETWORK_SDR_NAME) self.assertEqual(self.sniff_dialog.device.name, NetworkSDRInterfacePlugin.NETWORK_SDR_NAME) self.sniff_dialog.device.set_server_port(4444) gframe.network_sdr_plugin.client_port = 4444 self.sniff_dialog.ui.btnStart.click() app.processEvents() gframe.ui.btnNetworkSDRSend.click() app.processEvents() QTest.qWait(500) received_msgs = self.sniff_dialog.ui.txtEd_sniff_Preview.toPlainText( ).split("\n") orig_msgs = gframe.table_model.protocol.plain_bits_str self.assertEqual(len(received_msgs), len(orig_msgs)) for received, orig in zip(received_msgs, orig_msgs): pad = 0 if len(orig) % 8 == 0 else 8 - len(orig) % 8 self.assertEqual(received, orig + "0" * pad) self.sniff_dialog.ui.btnStop.click() target_file = os.path.join(QDir.tempPath(), "sniff_file") self.assertFalse(os.path.isfile(target_file)) self.sniff_dialog.ui.btnClear.click() app.processEvents() self.sniff_dialog.ui.lineEdit_sniff_OutputFile.setText(target_file) self.sniff_dialog.ui.btnStart.click() app.processEvents() self.assertFalse(self.sniff_dialog.ui.btnAccept.isEnabled()) gframe.ui.btnNetworkSDRSend.click() app.processEvents() QTest.qWait(500) with open(target_file, "r") as f: for i, line in enumerate(f): pad = 0 if len( orig_msgs[i]) % 8 == 0 else 8 - len(orig_msgs[i]) % 8 self.assertEqual(line.strip(), orig_msgs[i] + "0" * pad) os.remove(target_file)