aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/utils
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2017-11-22 10:28:38 +0100
committerTobias Hunger <tobias.hunger@qt.io>2017-11-22 11:58:41 +0000
commit9246a77a2f3e8dfc81b624b4cae1184cd9eaf6bd (patch)
tree627261e874e8ccf6d9cf134a5ca8c76699ffcf06 /tests/auto/utils
parent1c0bdb693e8887e0291e1c3d6174bb955e383e29 (diff)
SettingsAccessor: Add tests for version upgrading
Change-Id: Ie41433b507bdd68b834a6fc1879f3f1b71f7b4ff Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Diffstat (limited to 'tests/auto/utils')
-rw-r--r--tests/auto/utils/settings/tst_settings.cpp143
1 files changed, 143 insertions, 0 deletions
diff --git a/tests/auto/utils/settings/tst_settings.cpp b/tests/auto/utils/settings/tst_settings.cpp
index 766d573289..68436a7005 100644
--- a/tests/auto/utils/settings/tst_settings.cpp
+++ b/tests/auto/utils/settings/tst_settings.cpp
@@ -33,6 +33,14 @@ const char TESTACCESSOR_DN[] = "Test Settings Accessor";
const char TESTACCESSOR_APPLICATION_DN[] = "SettingsAccessor Test (Basic)";
const char TESTACCESSOR_DEFAULT_ID[] = "testId";
+QVariantMap generateExtraData()
+{
+ QVariantMap extra;
+ extra.insert("Foo", "Bar");
+ extra.insert("Int", 42);
+ return extra;
+}
+
// --------------------------------------------------------------------
// TestVersionUpgrader:
// --------------------------------------------------------------------
@@ -89,6 +97,7 @@ public:
// Make methods public for the tests:
using Utils::SettingsAccessor::isValidVersionAndId;
using Utils::SettingsAccessor::isBetterMatch;
+ using Utils::SettingsAccessor::upgradeSettings;
};
// --------------------------------------------------------------------
@@ -115,6 +124,13 @@ private slots:
void isBetterMatch_sameVersion();
void isBetterMatch_emptyMap();
void isBetterMatch_twoEmptyMaps();
+
+ void upgradeSettings_noUpgradeNecessary();
+ void upgradeSettings_invalidId();
+ void upgradeSettings_tooOld();
+ void upgradeSettings_tooNew();
+ void upgradeSettings_oneStep();
+ void upgradeSettings_twoSteps();
};
static QVariantMap versionedMap(int version, const QByteArray &id = QByteArray(),
@@ -288,6 +304,133 @@ void tst_SettingsAccessor::isBetterMatch_twoEmptyMaps()
QVERIFY(!accessor.isBetterMatch(b, a));
}
+void tst_SettingsAccessor::upgradeSettings_noUpgradeNecessary()
+{
+ const TestSettingsAccessor accessor;
+ const int startVersion = 8;
+ const QVariantMap input = versionedMap(startVersion, TESTACCESSOR_DEFAULT_ID, generateExtraData());
+
+ const QVariantMap result = accessor.upgradeSettings(input);
+
+ for (auto it = result.cbegin(); it != result.cend(); ++it) {
+ if (it.key() == "OriginalVersion")
+ QCOMPARE(it.value().toInt(), startVersion);
+ else if (input.contains(it.key())) // extra settings pass through unchanged!
+ QCOMPARE(it.value(), input.value(it.key()));
+ else
+ QVERIFY2(false, "Unexpected value found in upgraded result!");
+ }
+ QCOMPARE(result.size(), input.size() + 1); // OriginalVersion was added
+}
+
+void tst_SettingsAccessor::upgradeSettings_invalidId()
+{
+ const TestSettingsAccessor accessor;
+ const int startVersion = 8;
+ const QVariantMap input = versionedMap(startVersion, "foo", generateExtraData());
+
+ const QVariantMap result = accessor.upgradeSettings(input);
+
+ // "OriginalVersion" was added.
+ for (auto it = result.cbegin(); it != result.cend(); ++it) {
+ if (it.key() == "OriginalVersion")
+ QCOMPARE(it.value().toInt(), startVersion);
+ else if (input.contains(it.key())) // extra settings pass through unchanged!
+ QCOMPARE(it.value(), input.value(it.key()));
+ else
+ QVERIFY2(false, "Unexpected value found in upgraded result!");
+ }
+ QCOMPARE(result.size(), input.size() + 1); // OriginalVersion was added
+}
+
+void tst_SettingsAccessor::upgradeSettings_tooOld()
+{
+ const TestSettingsAccessor accessor;
+ const int startVersion = 1;
+ const QVariantMap input = versionedMap(startVersion, TESTACCESSOR_DEFAULT_ID, generateExtraData());
+
+ const QVariantMap result = accessor.upgradeSettings(input);
+
+ // "OriginalVersion" was added.
+ for (auto it = result.cbegin(); it != result.cend(); ++it) {
+ if (it.key() == "OriginalVersion")
+ QCOMPARE(it.value().toInt(), startVersion);
+ else if (input.contains(it.key())) // extra settings pass through unchanged!
+ QCOMPARE(it.value(), input.value(it.key()));
+ else
+ QVERIFY2(false, "Unexpected value found in upgraded result!");
+ }
+ QCOMPARE(result.size(), input.size() + 1); // OriginalVersion was added
+}
+
+void tst_SettingsAccessor::upgradeSettings_tooNew()
+{
+ const TestSettingsAccessor accessor;
+ const int startVersion = 42;
+ const QVariantMap input = versionedMap(startVersion, TESTACCESSOR_DEFAULT_ID, generateExtraData());
+
+ const QVariantMap result = accessor.upgradeSettings(input);
+
+ // "OriginalVersion" was added.
+ for (auto it = result.cbegin(); it != result.cend(); ++it) {
+ if (it.key() == "OriginalVersion")
+ QCOMPARE(it.value().toInt(), startVersion);
+ else if (input.contains(it.key())) // extra settings pass through unchanged!
+ QCOMPARE(it.value(), input.value(it.key()));
+ else
+ QVERIFY2(false, "Unexpected value found in upgraded result!");
+ }
+ QCOMPARE(result.size(), input.size() + 1); // OriginalVersion was added
+}
+
+void tst_SettingsAccessor::upgradeSettings_oneStep()
+{
+ const TestSettingsAccessor accessor;
+ const int startVersion = 7;
+ const QVariantMap input = versionedMap(startVersion, TESTACCESSOR_DEFAULT_ID, generateExtraData());
+
+ const QVariantMap result = accessor.upgradeSettings(input);
+
+ for (auto it = result.cbegin(); it != result.cend(); ++it) {
+ if (it.key() == "OriginalVersion") // was added
+ QCOMPARE(it.value().toInt(), startVersion);
+ else if (it.key() == "Version") // was overridden
+ QCOMPARE(it.value().toInt(), 8);
+ else if (input.contains(it.key())) // extra settings pass through unchanged!
+ QCOMPARE(it.value(), input.value(it.key()));
+ else if (it.key() == "VERSION_7")
+ QCOMPARE(it.value().toInt(), 7);
+ else
+ QVERIFY2(false, "Unexpected value found in upgraded result!");
+ }
+ QCOMPARE(result.size(), input.size() + 2); // OriginalVersion + VERSION_7 was added
+}
+
+void tst_SettingsAccessor::upgradeSettings_twoSteps()
+{
+ const TestSettingsAccessor accessor;
+ const int startVersion = 6;
+ const QVariantMap input = versionedMap(startVersion, TESTACCESSOR_DEFAULT_ID, generateExtraData());
+
+ const QVariantMap result = accessor.upgradeSettings(input);
+
+ for (auto it = result.cbegin(); it != result.cend(); ++it) {
+ if (it.key() == "OriginalVersion") // was added
+ QCOMPARE(it.value().toInt(), startVersion);
+ else if (it.key() == "Version") // was overridden
+ QCOMPARE(it.value().toInt(), 8);
+ else if (input.contains(it.key())) // extra settings pass through unchanged!
+ QCOMPARE(it.value(), input.value(it.key()));
+ else if (it.key() == "VERSION_6") // was added
+ QCOMPARE(it.value().toInt(), 6);
+ else if (it.key() == "VERSION_7") // was added
+ QCOMPARE(it.value().toInt(), 7);
+ else
+ QVERIFY2(false, "Unexpected value found in upgraded result!");
+ }
+ QCOMPARE(result.size(), input.size() + 3); // OriginalVersion + VERSION_6 + VERSION_7 was added
+}
+
QTEST_MAIN(tst_SettingsAccessor)
#include "tst_settings.moc"