tests/auto/qdom/tst_qdom.cpp
changeset 19 fcece45ef507
parent 18 2f34d5167611
child 30 5dc02b23752f
--- a/tests/auto/qdom/tst_qdom.cpp	Fri Apr 16 15:50:13 2010 +0300
+++ b/tests/auto/qdom/tst_qdom.cpp	Mon May 03 13:17:34 2010 +0300
@@ -131,6 +131,7 @@
     void setContentWhitespace_data() const;
 
     void taskQTBUG4595_dontAssertWhenDocumentSpecifiesUnknownEncoding() const;
+    void cloneDTD_QTBUG8398() const;
 
     void cleanupTestCase() const;
 
@@ -1912,5 +1913,29 @@
     QVERIFY(true);
 }
 
+void tst_QDom::cloneDTD_QTBUG8398() const
+{
+    QString dtd("<?xml version='1.0' encoding='UTF-8'?>\n"
+                   "<!DOCTYPE first [\n"
+                   "<!ENTITY secondFile SYSTEM 'second.xml'>\n"
+                   "<!ENTITY thirdFile SYSTEM 'third.xml'>\n"
+                   "]>\n"
+                   "<first/>\n");
+    QDomDocument domDocument;
+    QVERIFY(domDocument.setContent(dtd));
+    QDomDocument domDocument2 = domDocument.cloneNode(true).toDocument();
+
+    // for some reason, our DOM implementation reverts the order of entities
+    QString expected("<?xml version='1.0' encoding='UTF-8'?>\n"
+                   "<!DOCTYPE first [\n"
+                   "<!ENTITY thirdFile SYSTEM 'third.xml'>\n"
+                   "<!ENTITY secondFile SYSTEM 'second.xml'>\n"
+                   "]>\n"
+                   "<first/>\n");
+    QString output;
+    QTextStream stream(&output);
+    domDocument2.save(stream, 0);
+    QCOMPARE(output, expected);
+}
 QTEST_MAIN(tst_QDom)
 #include "tst_qdom.moc"