forked from qt-creator/qt-creator
Settings: Add test to pick right file if several exist
Test picking the expected file when several exist in BackingUpSettingsAccessor. Change-Id: I09d346a98a8df13d6cf3ee53ee20ce34e45e8d28 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -220,6 +220,7 @@ private slots:
|
|||||||
|
|
||||||
void saveSettings();
|
void saveSettings();
|
||||||
void loadSettings();
|
void loadSettings();
|
||||||
|
void loadSettings_pickBest();
|
||||||
};
|
};
|
||||||
|
|
||||||
static QVariantMap versionedMap(int version, const QByteArray &id = QByteArray(),
|
static QVariantMap versionedMap(int version, const QByteArray &id = QByteArray(),
|
||||||
@@ -693,10 +694,11 @@ void tst_SettingsAccessor::loadSettings()
|
|||||||
const Utils::FileName path = Utils::FileName::fromString("/tmp/foo/loadSettings");
|
const Utils::FileName path = Utils::FileName::fromString("/tmp/foo/loadSettings");
|
||||||
const TestSettingsAccessor accessor(path, "loadSettings");
|
const TestSettingsAccessor accessor(path, "loadSettings");
|
||||||
accessor.addFile(path, data);
|
accessor.addFile(path, data);
|
||||||
|
QCOMPARE(accessor.files().count(), 1); // Catch changes early:-)
|
||||||
QCOMPARE(accessor.files().count(), 1);
|
|
||||||
|
|
||||||
const QVariantMap read = accessor.restoreSettings(nullptr);
|
const QVariantMap read = accessor.restoreSettings(nullptr);
|
||||||
|
QCOMPARE(accessor.files().count(), 1); // no files were created
|
||||||
|
|
||||||
QVERIFY(!read.isEmpty());
|
QVERIFY(!read.isEmpty());
|
||||||
for (auto it = read.cbegin(); it != read.cend(); ++it) {
|
for (auto it = read.cbegin(); it != read.cend(); ++it) {
|
||||||
if (it.key() == "Version") // was overridden
|
if (it.key() == "Version") // was overridden
|
||||||
@@ -715,6 +717,41 @@ void tst_SettingsAccessor::loadSettings()
|
|||||||
QCOMPARE(read.size(), data.size() + 3);
|
QCOMPARE(read.size(), data.size() + 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tst_SettingsAccessor::loadSettings_pickBest()
|
||||||
|
{
|
||||||
|
const Utils::FileName path = Utils::FileName::fromString("/tmp/foo/loadSettings");
|
||||||
|
const TestSettingsAccessor accessor(path, "loadSettings");
|
||||||
|
|
||||||
|
accessor.addFile(path, versionedMap(10, "loadSettings", generateExtraData())); // too new
|
||||||
|
const QVariantMap data = versionedMap(7, "loadSettings", generateExtraData());
|
||||||
|
accessor.addFile(Utils::FileName::fromString("/tmp/foo/loadSettings.foo"), data); // pick this!
|
||||||
|
accessor.addFile(Utils::FileName::fromString("/tmp/foo/loadSettings.foo1"),
|
||||||
|
versionedMap(8, "fooSettings", generateExtraData())); // wrong environment
|
||||||
|
accessor.addFile(Utils::FileName::fromString("/tmp/foo/loadSettings.bar"),
|
||||||
|
versionedMap(6, "loadSettings", generateExtraData())); // too old
|
||||||
|
accessor.addFile(Utils::FileName::fromString("/tmp/foo/loadSettings.baz"),
|
||||||
|
versionedMap(1, "loadSettings", generateExtraData())); // much too old
|
||||||
|
QCOMPARE(accessor.files().count(), 5); // Catch changes early:-)
|
||||||
|
|
||||||
|
const QVariantMap read = accessor.restoreSettings(nullptr);
|
||||||
|
QCOMPARE(accessor.files().count(), 5); // no new files
|
||||||
|
|
||||||
|
QVERIFY(!read.isEmpty());
|
||||||
|
for (auto it = read.cbegin(); it != read.cend(); ++it) {
|
||||||
|
if (it.key() == "Version") // was overridden
|
||||||
|
QCOMPARE(it.value().toInt(), 8);
|
||||||
|
else if (it.key() == "OriginalVersion") // was added
|
||||||
|
QCOMPARE(it.value().toInt(), 7);
|
||||||
|
else if (it.key() == "VERSION_7") // was added
|
||||||
|
QCOMPARE(it.value().toInt(), 7);
|
||||||
|
else if (data.contains(it.key()))
|
||||||
|
QCOMPARE(it.value(), data.value(it.key()));
|
||||||
|
else
|
||||||
|
QVERIFY2(false, "Unexpected value!");
|
||||||
|
}
|
||||||
|
QCOMPARE(read.size(), data.size() + 2);
|
||||||
|
}
|
||||||
|
|
||||||
QTEST_MAIN(tst_SettingsAccessor)
|
QTEST_MAIN(tst_SettingsAccessor)
|
||||||
|
|
||||||
#include "tst_settings.moc"
|
#include "tst_settings.moc"
|
||||||
|
Reference in New Issue
Block a user