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.
diff --git a/xmltest.cpp b/xmltest.cpp
index b70fc51..597cebb 100644
--- a/xmltest.cpp
+++ b/xmltest.cpp
@@ -1459,6 +1459,25 @@
doc.LoadFile( "resources/dream.xml" );
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 --------------
{