完善测试用例
This commit is contained in:
parent
c901a8b10b
commit
fa5f84006c
|
@ -0,0 +1,42 @@
|
||||||
|
QT -= gui
|
||||||
|
|
||||||
|
QT += testlib
|
||||||
|
QT += xml
|
||||||
|
|
||||||
|
msvc {
|
||||||
|
QMAKE_CFLAGS += /utf-8
|
||||||
|
QMAKE_CXXFLAGS += /utf-8
|
||||||
|
}
|
||||||
|
|
||||||
|
CONFIG += c++11 console
|
||||||
|
CONFIG -= app_bundle
|
||||||
|
|
||||||
|
# You can make your code fail to compile if it uses deprecated APIs.
|
||||||
|
# In order to do so, uncomment the following line.
|
||||||
|
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||||
|
|
||||||
|
SOURCES += \
|
||||||
|
configtest.cpp \
|
||||||
|
main.cpp
|
||||||
|
|
||||||
|
# Default rules for deployment.
|
||||||
|
qnx: target.path = /tmp/$${TARGET}/bin
|
||||||
|
else: unix:!android: target.path = /opt/$${TARGET}/bin
|
||||||
|
!isEmpty(target.path): INSTALLS += target
|
||||||
|
|
||||||
|
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../libConfig/release/ -llibConfig
|
||||||
|
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../libConfig/debug/ -llibConfig
|
||||||
|
else:unix: LIBS += -L$$OUT_PWD/../libConfig/ -llibConfig
|
||||||
|
|
||||||
|
INCLUDEPATH += $$PWD/../libConfig
|
||||||
|
DEPENDPATH += $$PWD/../libConfig
|
||||||
|
|
||||||
|
HEADERS += \
|
||||||
|
configtest.h
|
||||||
|
|
||||||
|
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../libProjectManager/release/ -llibProjectManager
|
||||||
|
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../libProjectManager/debug/ -llibProjectManager
|
||||||
|
else:unix: LIBS += -L$$OUT_PWD/../libProjectManager/ -llibProjectManager
|
||||||
|
|
||||||
|
INCLUDEPATH += $$PWD/../libProjectManager
|
||||||
|
DEPENDPATH += $$PWD/../libProjectManager
|
|
@ -0,0 +1,172 @@
|
||||||
|
#include "configtest.h"
|
||||||
|
#include <xmlconfig.h>
|
||||||
|
using namespace Config;
|
||||||
|
|
||||||
|
ConfigTest::ConfigTest()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigTest::testConfig()
|
||||||
|
{
|
||||||
|
XMLConfig xml;
|
||||||
|
xml.loadFile("./base_test.xml");
|
||||||
|
QStringList keys;
|
||||||
|
keys << "test-key" << "test-sub";
|
||||||
|
xml.setConfig(keys , "omevalue");
|
||||||
|
QVERIFY(xml.getConfig(keys) == "omevalue");
|
||||||
|
|
||||||
|
xml.deleteX(keys);
|
||||||
|
QVERIFY(xml.getConfig(keys) == "");
|
||||||
|
|
||||||
|
xml.setConfig(keys , "omevalue");
|
||||||
|
QVERIFY(xml.getConfig(keys) == "omevalue");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigTest::testList()
|
||||||
|
{
|
||||||
|
XMLConfig xml;
|
||||||
|
xml.loadFile("./base_test.xml");
|
||||||
|
QStringList keys;
|
||||||
|
keys << "test-key" << "test-sub";
|
||||||
|
QStringList values;
|
||||||
|
values << "v0" << "v1";
|
||||||
|
|
||||||
|
xml.setList(keys, values);
|
||||||
|
|
||||||
|
auto temp_list = xml.getList(keys);
|
||||||
|
for(auto &v : values){
|
||||||
|
QVERIFY(temp_list.contains(v));
|
||||||
|
}
|
||||||
|
|
||||||
|
xml.deleteX(keys);
|
||||||
|
QVERIFY(xml.getList(keys).count() == 0);
|
||||||
|
|
||||||
|
xml.setList(keys, values);
|
||||||
|
temp_list = xml.getList(keys);
|
||||||
|
for(auto &v : values){
|
||||||
|
QVERIFY(temp_list.contains(v));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigTest::testMap()
|
||||||
|
{
|
||||||
|
XMLConfig xml;
|
||||||
|
xml.loadFile("./base_test.xml");
|
||||||
|
QStringList keys;
|
||||||
|
keys << "key0" << "key1" << "key2" << "key3";
|
||||||
|
QHash<QString,QString> map;
|
||||||
|
map["key0"] = "value0";
|
||||||
|
map["key1"] = "value1";
|
||||||
|
map["key2"] = "value2";
|
||||||
|
map["key3"] = "value3";
|
||||||
|
|
||||||
|
xml.setMap(keys, map);
|
||||||
|
auto temp_map = xml.getMap(keys);
|
||||||
|
for(auto &v : keys){
|
||||||
|
QVERIFY(temp_map[v] == map[v]);
|
||||||
|
}
|
||||||
|
|
||||||
|
xml.deleteX(keys);
|
||||||
|
QVERIFY(xml.getMap(keys).count() == 0);
|
||||||
|
|
||||||
|
xml.setMap(keys, map);
|
||||||
|
temp_map = xml.getMap(keys);
|
||||||
|
for(auto &v : keys){
|
||||||
|
QVERIFY(temp_map[v] == map[v]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigTest::testReload()
|
||||||
|
{
|
||||||
|
XMLConfig xml;
|
||||||
|
xml.loadFile("./base_test.xml");
|
||||||
|
|
||||||
|
QStringList keys;
|
||||||
|
keys << "test-key" << "test-sub";
|
||||||
|
xml.setConfig(keys , "omevalue");
|
||||||
|
|
||||||
|
QStringList values;
|
||||||
|
values << "v0" << "v1";
|
||||||
|
xml.setList(keys, values);
|
||||||
|
|
||||||
|
QHash<QString,QString> map;
|
||||||
|
map["key0"] = "value0";
|
||||||
|
map["key1"] = "value1";
|
||||||
|
map["key2"] = "value2";
|
||||||
|
map["key3"] = "value3";
|
||||||
|
xml.setMap(keys, map);
|
||||||
|
|
||||||
|
xml.save();
|
||||||
|
|
||||||
|
xml.loadFile("./base_test.xml");
|
||||||
|
QVERIFY(xml.getConfig(keys) == "omevalue");
|
||||||
|
|
||||||
|
auto temp_list = xml.getList(keys);
|
||||||
|
for(auto &v : values){
|
||||||
|
QVERIFY(temp_list.contains(v));
|
||||||
|
}
|
||||||
|
|
||||||
|
auto temp_map = xml.getMap(keys);
|
||||||
|
for(auto &v : keys){
|
||||||
|
QVERIFY(temp_map[v] == map[v]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigTest::testException()
|
||||||
|
{
|
||||||
|
ParseException *temp = nullptr;
|
||||||
|
XMLConfig xml;
|
||||||
|
QFile test_f("./exists_test.xml");
|
||||||
|
if(test_f.exists())
|
||||||
|
test_f.remove();
|
||||||
|
|
||||||
|
try {
|
||||||
|
xml.loadFile("./exists_test.xml");
|
||||||
|
} catch (ParseException *x) {
|
||||||
|
|
||||||
|
}
|
||||||
|
QVERIFY2(test_f.exists(), "在指定路径生成默认配置文件失败");
|
||||||
|
|
||||||
|
QFile anchor("./exception_base_test.xml");
|
||||||
|
anchor.open(QIODevice::WriteOnly|QIODevice::NewOnly);
|
||||||
|
|
||||||
|
try{
|
||||||
|
xml.loadFile("./exception_base_test.xml");
|
||||||
|
|
||||||
|
} catch (ParseException *x) {
|
||||||
|
temp = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
QVERIFY2(temp != nullptr, "测试无法打开的Exception失败,未能探知");
|
||||||
|
delete temp;
|
||||||
|
temp = nullptr;
|
||||||
|
|
||||||
|
|
||||||
|
QTextStream to(&anchor);
|
||||||
|
to << "alkdjfalkfj";
|
||||||
|
to.flush();
|
||||||
|
anchor.close();
|
||||||
|
|
||||||
|
try{
|
||||||
|
xml.loadFile("./exception_base_test.xml");
|
||||||
|
|
||||||
|
} catch (ParseException *x) {
|
||||||
|
temp = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
QVERIFY2(temp != nullptr, "配置文件格式错误探知失败");
|
||||||
|
delete temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
#ifndef CONFIGTEST_H
|
||||||
|
#define CONFIGTEST_H
|
||||||
|
#include <QObject>
|
||||||
|
#include <QtTest/QTest>
|
||||||
|
|
||||||
|
class ConfigTest : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
ConfigTest();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void testReload();
|
||||||
|
void testException();
|
||||||
|
void testConfig();
|
||||||
|
void testList();
|
||||||
|
void testMap();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CONFIGTEST_H
|
|
@ -0,0 +1,13 @@
|
||||||
|
#include <QCoreApplication>
|
||||||
|
#include "configtest.h"
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
QCoreApplication a(argc, argv);
|
||||||
|
|
||||||
|
ConfigTest t0;
|
||||||
|
QTest::qExec(&t0, argc, argv);
|
||||||
|
|
||||||
|
return a.exec();
|
||||||
|
}
|
Loading…
Reference in New Issue