X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltoolingtest%2FMarshallingTest.h;h=a5ee4268c4c30f4a8e3e44e923af52224df8b529;hb=47ba040008729fbf96eeab6beeeef1461df52a6f;hp=dd476c95bae25518802fae3fed8d9a5b9ceab18f;hpb=5ae1c899bd915741ccfc63465708b5395a09be72;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltoolingtest/MarshallingTest.h b/xmltoolingtest/MarshallingTest.h index dd476c9..a5ee426 100644 --- a/xmltoolingtest/MarshallingTest.h +++ b/xmltoolingtest/MarshallingTest.h @@ -1,107 +1,115 @@ -/* - * Copyright 2001-2005 Internet2 - * - * Licensed 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 - -class MarshallingTest : public CxxTest::TestSuite { - QName m_qname; -public: - MarshallingTest() : m_qname(SimpleXMLObject::NAMESPACE,SimpleXMLObject::LOCAL_NAME) {} - - void setUp() { - XMLObjectBuilder::registerBuilder(m_qname, new SimpleXMLObjectBuilder()); - Marshaller::registerMarshaller(m_qname, new SimpleXMLObjectMarshaller()); - Unmarshaller::registerUnmarshaller(m_qname, new SimpleXMLObjectUnmarshaller()); - } - - void tearDown() { - XMLObjectBuilder::deregisterBuilder(m_qname); - Marshaller::deregisterMarshaller(m_qname); - Unmarshaller::deregisterUnmarshaller(m_qname); - } - - void testMarshallingWithAttributes() { - TS_TRACE("testMarshallingWithAttributes"); - - auto_ptr_XMLCh expected("Firefly"); - auto_ptr sxObject(dynamic_cast(XMLObjectBuilder::getBuilder(m_qname)->buildObject())); - TS_ASSERT(sxObject.get()!=NULL); - sxObject->setId(expected.get()); - - DOMElement* rootElement = Marshaller::getMarshaller(sxObject.get())->marshall(sxObject.get()); - - string path=data_path + "SimpleXMLObjectWithAttribute.xml"; - ifstream fs(path.c_str()); - DOMDocument* doc=nonvalidatingPool->parse(fs); - TS_ASSERT(doc!=NULL); - - TS_ASSERT(rootElement->isEqualNode(doc->getDocumentElement())); - doc->release(); - } - - void testMarshallingWithElementContent() { - TS_TRACE("testMarshallingWithElementContent"); - - auto_ptr_XMLCh expected("Sample Content"); - auto_ptr sxObject(dynamic_cast(XMLObjectBuilder::getBuilder(m_qname)->buildObject())); - TS_ASSERT(sxObject.get()!=NULL); - sxObject->setValue(expected.get()); - - DOMElement* rootElement = Marshaller::getMarshaller(sxObject.get())->marshall(sxObject.get()); - - string path=data_path + "SimpleXMLObjectWithContent.xml"; - ifstream fs(path.c_str()); - DOMDocument* doc=nonvalidatingPool->parse(fs); - TS_ASSERT(doc!=NULL); - - TS_ASSERT(rootElement->isEqualNode(doc->getDocumentElement())); - doc->release(); - } - - void testMarshallingWithChildElements() { - TS_TRACE("testMarshallingWithChildElements"); - - const XMLObjectBuilder* b=XMLObjectBuilder::getBuilder(m_qname); - TS_ASSERT(b!=NULL); - - auto_ptr sxObject(dynamic_cast(b->buildObject())); - TS_ASSERT(sxObject.get()!=NULL); - ListOf(SimpleXMLObject) kids=sxObject->getSimpleXMLObjects(); - kids.push_back(dynamic_cast(b->buildObject())); - kids.push_back(dynamic_cast(b->buildObject())); - kids.push_back(dynamic_cast(b->buildObject())); - - // Test some collection stuff - auto_ptr_XMLCh foo("Foo"); - auto_ptr_XMLCh bar("Bar"); - kids[0]->setId(foo.get()); - kids.at(2)->setValue(bar.get()); - kids.erase(kids.begin()+1); - - DOMElement* rootElement = Marshaller::getMarshaller(sxObject.get())->marshall(sxObject.get()); - - string path=data_path + "SimpleXMLObjectWithChildren.xml"; - ifstream fs(path.c_str()); - DOMDocument* doc=nonvalidatingPool->parse(fs); - TS_ASSERT(doc!=NULL); - - TS_ASSERT(rootElement->isEqualNode(doc->getDocumentElement())); - doc->release(); - } - -}; +/** + * 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 + +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 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 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(XMLObjectBuilder::getBuilder(qname)); + TS_ASSERT(b!=nullptr); + + auto_ptr sxObject(dynamic_cast(b->buildObject())); + TS_ASSERT(sxObject.get()!=nullptr); + VectorOf(SimpleXMLObject) kids=sxObject->getSimpleXMLObjects(); + kids.push_back(dynamic_cast(b->buildObject())); + kids.push_back(dynamic_cast(b->buildObject())); + kids.push_back(dynamic_cast(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( + 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(); + } + +};