mapnik/test/unit/serialization/xml_parser_trim.cpp

44 lines
1.6 KiB
C++
Raw Normal View History

#include "catch.hpp"
#include <mapnik/xml_tree.hpp>
#include <mapnik/xml_loader.hpp>
2015-10-29 15:35:45 +00:00
#include <mapnik/attribute.hpp> // needed due to fwd declare in value_types.hpp
2022-01-26 22:25:53 +00:00
TEST_CASE("xml parser")
{
SECTION("trims whitespace")
{
// simple and non-valid mapnik XML reduced from the empty_parameter2.xml
// test case. this is to check that the xml parsing routine is trimming
// whitespace from text nodes as part of the parsing operation.
const std::string xml("<Map>"
" <Layer>"
" <Datasource>"
" <Parameter name=\"empty\"><![CDATA[ ]]></Parameter>"
" </Datasource>"
" </Layer>"
"</Map>");
mapnik::xml_tree tree;
tree.set_filename("xml_datasource_parameter_trim.cpp");
REQUIRE_NOTHROW(read_xml_string(xml, tree.root(), ""));
REQUIRE(tree.root().has_child("Map"));
mapnik::xml_node const& map = tree.root().get_child("Map");
REQUIRE(map.has_child("Layer"));
mapnik::xml_node const& layer = map.get_child("Layer");
REQUIRE(layer.has_child("Datasource"));
mapnik::xml_node const& datasource = layer.get_child("Datasource");
REQUIRE(datasource.has_child("Parameter"));
mapnik::xml_node const& parameter = datasource.get_child("Parameter");
// parser should call mapnik::util::trim on the text content and
// this should result in an empty text string in the parameter.
REQUIRE(parameter.get_text() == "");
}
}