diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2017-11-17 14:12:47 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2017-11-20 15:10:34 +0000 |
commit | eda0daec819ae8a3f44f3c081d3e6a346049059d (patch) | |
tree | 195087938ac3d5f067aeff4093802f2c9a9846e7 /tests/auto/utils | |
parent | 5b64c6ea821dda1a844d14ebd097ced01e996dc6 (diff) |
SettingsAccessor: Add test
Change-Id: I872dffb6489ba5dbb766e9a9a924eb199254b0cf
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'tests/auto/utils')
-rw-r--r-- | tests/auto/utils/settings/settings.pro | 4 | ||||
-rw-r--r-- | tests/auto/utils/settings/settings.qbs | 7 | ||||
-rw-r--r-- | tests/auto/utils/settings/tst_settings.cpp | 150 | ||||
-rw-r--r-- | tests/auto/utils/utils.pro | 1 | ||||
-rw-r--r-- | tests/auto/utils/utils.qbs | 1 |
5 files changed, 163 insertions, 0 deletions
diff --git a/tests/auto/utils/settings/settings.pro b/tests/auto/utils/settings/settings.pro new file mode 100644 index 0000000000..b087dfeeb0 --- /dev/null +++ b/tests/auto/utils/settings/settings.pro @@ -0,0 +1,4 @@ +QTC_LIB_DEPENDS += utils +include(../../qttest.pri) + +SOURCES += tst_settings.cpp diff --git a/tests/auto/utils/settings/settings.qbs b/tests/auto/utils/settings/settings.qbs new file mode 100644 index 0000000000..65ceec81ef --- /dev/null +++ b/tests/auto/utils/settings/settings.qbs @@ -0,0 +1,7 @@ +import qbs + +QtcAutotest { + name: "TreeModel autotest" + Depends { name: "Utils" } + files: "tst_settings.cpp" +} diff --git a/tests/auto/utils/settings/tst_settings.cpp b/tests/auto/utils/settings/tst_settings.cpp new file mode 100644 index 0000000000..b7c345ca96 --- /dev/null +++ b/tests/auto/utils/settings/tst_settings.cpp @@ -0,0 +1,150 @@ +/**************************************************************************** +** +** Copyright (C) 2017 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/settingsaccessor.h> + +#include <QtTest> + +using namespace Utils; + +// -------------------------------------------------------------------- +// BasicTestSettingsAccessor: +// -------------------------------------------------------------------- + +class BasicTestSettingsAccessor : public Utils::SettingsAccessor +{ +public: + BasicTestSettingsAccessor(const QByteArray &id = QByteArray("test")); + + using Utils::SettingsAccessor::isBetterMatch; + using Utils::SettingsAccessor::addVersionUpgrader; +}; + +BasicTestSettingsAccessor::BasicTestSettingsAccessor(const QByteArray &id) : + Utils::SettingsAccessor(Utils::FileName::fromString("/foo/bar")) +{ + setDisplayName("Basic Test Settings Accessor"); + setApplicationDisplayName("SettingsAccessor Test (Basic)"); + setSettingsId(id); +} + +// -------------------------------------------------------------------- +// tst_SettingsAccessor: +// -------------------------------------------------------------------- + +class tst_SettingsAccessor : public QObject +{ + Q_OBJECT + +private slots: + void isBetterMatch(); + void isBetterMatch_idMismatch(); + void isBetterMatch_noId(); + void isBetterMatch_sameVersion(); + void isBetterMatch_emptyMap(); + void isBetterMatch_twoEmptyMaps(); +}; + +static QVariantMap versionedMap(int version, const QByteArray &id = QByteArray(), + const QVariantMap &extra = QVariantMap()) +{ + QVariantMap result; + result.insert("Version", version); + if (!id.isEmpty()) + result.insert("EnvironmentId", id); + for (auto it = extra.cbegin(); it != extra.cend(); ++it) + result.insert(it.key(), it.value()); + return result; +} + +void tst_SettingsAccessor::isBetterMatch() +{ + const BasicTestSettingsAccessor accessor; + + const QVariantMap a = versionedMap(1, "test"); + const QVariantMap b = versionedMap(2, "test"); + + QVERIFY(accessor.isBetterMatch(a, b)); + QVERIFY(!accessor.isBetterMatch(b, a)); +} + +void tst_SettingsAccessor::isBetterMatch_idMismatch() +{ + const BasicTestSettingsAccessor accessor; + + const QVariantMap a = versionedMap(1, "test"); + const QVariantMap b = versionedMap(2, "foo"); + + QVERIFY(!accessor.isBetterMatch(a, b)); + QVERIFY(accessor.isBetterMatch(b, a)); +} + +void tst_SettingsAccessor::isBetterMatch_noId() +{ + const BasicTestSettingsAccessor accessor((QByteArray())); + + const QVariantMap a = versionedMap(1, "test"); + const QVariantMap b = versionedMap(2, "foo"); + + QVERIFY(accessor.isBetterMatch(a, b)); + QVERIFY(!accessor.isBetterMatch(b, a)); +} + +void tst_SettingsAccessor::isBetterMatch_sameVersion() +{ + const BasicTestSettingsAccessor accessor; + + const QVariantMap a = versionedMap(10, "test"); + const QVariantMap b = versionedMap(10, "test"); + + QVERIFY(!accessor.isBetterMatch(a, b)); + QVERIFY(!accessor.isBetterMatch(b, a)); +} + +void tst_SettingsAccessor::isBetterMatch_emptyMap() +{ + const BasicTestSettingsAccessor accessor; + + const QVariantMap a; + const QVariantMap b = versionedMap(10, "test"); + + QVERIFY(accessor.isBetterMatch(a, b)); + QVERIFY(!accessor.isBetterMatch(b, a)); +} + +void tst_SettingsAccessor::isBetterMatch_twoEmptyMaps() +{ + const BasicTestSettingsAccessor accessor; + + const QVariantMap a; + const QVariantMap b; + + QVERIFY(accessor.isBetterMatch(a, b)); + QVERIFY(accessor.isBetterMatch(b, a)); +} + +QTEST_MAIN(tst_SettingsAccessor) + +#include "tst_settings.moc" diff --git a/tests/auto/utils/utils.pro b/tests/auto/utils/utils.pro index 02142ddd19..5fb9ef8c78 100644 --- a/tests/auto/utils/utils.pro +++ b/tests/auto/utils/utils.pro @@ -5,6 +5,7 @@ SUBDIRS = \ ansiescapecodehandler \ fuzzymatcher \ objectpool \ + settings \ stringutils \ templateengine \ treemodel diff --git a/tests/auto/utils/utils.qbs b/tests/auto/utils/utils.qbs index 13c3dad38f..6c4032a86e 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", + "settings/settings.qbs", "stringutils/stringutils.qbs", "objectpool/objectpool.qbs", "templateengine/templateengine.qbs", |