def wait_for(predicate, timeout=5000): """Waits for timeout milliseconds or until the predicate returns true (Copied from QT). :param predicate: function :type predicate: Callable[None, bool] :param timeout: maximum time to wait for :type timeout: int """ if predicate(): return True remaining = timeout deadline = QDeadlineTimer() deadline.setRemainingTime(remaining, Qt.PreciseTimer) while True: QCoreApplication.processEvents(QEventLoop.AllEvents) QCoreApplication.sendPostedEvents(None, QEvent.DeferredDelete) remaining = deadline.remainingTime() if remaining > 0: QTest.qSleep(min(10, remaining)) if predicate(): return True remaining = deadline.remainingTime() if remaining <= 0: break return predicate() # Last chance
def test_open_message_type_dialog(self): assert isinstance(self.cfc, CompareFrameController) self.cfc.ui.btnMessagetypeSettings.click() dialog = next((w for w in qApp.topLevelWidgets() if isinstance(w, MessageTypeDialog)), None) self.assertIsNotNone(dialog) self.assertEqual(dialog.windowTitle(), self.cfc.active_message_type.name) dialog.close() sip.delete(dialog) QTest.qSleep(1) QTest.qWait(10)
def tearDown(self): if hasattr(self, "dialog"): self.dialog.close() if hasattr(self, "form"): self.form.close_all() self.form.close() sip.delete(self.form) self.form = None QTest.qSleep(1) QTest.qWait(self.CLOSE_TIMEOUT)
def test_open_label_dialog(self): def test_dialog(): timer.stop() dialog = next((w for w in qApp.topLevelWidgets() if isinstance(w, ProtocolLabelDialog)), None) self.assertIsNotNone(dialog) self.assertEqual(dialog.model.rowCount(), 1) dialog.close() sip.delete(dialog) self.cfc.add_protocol_label(10, 20, 0, 0, False) timer = QTimer(self.cfc) timer.timeout.connect(test_dialog) timer.start(20) self.cfc.on_edit_label_action_triggered(0) QTest.qSleep(1) QTest.qWait(10)
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 testGeographicInputDisplay(self): crsIn = QgsCoordinateReferenceSystem("EPSG:4326") QTest.mouseClick(self.dw.inputAsDec, QtCore.Qt.LeftButton) self.assertFalse(self.dw.inputAsDMS.isChecked()) self.assertTrue(self.dw.inputAsDec.isChecked()) QTest.qSleep(3000) self.assertFalse(self.dw.inLeft.isVisible()) self.assertFalse(self.dw.inLeftMin.isVisible()) self.assertFalse(self.dw.inLeftSec.isVisible()) self.assertFalse(self.dw.inRight.isVisible()) self.assertFalse(self.dw.inRightMin.isVisible()) self.assertFalse(self.dw.inRightSec.isVisible()) self.assertTrue(self.dw.inLeftDec.isVisible()) self.assertTrue(self.dw.inRightDec.isVisible()) QTest.mouseClick(self.dw.inputAsDMS, QtCore.Qt.LeftButton) self.assertTrue(self.dw.inputAsDMS.isChecked()) self.assertFalse(self.dw.inputAsDec.isChecked()) self.dw.inLeft.insert("10") self.dw.inLeftMin.insert("5") self.dw.inLeftSec.insert("1") self.dw.inRight.insert("5") self.dw.inRightMin.insert("10") self.dw.inRightSec.insert("45") QTest.mouseClick(self.dw.inputAsDec, QtCore.Qt.LeftButton) self.assertEqual(helperFormatCoordinates("10.083611111"), self.dw.inLeftDec.text()) self.assertEqual(helperFormatCoordinates("5.179166667"), self.dw.inRightDec.text())