X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltoolingtest%2FMarshallingTest.h;h=1a5c53aba19c758f44394a2ad308dc0b34702508;hb=39502d6e48aec30be6d00ca60575b9a4cf414733;hp=79dfaf1b94cc3e0b49285dab596777e7df09e1f0;hpb=c5183613326e3d36a544b2941654d0667a29b836;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltoolingtest/MarshallingTest.h b/xmltoolingtest/MarshallingTest.h index 79dfaf1..1a5c53a 100644 --- a/xmltoolingtest/MarshallingTest.h +++ b/xmltoolingtest/MarshallingTest.h @@ -19,31 +19,33 @@ #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()); + QName qname(SimpleXMLObject::NAMESPACE,SimpleXMLObject::LOCAL_NAME); + QName qtype(SimpleXMLObject::NAMESPACE,SimpleXMLObject::TYPE_NAME); + XMLObjectBuilder::registerBuilder(qname, new SimpleXMLObjectBuilder()); + XMLObjectBuilder::registerBuilder(qtype, new SimpleXMLObjectBuilder()); } void tearDown() { - XMLObjectBuilder::deregisterBuilder(m_qname); + QName qname(SimpleXMLObject::NAMESPACE,SimpleXMLObject::LOCAL_NAME); + QName qtype(SimpleXMLObject::NAMESPACE,SimpleXMLObject::TYPE_NAME); + XMLObjectBuilder::deregisterBuilder(qname); + XMLObjectBuilder::deregisterBuilder(qtype); } void testMarshallingWithAttributes() { - TS_TRACE("testMarshallingWithAttributes"); - - auto_ptr_XMLCh expected("Firefly"); - auto_ptr sxObject(dynamic_cast(XMLObjectBuilder::getBuilder(m_qname)->buildObject())); + QName qname(SimpleXMLObject::NAMESPACE,SimpleXMLObject::LOCAL_NAME); + auto_ptr sxObject(SimpleXMLObjectBuilder::newSimpleXMLObject()); TS_ASSERT(sxObject.get()!=NULL); + 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=nonvalidatingPool->parse(fs); + DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(fs); TS_ASSERT(doc!=NULL); TS_ASSERT(rootElement->isEqualNode(doc->getDocumentElement())); @@ -51,18 +53,17 @@ public: } void testMarshallingWithElementContent() { - TS_TRACE("testMarshallingWithElementContent"); - - auto_ptr_XMLCh expected("Sample Content"); - auto_ptr sxObject(dynamic_cast(XMLObjectBuilder::getBuilder(m_qname)->buildObject())); + QName qname(SimpleXMLObject::NAMESPACE,SimpleXMLObject::LOCAL_NAME); + auto_ptr sxObject(SimpleXMLObjectBuilder::newSimpleXMLObject()); TS_ASSERT(sxObject.get()!=NULL); + 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=nonvalidatingPool->parse(fs); + DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(fs); TS_ASSERT(doc!=NULL); TS_ASSERT(rootElement->isEqualNode(doc->getDocumentElement())); @@ -70,9 +71,8 @@ public: } void testMarshallingWithChildElements() { - TS_TRACE("testMarshallingWithChildElements"); - - const SimpleXMLObjectBuilder* b=dynamic_cast(XMLObjectBuilder::getBuilder(m_qname)); + QName qname(SimpleXMLObject::NAMESPACE,SimpleXMLObject::LOCAL_NAME); + const SimpleXMLObjectBuilder* b=dynamic_cast(XMLObjectBuilder::getBuilder(qname)); TS_ASSERT(b!=NULL); auto_ptr sxObject(b->buildObject()); @@ -85,16 +85,23 @@ public: // 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_SAME_DATA(kids.back()->getValue(), bar.get(), XMLString::stringLen(bar.get())); + TS_ASSERT(XMLString::equals(kids.back()->getValue(), bar.get())); + + QName qtype(SimpleXMLObject::NAMESPACE,SimpleXMLObject::TYPE_NAME,SimpleXMLObject::NAMESPACE_PREFIX); + kids.push_back( + 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=nonvalidatingPool->parse(fs); + DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(fs); TS_ASSERT(doc!=NULL); TS_ASSERT(rootElement->isEqualNode(doc->getDocumentElement()));