summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp')
-rw-r--r--tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp51
1 files changed, 46 insertions, 5 deletions
diff --git a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
index 5ee25677bf..a7881b6983 100644
--- a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
+++ b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
@@ -506,29 +506,67 @@ void tst_QGuiApplication::keyboardModifiers()
window->close();
}
+/*
+ Compare actual against expected but ignore unset roles.
+
+ Comparing palettes via operator== will compare all roles.
+*/
+static bool palettesMatch(const QPalette &actual, const QPalette &expected)
+{
+ if (actual.resolve() != expected.resolve())
+ return false;
+
+ for (int i = 0; i < QPalette::NColorGroups; i++) {
+ for (int j = 0; j < QPalette::NColorRoles; j++) {
+ const auto g = QPalette::ColorGroup(i);
+ const auto r = QPalette::ColorRole(j);
+ if (expected.isBrushSet(g, r)) {
+ if (actual.brush(g, r) != expected.brush(g, r))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
void tst_QGuiApplication::palette()
{
+ // Getting the palette before application construction should work
+ QPalette paletteBeforeAppConstruction = QGuiApplication::palette();
+ // And should be reflected in the default constructed palette
+ QCOMPARE(paletteBeforeAppConstruction, QPalette());
+
int argc = 1;
char *argv[] = { const_cast<char*>("tst_qguiapplication") };
QGuiApplication app(argc, argv);
+
+ // The same should be true after application construction
+ QCOMPARE(QGuiApplication::palette(), QPalette());
+
+ // The default application palette is not resolved
+ QVERIFY(!QGuiApplication::palette().resolve());
+
QSignalSpy signalSpy(&app, SIGNAL(paletteChanged(QPalette)));
QPalette oldPalette = QGuiApplication::palette();
QPalette newPalette = QPalette(Qt::red);
QGuiApplication::setPalette(newPalette);
- QCOMPARE(QGuiApplication::palette(), newPalette);
+ QVERIFY(palettesMatch(QGuiApplication::palette(), newPalette));
QCOMPARE(signalSpy.count(), 1);
- QCOMPARE(signalSpy.at(0).at(0), QVariant(newPalette));
+ QVERIFY(palettesMatch(signalSpy.at(0).at(0).value<QPalette>(), newPalette));
+ QCOMPARE(QGuiApplication::palette(), QPalette());
QGuiApplication::setPalette(oldPalette);
- QCOMPARE(QGuiApplication::palette(), oldPalette);
+ QVERIFY(palettesMatch(QGuiApplication::palette(), oldPalette));
QCOMPARE(signalSpy.count(), 2);
- QCOMPARE(signalSpy.at(1).at(0), QVariant(oldPalette));
+ QVERIFY(palettesMatch(signalSpy.at(1).at(0).value<QPalette>(), oldPalette));
+ QCOMPARE(QGuiApplication::palette(), QPalette());
QGuiApplication::setPalette(oldPalette);
- QCOMPARE(QGuiApplication::palette(), oldPalette);
+ QVERIFY(palettesMatch(QGuiApplication::palette(), oldPalette));
QCOMPARE(signalSpy.count(), 2);
+ QCOMPARE(QGuiApplication::palette(), QPalette());
}
void tst_QGuiApplication::font()
@@ -1073,6 +1111,9 @@ void tst_QGuiApplication::testSetPaletteAttribute()
QGuiApplication::setPalette(palette);
QVERIFY(QCoreApplication::testAttribute(Qt::AA_SetPalette));
+
+ QGuiApplication::setPalette(QPalette());
+ QVERIFY(!QCoreApplication::testAttribute(Qt::AA_SetPalette));
}
// Test that static functions do not crash if there is no application instance.