diff options
Diffstat (limited to 'tests/auto/quick/qquickaccessible/tst_qquickaccessible.cpp')
-rw-r--r-- | tests/auto/quick/qquickaccessible/tst_qquickaccessible.cpp | 60 |
1 files changed, 58 insertions, 2 deletions
diff --git a/tests/auto/quick/qquickaccessible/tst_qquickaccessible.cpp b/tests/auto/quick/qquickaccessible/tst_qquickaccessible.cpp index e7da38a5ce..6a282d4b41 100644 --- a/tests/auto/quick/qquickaccessible/tst_qquickaccessible.cpp +++ b/tests/auto/quick/qquickaccessible/tst_qquickaccessible.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QtTest/QtTest> @@ -19,6 +19,7 @@ #include <QtQuick/private/qquickaccessibleattached_p.h> #include <QtQuick/private/qquicklistview_p.h> #include <QtQuick/private/qquicktext_p.h> +#include <QtQuick/private/qquicktextinput_p.h> #include <QtQuickTestUtils/private/qmlutils_p.h> #include <QtQuickTestUtils/private/visualtestutils_p.h> @@ -56,10 +57,12 @@ private slots: void commonTests(); void quickAttachedProperties(); + void attachedWins(); void basicPropertiesTest(); void hitTest(); void checkableTest(); void ignoredTest(); + void passwordTest(); }; tst_QQuickAccessible::tst_QQuickAccessible() @@ -158,7 +161,7 @@ void tst_QQuickAccessible::quickAttachedProperties() // Attaching to non-item { QObject parent; - QTest::ignoreMessage(QtWarningMsg, "<Unknown File>: QML QtObject: Accessible must be attached to an Item"); + QTest::ignoreMessage(QtWarningMsg, "<Unknown File>: QML QtObject: Accessible must be attached to an Item or an Action"); QQuickAccessibleAttached *attachedObj = new QQuickAccessibleAttached(&parent); QCOMPARE(attachedObj->ignored(), false); @@ -322,6 +325,31 @@ void tst_QQuickAccessible::quickAttachedProperties() QTestAccessibility::clearEvents(); } +// Verify that a role can be explicitly set, and that the values from the +// attached object are used even if the item has a default role - QTBUG-110114 +void tst_QQuickAccessible::attachedWins() +{ + QQmlEngine engine; + QQmlComponent component(&engine); + component.setData(R"( + import QtQuick + import QtQuick.Controls + Button { + text: "Button" + objectName: "button" + Accessible.role: Accessible.RadioButton + Accessible.description: "Radio Button" + })", QUrl()); + auto button = std::unique_ptr<QObject>(component.create()); + QVERIFY(button); + + QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(button.get()); + QVERIFY(iface); + + QCOMPARE(iface->role(), QAccessible::RadioButton); + QTestAccessibility::clearEvents(); +} + void tst_QQuickAccessible::basicPropertiesTest() { @@ -643,6 +671,34 @@ void tst_QQuickAccessible::ignoredTest() QTestAccessibility::clearEvents(); } +void tst_QQuickAccessible::passwordTest() +{ + QQmlEngine engine; + QQmlComponent component(&engine); + component.setData("import QtQuick\nTextInput {\n" + "Accessible.role: Accessible.EditableText\n" + "Accessible.name: \"Password\"\n" + "Accessible.passwordEdit: true\n" + "echoMode: TextInput.Password\n" + "text: \"Green\"\n" + "}", QUrl()); + auto object = std::unique_ptr<QObject>(component.create()); + QVERIFY(object != nullptr); + + QQuickTextInput *textInput = qobject_cast<QQuickTextInput *>(object.get()); + QVERIFY(textInput != nullptr); + + const auto passwordCharacter = textInput->passwordCharacter(); + const auto passwordLength = textInput->text().length(); + const auto password = passwordCharacter.repeated(passwordLength); + + QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(object.get()); + QVERIFY(iface); + QCOMPARE(iface->text(QAccessible::Value), password); + + QTestAccessibility::clearEvents(); +} + QTEST_MAIN(tst_QQuickAccessible) #include "tst_qquickaccessible.moc" |