Multi-line svn commit, see body.
[shibboleth/cpp-xmltooling.git] / xmltoolingtest / ComplexXMLObjectTest.h
index de45855..908e4d4 100644 (file)
@@ -24,34 +24,33 @@ public:
     ComplexXMLObjectTest() {}\r
 \r
     void setUp() {\r
-        XMLObjectBuilder::registerDefaultBuilder(new WildcardXMLObjectBuilder());\r
+        XMLObjectBuilder::registerDefaultBuilder(new AnyElementBuilder());\r
     }\r
 \r
     void tearDown() {\r
-        //XMLObjectBuilder::deregisterDefaultBuilder();\r
+        XMLObjectBuilder::deregisterDefaultBuilder();\r
     }\r
 \r
     void testComplexUnmarshalling() {\r
-        TS_TRACE("testComplexUnmarshalling");\r
-\r
         string path=data_path + "ComplexXMLObject.xml";\r
         ifstream fs(path.c_str());\r
-        DOMDocument* doc=nonvalidatingPool->parse(fs);\r
+        DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(fs);\r
         TS_ASSERT(doc!=NULL);\r
+        XercesJanitor<DOMDocument> janitor(doc);\r
 \r
         const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());\r
         TS_ASSERT(b!=NULL);\r
 \r
-        auto_ptr<WildcardXMLObject> wcObject(\r
-            dynamic_cast<WildcardXMLObject*>(b->buildFromDocument(doc))\r
+        auto_ptr<ElementProxy> wcObject(\r
+            dynamic_cast<ElementProxy*>(b->buildFromDocument(doc, false))\r
             );\r
         TS_ASSERT(wcObject.get()!=NULL);\r
-\r
+        \r
         ListOf(XMLObject) kids=wcObject->getXMLObjects();\r
         TSM_ASSERT_EQUALS("Number of child elements was not expected value", 2, kids.size());\r
         \r
-        WildcardXMLObject* wc1=dynamic_cast<WildcardXMLObject*>(*(++kids.begin()));\r
-        WildcardXMLObject* wc2=dynamic_cast<WildcardXMLObject*>(*(++(wc1->getXMLObjects().begin())));\r
+        ElementProxy* wc1=dynamic_cast<ElementProxy*>(*(++kids.begin()));\r
+        ElementProxy* wc2=dynamic_cast<ElementProxy*>(*(++(wc1->getXMLObjects().begin())));\r
         TSM_ASSERT_EQUALS("Number of child elements was not expected value", 3, wc2->getXMLObjects().size());\r
 \r
         static const XMLCh html[] = {chLatin_h, chLatin_t, chLatin_m, chLatin_l, chNull};\r
@@ -61,6 +60,10 @@ public:
         ListOf(XMLObject)::const_iterator it=wc2->getXMLObjects().begin();\r
         ++it; ++it;\r
         TSM_ASSERT_EQUALS("Element QName unexpected", it->getElementQName(),q);\r
+\r
+        DOMElement* rebuilt = wcObject->marshall(XMLToolingConfig::getConfig().getParser().newDocument());\r
+        wcObject->setDocument(rebuilt->getOwnerDocument());\r
+        TS_ASSERT(rebuilt->isEqualNode(doc->getDocumentElement()));\r
     }\r
 \r
 };\r