diff options
Diffstat (limited to 'tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp')
-rw-r--r-- | tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp index e551d99959..232231b005 100644 --- a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp +++ b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp @@ -45,6 +45,7 @@ #include <QtGui/QWindow> #include <QtGui/QScreen> #include <QtGui/QCursor> +#include <QtGui/QPalette> #include <qpa/qwindowsysteminterface.h> #include <qgenericplugin.h> @@ -63,19 +64,28 @@ class tst_QGuiApplication: public tst_QCoreApplication Q_OBJECT private slots: + void cleanup(); void displayName(); void firstWindowTitle(); + void windowIcon(); void focusObject(); void allWindows(); void topLevelWindows(); void abortQuitOnShow(); void changeFocusWindow(); void keyboardModifiers(); + void palette(); void modalWindow(); void quitOnLastWindowClosed(); void genericPluginsAndWindowSystemEvents(); + void layoutDirection(); }; +void tst_QGuiApplication::cleanup() +{ + QVERIFY(QGuiApplication::allWindows().isEmpty()); +} + void tst_QGuiApplication::displayName() { int argc = 1; @@ -99,6 +109,24 @@ void tst_QGuiApplication::firstWindowTitle() QCOMPARE(window.title(), QString("User Title")); } +void tst_QGuiApplication::windowIcon() +{ + int argc = 3; + char *argv[] = { const_cast<char*>("tst_qguiapplication"), const_cast<char*>("-qwindowicon"), const_cast<char*>(":/icons/usericon.png") }; + QGuiApplication app(argc, argv); + QIcon appIcon(":/icons/appicon.png"); + app.setWindowIcon(appIcon); + + QWindow window; + window.show(); + + QIcon userIcon(":/icons/usericon.png"); + // Comparing icons is hard. cacheKey() differs because the icon was independently loaded. + // So we use availableSizes, after making sure that the app and user icons do have different sizes. + QVERIFY(userIcon.availableSizes() != appIcon.availableSizes()); + QCOMPARE(window.icon().availableSizes(), userIcon.availableSizes()); +} + class DummyWindow : public QWindow { public: @@ -414,6 +442,31 @@ void tst_QGuiApplication::keyboardModifiers() window->close(); } +void tst_QGuiApplication::palette() +{ + int argc = 1; + char *argv[] = { const_cast<char*>("tst_qguiapplication") }; + QGuiApplication app(argc, argv); + QSignalSpy signalSpy(&app, SIGNAL(paletteChanged(QPalette))); + + QPalette oldPalette = QGuiApplication::palette(); + QPalette newPalette = QPalette(Qt::red); + + QGuiApplication::setPalette(newPalette); + QCOMPARE(QGuiApplication::palette(), newPalette); + QCOMPARE(signalSpy.count(), 1); + QCOMPARE(signalSpy.at(0).at(0), QVariant(newPalette)); + + QGuiApplication::setPalette(oldPalette); + QCOMPARE(QGuiApplication::palette(), oldPalette); + QCOMPARE(signalSpy.count(), 2); + QCOMPARE(signalSpy.at(1).at(0), QVariant(oldPalette)); + + QGuiApplication::setPalette(oldPalette); + QCOMPARE(QGuiApplication::palette(), oldPalette); + QCOMPARE(signalSpy.count(), 2); +} + class BlockableWindow : public QWindow { Q_OBJECT @@ -829,4 +882,30 @@ void tst_QGuiApplication::genericPluginsAndWindowSystemEvents() QCOMPARE(testReceiver.customEvents, 1); } +Q_DECLARE_METATYPE(Qt::LayoutDirection) +void tst_QGuiApplication::layoutDirection() +{ + qRegisterMetaType<Qt::LayoutDirection>(); + + Qt::LayoutDirection oldDirection = QGuiApplication::layoutDirection(); + Qt::LayoutDirection newDirection = oldDirection == Qt::LeftToRight ? Qt::RightToLeft : Qt::LeftToRight; + + QGuiApplication::setLayoutDirection(newDirection); + QCOMPARE(QGuiApplication::layoutDirection(), newDirection); + + int argc = 1; + char *argv[] = { const_cast<char*>("tst_qguiapplication") }; + QGuiApplication app(argc, argv); + QSignalSpy signalSpy(&app, SIGNAL(layoutDirectionChanged(Qt::LayoutDirection))); + + QGuiApplication::setLayoutDirection(oldDirection); + QCOMPARE(QGuiApplication::layoutDirection(), oldDirection); + QCOMPARE(signalSpy.count(), 1); + QCOMPARE(signalSpy.at(0).at(0).toInt(), static_cast<int>(oldDirection)); + + QGuiApplication::setLayoutDirection(oldDirection); + QCOMPARE(QGuiApplication::layoutDirection(), oldDirection); + QCOMPARE(signalSpy.count(), 1); +} + QTEST_APPLESS_MAIN(tst_QGuiApplication) |