def testEnterUrl(self): webtab = self.mainwin.tab_widget.currentWidget() #QTest.keyClicks(webtab.webkit, "LA", Qt.ControlModifier) QTest.keyClicks(webtab.address_bar, "http://theospark.net") QTest.keyClick(webtab.address_bar, "J", Qt.ControlModifier) #QTest.keyClick(webtab.address_bar, Qt.Key_Return) self.assertEqual(webtab.address_bar.text(), "http://theospark.net")
def webButtonClicked(self): print("Mode Web") if(self.sender().web_function=="go"): print "go" if(self.sender().web_function=="home"): self.browser.loadURL(self.browser.web, self.browser.default_url) elif(self.sender().web_function=="new_tab"): self.browser.createTab(self.browser.default_url) elif(self.sender().web_function=="stop"): self.browser.stop() elif(self.sender().web_function=="refresh"): self.browser.reload() elif(self.sender().web_function=="zoom_out"): self.browser.zoomIn() elif(self.sender().web_function=="zoom_in"): self.browser.zoomOut() elif(self.sender().web_function=="config"): None elif(self.sender().web_function=="next"): self.browser.goNext() elif(self.sender().web_function=="back"): self.browser.goBack() else: for c in self.sender().web_function: QTest.keyClick(self.browser.focusWidget(), c)
def test_esc_on_widget_closes(self): QTest.keyClick(core.mainWindow(), Qt.Key_F, Qt.ControlModifier) widget = _findSearchController()._widget self.assertFalse(widget.isHidden()) QTest.keyClick(widget, Qt.Key_Escape) self.assertTrue(widget.isHidden())
def test_click_selects_first(self): self.qpart.text = 'aaaa\nbbbb\ncccX\ndddd\ncccY' QTest.keyClicks(self.qpart, "ccc") QTest.mouseClick(self.qpart, Qt.LeftButton) QTest.keyClick(self.qpart, Qt.Key_Enter) self.assertEqual(self.qpart.text, 'cccY\naaaa\nbbbb\ncccX\ndddd\ncccY')
def test_whole_word(self): qpart = core.workspace().currentDocument().qutepart qpart.text = _TEXT_WHOLE_WORD # select first 'string' QTest.keyClick(core.mainWindow(), Qt.Key_F, Qt.ControlModifier) self.keyClicks("bar") self.assertEqual(qpart.cursorPosition[0], 1) # 2 items found self.keyClick(Qt.Key_F3) self.assertEqual(qpart.cursorPosition[0], 2) self.keyClick(Qt.Key_F3) self.assertEqual(qpart.cursorPosition[0], 1) # only 1 item found QTest.mouseClick(_findSearchController()._widget.cbWholeWord, Qt.LeftButton) self.assertEqual(qpart.cursorPosition[0], 2) self.keyClick(Qt.Key_F3) self.assertEqual(qpart.cursorPosition[0], 2) # not moved, only line 2 # only 1 item found in reg exp mode qpart.cursorPosition = (0, 0) QTest.mouseClick(_findSearchController()._widget.cbRegularExpression, Qt.LeftButton) self.assertEqual(qpart.cursorPosition[0], 2) self.keyClick(Qt.Key_F3) self.assertEqual(qpart.cursorPosition[0], 2) # not moved, only line 2
def test_key_not_borked(self): rw = RecipesWidget() previous = rw.currentRow() QTest.keyClick(rw, Qt.Key_Down) self.assertEqual(rw.currentRow(), previous + 1)
def continueFunc(dialog): page = dialog._pageForItem["Navigator"] self.assertEqual(page.lExecuteError.text(), ('You are trying to use etags from the Emacs package, but it is not supported. ' 'Use Exuberant Ctags.')) QTest.keyClick(dialog, Qt.Key_Enter)
def test_esc_on_widget_closes(self): QTest.keyClick(core.mainWindow(), Qt.Key_F, Qt.ControlModifier) widget = self._findSearchController()._widget self.assertFalse(widget.isHidden()) QTest.keyClick(widget, Qt.Key_Escape) self.assertTrue(widget.isHidden())
def test_whole_word(self): qpart = core.workspace().currentDocument().qutepart qpart.text = _TEXT_WHOLE_WORD # select first 'string' QTest.keyClick(core.mainWindow(), Qt.Key_F, Qt.ControlModifier) QTest.keyClicks(self.app.focusWidget(), "bar") self.assertEqual(qpart.cursorPosition[0], 1) # 2 items found QTest.keyClick(self.app.focusWidget(), Qt.Key_F3) self.assertEqual(qpart.cursorPosition[0], 2) QTest.keyClick(self.app.focusWidget(), Qt.Key_F3) self.assertEqual(qpart.cursorPosition[0], 1) # only 1 item found QTest.mouseClick(_findSearchController()._widget.cbWholeWord, Qt.LeftButton) self.assertEqual(qpart.cursorPosition[0], 2) QTest.keyClick(self.app.focusWidget(), Qt.Key_F3) self.assertEqual(qpart.cursorPosition[0], 2) # not moved, only line 2 # only 1 item found in reg exp mode qpart.cursorPosition = (0, 0) QTest.mouseClick(_findSearchController()._widget.cbRegularExpression, Qt.LeftButton) self.assertEqual(qpart.cursorPosition[0], 2) QTest.keyClick(self.app.focusWidget(), Qt.Key_F3) self.assertEqual(qpart.cursorPosition[0], 2) # not moved, only line 2
def test_history(self): history_lines = self.win.history.get_line_count() QTest.keyClick(self.win.console, Qt.Key_5) QTest.keyClick(self.win.console, Qt.Key_Enter) self.assertEqual( history_lines + 1, self.win.history.get_line_count()) self.assertEqual( self.win.history.get_text_line(history_lines), '5')
def test_type_and_search(self): QTest.keyClick(core.mainWindow(), Qt.Key_F, Qt.ControlModifier) qpart = core.workspace().currentDocument().qutepart self.keyClicks("string") self.assertEqual(qpart.cursorPosition, (6, 18)) self.assertEqual(qpart.selectedText, "string")
def test_laser_line(self): x, y = self.widget.graph_widget.get_data() self.widget.laser_line_txt.setText('') QTest.keyClicks(self.widget.laser_line_txt, "415") QTest.keyClick(self.widget.laser_line_txt, QtCore.Qt.Key_Enter) new_x, new_y = self.widget.graph_widget.get_data() self.assertFalse(np.array_equal(new_x, x)) self.assertTrue(np.array_equal(new_y, y))
def test_type_and_search(self): QTest.keyClick(core.mainWindow(), Qt.Key_F, Qt.ControlModifier) qpart = core.workspace().currentDocument().qutepart QTest.keyClicks(self.app.focusWidget(), "string") self.assertEqual(qpart.cursorPosition, (6, 18)) self.assertEqual(qpart.selectedText, "string")
def continueFunc(dialog): page = dialog._pageForItem["Editor/Autocompletion"] page.gbAutoCompletion.setChecked(enabled) page.sThreshold.setValue(threshold) self.assertTrue(page.lcdNumber.value(), threshold) QTest.keyClick(dialog, Qt.Key_Enter)
def test_backspace_RemoveIndent_on_LineBegin(self): editor = CodeEditor() editor.setPlainText(" if x == 1:") editor.moveCursor(QTextCursor.StartOfLine) editor.moveCursor(QTextCursor.Right) editor.moveCursor(QTextCursor.Right) editor.moveCursor(QTextCursor.Right) editor.moveCursor(QTextCursor.Right) QTest.keyClick(editor, Qt.Key_Backspace) self.assertEqual(editor.toPlainText(), "if x == 1:")
def test_with_tabs(self): self.qpart.show() self.qpart.text = 'abcdefghhhhh\n\tklm\n\t\txyz' self.qpart.cursorPosition = (0, 6) QTest.keyClick(self.qpart, Qt.Key_Down, Qt.AltModifier | Qt.ShiftModifier) QTest.keyClick(self.qpart, Qt.Key_Down, Qt.AltModifier | Qt.ShiftModifier) QTest.keyClick(self.qpart, Qt.Key_Right, Qt.AltModifier | Qt.ShiftModifier) QTest.keyClick(self.qpart, Qt.Key_Right, Qt.AltModifier | Qt.ShiftModifier) QTest.keyClick(self.qpart, Qt.Key_Delete) self.assertEqual(self.qpart.text, 'abcdefhh\n\tkl\n\t\tz')
def test_select_and_search(self): qpart = core.workspace().currentDocument().qutepart # select first 'string' qpart.selectedPosition = ((6, 12), (6, 18)) QTest.keyClick(core.mainWindow(), Qt.Key_F, Qt.ControlModifier) self.keyClick(Qt.Key_F3) self.assertEqual(qpart.cursorPosition, (7, 9)) self.assertEqual(qpart.selectedText, "string")
def test_select_and_search(self): qpart = core.workspace().currentDocument().qutepart # select first 'string' qpart.selectedPosition = ((6, 12), (6, 18)) QTest.keyClick(core.mainWindow(), Qt.Key_F, Qt.ControlModifier) QTest.keyClick(self.app.focusWidget(), Qt.Key_F3) self.assertEqual(qpart.cursorPosition, (7, 9)) self.assertEqual(qpart.selectedText, "string")
def test_set_with_keyboard(self): self.qpart.text = '\n' * 5 QTest.keyClick(self.qpart, Qt.Key_B, Qt.ControlModifier) QTest.keyClick(self.qpart, Qt.Key_Down) QTest.keyClick(self.qpart, Qt.Key_Down) QTest.keyClick(self.qpart, Qt.Key_B, Qt.ControlModifier) self.assertEqual(self._markedBlocks(), [0, 2]) QTest.keyClick(self.qpart, Qt.Key_B, Qt.ControlModifier) self.assertEqual(self._markedBlocks(), [0])
def continueFunc(dialog): page = dialog._pageForItem["Editor/Wrap"] page.gbWrapEnabled.setChecked(enabled) if atWord: page.rbWrapAtWord.setChecked(True) else: page.rbWrapAnywhere.setChecked(True) QTest.keyClick(dialog, Qt.Key_Enter)
def continueFunc(dialog): page = dialog._pageForItem["Editor/Long Lines"] page.gbWrapEnabled.setChecked(enabled) if atWord: page.rbWrapAtWord.setChecked(True) else: page.rbWrapAnywhere.setChecked(True) QTest.keyClick(dialog, Qt.Key_Enter)
def test_pyconsole_history(self): """ Is there a history of commands send to the Python console that can be cycled through? :return: """ test_strs = [ascii_letters, digits, punctuation] # Load the history for ts in test_strs: QTest.keyClicks(self.form.pyconsole_output, "i = '{0}'".format(ts), delay=50) QTest.keyClick(self.form.pyconsole_output, Qt.Key_Return, delay=200)
def test_warning(self): self.qpart.show() self.qpart.text = 'a\n' * 300 warning = [None] def _saveWarning(text): warning[0] = text self.qpart.userWarning.connect(_saveWarning) QTest.keyClick(self.qpart, Qt.Key_End, Qt.AltModifier | Qt.ShiftModifier | Qt.ControlModifier) self.assertEqual(warning[0], 'Rectangular selection area is too big')
def test_7(self): """Smartly indent python""" self.qpart.detectSyntax(language='Python') QTest.keyClicks(self.qpart, "def main():") QTest.keyClick(self.qpart, Qt.Key_Enter) self.assertEqual(self.qpart.cursorPosition, (1, 4)) QTest.keyClicks(self.qpart, "return 7") QTest.keyClick(self.qpart, Qt.Key_Enter) self.assertEqual(self.qpart.cursorPosition, (2, 0))
def test_remove_recipe(self): rw = RecipesWidget() self.assertEqual(len(rw.selectedItems()), 0) before = Session.query(Recipe).count() rw.item(0).setSelected(True) rw.item(3).setSelected(True) QTest.keyClick(rw, Qt.Key_Delete) self.assertEqual(Session.query(Recipe).count(), before - 2) self.assertEqual(rw.count(), before - 2)
def test_overwrite_edit(self): self.qpart.show() self.qpart.text = 'abcd' QTest.keyClicks(self.qpart, "stu") self.assertEqual(self.qpart.text, 'stuabcd') QTest.keyClick(self.qpart, Qt.Key_Insert) QTest.keyClicks(self.qpart, "xy") self.assertEqual(self.qpart.text, 'stuxycd') QTest.keyClick(self.qpart, Qt.Key_Insert) QTest.keyClicks(self.qpart, "z") self.assertEqual(self.qpart.text, 'stuxyzcd')
def test_1(self): self._rm() self.assertFalse(self._exists()) self.qpart.show() def acceptDialog(): QTest.keyClick(self.app.focusWidget(), Qt.Key_Enter, Qt.NoModifier) QTimer.singleShot(600, acceptDialog) QTest.keyClick(self.qpart, Qt.Key_P, Qt.ControlModifier, 100) self.assertTrue(self._exists()) self._rm()
def test_tab_completes(self): self.qpart.text = 'aaaaa\naaaaaXXXXX\n' base._processPendingEvents(self.app) self.qpart.cursorPosition = (2, 0) QTest.keyClicks(self.qpart, "aaa") QTest.keyClick(self.qpart, Qt.Key_Tab) self.assertEqual(self.qpart.text, 'aaaaa\naaaaaXXXXX\naaaaa') QTest.keyClick(self.qpart, Qt.Key_Tab) self.assertEqual(self.qpart.text, 'aaaaa\naaaaaXXXXX\naaaaaXXXXX')
def test_spinboxes(self): """Test validate extent method.""" self.dialog.x_maximum.clear() self.dialog.extent_defined.connect(self.extent_defined) QTest.mouseClick(self.dialog.x_maximum, Qt.LeftButton) QTest.keyClick(self.dialog.x_maximum, '3') QTest.keyClick(self.dialog.x_maximum, '0') ok = self.dialog.button_box.button(QtGui.QDialogButtonBox.Ok) QTest.mouseClick(ok, Qt.LeftButton) expected_extent = QgsRectangle(10.0, 10.0, 30.0, 20.0) self.assertEqual(self.extent.toString(), expected_extent.toString())
def test_5(self): # (Un)indent multiline with Space self.qpart.indentUseTabs = False self.qpart.text = ' ab\n cd' self.qpart.selectedPosition = ((0, 2), (1, 3)) QTest.keyClick(self.qpart, Qt.Key_Space, Qt.ShiftModifier) self.assertEqual(self.qpart.text, ' ab\n cd') QTest.keyClick(self.qpart, Qt.Key_Backspace, Qt.ShiftModifier) self.assertEqual(self.qpart.text, ' ab\n cd')
def continueFunc(dialog): page = dialog._pageForItem["Editor/Indentation"] if useTabs: page.rbIndentationTabs.setChecked(True) else: page.rbIndentationSpaces.setChecked(True) page.sIndentationWidth.setValue(width) page.cbAutodetectIndent.setChecked(autoDetect) QTest.keyClick(dialog, Qt.Key_Enter)
def test_4(self): # (Un)indent multiline with Tab self.qpart.indentUseTabs = False self.qpart.text = ' ab\n cd' self.qpart.selectedPosition = ((0, 2), (1, 3)) QTest.keyClick(self.qpart, Qt.Key_Tab) self.assertEqual(self.qpart.text, ' ab\n cd') self.qpart.decreaseIndentAction.trigger() self.assertEqual(self.qpart.text, ' ab\n cd')
def test_tab_completes(self): self.qpart.text = 'aaaaa\naaaaaXXXXX\n' while QApplication.hasPendingEvents(): QApplication.processEvents() self.qpart.cursorPosition = (2, 0) QTest.keyClicks(self.qpart, "aaa") QTest.keyClick(self.qpart, Qt.Key_Tab) self.assertEqual(self.qpart.text, 'aaaaa\naaaaaXXXXX\naaaaa') QTest.keyClick(self.qpart, Qt.Key_Tab) self.assertEqual(self.qpart.text, 'aaaaa\naaaaaXXXXX\naaaaaXXXXX')
def test_copy_paste_utf8(self): self.qpart.show() self.qpart.text = u'фыва' for i in range(3): QTest.keyClick(self.qpart, Qt.Key_Right, Qt.AltModifier | Qt.ShiftModifier) QTest.keyClick(self.qpart, Qt.Key_C, Qt.ControlModifier) QTest.keyClick(self.qpart, Qt.Key_Right) QTest.keyClick(self.qpart, Qt.Key_Space) QTest.keyClick(self.qpart, Qt.Key_V, Qt.ControlModifier) self.assertEqual(self.qpart.text, u'фыва фыв')
def test_1(self): self._rm() self.assertFalse(self._exists()) self.qpart.show() def acceptDialog(): QTest.keyClick(self.app.focusWidget(), Qt.Key_Enter, Qt.NoModifier) QTimer.singleShot(1000, acceptDialog) QTest.keyClick(self.qpart, Qt.Key_P, Qt.ControlModifier) self.assertTrue(self._exists()) self._rm()
def test_select_and_search_multiline(self): qpart = core.workspace().currentDocument().qutepart qpart.text = _TEXT_MULTILINE_SEARCH # select first 'string' qpart.selectedPosition = ((0, 0), (1, 1)) QTest.keyClick(core.mainWindow(), Qt.Key_F, Qt.ControlModifier) self.keyClick(Qt.Key_F3) self.assertEqual(qpart.selectedPosition, ((3, 0), (4, 1))) self.assertEqual(qpart.selectedText, "a\nb")
def test_console_NameError_link(self): """ Does causing a NameError on the Python console result in a help//: link :return: """ self.form.pyconsole_output.clear() console_pre_txt = self.form.pyconsole_output.toPlainText() QTest.keyClick(self.form.pyconsole_output, Qt.Key_I, delay=100) QTest.keyClick(self.form.pyconsole_output, Qt.Key_Return, delay=200) console_post_txt = self.form.pyconsole_output.toPlainText() console_post_html = self.form.pyconsole_output.toHtml() self.assertNotEqual(console_pre_txt, console_post_txt) self.assertTrue('href="help://?object=NameError' in console_post_html)
def click(key): clockBefore = time.clock() if isinstance(key, basestring): QTest.keyClicks(q, key) else: QTest.keyClick(q, key) while app.hasPendingEvents(): app.processEvents() clockAfter = time.clock() ms = int((clockAfter - clockBefore) * 1000) clickTimes[ms] = clickTimes.get(ms, 0) + 1
def test_select_and_search_multiline(self): qpart = core.workspace().currentDocument().qutepart qpart.text = _TEXT_MULTILINE_SEARCH # select first 'string' qpart.selectedPosition = ((0, 0), (1, 1)) QTest.keyClick(core.mainWindow(), Qt.Key_F, Qt.ControlModifier) QTest.keyClick(self.app.focusWidget(), Qt.Key_F3) self.assertEqual(qpart.selectedPosition, ((3, 0), (4, 1))) self.assertEqual(qpart.selectedText, "a\nb")
def test_paste_replace_selection(self): self.qpart.show() self.qpart.text = 'asdf' for i in range(4): QTest.keyClick(self.qpart, Qt.Key_Right, Qt.AltModifier | Qt.ShiftModifier) QTest.keyClick(self.qpart, Qt.Key_C, Qt.ControlModifier) QTest.keyClick(self.qpart, Qt.Key_End) QTest.keyClick(self.qpart, Qt.Key_Left, Qt.ShiftModifier) QTest.keyClick(self.qpart, Qt.Key_V, Qt.ControlModifier) self.assertEqual(self.qpart.text, 'asdasdf')
def test_completion_enabled(self): self._assertNotVisible() self.qpart.completionEnabled = True QTest.keyClicks(self.qpart, "comple") self._assertVisible() for i in range(len('comple')): QTest.keyClick(self.qpart, Qt.Key_Backspace) self._assertNotVisible() self.qpart.completionEnabled = False QTest.keyClicks(self.qpart, "comple") self._assertNotVisible()
def test_copy_paste(self): self.qpart.indentUseTabs = True self.qpart.show() self.qpart.text = 'xx 123 yy\n' + \ 'xx 456 yy\n' + \ 'xx 789 yy\n' + \ '\n' + \ 'asdfghijlmn\n' + \ 'x\t\n' + \ '\n' + \ '\t\t\n' + \ 'end\n' self.qpart.cursorPosition = 0, 3 for i in range(3): QTest.keyClick(self.qpart, Qt.Key_Right, Qt.AltModifier | Qt.ShiftModifier) for i in range(2): QTest.keyClick(self.qpart, Qt.Key_Down, Qt.AltModifier | Qt.ShiftModifier) QTest.keyClick(self.qpart, Qt.Key_C, Qt.ControlModifier) self.qpart.cursorPosition = 4, 10 QTest.keyClick(self.qpart, Qt.Key_V, Qt.ControlModifier) self.assertEqual( self.qpart.text, 'xx 123 yy\nxx 456 yy\nxx 789 yy\n\nasdfghijlm123n\nx\t 456\n\t\t 789\n\t\t\nend\n' )
def test_issue71(self): """Test issue #71 in github - cbo changes should update ok button.""" # See https://github.com/AIFDR/inasafe/issues/71 # Push OK with the left mouse button print 'Using QGIS: %s' % qgis_version() self.tearDown() myButton = DOCK.pbnRunStop # First part of scenario should have enabled run myFileList = [ join(HAZDATA, 'Flood_Current_Depth_Jakarta_geographic.asc'), join(TESTDATA, 'Population_Jakarta_geographic.asc') ] myHazardLayerCount, myExposureLayerCount = load_layers( myFileList, data_directory=None) myMessage = ('Incorrect number of Hazard layers: expected 1 got %s' % myHazardLayerCount) assert myHazardLayerCount == 1, myMessage myMessage = ('Incorrect number of Exposure layers: expected 1 got %s' % myExposureLayerCount) assert myExposureLayerCount == 1, myMessage myMessage = 'Run button was not enabled' assert myButton.isEnabled(), myMessage # Second part of scenario - run disabled when adding invalid layer # and select it - run should be disabled myFileList = ['issue71.tif'] # This layer has incorrect keywords myClearFlag = False _, _ = load_layers(myFileList, myClearFlag) # set exposure to : Population Density Estimate (5kmx5km) # noinspection PyCallByClass,PyTypeChecker QTest.keyClick(DOCK.cboExposure, QtCore.Qt.Key_Down) # noinspection PyCallByClass,PyTypeChecker QTest.keyClick(DOCK.cboExposure, QtCore.Qt.Key_Enter) myDict = get_ui_state(DOCK) myExpectedDict = { 'Run Button Enabled': False, 'Impact Function Id': '', 'Impact Function Title': '', 'Hazard': 'A flood in Jakarta like in 2007', 'Exposure': 'Population density (5kmx5km)' } myMessage = (('Run button was not disabled when exposure set to \n%s' '\nUI State: \n%s\nExpected State:\n%s\n%s') % (DOCK.cboExposure.currentText(), myDict, myExpectedDict, combos_to_string(DOCK))) assert myExpectedDict == myDict, myMessage # Now select again a valid layer and the run button # should be enabled # noinspection PyCallByClass,PyTypeChecker QTest.keyClick(DOCK.cboExposure, QtCore.Qt.Key_Up) # noinspection PyCallByClass,PyTypeChecker QTest.keyClick(DOCK.cboExposure, QtCore.Qt.Key_Enter) myMessage = ('Run button was not enabled when exposure set to \n%s' % DOCK.cboExposure.currentText()) assert myButton.isEnabled(), myMessage
def test_manual(self): self._window.show() self.qpart.text = 'aaaaa\naaaaaXXXXX\n' base._processPendingEvents(self.app) self.qpart.cursorPosition = (2, 0) QTest.keyClicks(self.qpart, "a") QTest.keyPress(self.qpart, Qt.Key_Space, Qt.ControlModifier, 100) QTest.keyClicks(self.qpart, "a") QTest.keyClick(self.qpart, Qt.Key_Tab) self.assertEqual(self.qpart.text, 'aaaaa\naaaaaXXXXX\naaaaa')