b21ed59190
This tests the at the XML parser trims whitespace from XML text nodes. This was already the behaviour of the libxml2 parser, but not the rapidxml parser. Note that this makes #2878 pass for the rapidxml parser as well as the libxml2 parser. It seems that Travis uses the rapidxml parser only.
43 lines
1.5 KiB
C++
43 lines
1.5 KiB
C++
#include "catch.hpp"
|
|
|
|
#include <mapnik/debug.hpp>
|
|
#include <mapnik/xml_tree.hpp>
|
|
#include <mapnik/xml_loader.hpp>
|
|
|
|
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("utf8");
|
|
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 ¶meter = 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() == "");
|
|
}
|
|
}
|
|
|