Exemple #1
0
    def test_cycling(self):
        text = 'e den '
        alt_text = 'i den '
        QTest.keyClicks(self.editor, text)
        self.editor.handle_mode_toggle()  # wordcheck mode

        cur = self.editor.textCursor()
        default_col = cur.charFormat().background().color().getRgb()
        cur.setPosition(0)
        self.editor.setTextCursor(cur)
        selection = self.editor.extraSelections()[0]
        col0 = selection.format.background().color().getRgb()

        QTest.keyClick(self.editor, Qt.Key_R)
        new_text = self.editor.toPlainText()
        selection = self.editor.extraSelections()[0]
        col1 = selection.format.background().color().getRgb()
        self.assertEqual(alt_text, new_text, msg="e to i")
        self.assertNotEqual(col1, default_col, msg="non-default color")
        self.assertNotEqual(col1, col0, msg="changed color")

        QTest.keyClick(self.editor, Qt.Key_E)
        new_text = self.editor.toPlainText()
        selection = self.editor.extraSelections()[0]
        col2 = selection.format.background().color().getRgb()
        self.assertEqual(text, new_text, msg="i to e")
        self.assertEqual(col2, col0, msg="back to same color")
Exemple #2
0
    def keyClick(self, widget, key, modifier=qt.Qt.NoModifier, delay=-1):
        """Simulate clicking a key.

        See QTest.keyClick for details.
        """
        QTest.keyClick(widget, key, modifier, delay)
        self.qWait(20)
Exemple #3
0
 def test_word_replace_trigger(self):
     QTest.keyClicks(self.editor, 'i')
     self.assertEqual(self.editor.textCursor().block().text(),
                      "i",
                      msg="plain i stays i")
     self.editor.document().clear()
     QTest.keyClicks(self.editor, 'e')
     self.assertEqual(self.editor.textCursor().block().text(),
                      "e",
                      msg="plain e stays e")
     self.editor.document().clear()
     # for whatever reason, python puts e before i, so e is default.
     QTest.keyClicks(self.editor, 'i ')
     self.assertEqual(self.editor.textCursor().block().text(),
                      "e ",
                      msg="space bar coersion")
     self.editor.document().clear()
     QTest.keyClicks(self.editor, 'i')
     QTest.keyClick(self.editor, Qt.Key_Return)
     self.assertEqual(self.editor.textCursor().block().previous().text(),
                      "e",
                      msg="return btn coersion")
     self.editor.document().clear()
     QTest.keyClicks(self.editor, 'i/')
     self.assertEqual(self.editor.textCursor().block().text(),
                      "e/",
                      msg="slash coersion")
Exemple #4
0
    def testKeyEvent(self):
        widget = QLineEdit()
        key = Qt.Key_A
        eventFilter = KeyEventFilter(widget, QEvent.KeyPress, key)
        widget.installEventFilter(eventFilter)

        QTest.keyClick(widget, key)

        self.assert_(eventFilter.processed)
Exemple #5
0
 def test_typing(self):
     self.editor.handle_mode_toggle()
     QTest.keyClicks(self.editor, 'xza,.;')
     self.assertEqual(self.editor.textCursor().block().text(), ',.;,.;')
     self.editor.clear()
     QTest.keyClicks(self.editor, 'XZA<>:', modifier=Qt.ShiftModifier)
     self.assertEqual(self.editor.textCursor().block().text(), '<>:<>:')
     QTest.keyClick(self.editor, Qt.Key_Backspace, modifier=Qt.NoModifier)
     self.assertEqual(self.editor.textCursor().block().text(), '<>:<>')
    def testKeyEvent(self):
        widget = QLineEdit()
        key = Qt.Key_A
        eventFilter = KeyEventFilter(widget, QEvent.KeyPress, key)
        widget.installEventFilter(eventFilter)

        QTest.keyClick(widget, key)

        self.assertTrue(eventFilter.processed)
Exemple #7
0
 def test_modify_edit(self, data_instance, form, new_value):
     target = new_value(data_instance.value)
     assert target != data_instance.value
     for w in (form.edit, form.otheredit):
         w.clear()
         QTest.keyClicks(w, str(target))
         QTest.keyClick(w, Qt.Key_Enter)
         assert data_instance.value == form.edit.value()
         assert data_instance.value == form.otheredit.value()
         assert data_instance.value == target
Exemple #8
0
    def test_missing_word(self):
        text = 'jkljkl e den '
        QTest.keyClicks(self.editor, text)
        self.editor.handle_mode_toggle()  # wordcheck mode

        cur = self.editor.textCursor()
        cur.setPosition(0)
        self.editor.setTextCursor(cur)

        QTest.keyClick(self.editor, Qt.Key_U)
        new_text = self.editor.toPlainText()
        self.assertEqual(text, new_text)
Exemple #9
0
    def test_hot_word_replacement(self):
        # this test handles getting to "hi," from its default coersion to "hex"
        QTest.keyClicks(self.editor, 'hi, ')  # coerced to "hex"
        self.editor.handle_mode_toggle()

        cur = self.editor.textCursor()
        cur.setPosition(3)
        self.editor.setTextCursor(cur)
        QTest.keyClick(self.editor, Qt.Key_Backspace,
                       modifier=Qt.NoModifier)  # "he| " (| = cursor)

        QTest.keyClick(self.editor, Qt.Key_U)
        self.assertEqual(self.editor.textCursor().block().text(), 'hi ')
Exemple #10
0
    def test_index_preservation(self):
        text = 'e den '
        alt_text = 'i den '
        QTest.keyClicks(self.editor, text)
        self.editor.handle_mode_toggle()  # wordcheck mode

        cur = self.editor.textCursor()
        cur.setPosition(0)
        self.editor.setTextCursor(cur)

        QTest.keyClick(self.editor, Qt.Key_R)
        new_text = self.editor.toPlainText()
        self.assertEqual(alt_text, new_text, msg="e to i")

        # Move to other word and back.
        cur = self.editor.textCursor()
        cur.setPosition(4)
        self.editor.setTextCursor(cur)

        cur = self.editor.textCursor()
        cur.setPosition(0)
        self.editor.setTextCursor(cur)

        QTest.keyClick(self.editor, Qt.Key_R)
        QTest.keyClick(self.editor, Qt.Key_R)
        QTest.keyClick(self.editor, Qt.Key_R)
        new_text = self.editor.toPlainText()
        self.assertEqual(text, new_text, msg="i to e")
Exemple #11
0
    def test_basic(self):
        text = 'En '
        QTest.keyClicks(self.editor, text)
        self.editor.handle_mode_toggle()  # wordcheck mode

        cur = self.editor.textCursor()
        cur.setPosition(0)
        self.editor.setTextCursor(cur)

        QTest.keyClick(self.editor, Qt.Key_R)
        self.assertEqual(self.editor.toPlainText(),
                         "In ",
                         msg="upper case options maintained")
        QTest.keyClick(self.editor, Qt.Key_R)
        self.assertEqual(self.editor.toPlainText(),
                         "en ",
                         msg="lower case options maintained")
Exemple #12
0
 def test_move_up(self):
     QTest.keyClick(self.editor, Qt.Key_Return)
     QTest.keyClick(self.editor, Qt.Key_Return)
     self.editor.handle_mode_toggle()
     QTest.keyClick(self.editor, Qt.Key_K)
     QTest.keyClick(self.editor, Qt.Key_D)
     self.assertEqual(self.editor.textCursor().blockNumber(), 0)
     self.assertEqual(self.editor.toPlainText(),
                      "\n\n",
                      msg="text modified")
Exemple #13
0
 def test_move_down(self):
     QTest.keyClick(self.editor, Qt.Key_Return)
     QTest.keyClick(self.editor, Qt.Key_Return)
     start_cur = self.editor.textCursor()
     start_cur.setPosition(0)
     self.editor.setTextCursor(start_cur)
     self.editor.handle_mode_toggle()
     QTest.keyClick(self.editor, Qt.Key_F)
     QTest.keyClick(self.editor, Qt.Key_J)
     self.assertEqual(self.editor.textCursor().blockNumber(), 2)
     self.assertEqual(self.editor.toPlainText(),
                      "\n\n",
                      msg="text modified")
Exemple #14
0
 def test_move_left_then_right(self):
     QTest.keyClicks(self.editor, 'the box')
     self.editor.handle_mode_toggle()
     QTest.keyClick(self.editor, Qt.Key_S)
     QTest.keyClick(self.editor, Qt.Key_H)
     self.assertEqual(self.editor.textCursor().position(),
                      0,
                      msg="move by word")
     QTest.keyClick(self.editor, Qt.Key_V)
     QTest.keyClick(self.editor, Qt.Key_M)
     self.assertEqual(self.editor.textCursor().position(),
                      2,
                      msg="move by char")
     self.assertEqual(self.editor.toPlainText(),
                      "the box",
                      msg="text modified")
Exemple #15
0
 def test_move_right_then_left(self):
     QTest.keyClicks(self.editor, 'the box is')
     self.editor.handle_mode_toggle()
     start_cur = self.editor.textCursor()
     start_cur.setPosition(0)
     self.editor.setTextCursor(start_cur)
     QTest.keyClick(self.editor, Qt.Key_G)
     QTest.keyClick(self.editor, Qt.Key_L)
     self.assertEqual(self.editor.textCursor().position(),
                      8,
                      msg="move by word")
     QTest.keyClick(self.editor, Qt.Key_C)
     QTest.keyClick(self.editor, Qt.Key_N)
     self.assertEqual(self.editor.textCursor().position(),
                      6,
                      msg="move by char")
     self.assertEqual(self.editor.toPlainText(),
                      "the box is",
                      msg="text modified")
    def test_btns(self):
        self.assertFalse(self.vd.ok_btn.isEnabled())
        self.assertFalse(self.vd.ok_btn.isDefault())
        self.assertTrue(self.vd.help_btn.isDefault())

        QTest.keyClick(self.vd.line_edit, Qt.Key_X)
        self.assertTrue(self.vd.ok_btn.isEnabled())
        self.assertTrue(self.vd.ok_btn.isDefault())
        self.assertFalse(self.vd.help_btn.isDefault())

        QTest.keyClick(self.vd.line_edit, Qt.Key_X)
        self.assertFalse(self.vd.ok_btn.isEnabled())
        self.assertFalse(self.vd.ok_btn.isDefault())
        self.assertTrue(self.vd.help_btn.isDefault())

        QTest.keyClick(self.vd.line_edit, Qt.Key_X)
        self.assertTrue(self.vd.ok_btn.isEnabled())
        self.assertTrue(self.vd.ok_btn.isDefault())
        self.assertFalse(self.vd.help_btn.isDefault())
Exemple #17
0
class TestBasic(unittest.TestCase):
    def setUp(self):
        class Data(HasQtlets):
            value = Integer(default_value=1, min=0, max=10)

        class Form(QWidget):
            def __init__(self, parent=None, data=None):
                super().__init__(parent)
                self.data = data

                self.edit = IntEdit("...")
                self.otheredit = IntEdit("???")
                # self.otheredit.setEnabled(False)
                self.button = QPushButton("Roll!")

                layout = QVBoxLayout()
                for w in [self.edit, self.otheredit, self.button]:
                    layout.addWidget(w)
                self.setLayout(layout)

                data.link_widget(self.edit, "value")
                data.link_widget(self.otheredit, "value")

                self.button.clicked.connect(self.on_btn_click)
                self.setWindowTitle("Directional connection")

            def on_btn_click(self):
                #print("Roll!!")
                # this is done in the calling thread.
                # We're not exploiting Qt's queued events in this direction
                self.data.value = randint(0, 10)

        d = Data(value=3)
        form = Form(data=d)
        self.form = form
        self.data = d

    def test_external(self):
        self.data.value += 1
        self.assertEqual(self.data.value, self.form.edit.value())
        self.assertEqual(self.data.value, self.form.otheredit.value())

    def test_roll(self):
        old = self.data.value
        while self.data.value == old:
            QTest.mouseClick(self.form.button, Qt.LeftButton)
        self.assertNotEqual(old, self.data.value)
        self.assertEqual(self.data.value, self.form.edit.value())
        self.assertEqual(self.data.value, self.form.otheredit.value())

    def test_modify_edit(self):
        while (target := randint(0, 10)) == self.data.value:
            pass
        self.assertNotEqual(target, self.data.value)
        for w in (self.form.edit, self.form.otheredit):
            w.clear()
            QTest.keyClicks(w, str(target))
            QTest.keyClick(w, Qt.Key_Enter)
            self.assertEqual(target, self.form.edit.value())
            self.assertEqual(target, self.form.otheredit.value())
            self.assertEqual(target, self.data.value)
 def test_ok(self):
     # Relies on default buttons clickable via Enter
     QTest.keyClick(self.vd.line_edit, Qt.Key_X)
     QTest.keyClick(self.vd.line_edit, Qt.Key_Enter)
     self.assertTrue(self.vd.isHidden())
     self.assertEqual(self.label.text(), 'x')