diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qaccessibility/tst_qaccessibility.cpp | 313 |
1 files changed, 139 insertions, 174 deletions
diff --git a/tests/auto/qaccessibility/tst_qaccessibility.cpp b/tests/auto/qaccessibility/tst_qaccessibility.cpp index ba20640ac4..b98ef4ae5b 100644 --- a/tests/auto/qaccessibility/tst_qaccessibility.cpp +++ b/tests/auto/qaccessibility/tst_qaccessibility.cpp @@ -240,7 +240,6 @@ private slots: void doubleSpinBoxTest(); void textEditTest(); void textBrowserTest(); - void listViewTest(); void mdiAreaTest(); void mdiSubWindowTest(); void lineEditTest(); @@ -250,16 +249,24 @@ private slots: void rubberBandTest(); void abstractScrollAreaTest(); void scrollAreaTest(); + + // Accessible table1 interface is no longer supported on X11, + // where it has been replaced by table2 interface. +#ifndef Q_OS_UNIX + void listViewTest(); + void treeWidgetTest(); void tableWidgetTest(); void tableViewTest(); +#else void table2ListTest(); void table2TreeTest(); void table2TableTest(); +#endif + void calendarWidgetTest(); void dockWidgetTest(); void comboBoxTest(); void accessibleName(); - void treeWidgetTest(); void labelTest(); void accelerators(); }; @@ -1771,80 +1778,6 @@ void tst_QAccessibility::textBrowserTest() QTestAccessibility::clearEvents(); } -void tst_QAccessibility::listViewTest() -{ -#if defined(Q_OS_UNIX) - QSKIP( "Accessible table1 interface is no longer supported on X11.", SkipAll); -#else - { - QListView listView; - QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(&listView); - QVERIFY(iface); - QCOMPARE(iface->childCount(), 1); - delete iface; - } - { - QListWidget listView; - listView.addItem(tr("A")); - listView.addItem(tr("B")); - listView.addItem(tr("C")); - listView.resize(400,400); - listView.show(); - QTest::qWait(1); // Need this for indexOfchild to work. -#if defined(Q_OS_UNIX) - QCoreApplication::processEvents(&listView); - QTest::qWait(100); -#endif - - QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(&listView); - QCOMPARE((int)iface->role(), (int)QAccessible::Client); - QCOMPARE((int)iface->role(1), (int)QAccessible::List); - QCOMPARE(iface->childCount(), 1); - QAccessibleInterface *child; - iface->navigate(QAccessible::Child, 1, &child); - delete iface; - iface = child; - QCOMPARE(iface->text(QAccessible::Name, 1), QString("A")); - QCOMPARE(iface->text(QAccessible::Name, 2), QString("B")); - QCOMPARE(iface->text(QAccessible::Name, 3), QString("C")); - - QCOMPARE(iface->childCount(), 3); - - QAccessibleInterface *childA = 0; - QCOMPARE(iface->navigate(QAccessible::Child, 1, &childA), 0); - QVERIFY(childA); - QCOMPARE(iface->indexOfChild(childA), 1); - QCOMPARE(childA->text(QAccessible::Name, 1), QString("A")); - delete childA; - - QAccessibleInterface *childB = 0; - QCOMPARE(iface->navigate(QAccessible::Child, 2, &childB), 0); - QVERIFY(childB); - QCOMPARE(iface->indexOfChild(childB), 2); - QCOMPARE(childB->text(QAccessible::Name, 1), QString("B")); - delete childB; - - QAccessibleInterface *childC = 0; - QCOMPARE(iface->navigate(QAccessible::Child, 3, &childC), 0); - QVERIFY(childC); - QCOMPARE(iface->indexOfChild(childC), 3); - QCOMPARE(childC->text(QAccessible::Name, 1), QString("C")); - delete childC; - QTestAccessibility::clearEvents(); - - // Check for events - QTest::mouseClick(listView.viewport(), Qt::LeftButton, 0, listView.visualItemRect(listView.item(1)).center()); - QTest::mouseClick(listView.viewport(), Qt::LeftButton, 0, listView.visualItemRect(listView.item(2)).center()); - QVERIFY(QTestAccessibility::events().contains(QTestAccessibilityEvent(listView.viewport(), 2, QAccessible::Selection))); - QVERIFY(QTestAccessibility::events().contains(QTestAccessibilityEvent(listView.viewport(), 3, QAccessible::Selection))); - delete iface; - - } - QTestAccessibility::clearEvents(); -#endif -} - - void tst_QAccessibility::mdiAreaTest() { { @@ -2540,11 +2473,132 @@ void tst_QAccessibility::scrollAreaTest() QTestAccessibility::clearEvents(); } +// Accessible table1 interface is no longer supported on X11, +// where it has been replaced by table2 interface. +#ifndef Q_OS_UNIX + +void tst_QAccessibility::listViewTest() +{ + { + QListView listView; + QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(&listView); + QVERIFY(iface); + QCOMPARE(iface->childCount(), 1); + delete iface; + } + { + QListWidget listView; + listView.addItem(tr("A")); + listView.addItem(tr("B")); + listView.addItem(tr("C")); + listView.resize(400,400); + listView.show(); + QTest::qWait(1); // Need this for indexOfchild to work. + + QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(&listView); + QCOMPARE((int)iface->role(), (int)QAccessible::Client); + QCOMPARE((int)iface->role(1), (int)QAccessible::List); + QCOMPARE(iface->childCount(), 1); + QAccessibleInterface *child; + iface->navigate(QAccessible::Child, 1, &child); + delete iface; + iface = child; + QCOMPARE(iface->text(QAccessible::Name, 1), QString("A")); + QCOMPARE(iface->text(QAccessible::Name, 2), QString("B")); + QCOMPARE(iface->text(QAccessible::Name, 3), QString("C")); + + QCOMPARE(iface->childCount(), 3); + + QAccessibleInterface *childA = 0; + QCOMPARE(iface->navigate(QAccessible::Child, 1, &childA), 0); + QVERIFY(childA); + QCOMPARE(iface->indexOfChild(childA), 1); + QCOMPARE(childA->text(QAccessible::Name, 1), QString("A")); + delete childA; + + QAccessibleInterface *childB = 0; + QCOMPARE(iface->navigate(QAccessible::Child, 2, &childB), 0); + QVERIFY(childB); + QCOMPARE(iface->indexOfChild(childB), 2); + QCOMPARE(childB->text(QAccessible::Name, 1), QString("B")); + delete childB; + + QAccessibleInterface *childC = 0; + QCOMPARE(iface->navigate(QAccessible::Child, 3, &childC), 0); + QVERIFY(childC); + QCOMPARE(iface->indexOfChild(childC), 3); + QCOMPARE(childC->text(QAccessible::Name, 1), QString("C")); + delete childC; + QTestAccessibility::clearEvents(); + + // Check for events + QTest::mouseClick(listView.viewport(), Qt::LeftButton, 0, listView.visualItemRect(listView.item(1)).center()); + QTest::mouseClick(listView.viewport(), Qt::LeftButton, 0, listView.visualItemRect(listView.item(2)).center()); + QVERIFY(QTestAccessibility::events().contains(QTestAccessibilityEvent(listView.viewport(), 2, QAccessible::Selection))); + QVERIFY(QTestAccessibility::events().contains(QTestAccessibilityEvent(listView.viewport(), 3, QAccessible::Selection))); + delete iface; + } + QTestAccessibility::clearEvents(); +} + +void tst_QAccessibility::treeWidgetTest() +{ + QWidget *w = new QWidget; + QTreeWidget *tree = new QTreeWidget(w); + QHBoxLayout *l = new QHBoxLayout(w); + l->addWidget(tree); + for (int i = 0; i < 10; ++i) { + QStringList strings = QStringList() << QString::fromAscii("row: %1").arg(i) + << QString("column 1") << QString("column 2"); + + tree->addTopLevelItem(new QTreeWidgetItem(strings)); + } + w->show(); + + QAccessibleInterface *acc = QAccessible::queryAccessibleInterface(tree); + QAccessibleInterface *accViewport = 0; + int entry = acc->navigate(QAccessible::Child, 1, &accViewport); + QVERIFY(accViewport); + QCOMPARE(entry, 0); + QAccessibleInterface *accTreeItem = 0; + entry = accViewport->navigate(QAccessible::Child, 1, &accTreeItem); + QCOMPARE(entry, 0); + + QAccessibleInterface *accTreeItem2 = 0; + entry = accTreeItem->navigate(QAccessible::Sibling, 3, &accTreeItem2); + QCOMPARE(entry, 0); + QCOMPARE(accTreeItem2->text(QAccessible::Name, 0), QLatin1String("row: 1")); + + // test selected/focused state + QItemSelectionModel *selModel = tree->selectionModel(); + QVERIFY(selModel); + selModel->select(QItemSelection(tree->model()->index(0, 0), tree->model()->index(3, 0)), QItemSelectionModel::Select); + selModel->setCurrentIndex(tree->model()->index(1, 0), QItemSelectionModel::Current); + + for (int i = 1; i < 10 ; ++i) { + QAccessible::State expected; + if (i <= 5 && i >= 2) + expected = QAccessible::Selected; + if (i == 3) + expected |= QAccessible::Focused; + + QCOMPARE(accViewport->state(i) & (QAccessible::Focused | QAccessible::Selected), expected); + } + + // Test sanity of its navigation functions + QCOMPARE(verifyHierarchy(acc), 0); + + delete accTreeItem2; + delete accTreeItem; + delete accViewport; + delete acc; + delete w; + + QTestAccessibility::clearEvents(); +} + void tst_QAccessibility::tableWidgetTest() { -#if defined(Q_OS_UNIX) - QSKIP( "Accessible table1 interface is no longer supported on X11.", SkipAll); -#else { QWidget *topLevel = new QWidget; QTableWidget *w = new QTableWidget(8,4,topLevel); @@ -2555,10 +2609,7 @@ void tst_QAccessibility::tableWidgetTest() } w->resize(100, 100); topLevel->show(); -#if defined(Q_OS_UNIX) - QCoreApplication::processEvents(w); - QTest::qWait(100); -#endif + QAccessibleInterface *client = QAccessible::queryAccessibleInterface(w); QCOMPARE(client->role(), QAccessible::Client); QCOMPARE(client->childCount(), 3); @@ -2584,7 +2635,6 @@ void tst_QAccessibility::tableWidgetTest() delete topLevel; } QTestAccessibility::clearEvents(); -#endif } class QtTestTableModel: public QAbstractTableModel @@ -2667,9 +2717,6 @@ public: void tst_QAccessibility::tableViewTest() { -#if defined(Q_OS_UNIX) - QSKIP( "Accessible table1 interface is no longer supported on X11.", SkipAll); -#else { QtTestTableModel *model = new QtTestTableModel(3, 4); QTableView *w = new QTableView(); @@ -2679,10 +2726,7 @@ void tst_QAccessibility::tableViewTest() w->resizeColumnsToContents(); w->resizeRowsToContents(); w->show(); -#if defined(Q_OS_UNIX) - QCoreApplication::processEvents(w); - QTest::qWait(100); -#endif + QAccessibleInterface *client = QAccessible::queryAccessibleInterface(w); QAccessibleInterface *table2; client->navigate(QAccessible::Child, 1, &table2); @@ -2749,14 +2793,13 @@ void tst_QAccessibility::tableViewTest() delete model; } QTestAccessibility::clearEvents(); -#endif } +#else +// Test accessible table2 interface on unix + void tst_QAccessibility::table2ListTest() { -#if !defined(Q_OS_UNIX) - QSKIP( "Accessible table2 interface is currently only supported on X11.", SkipAll); -#else QListWidget *listView = new QListWidget; listView->addItem("Oslo"); listView->addItem("Berlin"); @@ -2764,10 +2807,8 @@ void tst_QAccessibility::table2ListTest() listView->resize(400,400); listView->show(); QTest::qWait(1); // Need this for indexOfchild to work. -#if defined(Q_OS_UNIX) QCoreApplication::processEvents(); QTest::qWait(100); -#endif QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(listView); QCOMPARE(verifyHierarchy(iface), 0); @@ -2830,14 +2871,10 @@ void tst_QAccessibility::table2ListTest() delete iface; delete listView; QTestAccessibility::clearEvents(); -#endif } void tst_QAccessibility::table2TreeTest() { -#if !defined(Q_OS_UNIX) - QSKIP( "Accessible table2 interface is currently only supported on X11.", SkipAll); -#else QTreeWidget *treeView = new QTreeWidget; treeView->setColumnCount(2); QTreeWidgetItem *header = new QTreeWidgetItem; @@ -2953,15 +2990,10 @@ void tst_QAccessibility::table2TreeTest() delete iface; QTestAccessibility::clearEvents(); -#endif } - void tst_QAccessibility::table2TableTest() { -#if !defined(Q_OS_UNIX) - QSKIP( "Accessible table2 interface is currently only supported on X11.", SkipAll); -#else QTableWidget *tableView = new QTableWidget(3, 3); tableView->setColumnCount(3); QStringList hHeader; @@ -2981,10 +3013,8 @@ void tst_QAccessibility::table2TableTest() tableView->resize(600,600); tableView->show(); QTest::qWait(1); // Need this for indexOfchild to work. -#if defined(Q_OS_UNIX) QCoreApplication::processEvents(); QTest::qWait(100); -#endif QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(tableView); QCOMPARE(verifyHierarchy(iface), 0); @@ -3063,8 +3093,8 @@ void tst_QAccessibility::table2TableTest() delete tableView; QTestAccessibility::clearEvents(); -#endif } +#endif void tst_QAccessibility::calendarWidgetTest() { @@ -3298,71 +3328,6 @@ void tst_QAccessibility::comboBoxTest() QTestAccessibility::clearEvents(); } -void tst_QAccessibility::treeWidgetTest() -{ -#if defined(Q_OS_UNIX) - QSKIP( "Accessible table1 interface is no longer supported on X11.", SkipAll); -#else - QWidget *w = new QWidget; - QTreeWidget *tree = new QTreeWidget(w); - QHBoxLayout *l = new QHBoxLayout(w); - l->addWidget(tree); - for (int i = 0; i < 10; ++i) { - QStringList strings = QStringList() << QString::fromAscii("row: %1").arg(i) - << QString("column 1") << QString("column 2"); - - tree->addTopLevelItem(new QTreeWidgetItem(strings)); - } - w->show(); -// QTest::qWait(1000); -#if defined(Q_OS_UNIX) - QCoreApplication::processEvents(w); - QTest::qWait(100); -#endif - - QAccessibleInterface *acc = QAccessible::queryAccessibleInterface(tree); - QAccessibleInterface *accViewport = 0; - int entry = acc->navigate(QAccessible::Child, 1, &accViewport); - QVERIFY(accViewport); - QCOMPARE(entry, 0); - QAccessibleInterface *accTreeItem = 0; - entry = accViewport->navigate(QAccessible::Child, 1, &accTreeItem); - QCOMPARE(entry, 0); - - QAccessibleInterface *accTreeItem2 = 0; - entry = accTreeItem->navigate(QAccessible::Sibling, 3, &accTreeItem2); - QCOMPARE(entry, 0); - QCOMPARE(accTreeItem2->text(QAccessible::Name, 0), QLatin1String("row: 1")); - - // test selected/focused state - QItemSelectionModel *selModel = tree->selectionModel(); - QVERIFY(selModel); - selModel->select(QItemSelection(tree->model()->index(0, 0), tree->model()->index(3, 0)), QItemSelectionModel::Select); - selModel->setCurrentIndex(tree->model()->index(1, 0), QItemSelectionModel::Current); - - for (int i = 1; i < 10 ; ++i) { - QAccessible::State expected; - if (i <= 5 && i >= 2) - expected = QAccessible::Selected; - if (i == 3) - expected |= QAccessible::Focused; - - QCOMPARE(accViewport->state(i) & (QAccessible::Focused | QAccessible::Selected), expected); - } - - // Test sanity of its navigation functions - QCOMPARE(verifyHierarchy(acc), 0); - - delete accTreeItem2; - delete accTreeItem; - delete accViewport; - delete acc; - delete w; - - QTestAccessibility::clearEvents(); -#endif -} - void tst_QAccessibility::labelTest() { QString text = "Hello World"; |