add configuration tests

This commit is contained in:
Evgenii Alekseev 2016-06-26 01:52:15 +03:00
parent faf259e339
commit bf16e72e1e
5 changed files with 128 additions and 9 deletions

View File

@ -69,7 +69,7 @@ bool AWConfigHelper::dropCache() const
}
bool AWConfigHelper::exportConfiguration(QObject *nativeConfig,
bool AWConfigHelper::exportConfiguration(const QObject *nativeConfig,
const QString fileName) const
{
qCDebug(LOG_AW) << "Selected filename" << fileName;
@ -77,8 +77,8 @@ bool AWConfigHelper::exportConfiguration(QObject *nativeConfig,
QSettings settings(fileName, QSettings::IniFormat);
// plasmoid configuration
QQmlPropertyMap *configuration
= static_cast<QQmlPropertyMap *>(nativeConfig);
const QQmlPropertyMap *configuration
= static_cast<const QQmlPropertyMap *>(nativeConfig);
settings.beginGroup(QString("plasmoid"));
for (auto key : configuration->keys()) {
QVariant value = configuration->value(key);

View File

@ -21,6 +21,7 @@
#include <QObject>
#include <QStandardPaths>
#include <QVariant>
class QSettings;
@ -34,7 +35,7 @@ public:
virtual ~AWConfigHelper();
Q_INVOKABLE QString configurationDirectory() const;
Q_INVOKABLE bool dropCache() const;
Q_INVOKABLE bool exportConfiguration(QObject *nativeConfig,
Q_INVOKABLE bool exportConfiguration(const QObject *nativeConfig,
const QString fileName) const;
Q_INVOKABLE QVariantMap importConfiguration(const QString fileName,
const bool importPlasmoid,

View File

@ -30,14 +30,13 @@ set(TEST_MODULES
abstractformatter datetimeformatter floatformatter noformatter scriptformatter
extitemaggregator
batterysource desktopsource gpuloadsource gputempsource hddtempsource networksource playersource processessource
awkeycache awpatternfunctions awupdatehelper
awconfighelper awkeycache awpatternfunctions awupdatehelper
dpplugin)
foreach (TEST_MODULE ${TEST_MODULES})
set(${TEST_MODULE}_HEADERS test${TEST_MODULE}.h)
set(${TEST_MODULE}_SOURCES test${TEST_MODULE}.cpp)
if (TEST_MODULE MATCHES "dpplugin")
set(${TEST_MODULE}_SOURCES ${${TEST_MODULE}_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/../desktop-panel/plugin/dpadds.cpp
${PROJECT_TRDPARTY_DIR}/fontdialog/fontdialog.cpp)
if (TEST_MODULE MATCHES "awconfighelper")
set(${TEST_MODULE}_SOURCES ${${TEST_MODULE}_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/../awesome-widget/plugin/awconfighelper.cpp)
elseif (TEST_MODULE MATCHES "awkeycache")
set(${TEST_MODULE}_SOURCES ${${TEST_MODULE}_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/../awesome-widget/plugin/awkeycache.cpp)
elseif (TEST_MODULE MATCHES "awpatternfunctions")
@ -46,7 +45,10 @@ foreach (TEST_MODULE ${TEST_MODULES})
${CMAKE_CURRENT_SOURCE_DIR}/../awesome-widget/plugin/awpatternfunctions.cpp)
elseif (TEST_MODULE MATCHES "awupdatehelper")
set(${TEST_MODULE}_SOURCES ${${TEST_MODULE}_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/../awesome-widget/plugin/awupdatehelper.cpp)
endif (TEST_MODULE MATCHES "dpplugin")
elseif (TEST_MODULE MATCHES "dpplugin")
set(${TEST_MODULE}_SOURCES ${${TEST_MODULE}_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/../desktop-panel/plugin/dpadds.cpp
${PROJECT_TRDPARTY_DIR}/fontdialog/fontdialog.cpp)
endif (TEST_MODULE MATCHES "awconfighelper")
add_executable(${SUBPROJECT}-${TEST_MODULE} ${${TEST_MODULE}_HEADERS} ${${TEST_MODULE}_SOURCES})
target_link_libraries(${SUBPROJECT}-${TEST_MODULE} ${LIBRARY_TEST_SET})
add_test(NAME ${TEST_MODULE} COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT}-${TEST_MODULE})

View File

@ -0,0 +1,67 @@
/***************************************************************************
* This file is part of awesome-widgets *
* *
* awesome-widgets is free software: you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* awesome-widgets is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
#include "testawconfighelper.h"
#include <QtTest>
#include "awtestlibrary.h"
#include "awconfighelper.h"
void TestAWConfigHelper::initTestCase()
{
plugin = new AWConfigHelper(this);
}
void TestAWConfigHelper::cleanupTestCase()
{
delete plugin;
}
void TestAWConfigHelper::test_configurationDirectory()
{
QVERIFY(!plugin->configurationDirectory().isEmpty());
}
void TestAWConfigHelper::test_exportConfiguration()
{
QStringList keys = AWTestLibrary::randomStringList();
for (auto key : keys)
map[key] = AWTestLibrary::randomString();
filename = AWTestLibrary::randomFilenames().first;
QVERIFY(plugin->exportConfiguration(&map, filename));
}
void TestAWConfigHelper::test_importConfiguration()
{
QVariantMap imported = plugin->importConfiguration(filename, true, true, true);
QVariantMap converted;
for (auto key : map.keys())
converted[key] = map.value(key);
QCOMPARE(imported, converted);
}
QTEST_MAIN(TestAWConfigHelper);

View File

@ -0,0 +1,49 @@
/***************************************************************************
* This file is part of awesome-widgets *
* *
* awesome-widgets is free software: you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* awesome-widgets is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
#ifndef TESTAWCONFIGHELPER_H
#define TESTAWCONFIGHELPER_H
#include <QObject>
#include <QQmlPropertyMap>
class AWConfigHelper;
class QQmlPropertyMap;
class TestAWConfigHelper : public QObject
{
Q_OBJECT
private slots:
// initialization
void initTestCase();
void cleanupTestCase();
// test
void test_configurationDirectory();
void test_exportConfiguration();
void test_importConfiguration();
private:
AWConfigHelper *plugin = nullptr;
QString filename;
QQmlPropertyMap map;
};
#endif /* TESTAWCONFIGHELPER_H */