ssu
Loading...
Searching...
No Matches
settingstest.cpp
Go to the documentation of this file.
1
7
8#include "settingstest.h"
9
10#include <QtTest/QtTest>
11
13#include "upgradetesthelper.h"
14
15void SettingsTest::initTestCase()
16{
17
18}
19
20void SettingsTest::cleanupTestCase()
21{
22
23}
24
25void SettingsTest::testMerge_data()
26{
27 // Key names state which file(s) a key is set in (master, foo or bar). Value
28 // is always in form "<file>-value" based on which file it is taken from.
29
30 const QScopedPointer<QTemporaryFile> masterFile(
31 QTemporaryFile::createLocalFile(":/testdata/merge/settings.ini"));
32 QSettings master(masterFile->fileName(), QSettings::IniFormat);
33
34 const QStringList settingsFiles = QStringList()
35 << ":/testdata/merge/settings.d/bar.ini"
36 << ":/testdata/merge/settings.d/foo.ini";
37
38 SsuSettings::merge(&master, settingsFiles);
39
40 QSettings expected(":/testdata/merge/merged.ini", QSettings::IniFormat);
41
42 const QSet<QString> masterKeys = master.allKeys().toSet();
43 const QSet<QString> expectedKeys = expected.allKeys().toSet();
44
45 QTest::addColumn<bool>("keyIsMerged");
46 QTest::addColumn<bool>("keyShouldBeMerged");
47 QTest::addColumn<QString>("actualValue");
48 QTest::addColumn<QString>("expectedValue");
49
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();
56 }
57}
58
59void SettingsTest::testMerge()
60{
61 QFETCH(bool, keyIsMerged);
62 QFETCH(bool, keyShouldBeMerged);
63 QFETCH(QString, actualValue);
64 QFETCH(QString, expectedValue);
65
66 QCOMPARE(keyIsMerged, keyShouldBeMerged);
67 QCOMPARE(actualValue, expectedValue);
68}
69
70void SettingsTest::testUpgrade_data()
71{
72 // Read recipe
73 QFile recipe(":/testdata/upgrade/recipe");
74 QVERIFY(recipe.open(QIODevice::ReadOnly));
75 QList<UpgradeTestHelper::TestCase> testCases = UpgradeTestHelper::readRecipe(&recipe);
76
77 // Generate settings file according to recipe
78 QTemporaryFile settingsFile;
79 QVERIFY(settingsFile.open() == true);
80
81 QSettings settings(settingsFile.fileName(), QSettings::IniFormat);
82
83 UpgradeTestHelper::fillSettings(&settings, testCases);
84
85 // Generate defaults file according to recipe
86 QTemporaryFile defaultSettingsFile;
87 QVERIFY(defaultSettingsFile.open() == true);
88
89 QSettings defaultSettings(defaultSettingsFile.fileName(), QSettings::IniFormat);
90
91 UpgradeTestHelper::fillDefaultSettings(&defaultSettings, testCases);
92
93 // Parse settings -- do upgrade
94#if 0
95 settingsFile.seek(0);
96 defaultSettingsFile.seek(0);
97 qDebug() << "SETTINGS {{{\n" << settingsFile.readAll() << "\n}}}";
98 qDebug() << "DEFAULT SETTINGS {{{\n" << defaultSettingsFile.readAll() << "\n}}}";
99#endif
100
101 SsuSettings ssuSettings(settingsFile.fileName(), QSettings::IniFormat,
102 defaultSettingsFile.fileName());
103
104#if 0
105 settingsFile.seek(0);
106 qDebug() << "SETTINGS UPGRADED {{{\n" << settingsFile.readAll() << "\n}}}";
107#endif
108
109 // Record data for verification phase
110 QTest::addColumn<bool>("keyIsSet");
111 QTest::addColumn<bool>("keyShouldBeSet");
112 QTest::addColumn<QString>("actualValue");
113 QTest::addColumn<QString>("expectedValue");
114
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();
127 }
128 }
129}
130
131void SettingsTest::testUpgrade()
132{
133 QFETCH(bool, keyIsSet);
134 QFETCH(bool, keyShouldBeSet);
135 QFETCH(QString, actualValue);
136 QFETCH(QString, expectedValue);
137
138 QCOMPARE(keyIsSet, keyShouldBeSet);
139 if (keyIsSet) {
140 QCOMPARE(actualValue, expectedValue);
141 }
142}