summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-02-24 09:35:56 +0100
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-02-27 06:02:44 +0000
commit175b12beba7bb4d1bf150c217afffc3d88801272 (patch)
treea81b924c20f9e911778f7334b2f6b76fb1a70600 /tests
parent4e966497ce3674286f38faab68679201ec6ca22e (diff)
Prevent static functions of Q[Gui]Application from crashing if there is no instance.
Add tests. Task-number: QTBUG-44499 Change-Id: I160b089ad3f23ab71a87519e50f8a2ef5d2a4a6f Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp38
-rw-r--r--tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp24
2 files changed, 62 insertions, 0 deletions
diff --git a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
index 3cf7803cfb..b921e1519f 100644
--- a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
+++ b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
@@ -77,6 +77,8 @@ private slots:
void layoutDirection();
void globalShareContext();
+ void staticFunctions();
+
void settableStyleHints_data();
void settableStyleHints(); // Needs to run last as it changes style hints.
};
@@ -966,6 +968,42 @@ void tst_QGuiApplication::globalShareContext()
#endif
}
+// Test that static functions do not crash if there is no application instance.
+void tst_QGuiApplication::staticFunctions()
+{
+ QGuiApplication::setApplicationDisplayName(QString());
+ QGuiApplication::applicationDisplayName();
+ QGuiApplication::allWindows();
+ QGuiApplication::topLevelWindows();
+ QGuiApplication::topLevelAt(QPoint(0, 0));
+ QGuiApplication::setWindowIcon(QIcon());
+ QGuiApplication::windowIcon();
+ QGuiApplication::platformName();
+ QGuiApplication::modalWindow();
+ QGuiApplication::focusWindow();
+ QGuiApplication::focusObject();
+ QGuiApplication::primaryScreen();
+ QGuiApplication::screens();
+ QGuiApplication::overrideCursor();
+ QGuiApplication::setOverrideCursor(QCursor());
+ QGuiApplication::changeOverrideCursor(QCursor());
+ QGuiApplication::restoreOverrideCursor();
+ QGuiApplication::keyboardModifiers();
+ QGuiApplication::queryKeyboardModifiers();
+ QGuiApplication::mouseButtons();
+ QGuiApplication::setLayoutDirection(Qt::LeftToRight);
+ QGuiApplication::layoutDirection();
+ QGuiApplication::styleHints();
+ QGuiApplication::setDesktopSettingsAware(true);
+ QGuiApplication::desktopSettingsAware();
+ QGuiApplication::inputMethod();
+ QGuiApplication::platformNativeInterface();
+ QGuiApplication::platformFunction(QByteArrayLiteral("bla"));
+ QGuiApplication::setQuitOnLastWindowClosed(true);
+ QGuiApplication::quitOnLastWindowClosed();
+ QGuiApplication::applicationState();
+}
+
void tst_QGuiApplication::settableStyleHints_data()
{
QTest::addColumn<bool>("appInstance");
diff --git a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
index bab3337c0c..c3e8b51ccd 100644
--- a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
+++ b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
@@ -172,6 +172,8 @@ private slots:
void abortQuitOnShow();
+ void staticFunctions();
+
void settableStyleHints_data();
void settableStyleHints(); // Needs to run last as it changes style hints.
};
@@ -2299,6 +2301,28 @@ void tst_QApplication::abortQuitOnShow()
QCOMPARE(app.exec(), 1);
}
+// Test that static functions do not crash if there is no application instance.
+void tst_QApplication::staticFunctions()
+{
+ QApplication::setStyle(QStringLiteral("blub"));
+ QApplication::colorSpec();
+ QApplication::setColorSpec(42);
+ QApplication::allWidgets();
+ QApplication::topLevelWidgets();
+ QApplication::desktop();
+ QApplication::activePopupWidget();
+ QApplication::activeModalWidget();
+ QApplication::focusWidget();
+ QApplication::activeWindow();
+ QApplication::setActiveWindow(Q_NULLPTR);
+ QApplication::widgetAt(QPoint(0, 0));
+ QApplication::topLevelAt(QPoint(0, 0));
+ QApplication::setGlobalStrut(QSize(0, 0));
+ QApplication::globalStrut();
+ QApplication::isEffectEnabled(Qt::UI_General);
+ QApplication::setEffectEnabled(Qt::UI_General, false);
+}
+
void tst_QApplication::settableStyleHints_data()
{
QTest::addColumn<bool>("appInstance");