From 8aaff6751038b88d17e23be6fcee945771297c5b Mon Sep 17 00:00:00 2001 From: Jason McDonald Date: Thu, 6 Oct 2011 13:48:18 +1000 Subject: Eliminate needless QSKIPs in qaccessibility test. On Unix the table1 interface was replaced by the table2 interface, while table1 is still used on other platforms. This commit changes the test so that only the applicable test functions are built and run, where previously both sets of tests were built and one set would always skip. Change-Id: I5a785fb88fcbf4e5896e1fdb80c7c0a659597e34 Reviewed-on: http://codereview.qt-project.org/6097 Reviewed-by: Qt Sanity Bot Reviewed-by: Rohan McGovern --- tests/auto/qaccessibility/tst_qaccessibility.cpp | 313 ++++++++++------------- 1 file changed, 139 insertions(+), 174 deletions(-) (limited to 'tests') 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"; -- cgit v1.2.3