Set fourth file version digit to signify rebuild.
[shibboleth/cpp-xmltooling.git] / xmltoolingtest / MarshallingTest.h
index 55f6f73..a5ee426 100644 (file)
-/*\r
- *  Copyright 2001-2005 Internet2\r
- * \r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#include "XMLObjectBaseTestCase.h"\r
-\r
-#include <fstream>\r
-\r
-class MarshallingTest : public CxxTest::TestSuite {\r
-public:\r
-    void setUp() {\r
-        QName qname(SimpleXMLObject::NAMESPACE,SimpleXMLObject::LOCAL_NAME);\r
-        QName qtype(SimpleXMLObject::NAMESPACE,SimpleXMLObject::TYPE_NAME);\r
-        XMLObjectBuilder::registerBuilder(qname, new SimpleXMLObjectBuilder());\r
-        XMLObjectBuilder::registerBuilder(qtype, new SimpleXMLObjectBuilder());\r
-    }\r
-\r
-    void tearDown() {\r
-        QName qname(SimpleXMLObject::NAMESPACE,SimpleXMLObject::LOCAL_NAME);\r
-        QName qtype(SimpleXMLObject::NAMESPACE,SimpleXMLObject::TYPE_NAME);\r
-        XMLObjectBuilder::deregisterBuilder(qname);\r
-        XMLObjectBuilder::deregisterBuilder(qtype);\r
-    }\r
-\r
-    void testMarshallingWithAttributes() {\r
-        TS_TRACE("testMarshallingWithAttributes");\r
-\r
-        QName qname(SimpleXMLObject::NAMESPACE,SimpleXMLObject::LOCAL_NAME);\r
-        auto_ptr<SimpleXMLObject> sxObject(SimpleXMLObjectBuilder::newSimpleXMLObject());\r
-        TS_ASSERT(sxObject.get()!=NULL);\r
-        auto_ptr_XMLCh expected("Firefly");\r
-        sxObject->setId(expected.get());\r
-        \r
-        DOMElement* rootElement = sxObject->marshall();\r
-\r
-        string path=data_path + "SimpleXMLObjectWithAttribute.xml";\r
-        ifstream fs(path.c_str());\r
-        DOMDocument* doc=nonvalidatingPool->parse(fs);\r
-        TS_ASSERT(doc!=NULL);\r
-\r
-        TS_ASSERT(rootElement->isEqualNode(doc->getDocumentElement()));\r
-        doc->release();\r
-    }\r
-\r
-    void testMarshallingWithElementContent() {\r
-        TS_TRACE("testMarshallingWithElementContent");\r
-\r
-        QName qname(SimpleXMLObject::NAMESPACE,SimpleXMLObject::LOCAL_NAME);\r
-        auto_ptr<SimpleXMLObject> sxObject(SimpleXMLObjectBuilder::newSimpleXMLObject());\r
-        TS_ASSERT(sxObject.get()!=NULL);\r
-        auto_ptr_XMLCh expected("Sample Content");\r
-        sxObject->setValue(expected.get());\r
-        \r
-        DOMElement* rootElement = sxObject->marshall();\r
-\r
-        string path=data_path + "SimpleXMLObjectWithContent.xml";\r
-        ifstream fs(path.c_str());\r
-        DOMDocument* doc=nonvalidatingPool->parse(fs);\r
-        TS_ASSERT(doc!=NULL);\r
-\r
-        TS_ASSERT(rootElement->isEqualNode(doc->getDocumentElement()));\r
-        doc->release();\r
-    }\r
-\r
-    void testMarshallingWithChildElements() {\r
-        TS_TRACE("testMarshallingWithChildElements");\r
-\r
-        QName qname(SimpleXMLObject::NAMESPACE,SimpleXMLObject::LOCAL_NAME);\r
-        const SimpleXMLObjectBuilder* b=dynamic_cast<const SimpleXMLObjectBuilder*>(XMLObjectBuilder::getBuilder(qname));\r
-        TS_ASSERT(b!=NULL);\r
-        \r
-        auto_ptr<SimpleXMLObject> sxObject(b->buildObject());\r
-        TS_ASSERT(sxObject.get()!=NULL);\r
-        VectorOf(SimpleXMLObject) kids=sxObject->getSimpleXMLObjects();\r
-        kids.push_back(b->buildObject());\r
-        kids.push_back(b->buildObject());\r
-        kids.push_back(b->buildObject());\r
-        \r
-        // Test some collection stuff\r
-        auto_ptr_XMLCh foo("Foo");\r
-        auto_ptr_XMLCh bar("Bar");\r
-        auto_ptr_XMLCh baz("Baz");\r
-        kids.begin()->setId(foo.get());\r
-        kids.at(2)->setValue(bar.get());\r
-        kids.erase(kids.begin()+1);\r
-        TS_ASSERT_SAME_DATA(kids.back()->getValue(), bar.get(), XMLString::stringLen(bar.get()));\r
-        \r
-        QName qtype(SimpleXMLObject::NAMESPACE,SimpleXMLObject::TYPE_NAME,SimpleXMLObject::NAMESPACE_PREFIX);\r
-        kids.push_back(\r
-            b->buildObject(SimpleXMLObject::NAMESPACE,SimpleXMLObject::DERIVED_NAME,SimpleXMLObject::NAMESPACE_PREFIX,&qtype)\r
-            );\r
-        kids.back()->setValue(baz.get());\r
-        \r
-        DOMElement* rootElement = sxObject->marshall();\r
-\r
-        string path=data_path + "SimpleXMLObjectWithChildren.xml";\r
-        ifstream fs(path.c_str());\r
-        DOMDocument* doc=nonvalidatingPool->parse(fs);\r
-        TS_ASSERT(doc!=NULL);\r
-\r
-        TS_ASSERT(rootElement->isEqualNode(doc->getDocumentElement()));\r
-        doc->release();\r
-    }\r
-\r
-};\r
+/**
+ * Licensed to the University Corporation for Advanced Internet
+ * Development, Inc. (UCAID) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for
+ * additional information regarding copyright ownership.
+ *
+ * UCAID licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the
+ * License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific
+ * language governing permissions and limitations under the License.
+ */
+
+#include "XMLObjectBaseTestCase.h"
+
+#include <fstream>
+
+class MarshallingTest : public CxxTest::TestSuite {
+public:
+    void setUp() {
+        xmltooling::QName qname(SimpleXMLObject::NAMESPACE,SimpleXMLObject::LOCAL_NAME);
+        xmltooling::QName qtype(SimpleXMLObject::NAMESPACE,SimpleXMLObject::TYPE_NAME);
+        XMLObjectBuilder::registerBuilder(qname, new SimpleXMLObjectBuilder());
+        XMLObjectBuilder::registerBuilder(qtype, new SimpleXMLObjectBuilder());
+    }
+
+    void tearDown() {
+        xmltooling::QName qname(SimpleXMLObject::NAMESPACE,SimpleXMLObject::LOCAL_NAME);
+        xmltooling::QName qtype(SimpleXMLObject::NAMESPACE,SimpleXMLObject::TYPE_NAME);
+        XMLObjectBuilder::deregisterBuilder(qname);
+        XMLObjectBuilder::deregisterBuilder(qtype);
+    }
+
+    void testMarshallingWithAttributes() {
+        auto_ptr<SimpleXMLObject> sxObject(SimpleXMLObjectBuilder::buildSimpleXMLObject());
+        TS_ASSERT(sxObject.get()!=nullptr);
+        auto_ptr_XMLCh expected("Firefly");
+        sxObject->setId(expected.get());
+        
+        DOMElement* rootElement = sxObject->marshall();
+
+        string path=data_path + "SimpleXMLObjectWithAttribute.xml";
+        ifstream fs(path.c_str());
+        DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(fs);
+        TS_ASSERT(doc!=nullptr);
+
+        TS_ASSERT(rootElement->isEqualNode(doc->getDocumentElement()));
+        doc->release();
+    }
+
+    void testMarshallingWithElementContent() {
+        auto_ptr<SimpleXMLObject> sxObject(SimpleXMLObjectBuilder::buildSimpleXMLObject());
+        TS_ASSERT(sxObject.get()!=nullptr);
+        auto_ptr_XMLCh expected("Sample Content");
+        sxObject->setValue(expected.get());
+        
+        DOMElement* rootElement = sxObject->marshall();
+
+        string path=data_path + "SimpleXMLObjectWithContent.xml";
+        ifstream fs(path.c_str());
+        DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(fs);
+        TS_ASSERT(doc!=nullptr);
+
+        TS_ASSERT(rootElement->isEqualNode(doc->getDocumentElement()));
+        doc->release();
+    }
+
+    void testMarshallingWithChildElements() {
+        xmltooling::QName qname(SimpleXMLObject::NAMESPACE,SimpleXMLObject::LOCAL_NAME);
+        const SimpleXMLObjectBuilder* b=dynamic_cast<const SimpleXMLObjectBuilder*>(XMLObjectBuilder::getBuilder(qname));
+        TS_ASSERT(b!=nullptr);
+        
+        auto_ptr<SimpleXMLObject> sxObject(dynamic_cast<SimpleXMLObject*>(b->buildObject()));
+        TS_ASSERT(sxObject.get()!=nullptr);
+        VectorOf(SimpleXMLObject) kids=sxObject->getSimpleXMLObjects();
+        kids.push_back(dynamic_cast<SimpleXMLObject*>(b->buildObject()));
+        kids.push_back(dynamic_cast<SimpleXMLObject*>(b->buildObject()));
+        kids.push_back(dynamic_cast<SimpleXMLObject*>(b->buildObject()));
+        
+        // Test some collection stuff
+        auto_ptr_XMLCh foo("Foo");
+        auto_ptr_XMLCh bar("Bar");
+        auto_ptr_XMLCh baz("Baz");
+        kids.begin()->setId(foo.get());
+        kids.at(2)->setValue(bar.get());
+        kids.erase(kids.begin()+1);
+        TS_ASSERT(XMLString::equals(kids.back()->getValue(), bar.get()));
+        
+        xmltooling::QName qtype(SimpleXMLObject::NAMESPACE,SimpleXMLObject::TYPE_NAME,SimpleXMLObject::NAMESPACE_PREFIX);
+        kids.push_back(
+            dynamic_cast<SimpleXMLObject*>(
+                b->buildObject(SimpleXMLObject::NAMESPACE,SimpleXMLObject::DERIVED_NAME,SimpleXMLObject::NAMESPACE_PREFIX,&qtype)
+                )
+            );
+        kids.back()->setValue(baz.get());
+        
+        DOMElement* rootElement = sxObject->marshall();
+
+        string path=data_path + "SimpleXMLObjectWithChildren.xml";
+        ifstream fs(path.c_str());
+        DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(fs);
+        TS_ASSERT(doc!=nullptr);
+
+        TS_ASSERT(rootElement->isEqualNode(doc->getDocumentElement()));
+        doc->release();
+    }
+
+};