Quellcode durchsuchen

Add test for new and default behaviour

Malcolm Tyrrell vor 11 Monaten
Ursprung
Commit
f87d0e3077
1 geänderte Dateien mit 35 neuen und 0 gelöschten Zeilen
  1. 35 0
      xmltest.cpp

+ 35 - 0
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 )