qtjson utils and tests update

This commit is contained in:
plamot 2017-03-27 01:20:24 +02:00
parent 51c916c029
commit 2c0477c30a
3 changed files with 109 additions and 0 deletions

View File

@ -112,6 +112,7 @@ set_target_properties(test_suite
set(TEST_LIBS gtest gtest_main jsoncpp json11)
if (Qt5Core_FOUND)
list(APPEND TEST_LIBS Qt5::Core)
target_compile_definitions(test_suite PRIVATE "VALIJSON_BUILD_QT_ADAPTERS")
endif()

View File

@ -0,0 +1,48 @@
#pragma once
#ifndef __VALIJSON_UTILS_QTJSON_UTILS_HPP
#define __VALIJSON_UTILS_QTJSON_UTILS_HPP
#include <QFile>
#include <QJsonDocument>
#include <QJsonObject>
#include <valijson/utils/file_utils.hpp>
namespace valijson {
namespace utils {
inline bool loadDocument(const std::string &path, QJsonValue &root)
{
// Load schema JSON from file
QFile file(QString::fromStdString(path));
if (!file.open(QFile::ReadOnly)) {
std::cerr << "Failed to load json from file '" << path << "'." << std::endl;
return false;
}
QByteArray data = file.readAll();
// Parse schema
QJsonParseError parseError;
QJsonDocument doc = QJsonDocument::fromJson(data);
if (doc.isNull()) {
std::cerr << "qt failed to parse the document:" << std::endl
<< parseError.errorString().toStdString() << std::endl;
return false;
} else if (doc.isObject()) {
root = QJsonValue(doc.object());
} else if (doc.isArray()) {
root = QJsonValue(doc.array());
} else if (doc.isEmpty()) {
root = QJsonValue();
}
return true;
}
} // namespace utils
} // namespace valijson
#endif

View File

@ -20,6 +20,12 @@
#endif // VALIJSON_BUILD_CXX11_ADAPTERS
#ifdef VALIJSON_BUILD_QT_ADAPTERS
#include <valijson/adapters/qtjson_adapter.hpp>
#include <valijson/utils/qtjson_utils.hpp>
#endif // VALIJSON_BUILD_QT_ADAPTERS
#define TEST_DATA_DIR "../tests/data/documents/"
using valijson::adapters::AdapterTraits;
@ -341,3 +347,57 @@ TEST_F(TestAdapterComparison, NlohmannJsonVsPropertyTree)
#endif // VALIJSON_BUILD_CXX11_ADAPTERS
#ifdef VALIJSON_BUILD_QT_ADAPTERS
TEST_F(TestAdapterComparison, QtJsonVsQtJson) {
testComparison<
valijson::adapters::QtJsonAdapter,
valijson::adapters::QtJsonAdapter>();
}
TEST_F(TestAdapterComparison, QtJsonVsJson11)
{
testComparison<
valijson::adapters::QtJsonAdapter,
valijson::adapters::Json11Adapter>();
}
TEST_F(TestAdapterComparison, QtJsonVsJsonCpp)
{
testComparison<
valijson::adapters::QtJsonAdapter,
valijson::adapters::JsonCppAdapter>();
}
TEST_F(TestAdapterComparison, QtJsonVsRapidJson)
{
testComparison<
valijson::adapters::QtJsonAdapter,
valijson::adapters::RapidJsonAdapter>();
}
TEST_F(TestAdapterComparison, QtJsonVsRapidJsonCrtAlloc)
{
testComparison<
valijson::adapters::QtJsonAdapter,
valijson::adapters::GenericRapidJsonAdapter<
rapidjson::GenericValue<rapidjson::UTF8<>,
rapidjson::CrtAllocator> > >();
}
TEST_F(TestAdapterComparison, QtJsonVsPicoJson)
{
testComparison<
valijson::adapters::QtJsonAdapter,
valijson::adapters::PicoJsonAdapter>();
}
TEST_F(TestAdapterComparison, QtJsonVsPropertyTree)
{
testComparison<
valijson::adapters::QtJsonAdapter,
valijson::adapters::PropertyTreeAdapter>();
}
#endif // VALIJSON_BUILD_QT_ADAPTERS