From f87d0e30777753deb40986ee4fa6970607bad0ab Mon Sep 17 00:00:00 2001 From: Malcolm Tyrrell Date: Sun, 30 Mar 2025 10:20:26 +0100 Subject: [PATCH] Add test for new and default behaviour --- xmltest.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/xmltest.cpp b/xmltest.cpp index f7408d1..75d4bab 100644 --- a/xmltest.cpp +++ b/xmltest.cpp @@ -2695,6 +2695,41 @@ int main( int argc, const char ** argv ) XMLTest("Test attribute encode with a Hex value", value5, "!"); // hex value in unicode value } + // ---------- XMLPrinter Apos Escaping ------ + { + const char* testText = "text containing a ' character"; + XMLDocument doc; + XMLElement* element = doc.NewElement( "element" ); + doc.InsertEndChild( element ); + element->SetAttribute( "attrib", testText ); + { + XMLPrinter defaultPrinter; + doc.Print( &defaultPrinter ); + const char* defaultOutput = defaultPrinter.CStr(); + const bool foundTextWithUnescapedApos = (strstr(defaultOutput, testText) != nullptr); + XMLTest("Default XMLPrinter should escape ' characters", false, foundTextWithUnescapedApos); + { + XMLDocument parsingDoc; + parsingDoc.Parse(defaultOutput); + const XMLAttribute* attrib = parsingDoc.FirstChildElement("element")->FindAttribute("attrib"); + XMLTest("Default XMLPrinter should output parsable xml", testText, attrib->Value(), true); + } + } + { + XMLPrinter customPrinter(0, false, 0, XMLPrinter::DONT_ESCAPE_APOS_CHARS_IN_ATTRIBUTES); + doc.Print( &customPrinter ); + const char* customOutput = customPrinter.CStr(); + const bool foundTextWithUnescapedApos = (strstr(customOutput, testText) != nullptr); + XMLTest("Custom XMLPrinter should not escape ' characters", true, foundTextWithUnescapedApos); + { + XMLDocument parsingDoc; + parsingDoc.Parse(customOutput); + const XMLAttribute* attrib = parsingDoc.FirstChildElement("element")->FindAttribute("attrib"); + XMLTest("Custom XMLPrinter should output parsable xml", testText, attrib->Value(), true); + } + } + } + // ----------- Performance tracking -------------- { #if defined( _MSC_VER )