mirror of
https://github.com/tristanpenman/valijson.git
synced 2025-03-03 12:58:03 +01:00
qtjson utils and tests update
This commit is contained in:
parent
51c916c029
commit
2c0477c30a
@ -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()
|
||||
|
||||
|
||||
|
48
include/valijson/utils/qtjson_utils.hpp
Normal file
48
include/valijson/utils/qtjson_utils.hpp
Normal 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
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user