/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include using namespace css::container; using namespace css::reflection; using namespace css::uno; namespace { class ServicesTest: public test::BootstrapFixture { public: void test(); CPPUNIT_TEST_SUITE(ServicesTest); CPPUNIT_TEST(test); CPPUNIT_TEST_SUITE_END(); }; void ServicesTest::test() { Reference< XHierarchicalNameAccess > xTypeManager( m_xContext->getValueByName( "/singletons/com.sun.star.reflection.theTypeDescriptionManager"), UNO_QUERY_THROW ); Sequence s = m_xContext->getServiceManager()->getAvailableServiceNames(); for (sal_Int32 i = 0; i < s.getLength(); i++) { if (!xTypeManager->hasByHierarchicalName(s[i])) { SAL_WARN( "postprocess.cppunit", "fantasy service name \"" << s[i] << "\""); continue; } SAL_WARN( "postprocess.cppunit", "trying \"" << s[i] << "\""); Reference< XServiceTypeDescription2 > xDesc( xTypeManager->getByHierarchicalName(s[i]), UNO_QUERY_THROW); Sequence< Reference< XServiceConstructorDescription > > xseq = xDesc->getConstructors(); for (sal_Int32 c = 0; c < xseq.getLength(); c++) if (!xseq[c]->getParameters().hasElements()) try { CPPUNIT_ASSERT_MESSAGE( OUStringToOString(s[i], RTL_TEXTENCODING_UTF8).getStr(), ((xseq[c]->isDefaultConstructor() ? (m_xContext->getServiceManager() ->createInstanceWithContext(s[i], m_xContext)) : (m_xContext->getServiceManager() ->createInstanceWithArgumentsAndContext( s[i], css::uno::Sequence(), m_xContext))) .is())); } catch(const Exception & e) { OString exc = "Exception thrown while creating " + OUStringToOString(s[i] + ": " + e.Message, RTL_TEXTENCODING_UTF8); CPPUNIT_FAIL(exc.getStr()); } } } CPPUNIT_TEST_SUITE_REGISTRATION(ServicesTest); } CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */