1*e9cbe144SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*e9cbe144SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*e9cbe144SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*e9cbe144SAndrew Rist * distributed with this work for additional information 6*e9cbe144SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*e9cbe144SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*e9cbe144SAndrew Rist * "License"); you may not use this file except in compliance 9*e9cbe144SAndrew Rist * with the License. You may obtain a copy of the License at 10*e9cbe144SAndrew Rist * 11*e9cbe144SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*e9cbe144SAndrew Rist * 13*e9cbe144SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*e9cbe144SAndrew Rist * software distributed under the License is distributed on an 15*e9cbe144SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*e9cbe144SAndrew Rist * KIND, either express or implied. See the License for the 17*e9cbe144SAndrew Rist * specific language governing permissions and limitations 18*e9cbe144SAndrew Rist * under the License. 19*e9cbe144SAndrew Rist * 20*e9cbe144SAndrew Rist *************************************************************/ 21*e9cbe144SAndrew Rist 22*e9cbe144SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // autogenerated file with codegen.pl 25cdf0e10cSrcweir 26cdf0e10cSrcweir #include <testshl/simpleheader.hxx> 27cdf0e10cSrcweir 28cdf0e10cSrcweir #include <rtl/ref.hxx> 29cdf0e10cSrcweir #include <osl/file.hxx> 30cdf0e10cSrcweir #include <osl/process.h> 31cdf0e10cSrcweir #include <comphelper/seqstream.hxx> 32cdf0e10cSrcweir #include <comphelper/sequence.hxx> 33cdf0e10cSrcweir #include <cppuhelper/compbase1.hxx> 34cdf0e10cSrcweir #include <cppuhelper/bootstrap.hxx> 35cdf0e10cSrcweir #include <cppuhelper/basemutex.hxx> 36cdf0e10cSrcweir 37cdf0e10cSrcweir #include <com/sun/star/xml/sax/FastToken.hpp> 38cdf0e10cSrcweir #include <com/sun/star/xml/sax/XSAXSerializable.hpp> 39cdf0e10cSrcweir #include <com/sun/star/xml/sax/XFastSAXSerializable.hpp> 40cdf0e10cSrcweir 41cdf0e10cSrcweir #include "../source/dom/documentbuilder.hxx" 42cdf0e10cSrcweir 43cdf0e10cSrcweir 44cdf0e10cSrcweir using namespace ::DOM; 45cdf0e10cSrcweir using namespace ::comphelper; 46cdf0e10cSrcweir using namespace ::com::sun::star; 47cdf0e10cSrcweir 48cdf0e10cSrcweir namespace 49cdf0e10cSrcweir { 50cdf0e10cSrcweir 51cdf0e10cSrcweir // valid xml 52cdf0e10cSrcweir static const char validTestFile[] = 53cdf0e10cSrcweir "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \ 54cdf0e10cSrcweir <office:document-content \ 55cdf0e10cSrcweir xmlns:office=\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\" \ 56cdf0e10cSrcweir xmlns:xlink=\"http://www.w3.org/1999/xlink\" \ 57cdf0e10cSrcweir office:version=\"1.0\"> \ 58cdf0e10cSrcweir <office:scripts/> \ 59cdf0e10cSrcweir <xlink:test/> \ 60cdf0e10cSrcweir <office:automatic-styles teststyle=\"test\"/> \ 61cdf0e10cSrcweir <moretest/> \ 62cdf0e10cSrcweir some text öäü \ 63cdf0e10cSrcweir </office:document-content> \ 64cdf0e10cSrcweir "; 65cdf0e10cSrcweir 66cdf0e10cSrcweir // generates a warning: unsupported xml version, unknown xml:space 67cdf0e10cSrcweir // value 68cdf0e10cSrcweir static const char warningTestFile[] = 69cdf0e10cSrcweir "<?xml version=\"47-11.0\" encoding=\"UTF-8\"?> \ 70cdf0e10cSrcweir <office:document-content \ 71cdf0e10cSrcweir xmlns:office=\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\" \ 72cdf0e10cSrcweir xml:space=\"blafasl\" \ 73cdf0e10cSrcweir office:version=\"1.0\"> \ 74cdf0e10cSrcweir <office:scripts/> \ 75cdf0e10cSrcweir <office:automatic-styles/> \ 76cdf0e10cSrcweir </office:document-content> \ 77cdf0e10cSrcweir "; 78cdf0e10cSrcweir 79cdf0e10cSrcweir // <?xml not at start of file 80cdf0e10cSrcweir static const char errorTestFile[] = 81cdf0e10cSrcweir " <?xml version=\"1.0\" encoding=\"UTF-8\"?> \ 82cdf0e10cSrcweir <office:document-content \ 83cdf0e10cSrcweir xmlns:office=\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\" \ 84cdf0e10cSrcweir office:version=\"1.0\"> \ 85cdf0e10cSrcweir <office:scripts/> \ 86cdf0e10cSrcweir <office:automatic-styles/> \ 87cdf0e10cSrcweir </office:document-content> \ 88cdf0e10cSrcweir "; 89cdf0e10cSrcweir 90cdf0e10cSrcweir // plain empty 91cdf0e10cSrcweir static const char fatalTestFile[] = ""; 92cdf0e10cSrcweir 93cdf0e10cSrcweir struct ErrorHandler 94cdf0e10cSrcweir : public ::cppu::WeakImplHelper1< xml::sax::XErrorHandler > 95cdf0e10cSrcweir { 96cdf0e10cSrcweir sal_uInt32 mnErrCount; 97cdf0e10cSrcweir sal_uInt32 mnFatalCount; 98cdf0e10cSrcweir sal_uInt32 mnWarnCount; 99cdf0e10cSrcweir noErrors__anona3ebbd380111::ErrorHandler100cdf0e10cSrcweir bool noErrors() const { return !mnErrCount && !mnFatalCount && !mnWarnCount; } 101cdf0e10cSrcweir ErrorHandler__anona3ebbd380111::ErrorHandler102cdf0e10cSrcweir ErrorHandler() : mnErrCount(0), mnFatalCount(0), mnWarnCount(0) 103cdf0e10cSrcweir {} 104cdf0e10cSrcweir error__anona3ebbd380111::ErrorHandler105cdf0e10cSrcweir virtual void SAL_CALL error( const uno::Any& ) throw (xml::sax::SAXException, uno::RuntimeException) 106cdf0e10cSrcweir { 107cdf0e10cSrcweir ++mnErrCount; 108cdf0e10cSrcweir } 109cdf0e10cSrcweir fatalError__anona3ebbd380111::ErrorHandler110cdf0e10cSrcweir virtual void SAL_CALL fatalError( const uno::Any& ) throw (xml::sax::SAXException, uno::RuntimeException) 111cdf0e10cSrcweir { 112cdf0e10cSrcweir ++mnFatalCount; 113cdf0e10cSrcweir } 114cdf0e10cSrcweir warning__anona3ebbd380111::ErrorHandler115cdf0e10cSrcweir virtual void SAL_CALL warning( const uno::Any& ) throw (xml::sax::SAXException, uno::RuntimeException) 116cdf0e10cSrcweir { 117cdf0e10cSrcweir ++mnWarnCount; 118cdf0e10cSrcweir } 119cdf0e10cSrcweir }; 120cdf0e10cSrcweir 121cdf0e10cSrcweir struct DocumentHandler 122cdf0e10cSrcweir : public ::cppu::WeakImplHelper1< xml::sax::XFastDocumentHandler > 123cdf0e10cSrcweir { 124cdf0e10cSrcweir // XFastContextHandler startFastElement__anona3ebbd380111::DocumentHandler125cdf0e10cSrcweir virtual void SAL_CALL startFastElement( ::sal_Int32 Element, const uno::Reference< xml::sax::XFastAttributeList >& Attribs ) throw (xml::sax::SAXException, uno::RuntimeException) 126cdf0e10cSrcweir { 127cdf0e10cSrcweir OSL_TRACE("Seen element: %c with namespace 0x%x", 128cdf0e10cSrcweir Element & 0xFFFF, Element & 0xFFFF0000); 129cdf0e10cSrcweir } 130cdf0e10cSrcweir startUnknownElement__anona3ebbd380111::DocumentHandler131cdf0e10cSrcweir virtual void SAL_CALL startUnknownElement( const ::rtl::OUString& Namespace, const ::rtl::OUString& Name, const uno::Reference< xml::sax::XFastAttributeList >& Attribs ) throw (xml::sax::SAXException, uno::RuntimeException) 132cdf0e10cSrcweir { 133cdf0e10cSrcweir } 134cdf0e10cSrcweir endFastElement__anona3ebbd380111::DocumentHandler135cdf0e10cSrcweir virtual void SAL_CALL endFastElement( ::sal_Int32 Element ) throw (xml::sax::SAXException, uno::RuntimeException) 136cdf0e10cSrcweir { 137cdf0e10cSrcweir } 138cdf0e10cSrcweir endUnknownElement__anona3ebbd380111::DocumentHandler139cdf0e10cSrcweir virtual void SAL_CALL endUnknownElement( const ::rtl::OUString& Namespace, const ::rtl::OUString& Name ) throw (xml::sax::SAXException, uno::RuntimeException) 140cdf0e10cSrcweir { 141cdf0e10cSrcweir } 142cdf0e10cSrcweir createFastChildContext__anona3ebbd380111::DocumentHandler143cdf0e10cSrcweir virtual uno::Reference< xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( ::sal_Int32 Element, const uno::Reference< xml::sax::XFastAttributeList >& Attribs ) throw (xml::sax::SAXException, uno::RuntimeException) 144cdf0e10cSrcweir { 145cdf0e10cSrcweir return this; 146cdf0e10cSrcweir } 147cdf0e10cSrcweir createUnknownChildContext__anona3ebbd380111::DocumentHandler148cdf0e10cSrcweir virtual uno::Reference< xml::sax::XFastContextHandler > SAL_CALL createUnknownChildContext( const ::rtl::OUString& Namespace, const ::rtl::OUString& Name, const uno::Reference< xml::sax::XFastAttributeList >& Attribs ) throw (xml::sax::SAXException, uno::RuntimeException) 149cdf0e10cSrcweir { 150cdf0e10cSrcweir return this; 151cdf0e10cSrcweir } 152cdf0e10cSrcweir characters__anona3ebbd380111::DocumentHandler153cdf0e10cSrcweir virtual void SAL_CALL characters( const ::rtl::OUString& aChars ) throw (xml::sax::SAXException, uno::RuntimeException) 154cdf0e10cSrcweir { 155cdf0e10cSrcweir } 156cdf0e10cSrcweir 157cdf0e10cSrcweir // XFastDocumentHandler startDocument__anona3ebbd380111::DocumentHandler158cdf0e10cSrcweir virtual void SAL_CALL startDocument( ) throw (xml::sax::SAXException, uno::RuntimeException) 159cdf0e10cSrcweir { 160cdf0e10cSrcweir } 161cdf0e10cSrcweir endDocument__anona3ebbd380111::DocumentHandler162cdf0e10cSrcweir virtual void SAL_CALL endDocument( ) throw (xml::sax::SAXException, uno::RuntimeException) 163cdf0e10cSrcweir { 164cdf0e10cSrcweir } 165cdf0e10cSrcweir setDocumentLocator__anona3ebbd380111::DocumentHandler166cdf0e10cSrcweir virtual void SAL_CALL setDocumentLocator( const uno::Reference< xml::sax::XLocator >& xLocator ) throw (xml::sax::SAXException, uno::RuntimeException) 167cdf0e10cSrcweir { 168cdf0e10cSrcweir } 169cdf0e10cSrcweir }; 170cdf0e10cSrcweir 171cdf0e10cSrcweir struct TokenHandler 172cdf0e10cSrcweir : public ::cppu::WeakImplHelper1< xml::sax::XFastTokenHandler > 173cdf0e10cSrcweir { getToken__anona3ebbd380111::TokenHandler174cdf0e10cSrcweir virtual ::sal_Int32 SAL_CALL getToken( const ::rtl::OUString& Identifier ) throw (uno::RuntimeException) 175cdf0e10cSrcweir { 176cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "TokenHandler::getToken() unexpected call", 177cdf0e10cSrcweir false ); 178cdf0e10cSrcweir return -1; 179cdf0e10cSrcweir } 180cdf0e10cSrcweir getIdentifier__anona3ebbd380111::TokenHandler181cdf0e10cSrcweir virtual ::rtl::OUString SAL_CALL getIdentifier( ::sal_Int32 Token ) throw (uno::RuntimeException) 182cdf0e10cSrcweir { 183cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "TokenHandler::getIdentifier() unexpected call", 184cdf0e10cSrcweir false ); 185cdf0e10cSrcweir return rtl::OUString(); 186cdf0e10cSrcweir } 187cdf0e10cSrcweir getTokenFromUTF8__anona3ebbd380111::TokenHandler188cdf0e10cSrcweir virtual ::sal_Int32 SAL_CALL getTokenFromUTF8( const uno::Sequence< ::sal_Int8 >& Identifier ) throw (uno::RuntimeException) 189cdf0e10cSrcweir { 190cdf0e10cSrcweir OSL_TRACE("getTokenFromUTF8() %s", (const char*)Identifier.getConstArray()); 191cdf0e10cSrcweir return Identifier.getLength() ? Identifier[0] : 0; 192cdf0e10cSrcweir } 193cdf0e10cSrcweir getUTF8Identifier__anona3ebbd380111::TokenHandler194cdf0e10cSrcweir virtual uno::Sequence< ::sal_Int8 > SAL_CALL getUTF8Identifier( ::sal_Int32 Token ) throw (uno::RuntimeException) 195cdf0e10cSrcweir { 196cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "TokenHandler::getUTF8Identifier() unexpected call", 197cdf0e10cSrcweir false ); 198cdf0e10cSrcweir return uno::Sequence<sal_Int8>(); 199cdf0e10cSrcweir } 200cdf0e10cSrcweir }; 201cdf0e10cSrcweir 202cdf0e10cSrcweir struct BasicTest : public CppUnit::TestFixture 203cdf0e10cSrcweir { 204cdf0e10cSrcweir rtl::Reference<CDocumentBuilder> mxDomBuilder; 205cdf0e10cSrcweir rtl::Reference<ErrorHandler> mxErrHandler; 206cdf0e10cSrcweir rtl::Reference<SequenceInputStream> mxValidInStream; 207cdf0e10cSrcweir rtl::Reference<SequenceInputStream> mxWarningInStream; 208cdf0e10cSrcweir rtl::Reference<SequenceInputStream> mxErrorInStream; 209cdf0e10cSrcweir rtl::Reference<SequenceInputStream> mxFatalInStream; 210cdf0e10cSrcweir setUp__anona3ebbd380111::BasicTest211cdf0e10cSrcweir void setUp() 212cdf0e10cSrcweir { 213cdf0e10cSrcweir // luckily, DOM builder doesn't use service fac, so we need 214cdf0e10cSrcweir // not bootstrap uno here 215cdf0e10cSrcweir mxErrHandler.set( new ErrorHandler() ); 216cdf0e10cSrcweir mxDomBuilder.set( new CDocumentBuilder(Reference< XMultiServiceFactory >() )); 217cdf0e10cSrcweir mxValidInStream.set( new SequenceInputStream(ByteSequence((sal_Int8*)validTestFile, 218cdf0e10cSrcweir sizeof(validTestFile)/sizeof(*validTestFile))) ); 219cdf0e10cSrcweir mxWarningInStream.set( new SequenceInputStream(ByteSequence((sal_Int8*)warningTestFile, 220cdf0e10cSrcweir sizeof(warningTestFile)/sizeof(*warningTestFile))) ); 221cdf0e10cSrcweir mxErrorInStream.set( new SequenceInputStream(ByteSequence((sal_Int8*)errorTestFile, 222cdf0e10cSrcweir sizeof(errorTestFile)/sizeof(*errorTestFile))) ); 223cdf0e10cSrcweir mxFatalInStream.set( new SequenceInputStream(ByteSequence((sal_Int8*)fatalTestFile, 224cdf0e10cSrcweir sizeof(fatalTestFile)/sizeof(*fatalTestFile))) ); 225cdf0e10cSrcweir mxDomBuilder->setErrorHandler(mxErrHandler.get()); 226cdf0e10cSrcweir } 227cdf0e10cSrcweir validInputTest__anona3ebbd380111::BasicTest228cdf0e10cSrcweir void validInputTest() 229cdf0e10cSrcweir { 230cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "Valid input file did not result in XDocument #1", 231cdf0e10cSrcweir mxDomBuilder->parse( 232cdf0e10cSrcweir uno::Reference<io::XInputStream>( 233cdf0e10cSrcweir mxValidInStream.get())).is() ); 234cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "Valid input file resulted in parse errors", 235cdf0e10cSrcweir mxErrHandler->noErrors() ); 236cdf0e10cSrcweir } 237cdf0e10cSrcweir warningInputTest__anona3ebbd380111::BasicTest238cdf0e10cSrcweir void warningInputTest() 239cdf0e10cSrcweir { 240cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "Valid input file did not result in XDocument #2", 241cdf0e10cSrcweir mxDomBuilder->parse( 242cdf0e10cSrcweir uno::Reference<io::XInputStream>( 243cdf0e10cSrcweir mxWarningInStream.get())).is() ); 244cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "No parse warnings in unclean input file", 245cdf0e10cSrcweir mxErrHandler->mnWarnCount && !mxErrHandler->mnErrCount && !mxErrHandler->mnFatalCount ); 246cdf0e10cSrcweir } 247cdf0e10cSrcweir errorInputTest__anona3ebbd380111::BasicTest248cdf0e10cSrcweir void errorInputTest() 249cdf0e10cSrcweir { 250cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "Valid input file did not result in XDocument #3", 251cdf0e10cSrcweir mxDomBuilder->parse( 252cdf0e10cSrcweir uno::Reference<io::XInputStream>( 253cdf0e10cSrcweir mxErrorInStream.get())).is() ); 254cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "No parse errors in unclean input file", 255cdf0e10cSrcweir !mxErrHandler->mnWarnCount && mxErrHandler->mnErrCount && !mxErrHandler->mnFatalCount ); 256cdf0e10cSrcweir } 257cdf0e10cSrcweir fatalInputTest__anona3ebbd380111::BasicTest258cdf0e10cSrcweir void fatalInputTest() 259cdf0e10cSrcweir { 260cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "Broken input file resulted in XDocument", 261cdf0e10cSrcweir !mxDomBuilder->parse( 262cdf0e10cSrcweir uno::Reference<io::XInputStream>( 263cdf0e10cSrcweir mxFatalInStream.get())).is() ); 264cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "No fatal parse errors in unclean input file", 265cdf0e10cSrcweir !mxErrHandler->mnWarnCount && !mxErrHandler->mnErrCount && mxErrHandler->mnFatalCount ); 266cdf0e10cSrcweir }; 267cdf0e10cSrcweir 268cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 269cdf0e10cSrcweir // member functions of the current class, 270cdf0e10cSrcweir // because these macros are need by auto register mechanism. 271cdf0e10cSrcweir CPPUNIT_TEST_SUITE(BasicTest); 272cdf0e10cSrcweir CPPUNIT_TEST(validInputTest); 273cdf0e10cSrcweir CPPUNIT_TEST(warningInputTest); 274cdf0e10cSrcweir CPPUNIT_TEST(errorInputTest); 275cdf0e10cSrcweir CPPUNIT_TEST(fatalInputTest); 276cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 277cdf0e10cSrcweir }; 278cdf0e10cSrcweir 279cdf0e10cSrcweir struct SerializerTest : public CppUnit::TestFixture 280cdf0e10cSrcweir { SerializerTest__anona3ebbd380111::SerializerTest281cdf0e10cSrcweir SerializerTest() : mbUnoInitialized(false) {} 282cdf0e10cSrcweir 283cdf0e10cSrcweir uno::Reference<uno::XComponentContext> mxCtx; 284cdf0e10cSrcweir rtl::Reference<CDocumentBuilder> mxDomBuilder; 285cdf0e10cSrcweir rtl::Reference<ErrorHandler> mxErrHandler; 286cdf0e10cSrcweir rtl::Reference<SequenceInputStream> mxInStream; 287cdf0e10cSrcweir rtl::Reference<DocumentHandler> mxHandler; 288cdf0e10cSrcweir rtl::Reference<TokenHandler> mxTokHandler; 289cdf0e10cSrcweir uno::Sequence< beans::Pair< rtl::OUString, sal_Int32 > > maRegisteredNamespaces; 290cdf0e10cSrcweir bool mbUnoInitialized; 291cdf0e10cSrcweir setUp__anona3ebbd380111::SerializerTest292cdf0e10cSrcweir void setUp() 293cdf0e10cSrcweir { 294cdf0e10cSrcweir // need working typelib, bootstrap UNO now 295cdf0e10cSrcweir if( !mbUnoInitialized ) 296cdf0e10cSrcweir { 297cdf0e10cSrcweir const char* pArgs( getForwardString() ); 298cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("Test file parameter", pArgs); 299cdf0e10cSrcweir 300cdf0e10cSrcweir const rtl::OUString sBaseDir=rtl::OUString::createFromAscii(pArgs); 301cdf0e10cSrcweir 302cdf0e10cSrcweir // bootstrap UNO 303cdf0e10cSrcweir try 304cdf0e10cSrcweir { 305cdf0e10cSrcweir ::rtl::OUString aIniUrl; 306cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( 307cdf0e10cSrcweir "Converting ini file to URL", 308cdf0e10cSrcweir osl_getFileURLFromSystemPath( 309cdf0e10cSrcweir (sBaseDir+rtl::OUString::createFromAscii("unoxml_unittest_test.ini")).pData, 310cdf0e10cSrcweir &aIniUrl.pData ) == osl_File_E_None ); 311cdf0e10cSrcweir 312cdf0e10cSrcweir mxCtx = ::cppu::defaultBootstrap_InitialComponentContext(aIniUrl); 313cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("Getting component context", mxCtx.is()); 314cdf0e10cSrcweir } 315cdf0e10cSrcweir catch( uno::Exception& ) 316cdf0e10cSrcweir { 317cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("Bootstrapping UNO", false); 318cdf0e10cSrcweir } 319cdf0e10cSrcweir 320cdf0e10cSrcweir mbUnoInitialized = true; 321cdf0e10cSrcweir } 322cdf0e10cSrcweir 323cdf0e10cSrcweir mxErrHandler.set( new ErrorHandler() ); 324cdf0e10cSrcweir mxDomBuilder.set( new CDocumentBuilder( 325cdf0e10cSrcweir uno::Reference< lang::XMultiServiceFactory >( 326cdf0e10cSrcweir mxCtx->getServiceManager(), 327cdf0e10cSrcweir uno::UNO_QUERY ))); 328cdf0e10cSrcweir mxInStream.set( new SequenceInputStream(ByteSequence((sal_Int8*)validTestFile, 329cdf0e10cSrcweir sizeof(validTestFile)/sizeof(*validTestFile))) ); 330cdf0e10cSrcweir mxDomBuilder->setErrorHandler(mxErrHandler.get()); 331cdf0e10cSrcweir 332cdf0e10cSrcweir mxHandler.set( new DocumentHandler() ); 333cdf0e10cSrcweir mxTokHandler.set( new TokenHandler() ); 334cdf0e10cSrcweir 335cdf0e10cSrcweir maRegisteredNamespaces.realloc(2); 336cdf0e10cSrcweir maRegisteredNamespaces[0] = beans::make_Pair( 337cdf0e10cSrcweir rtl::OUString( 338cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM( 339cdf0e10cSrcweir "urn:oasis:names:tc:opendocument:xmlns:office:1.0") ), 340cdf0e10cSrcweir xml::sax::FastToken::NAMESPACE); 341cdf0e10cSrcweir maRegisteredNamespaces[1] = beans::make_Pair( 342cdf0e10cSrcweir rtl::OUString( 343cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM( 344cdf0e10cSrcweir "http://www.w3.org/1999/xlink") ), 345cdf0e10cSrcweir 2*xml::sax::FastToken::NAMESPACE); 346cdf0e10cSrcweir } 347cdf0e10cSrcweir serializerTest__anona3ebbd380111::SerializerTest348cdf0e10cSrcweir void serializerTest () 349cdf0e10cSrcweir { 350cdf0e10cSrcweir uno::Reference< xml::dom::XDocument > xDoc= 351cdf0e10cSrcweir mxDomBuilder->parse( 352cdf0e10cSrcweir uno::Reference<io::XInputStream>( 353cdf0e10cSrcweir mxInStream.get())); 354cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "Valid input file did not result in XDocument", 355cdf0e10cSrcweir xDoc.is() ); 356cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "Valid input file resulted in parse errors", 357cdf0e10cSrcweir mxErrHandler->noErrors() ); 358cdf0e10cSrcweir 359cdf0e10cSrcweir uno::Reference< xml::sax::XSAXSerializable > xSaxSerializer( 360cdf0e10cSrcweir xDoc, uno::UNO_QUERY); 361cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "XSAXSerializable not supported", 362cdf0e10cSrcweir xSaxSerializer.is() ); 363cdf0e10cSrcweir 364cdf0e10cSrcweir uno::Reference< xml::sax::XFastSAXSerializable > xFastSaxSerializer( 365cdf0e10cSrcweir xDoc, uno::UNO_QUERY); 366cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "XFastSAXSerializable not supported", 367cdf0e10cSrcweir xSaxSerializer.is() ); 368cdf0e10cSrcweir 369cdf0e10cSrcweir xFastSaxSerializer->fastSerialize( mxHandler.get(), 370cdf0e10cSrcweir mxTokHandler.get(), 371cdf0e10cSrcweir uno::Sequence< beans::StringPair >(), 372cdf0e10cSrcweir maRegisteredNamespaces ); 373cdf0e10cSrcweir } 374cdf0e10cSrcweir 375cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 376cdf0e10cSrcweir // member functions of the current class, 377cdf0e10cSrcweir // because these macros are need by auto register mechanism. 378cdf0e10cSrcweir 379cdf0e10cSrcweir CPPUNIT_TEST_SUITE(SerializerTest); 380cdf0e10cSrcweir CPPUNIT_TEST(serializerTest); 381cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 382cdf0e10cSrcweir }; 383cdf0e10cSrcweir 384cdf0e10cSrcweir // ----------------------------------------------------------------------------- 385cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(BasicTest, "BasicTest"); 386cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(SerializerTest, "SerializerTest"); 387cdf0e10cSrcweir } 388cdf0e10cSrcweir 389cdf0e10cSrcweir 390cdf0e10cSrcweir // ----------------------------------------------------------------------------- 391cdf0e10cSrcweir 392cdf0e10cSrcweir // this macro creates an empty function, which will called by the RegisterAllFunctions() 393cdf0e10cSrcweir // to let the user the possibility to also register some functions by hand. 394cdf0e10cSrcweir NOADDITIONAL; 395cdf0e10cSrcweir 396