diff options
Diffstat (limited to 'tests/auto/other/qaccessibility')
-rw-r--r-- | tests/auto/other/qaccessibility/tst_qaccessibility.cpp | 93 |
1 files changed, 84 insertions, 9 deletions
diff --git a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp index a72dac1b81..fbbf45ad58 100644 --- a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp +++ b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp @@ -1475,7 +1475,7 @@ void tst_QAccessibility::spinBoxTest() QTestAccessibility::clearEvents(); QTest::keyPress(spinBox, Qt::Key_Up); QTest::qWait(200); - QAccessibleEvent expectedEvent(QAccessible::ValueChanged, spinBox); + QAccessibleValueChangeEvent expectedEvent(spinBox->value(), spinBox); QVERIFY(QTestAccessibility::containsEvent(&expectedEvent)); delete spinBox; QTestAccessibility::clearEvents(); @@ -1695,8 +1695,10 @@ void tst_QAccessibility::mdiSubWindowTest() void tst_QAccessibility::lineEditTest() { + QWidget *toplevel = new QWidget; + { QLineEdit *le = new QLineEdit; - QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(le); + QAIPtr iface(QAccessible::queryAccessibleInterface(le)); QVERIFY(iface); le->show(); @@ -1727,7 +1729,6 @@ void tst_QAccessibility::lineEditTest() QVERIFY(!(iface->state().passwordEdit)); QCOMPARE(iface->text(QAccessible::Value), secret); - QWidget *toplevel = new QWidget; le->setParent(toplevel); toplevel->show(); QApplication::processEvents(); @@ -1754,20 +1755,23 @@ void tst_QAccessibility::lineEditTest() iface->setText(QAccessible::Value, QLatin1String("This text is not a number")); QCOMPARE(le->text(), QLatin1String("500")); - delete iface; delete le; delete le2; - QTestAccessibility::clearEvents(); + } - // IA2 + { + // Text interface to get the current text QString cite = "I always pass on good advice. It is the only thing to do with it. It is never of any use to oneself. --Oscar Wilde"; QLineEdit *le3 = new QLineEdit(cite, toplevel); - iface = QAccessible::queryAccessibleInterface(le3); + le3->show(); + QAIPtr iface(QAccessible::queryAccessibleInterface(le3)); QAccessibleTextInterface* textIface = iface->textInterface(); le3->deselect(); + QTestAccessibility::clearEvents(); le3->setCursorPosition(3); QCOMPARE(textIface->cursorPosition(), 3); - QAccessibleEvent caretEvent(QAccessible::TextCaretMoved, le3); + + QAccessibleTextCursorEvent caretEvent(3, le3); QTRY_VERIFY(QTestAccessibility::containsEvent(&caretEvent)); QCOMPARE(textIface->selectionCount(), 0); QTestAccessibility::clearEvents(); @@ -1813,7 +1817,78 @@ void tst_QAccessibility::lineEditTest() QCOMPARE(textIface->textAtOffset(5, QAccessible2::LineBoundary,&start,&end), cite); QCOMPARE(textIface->textAtOffset(5, QAccessible2::NoBoundary,&start,&end), cite); - delete iface; + QTestAccessibility::clearEvents(); + } + + { + // Test events: cursor movement, selection, text changes + QString text = "Hello, world"; + QLineEdit *lineEdit = new QLineEdit(text, toplevel); + lineEdit->show(); + QTestAccessibility::clearEvents(); + // cursor + lineEdit->setCursorPosition(5); + QAccessibleTextCursorEvent cursorEvent(5, lineEdit); + QVERIFY_EVENT(&cursorEvent); + lineEdit->setCursorPosition(0); + cursorEvent.setCursorPosition(0); + QVERIFY_EVENT(&cursorEvent); + + // selection + lineEdit->setSelection(2, 4); + + QAccessibleTextSelectionEvent sel(2, 2+4, lineEdit); + QVERIFY_EVENT(&sel); + + lineEdit->selectAll(); + sel.setSelection(0, lineEdit->text().length()); + sel.setCursorPosition(lineEdit->text().length()); + QVERIFY_EVENT(&sel); + + lineEdit->setSelection(10, -4); + QCOMPARE(lineEdit->cursorPosition(), 6); + QAccessibleTextSelectionEvent sel2(6, 10, lineEdit); + sel2.setCursorPosition(6); + QVERIFY_EVENT(&sel2); + + lineEdit->deselect(); + QAccessibleTextSelectionEvent sel3(-1, -1, lineEdit); + sel3.setCursorPosition(6); + QVERIFY_EVENT(&sel3); + + // editing + lineEdit->clear(); + // FIXME: improve redundant updates + QAccessibleTextRemoveEvent remove(0, text, lineEdit); + QVERIFY_EVENT(&remove); + + QAccessibleTextSelectionEvent noSel(-1, -1, lineEdit); + QVERIFY_EVENT(&noSel); + QAccessibleTextCursorEvent cursor(0, lineEdit); + QVERIFY_EVENT(&cursor); + + lineEdit->setText("foo"); + qDebug() << QTestAccessibility::events(); + cursorEvent.setCursorPosition(3); + QVERIFY_EVENT(&cursorEvent); + + QAccessibleTextInsertEvent e(0, "foo", lineEdit); + QVERIFY(QTestAccessibility::containsEvent(&e)); + + lineEdit->setText("bar"); + QAccessibleTextUpdateEvent update(0, "foo", "bar", lineEdit); + QVERIFY(QTestAccessibility::containsEvent(&update)); + +// QTestEventList keys; +// keys.addKeyClick('D'); +// keys.addKeyClick('E'); +// keys.addKeyClick(Qt::Key_Left); +// keys.addKeyClick(Qt::Key_Left); +// keys.addKeyClick('C'); +// keys.addKeyClick('O'); +// keys.simulate(lineEdit); +// FIXME: Test key press events... + } delete toplevel; QTestAccessibility::clearEvents(); } |