aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2020-08-21 10:08:55 +0200
committerEike Ziller <eike.ziller@qt.io>2020-08-21 10:08:55 +0200
commit2a05186194a949eb7efb4d7f917014dc1887b4b1 (patch)
tree80bd60b0a652ad21e14a187f467d67031f666a57 /tests/auto
parent3299239095e4eff5b94604841491712a2fbf78ca (diff)
parentc78f9352d233d99b911b81d63237e033b35c0ba1 (diff)
Merge remote-tracking branch 'origin/4.13' into master
Conflicts: CMakeLists.txt Change-Id: I799060da2cb299bb0c49a3da3530fad18427a23c
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/utils/CMakeLists.txt1
-rw-r--r--tests/auto/utils/persistentsettings/CMakeLists.txt4
-rw-r--r--tests/auto/utils/persistentsettings/persistentsettings.pro4
-rw-r--r--tests/auto/utils/persistentsettings/persistentsettings.qbs7
-rw-r--r--tests/auto/utils/persistentsettings/tst_persistentsettings.cpp106
-rw-r--r--tests/auto/utils/utils.pro1
-rw-r--r--tests/auto/utils/utils.qbs1
7 files changed, 124 insertions, 0 deletions
diff --git a/tests/auto/utils/CMakeLists.txt b/tests/auto/utils/CMakeLists.txt
index 74f1d6f819..1b96a980f0 100644
--- a/tests/auto/utils/CMakeLists.txt
+++ b/tests/auto/utils/CMakeLists.txt
@@ -1,6 +1,7 @@
add_subdirectory(ansiescapecodehandler)
add_subdirectory(fileutils)
add_subdirectory(fuzzymatcher)
+add_subdirectory(persistentsettings)
add_subdirectory(settings)
add_subdirectory(stringutils)
add_subdirectory(templateengine)
diff --git a/tests/auto/utils/persistentsettings/CMakeLists.txt b/tests/auto/utils/persistentsettings/CMakeLists.txt
new file mode 100644
index 0000000000..2991459961
--- /dev/null
+++ b/tests/auto/utils/persistentsettings/CMakeLists.txt
@@ -0,0 +1,4 @@
+add_qtc_test(tst_utils_persistentsettings
+ DEPENDS Utils
+ SOURCES tst_persistentsettings.cpp
+)
diff --git a/tests/auto/utils/persistentsettings/persistentsettings.pro b/tests/auto/utils/persistentsettings/persistentsettings.pro
new file mode 100644
index 0000000000..3bd645a586
--- /dev/null
+++ b/tests/auto/utils/persistentsettings/persistentsettings.pro
@@ -0,0 +1,4 @@
+QTC_LIB_DEPENDS += utils
+include(../../qttest.pri)
+
+SOURCES += tst_persistentsettings.cpp
diff --git a/tests/auto/utils/persistentsettings/persistentsettings.qbs b/tests/auto/utils/persistentsettings/persistentsettings.qbs
new file mode 100644
index 0000000000..8b8d8a6c23
--- /dev/null
+++ b/tests/auto/utils/persistentsettings/persistentsettings.qbs
@@ -0,0 +1,7 @@
+import qbs
+
+QtcAutotest {
+ name: "PersistentSettings autotest"
+ Depends { name: "Utils" }
+ files: "tst_persistentsettings.cpp"
+}
diff --git a/tests/auto/utils/persistentsettings/tst_persistentsettings.cpp b/tests/auto/utils/persistentsettings/tst_persistentsettings.cpp
new file mode 100644
index 0000000000..bd965523f2
--- /dev/null
+++ b/tests/auto/utils/persistentsettings/tst_persistentsettings.cpp
@@ -0,0 +1,106 @@
+/****************************************************************************
+**
+** Copyright (C) 2020 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+#include <utils/persistentsettings.h>
+
+#include <QTemporaryDir>
+
+#include <QtTest>
+
+using namespace Utils;
+
+class PersistentSettingsTest : public QObject
+{
+ Q_OBJECT
+public:
+ PersistentSettingsTest() = default;
+
+private slots:
+ void tst_readwrite();
+};
+
+static const QVariantMap generateData()
+{
+ QVariantMap result;
+ QByteArray barr("I am a byte array.");
+ QString str("I am a string.");
+ QColor color("#8b00d1");
+ QRect rect(0, 0, 400, 600);
+ QRect rect2(10, 10, 40, 40);
+ QVariantList varList{barr, color, rect2};
+ result.insert("barr", barr);
+ result.insert("str", str);
+ result.insert("color", color);
+ result.insert("rect", rect);
+ result.insert("varList", varList);
+ return result;
+}
+
+void PersistentSettingsTest::tst_readwrite()
+{
+ QTemporaryDir tmpDir("qtc_test_persistentXXXXXX");
+ tmpDir.setAutoRemove(false);
+ const QFileInfo fi(QDir(tmpDir.path()), "settings.xml");
+ qDebug() << "using" << fi.absoluteFilePath();
+ const FilePath filePath = FilePath::fromFileInfo(fi);
+ PersistentSettingsWriter writer(filePath, "Narf");
+ const QVariantMap originalData = generateData();
+ QString error;
+ bool success = writer.save(originalData, &error);
+ QVERIFY2(success, error.toLocal8Bit());
+
+ // verify written data
+ PersistentSettingsReader reader;
+ success = reader.load(filePath);
+ QVERIFY(success);
+
+ const QVariantMap restored = reader.restoreValues();
+ QCOMPARE(restored.size(), originalData.size());
+ auto restoredEnd = restored.end();
+ for (auto it = originalData.cbegin(), end = originalData.cend(); it != end; ++it) {
+ auto found = restored.find(it.key());
+ QVERIFY(found != restoredEnd);
+ QVERIFY(found.value().isValid());
+ if (it.value().type() == QVariant::List) {
+ const QVariantList origList = it.value().toList();
+ const QVariantList foundList = found.value().toList();
+
+ QCOMPARE(foundList.size(), origList.size());
+ for (int i = 0, vEnd = foundList.size(); i < vEnd; ++i) {
+ if (foundList.at(i).type() == QVariant::Rect)
+ qDebug() << foundList.at(i).toRect() << origList.at(i).toRect();
+ QCOMPARE(foundList.at(i), origList.at(i));
+ }
+ }
+ if (it.value().type() == QVariant::Rect)
+ qDebug() << found.value().toRect() << "vs" << it.value().toRect();
+ QCOMPARE(found.value(), it.value());
+ }
+ tmpDir.setAutoRemove(!QTest::currentTestFailed());
+}
+
+QTEST_MAIN(PersistentSettingsTest)
+
+#include "tst_persistentsettings.moc"
diff --git a/tests/auto/utils/utils.pro b/tests/auto/utils/utils.pro
index 158b7c12e5..1a96edbfa0 100644
--- a/tests/auto/utils/utils.pro
+++ b/tests/auto/utils/utils.pro
@@ -4,6 +4,7 @@ SUBDIRS = \
fileutils \
ansiescapecodehandler \
fuzzymatcher \
+ persistentsettings \
settings \
stringutils \
templateengine \
diff --git a/tests/auto/utils/utils.qbs b/tests/auto/utils/utils.qbs
index edab157ae0..e3e136305a 100644
--- a/tests/auto/utils/utils.qbs
+++ b/tests/auto/utils/utils.qbs
@@ -6,6 +6,7 @@ Project {
"fileutils/fileutils.qbs",
"ansiescapecodehandler/ansiescapecodehandler.qbs",
"fuzzymatcher/fuzzymatcher.qbs",
+ "persistentsettings/persistentsettings.qbs",
"settings/settings.qbs",
"stringutils/stringutils.qbs",
"templateengine/templateengine.qbs",