blob: 75542822f862ba5aaffd6bbf010b948808351191 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF 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.
*
*************************************************************/
// autogenerated file with codegen.pl
#include <testshl/simpleheader.hxx>
#include <osl/process.h>
#include <ucbhelper/contentbroker.hxx>
#include <cppuhelper/bootstrap.hxx>
#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
#include <com/sun/star/io/XInputStream.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/lang/XMultiComponentFactory.hpp>
#include <com/sun/star/uno/Any.hxx>
#include <com/sun/star/container/XNameContainer.hpp>
#include <doctok/exceptions.hxx>
#include <doctok/WW8Document.hxx>
#include <resourcemodel/WW8ResourceModel.hxx>
#include <iostream>
namespace testdoctok
{
using namespace ::std;
using namespace ::com::sun::star;
using namespace doctok;
uno::Reference<io::XInputStream> xStream;
uno::Reference<uno::XComponentContext> xContext;
WW8Document::Pointer_t pDocument;
uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess > xSimpleFileAccess;
class test : public CppUnit::TestFixture
{
public:
// initialise your test code values here.
void setUp()
{
}
void tearDown()
{
}
void testInitUno()
{
bool bResult = false;
// initialise UCB-Broker
uno::Reference<uno::XComponentContext>
xComponentContext
(::cppu::defaultBootstrap_InitialComponentContext());
OSL_ASSERT( xComponentContext.is() );
xContext = xComponentContext;
uno::Reference<lang::XMultiComponentFactory>
xFactory(xComponentContext->getServiceManager() );
OSL_ASSERT(xFactory.is());
uno::Sequence<uno::Any> aUcbInitSequence(2);
aUcbInitSequence[0] <<=
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Local"));
aUcbInitSequence[1] <<=
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Office"));
uno::Reference<lang::XMultiServiceFactory>
xServiceFactory(xFactory, uno::UNO_QUERY);
OSL_ASSERT( xServiceFactory.is() );
if (xServiceFactory.is())
{
sal_Bool bRet =
::ucb::ContentBroker::initialize(xServiceFactory,
aUcbInitSequence);
OSL_ASSERT(bRet);
if (bRet)
{
uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess >
xNameContainer(xFactory->createInstanceWithContext
(::rtl::OUString::createFromAscii
("com.sun.star.ucb.SimpleFileAccess" ),
xComponentContext), uno::UNO_QUERY );
if (xNameContainer.is())
{
xSimpleFileAccess = xNameContainer;
bResult = true;
}
}
}
CPPUNIT_ASSERT_MESSAGE("UNO initialization failed",
bResult);
}
// insert your test code here.
void testOpenFile()
{
try
{
rtl_uString *dir=NULL;
osl_getProcessWorkingDir(&dir);
rtl_uString *fname=NULL;
//rtl_uString_newFromAscii(&fname, "/OpenDocument-v1.doc");
rtl_uString_newFromAscii(&fname, "/test.doc");
//rtl_uString_newFromAscii(&fname, "/numbers.doc");
rtl_uString *absfile=NULL;
rtl_uString_newConcat(&absfile, dir, fname);
rtl::OUString sInputFileURL( absfile );
for (sal_uInt32 n = 0; n < sInputFileURL.getLength(); ++n)
{
sal_uChar nC = sInputFileURL[n];
if (nC < 0xff && isprint(nC))
clog << static_cast<char>(nC);
else
clog << ".";
}
clog << endl;
xStream = xSimpleFileAccess->openFileRead(sInputFileURL);
WW8Stream::Pointer_t pStream =
WW8DocumentFactory::createStream(xContext, xStream);
pDocument = WW8DocumentFactory::createDocument(pStream);
}
catch (doctok::Exception e)
{
clog << "Exception!!" << endl;
}
CPPUNIT_ASSERT_MESSAGE("creating document failed",
pDocument != NULL);
#if 1
}
void testTraversal()
{
#endif
sal_uInt32 nResult = 0;
try
{
WW8DocumentIterator::Pointer_t pIt = pDocument->begin();
WW8DocumentIterator::Pointer_t pItEnd = pDocument->end();
while (! pIt->equal(*pItEnd))
{
pIt->dump(clog);
clog << endl;
WW8PropertySet::Pointer_t pAttrs = pIt->getProperties();
if (pAttrs != NULL)
{
pAttrs->dump(clog);
}
pIt->getText().dump(clog);
++(*pIt);
++nResult;
}
}
catch (doctok::Exception e)
{
clog << "Exception!!" << endl;
}
char sBuffer[256];
snprintf(sBuffer, 255, "%d", nResult);
clog << "Iterator steps:" << sBuffer << endl;
CPPUNIT_ASSERT_MESSAGE("traversing document failed",
nResult > 0);
}
void testEvents()
{
try
{
Stream::Pointer_t pStream = doctok::createStreamHandler();
pDocument->resolve(*pStream);
}
catch (doctok::Exception e)
{
clog << "Exception!!" << endl;
}
}
void testEnd()
{
::ucb::ContentBroker::deinitialize();
}
// Change the following lines only, if you add, remove or rename
// member functions of the current class,
// because these macros are need by auto register mechanism.
CPPUNIT_TEST_SUITE(test);
CPPUNIT_TEST(testInitUno);
CPPUNIT_TEST(testOpenFile);
//CPPUNIT_TEST(testTraversal);
CPPUNIT_TEST(testEvents);
CPPUNIT_TEST(testEnd);
CPPUNIT_TEST_SUITE_END();
}; // class test
// -----------------------------------------------------------------------------
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(testdoctok::test, "doctok");
} // namespace doctok
// -----------------------------------------------------------------------------
// this macro creates an empty function, which will called by the RegisterAllFunctions()
// to let the user the possibility to also register some functions by hand.
NOADDITIONAL;