Browse Source

Add a test case for issue #332

XML Declarations can occur only at the beginning of an XML Document.
Parse() should throw an error, for not well-formed XML Documents.
Sarat Addepalli 10 năm trước cách đây
mục cha
commit
2bb6bb5bee
1 tập tin đã thay đổi với 19 bổ sung0 xóa
  1. 19 0
      xmltest.cpp

+ 19 - 0
xmltest.cpp

@@ -1459,6 +1459,25 @@ int main( int argc, const char ** argv )
 		doc.LoadFile( "resources/dream.xml" );
 		doc.LoadFile( "resources/dream.xml" );
 		XMLTest( "Error should be cleared", false, doc.Error() );
 		XMLTest( "Error should be cleared", false, doc.Error() );
 	}
 	}
+	
+	{
+		// Check that declarations are parsed only as the FirstChild
+        	const char* xml0 =  	"<?xml version=\"1.0\" ?>"
+        				"   <!-- xml version=\"1.1\" -->"
+        				"<first />";
+        	const char* xml1 =  	"<?xml version=\"1.0\" ?>"
+        				"   <?xml version=\"1.1\" ?>"
+        				"<first />";
+        	const char* xml2 =  	"<first />"
+        				"<?xml version=\"1.0\" ?>";
+        	XMLDocument doc;
+        	doc.Parse(xml0);
+        	XMLTest("Test that the code changes do not affect normal parsing", doc.Error(), false);
+        	doc.Parse(xml1);
+        	XMLTest("Test that the second declaration throws an error", doc.Error(), true);
+        	doc.Parse(xml2);
+        	XMLTest("Test that declaration after a child throws an error", doc.Error(), true);
+	}
 
 
 	// ----------- Performance tracking --------------
 	// ----------- Performance tracking --------------
 	{
 	{