mirror of
https://github.com/boostorg/property_tree.git
synced 2026-02-20 02:52:10 +00:00
124 lines
3.5 KiB
C++
124 lines
3.5 KiB
C++
// ----------------------------------------------------------------------------
|
|
// Copyright (C) 2002-2006 Marcin Kalicinski
|
|
//
|
|
// Distributed under the Boost Software License, Version 1.0.
|
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
|
// http://www.boost.org/LICENSE_1_0.txt)
|
|
//
|
|
// For more information, see www.boost.org
|
|
// ----------------------------------------------------------------------------
|
|
#ifndef TEST_XML_PARSER_COMMON_HPP_INCLUDED
|
|
#define TEST_XML_PARSER_COMMON_HPP_INCLUDED
|
|
|
|
#include "test_utils.hpp"
|
|
#include <boost/property_tree/xml_parser.hpp>
|
|
#include "xml_parser_test_data.hpp"
|
|
|
|
struct ReadFuncWS
|
|
{
|
|
template<class Ptree>
|
|
void operator()(const std::string &filename, Ptree &pt) const
|
|
{
|
|
boost::property_tree::read_xml(filename, pt);
|
|
}
|
|
};
|
|
|
|
struct WriteFuncWS
|
|
{
|
|
template<class Ptree>
|
|
void operator()(const std::string &filename, const Ptree &pt) const
|
|
{
|
|
boost::property_tree::write_xml(filename, pt);
|
|
}
|
|
};
|
|
|
|
struct ReadFuncNS
|
|
{
|
|
template<class Ptree>
|
|
void operator()(const std::string &filename, Ptree &pt) const
|
|
{
|
|
boost::property_tree::read_xml(filename, pt,
|
|
boost::property_tree::xml_parser::trim_whitespace);
|
|
}
|
|
};
|
|
|
|
struct WriteFuncNS
|
|
{
|
|
template<class Ptree>
|
|
void operator()(const std::string &filename, const Ptree &pt) const
|
|
{
|
|
boost::property_tree::write_xml(filename, pt, std::locale(),
|
|
boost::property_tree::xml_writer_make_settings(
|
|
typename Ptree::key_type::value_type(' '), 4));
|
|
}
|
|
};
|
|
|
|
template <typename Ch> int umlautsize();
|
|
template <> inline int umlautsize<char>() { return 2; }
|
|
template <> inline int umlautsize<wchar_t>() { return 1; }
|
|
|
|
template<class Ptree>
|
|
void test_xml_parser()
|
|
{
|
|
|
|
using namespace boost::property_tree;
|
|
|
|
generic_parser_test_ok<Ptree, ReadFuncWS, WriteFuncWS>
|
|
(
|
|
ReadFuncWS(), WriteFuncWS(), ok_data_1, NULL,
|
|
"testok1.xml", NULL, "testok1out.xml", 2, 0, 5
|
|
);
|
|
|
|
generic_parser_test_ok<Ptree, ReadFuncWS, WriteFuncWS>
|
|
(
|
|
ReadFuncWS(), WriteFuncWS(), ok_data_2, NULL,
|
|
"testok2a.xml", NULL, "testok2aout.xml", 6, 18, 8
|
|
);
|
|
|
|
generic_parser_test_ok<Ptree, ReadFuncNS, WriteFuncNS>
|
|
(
|
|
ReadFuncNS(), WriteFuncNS(), ok_data_2, NULL,
|
|
"testok2b.xml", NULL, "testok2bout.xml", 6, 15, 8
|
|
);
|
|
|
|
generic_parser_test_ok<Ptree, ReadFuncWS, WriteFuncWS>
|
|
(
|
|
ReadFuncWS(), WriteFuncWS(), ok_data_3, NULL,
|
|
"testok3a.xml", NULL, "testok3aout.xml", 787, 32523, 3831
|
|
);
|
|
|
|
generic_parser_test_ok<Ptree, ReadFuncNS, WriteFuncNS>
|
|
(
|
|
ReadFuncNS(), WriteFuncNS(), ok_data_3, NULL,
|
|
"testok3b.xml", NULL, "testok3bout.xml", 787, 31376, 3831
|
|
);
|
|
|
|
generic_parser_test_ok<Ptree, ReadFuncWS, WriteFuncWS>
|
|
(
|
|
ReadFuncWS(), WriteFuncWS(), ok_data_4, NULL,
|
|
"testok4.xml", NULL, "testok4out.xml", 5, 2, 20
|
|
);
|
|
|
|
generic_parser_test_ok<Ptree, ReadFuncWS, WriteFuncWS>
|
|
(
|
|
ReadFuncWS(), WriteFuncWS(), ok_data_5, NULL,
|
|
"testok5.xml", NULL, "testok5out.xml",
|
|
2, umlautsize<typename Ptree::data_type::value_type>(), 3
|
|
);
|
|
|
|
generic_parser_test_error<Ptree, ReadFuncWS, WriteFuncWS, xml_parser_error>
|
|
(
|
|
ReadFuncWS(), WriteFuncWS(), error_data_1, NULL,
|
|
"testerr1.xml", NULL, "testerr1out.xml", 1
|
|
);
|
|
|
|
generic_parser_test_error<Ptree, ReadFuncWS, WriteFuncWS, xml_parser_error>
|
|
(
|
|
ReadFuncWS(), WriteFuncWS(), error_data_2, NULL,
|
|
"testerr2.xml", NULL, "testerr2out.xml", 2
|
|
);
|
|
|
|
}
|
|
|
|
#endif
|