QtNovelUI/CoreTest/configtest.cpp

173 lines
3.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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;
}