1
0
mirror of https://github.com/leethomason/tinyxml2.git synced 2026-07-21 19:23:00 +04:00

Add test for new and default behaviour

This commit is contained in:
Malcolm Tyrrell
2025-03-30 10:20:26 +01:00
parent 487f42aa69
commit f87d0e3077
+35
View File
@@ -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 )