10#include <QtTest/QtTest>
15void SettingsTest::initTestCase()
20void SettingsTest::cleanupTestCase()
25void SettingsTest::testMerge_data()
30 const QScopedPointer<QTemporaryFile> masterFile(
31 QTemporaryFile::createLocalFile(
":/testdata/merge/settings.ini"));
32 QSettings master(masterFile->fileName(), QSettings::IniFormat);
34 const QStringList settingsFiles = QStringList()
35 <<
":/testdata/merge/settings.d/bar.ini"
36 <<
":/testdata/merge/settings.d/foo.ini";
38 SsuSettings::merge(&master, settingsFiles);
40 QSettings expected(
":/testdata/merge/merged.ini", QSettings::IniFormat);
42 const QSet<QString> masterKeys = master.allKeys().toSet();
43 const QSet<QString> expectedKeys = expected.allKeys().toSet();
45 QTest::addColumn<bool>(
"keyIsMerged");
46 QTest::addColumn<bool>(
"keyShouldBeMerged");
47 QTest::addColumn<QString>(
"actualValue");
48 QTest::addColumn<QString>(
"expectedValue");
50 foreach (
const QString &key, masterKeys + expectedKeys) {
51 QTest::newRow(qPrintable(key))
52 << masterKeys.contains(key)
53 << expectedKeys.contains(key)
54 << master.value(key).toString()
55 << expected.value(key).toString();
59void SettingsTest::testMerge()
61 QFETCH(
bool, keyIsMerged);
62 QFETCH(
bool, keyShouldBeMerged);
63 QFETCH(QString, actualValue);
64 QFETCH(QString, expectedValue);
66 QCOMPARE(keyIsMerged, keyShouldBeMerged);
67 QCOMPARE(actualValue, expectedValue);
70void SettingsTest::testUpgrade_data()
73 QFile recipe(
":/testdata/upgrade/recipe");
74 QVERIFY(recipe.open(QIODevice::ReadOnly));
75 QList<UpgradeTestHelper::TestCase> testCases = UpgradeTestHelper::readRecipe(&recipe);
78 QTemporaryFile settingsFile;
79 QVERIFY(settingsFile.open() ==
true);
81 QSettings settings(settingsFile.fileName(), QSettings::IniFormat);
83 UpgradeTestHelper::fillSettings(&settings, testCases);
86 QTemporaryFile defaultSettingsFile;
87 QVERIFY(defaultSettingsFile.open() ==
true);
89 QSettings defaultSettings(defaultSettingsFile.fileName(), QSettings::IniFormat);
91 UpgradeTestHelper::fillDefaultSettings(&defaultSettings, testCases);
96 defaultSettingsFile.seek(0);
97 qDebug() <<
"SETTINGS {{{\n" << settingsFile.readAll() <<
"\n}}}";
98 qDebug() <<
"DEFAULT SETTINGS {{{\n" << defaultSettingsFile.readAll() <<
"\n}}}";
101 SsuSettings ssuSettings(settingsFile.fileName(), QSettings::IniFormat,
102 defaultSettingsFile.fileName());
105 settingsFile.seek(0);
106 qDebug() <<
"SETTINGS UPGRADED {{{\n" << settingsFile.readAll() <<
"\n}}}";
110 QTest::addColumn<bool>(
"keyIsSet");
111 QTest::addColumn<bool>(
"keyShouldBeSet");
112 QTest::addColumn<QString>(
"actualValue");
113 QTest::addColumn<QString>(
"expectedValue");
115 foreach (
const UpgradeTestHelper::TestCase &testCase, testCases) {
116 foreach (
const QString &group, UpgradeTestHelper::groups()) {
117 const QString key = group.isEmpty() ? testCase.key() : group +
'/' + testCase.key();
118 QTest::newRow(qPrintable(QString(
"%1%2:%3:%4")
119 .arg(group.isEmpty() ?
"" : group +
"/")
120 .arg(testCase.history())
121 .arg(testCase.current())
122 .arg(testCase.expected())))
123 << ssuSettings.contains(key)
124 << testCase.keyShouldBeSet()
125 << ssuSettings.value(key).toString()
126 << testCase.expected();
131void SettingsTest::testUpgrade()
133 QFETCH(
bool, keyIsSet);
134 QFETCH(
bool, keyShouldBeSet);
135 QFETCH(QString, actualValue);
136 QFETCH(QString, expectedValue);
138 QCOMPARE(keyIsSet, keyShouldBeSet);
140 QCOMPARE(actualValue, expectedValue);