diff options
author | Frederik Gladhorn <frederik.gladhorn@nokia.com> | 2011-10-06 14:54:49 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-19 19:25:42 +0200 |
commit | 4dc25c1f2995a5e02da47f0f6f3522af9eb6f78c (patch) | |
tree | 86391ff6c57ed46295df684a4c87ba9db0b73263 /tests/auto/qaccessibility | |
parent | 663cd1771883e1e7ac9c1a0dc8b797601b59ba17 (diff) | |
download | qtbase-4dc25c1f2995a5e02da47f0f6f3522af9eb6f78c.tar.gz |
Refactor QAccessibleActionInterface.
Some refinements done by Jan-Arve Sæther.
Change-Id: I99195b3c7273316cfa9c46e451924bbcfddd11a9
Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
Diffstat (limited to 'tests/auto/qaccessibility')
-rw-r--r-- | tests/auto/qaccessibility/tst_qaccessibility.cpp | 176 |
1 files changed, 68 insertions, 108 deletions
diff --git a/tests/auto/qaccessibility/tst_qaccessibility.cpp b/tests/auto/qaccessibility/tst_qaccessibility.cpp index 9e24c87e19..e1bd968534 100644 --- a/tests/auto/qaccessibility/tst_qaccessibility.cpp +++ b/tests/auto/qaccessibility/tst_qaccessibility.cpp @@ -224,8 +224,7 @@ private slots: void textAttributes(); void hideShowTest(); - void userActionCount(); - void actionText(); + void actionTest(); void applicationTest(); void mainWindowTest(); @@ -933,41 +932,11 @@ void tst_QAccessibility::hideShowTest() QTestAccessibility::clearEvents(); } -void tst_QAccessibility::userActionCount() -{ - QWidget widget; - - QAccessibleInterface *test = QAccessible::queryAccessibleInterface(&widget); - QVERIFY(test); - QVERIFY(test->isValid()); - QCOMPARE(test->userActionCount(0), 0); - QCOMPARE(test->userActionCount(1), 0); - QCOMPARE(test->userActionCount(-1), 0); - delete test; test = 0; - - QFrame frame; - - test = QAccessible::queryAccessibleInterface(&frame); - QVERIFY(test); - QVERIFY(test->isValid()); - QCOMPARE(test->userActionCount(0), 0); - QCOMPARE(test->userActionCount(1), 0); - QCOMPARE(test->userActionCount(-1), 0); - delete test; test = 0; - - QLineEdit lineEdit; - - test = QAccessible::queryAccessibleInterface(&lineEdit); - QVERIFY(test); - QVERIFY(test->isValid()); - QCOMPARE(test->userActionCount(0), 0); - QCOMPARE(test->userActionCount(1), 0); - QCOMPARE(test->userActionCount(-1), 0); - delete test; test = 0; -} -void tst_QAccessibility::actionText() +void tst_QAccessibility::actionTest() { + QCOMPARE(QAccessibleActionInterface::PressAction, QString("Press")); + QWidget *widget = new QWidget; widget->show(); @@ -975,13 +944,13 @@ void tst_QAccessibility::actionText() QVERIFY(test); QVERIFY(test->isValid()); - QCOMPARE(test->actionText(1, QAccessible::Name, 0), QString()); - QCOMPARE(test->actionText(0, QAccessible::Name, 1), QString()); - QCOMPARE(test->actionText(1, QAccessible::Name, 1), QString()); - QCOMPARE(test->actionText(QAccessible::SetFocus, QAccessible::Name, -1), QString()); +// QCOMPARE(test->actionText(1, QAccessible::Name, 0), QString()); +// QCOMPARE(test->actionText(0, QAccessible::Name, 1), QString()); +// QCOMPARE(test->actionText(1, QAccessible::Name, 1), QString()); +// QCOMPARE(test->actionText(QAccessible::SetFocus, QAccessible::Name, -1), QString()); - QCOMPARE(test->actionText(QAccessible::DefaultAction, QAccessible::Name, 0), QString("SetFocus")); - QCOMPARE(test->actionText(QAccessible::SetFocus, QAccessible::Name, 0), QString("SetFocus")); +// QCOMPARE(test->actionText(QAccessible::DefaultAction, QAccessible::Name, 0), QString("SetFocus")); +// QCOMPARE(test->actionText(QAccessible::SetFocus, QAccessible::Name, 0), QString("SetFocus")); delete test; delete widget; @@ -1070,14 +1039,13 @@ void tst_QAccessibility::buttonTest() QAccessibleInterface* interface = QAccessible::queryAccessibleInterface(&pushButton); QAccessibleActionInterface* actionInterface = interface->actionInterface(); QVERIFY(actionInterface != 0); - QCOMPARE(interface->role(), QAccessible::PushButton); // currently our buttons only have click as action, press and release are missing - QCOMPARE(actionInterface->actionCount(), 1); - QCOMPARE(actionInterface->name(0), QString("Press")); + QCOMPARE(actionInterface->actionNames().size(), 1); + QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::PressAction); QCOMPARE(pushButton.clickCount, 0); - actionInterface->doAction(0); + actionInterface->doAction(QAccessibleActionInterface::PressAction); QTest::qWait(500); QCOMPARE(pushButton.clickCount, 1); delete interface; @@ -1086,63 +1054,59 @@ void tst_QAccessibility::buttonTest() interface = QAccessible::queryAccessibleInterface(&toggleButton); actionInterface = interface->actionInterface(); QCOMPARE(interface->role(), QAccessible::CheckBox); - QCOMPARE(actionInterface->localizedDescription(0), QString("Toggles the button.")); - QCOMPARE(actionInterface->name(0), QString("Check")); + QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::CheckAction); + QCOMPARE(actionInterface->localizedActionDescription(QAccessibleActionInterface::CheckAction), QString("Checks the checkbox")); QVERIFY(!toggleButton.isChecked()); QVERIFY((interface->state() & QAccessible::Checked) == 0); - actionInterface->doAction(0); + actionInterface->doAction(QAccessibleActionInterface::CheckAction); QTest::qWait(500); - QCOMPARE(actionInterface->name(0), QString("Uncheck")); QVERIFY(toggleButton.isChecked()); - QVERIFY((interface->state() & QAccessible::Checked)); + QCOMPARE(actionInterface->actionNames().at(0), QAccessibleActionInterface::UncheckAction); + QVERIFY(interface->state() & QAccessible::Checked); delete interface; -// // test menu push button -// QVERIFY(QAccessible::queryAccessibleInterface(&menuButton, &test)); -// QCOMPARE(test->role(), QAccessible::ButtonMenu); -// QCOMPARE(test->defaultAction(0), QAccessible::Press); -// QCOMPARE(test->actionText(test->defaultAction(0), QAccessible::Name, 0), QString("Open")); -// QCOMPARE(test->state(), (int)QAccessible::HasPopup); -// test->release(); + { + // test menu push button + QAction *foo = new QAction("Foo", 0); + foo->setShortcut(QKeySequence("Ctrl+F")); + QMenu *menu = new QMenu(); + menu->addAction(foo); + QPushButton menuButton; + menuButton.setMenu(menu); + menuButton.show(); + QAccessibleInterface *interface = QAccessible::queryAccessibleInterface(&menuButton); + QCOMPARE(interface->role(), QAccessible::ButtonMenu); + QVERIFY(interface->state() & QAccessible::HasPopup); + QCOMPARE(interface->actionInterface()->actionNames(), QStringList() << QAccessibleActionInterface::ShowMenuAction); + // showing the menu enters a new event loop... +// interface->actionInterface()->doAction(QAccessibleActionInterface::ShowMenuAction); +// QTest::qWait(500); + delete interface; + delete menu; + } // test check box interface = QAccessible::queryAccessibleInterface(&checkBox); actionInterface = interface->actionInterface(); QCOMPARE(interface->role(), QAccessible::CheckBox); - QCOMPARE(actionInterface->name(0), QString("Check")); + QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::CheckAction); QVERIFY((interface->state() & QAccessible::Checked) == 0); - actionInterface->doAction(0); + actionInterface->doAction(QAccessibleActionInterface::CheckAction); QTest::qWait(500); - QCOMPARE(actionInterface->name(0), QString("Uncheck")); + QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::UncheckAction); QVERIFY(interface->state() & QAccessible::Checked); QVERIFY(checkBox.isChecked()); delete interface; -// // test tristate check box -// QVERIFY(QAccessible::queryAccessibleInterface(&tristate, &test)); -// QCOMPARE(test->role(), QAccessible::CheckBox); -// QCOMPARE(test->defaultAction(0), QAccessible::Press); -// QCOMPARE(test->actionText(test->defaultAction(0), QAccessible::Name, 0), QString("Toggle")); -// QCOMPARE(test->state(), (int)QAccessible::Normal); -// QVERIFY(test->doAction(QAccessible::Press, 0)); -// QTest::qWait(500); -// QCOMPARE(test->actionText(test->defaultAction(0), QAccessible::Name, 0), QString("Check")); -// QCOMPARE(test->state(), (int)QAccessible::Mixed); -// QVERIFY(test->doAction(QAccessible::Press, 0)); -// QTest::qWait(500); -// QCOMPARE(test->actionText(test->defaultAction(0), QAccessible::Name, 0), QString("Uncheck")); -// QCOMPARE(test->state(), (int)QAccessible::Checked); -// test->release(); - // test radiobutton interface = QAccessible::queryAccessibleInterface(&radio); actionInterface = interface->actionInterface(); QCOMPARE(interface->role(), QAccessible::RadioButton); - QCOMPARE(actionInterface->name(0), QString("Check")); + QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::CheckAction); QVERIFY((interface->state() & QAccessible::Checked) == 0); - actionInterface->doAction(0); + actionInterface->doAction(QAccessibleActionInterface::CheckAction); QTest::qWait(500); - QCOMPARE(actionInterface->name(0), QString("Uncheck")); + QCOMPARE(actionInterface->actionNames(), QStringList() << QAccessibleActionInterface::CheckAction); QVERIFY(interface->state() & QAccessible::Checked); QVERIFY(checkBox.isChecked()); delete interface; @@ -1237,8 +1201,6 @@ void tst_QAccessibility::scrollBarTest() const QRect scrollBarRect = scrollBarInterface->rect(); QVERIFY(scrollBarRect.isValid()); - qDebug() << scrollBarRect; - delete scrollBarInterface; delete scrollBar; @@ -1253,8 +1215,6 @@ void tst_QAccessibility::tabTest() QAccessibleInterface * const interface = QAccessible::queryAccessibleInterface(tabBar); QVERIFY(interface); QCOMPARE(interface->childCount(), 2); - interface->doAction(QAccessible::Press, 1); - interface->doAction(QAccessible::Press, 2); // Test that the Invisible bit for the navigation buttons gets set // and cleared correctly. @@ -1286,11 +1246,14 @@ void tst_QAccessibility::tabTest() tabBar->setCurrentIndex(0); // Test that sending a focus action to a tab does not select it. - child2->doAction(QAccessible::Focus, 2, QVariantList()); +// child2->doAction(QAccessible::Focus, 2, QVariantList()); QCOMPARE(tabBar->currentIndex(), 0); // Test that sending a press action to a tab selects it. - child2->doAction(QAccessible::Press, 2, QVariantList()); + QVERIFY(child2->actionInterface()); + QCOMPARE(child2->actionInterface()->actionNames(), QStringList() << QAccessibleActionInterface::PressAction); + QCOMPARE(tabBar->currentIndex(), 0); + child2->actionInterface()->doAction(QAccessibleActionInterface::PressAction); QCOMPARE(tabBar->currentIndex(), 1); delete tabBar; @@ -1483,36 +1446,33 @@ void tst_QAccessibility::menuTest() QCOMPARE(iAction->text(QAccessible::Accelerator, 0), QString()); #endif - QCOMPARE(iFile->actionText(QAccessible::DefaultAction, QAccessible::Name), QString("Open")); - QCOMPARE(iEdit->actionText(QAccessible::DefaultAction, QAccessible::Name), QString("Open")); - QCOMPARE(iSeparator->actionText(QAccessible::DefaultAction, QAccessible::Name), QString()); - QCOMPARE(iHelp->actionText(QAccessible::DefaultAction, QAccessible::Name), QString("Open")); - QCOMPARE(iAction->actionText(QAccessible::DefaultAction, QAccessible::Name), QString("Execute")); + QVERIFY(iFile->actionInterface()); + + QCOMPARE(iFile->actionInterface()->actionNames(), QStringList() << QAccessibleActionInterface::ShowMenuAction); + QCOMPARE(iSeparator->actionInterface()->actionNames(), QStringList()); + QCOMPARE(iHelp->actionInterface()->actionNames(), QStringList() << QAccessibleActionInterface::ShowMenuAction); + QCOMPARE(iAction->actionInterface()->actionNames(), QStringList() << QAccessibleActionInterface::PressAction); bool menuFade = qApp->isEffectEnabled(Qt::UI_FadeMenu); int menuFadeDelay = 300; - iFile->doAction(QAccessible::DefaultAction); + iFile->actionInterface()->doAction(QAccessibleActionInterface::ShowMenuAction); if(menuFade) QTest::qWait(menuFadeDelay); QVERIFY(file->isVisible() && !edit->isVisible() && !help->isVisible()); - iEdit->doAction(QAccessible::DefaultAction); + iEdit->actionInterface()->doAction(QAccessibleActionInterface::ShowMenuAction); if(menuFade) QTest::qWait(menuFadeDelay); QVERIFY(!file->isVisible() && edit->isVisible() && !help->isVisible()); - iSeparator->doAction(QAccessible::DefaultAction); - if(menuFade) - QTest::qWait(menuFadeDelay); - QVERIFY(!file->isVisible() && !edit->isVisible() && !help->isVisible()); - iHelp->doAction(QAccessible::DefaultAction); + iHelp->actionInterface()->doAction(QAccessibleActionInterface::ShowMenuAction); if(menuFade) QTest::qWait(menuFadeDelay); QVERIFY(!file->isVisible() && !edit->isVisible() && help->isVisible()); - iAction->doAction(QAccessible::DefaultAction); + iAction->actionInterface()->doAction(QAccessibleActionInterface::ShowMenuAction); if(menuFade) QTest::qWait(menuFadeDelay); QVERIFY(!file->isVisible() && !edit->isVisible() && !help->isVisible()); - interface->doAction(QAccessible::DefaultAction); + QVERIFY(!interface->actionInterface()); delete interface; interface = QAccessible::queryAccessibleInterface(file); QCOMPARE(interface->childCount(), 5); @@ -1529,11 +1489,11 @@ void tst_QAccessibility::menuTest() QCOMPARE(iFileSave->role(), QAccessible::MenuItem); QCOMPARE(iFileSeparator->role(), QAccessible::Separator); QCOMPARE(iFileExit->role(), QAccessible::MenuItem); - QCOMPARE(iFileNew->actionText(QAccessible::DefaultAction, QAccessible::Name, 0), QString("Open")); - QCOMPARE(iFileOpen->actionText(QAccessible::DefaultAction, QAccessible::Name, 0), QString("Execute")); - QCOMPARE(iFileSave->actionText(QAccessible::DefaultAction, QAccessible::Name, 0), QString("Execute")); - QCOMPARE(iFileSeparator->actionText(QAccessible::DefaultAction, QAccessible::Name, 0), QString()); - QCOMPARE(iFileExit->actionText(QAccessible::DefaultAction, QAccessible::Name, 0), QString("Execute")); + QCOMPARE(iFileNew->actionInterface()->actionNames(), QStringList() << QAccessibleActionInterface::ShowMenuAction); + QCOMPARE(iFileOpen->actionInterface()->actionNames(), QStringList() << QAccessibleActionInterface::PressAction); + QCOMPARE(iFileSave->actionInterface()->actionNames(), QStringList() << QAccessibleActionInterface::PressAction); + QCOMPARE(iFileSeparator->actionInterface()->actionNames(), QStringList()); + QCOMPARE(iFileExit->actionInterface()->actionNames(), QStringList() << QAccessibleActionInterface::PressAction); QAccessibleInterface *iface = 0; QAccessibleInterface *iface2 = 0; @@ -1623,8 +1583,8 @@ void tst_QAccessibility::menuTest() if (menuFade) QTest::qWait(menuFadeDelay); - iFile->doAction(QAccessible::DefaultAction); - iFileNew->doAction(QAccessible::DefaultAction); + iFile->actionInterface()->doAction(QAccessibleActionInterface::ShowMenuAction); + iFileNew->actionInterface()->doAction(QAccessibleActionInterface::ShowMenuAction); QVERIFY(file->isVisible()); QVERIFY(fileNew->isVisible()); @@ -3294,8 +3254,8 @@ void tst_QAccessibility::comboBoxTest() QVERIFY(!combo.view()->isVisible()); QVERIFY(iface->actionInterface()); - QCOMPARE(iface->actionInterface()->actionCount(), 1); - iface->actionInterface()->doAction(0); + QCOMPARE(iface->actionInterface()->actionNames(), QStringList() << QAccessibleActionInterface::ShowMenuAction); + iface->actionInterface()->doAction(QAccessibleActionInterface::ShowMenuAction); QVERIFY(combo.view()->isVisible()); delete iface; |