/* -*- 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 #include #include #include #include #include #include #include #include #include #define NUMBER_OF_TESTS 5 using namespace css; using namespace css::uno; namespace sc_apitest { class ScEditFieldObj_Header : public UnoApiTest, apitest::XTextContent, apitest::XPropertySet { public: ScEditFieldObj_Header(); virtual void setUp(); virtual void tearDown(); virtual uno::Reference init(); virtual uno::Reference getTextContent(); virtual uno::Reference getTextRange(); virtual bool isAttachSupported() { return false; } CPPUNIT_TEST_SUITE(ScEditFieldObj_Header); // XPropertySet CPPUNIT_TEST(testGetPropertySetInfo); CPPUNIT_TEST(testGetPropertyValue); CPPUNIT_TEST(testSetPropertyValue); // XTextContent CPPUNIT_TEST(testGetAnchor); CPPUNIT_TEST(testAttach); CPPUNIT_TEST_SUITE_END(); private: static sal_Int32 nTest; static uno::Reference mxComponent; static uno::Reference mxField; static uno::Reference mxRightText; }; sal_Int32 ScEditFieldObj_Header::nTest = 0; uno::Reference ScEditFieldObj_Header::mxComponent; uno::Reference ScEditFieldObj_Header::mxField; uno::Reference ScEditFieldObj_Header::mxRightText; ScEditFieldObj_Header::ScEditFieldObj_Header() : UnoApiTest("/sc/qa/extras/testdocuments") { } void ScEditFieldObj_Header::setUp() { ++nTest; UnoApiTest::setUp(); } void ScEditFieldObj_Header::tearDown() { if (nTest == NUMBER_OF_TESTS) { // Clear these before the component is destroyed. This is important! mxField.clear(); mxRightText.clear(); closeDocument(mxComponent); } UnoApiTest::tearDown(); } uno::Reference ScEditFieldObj_Header::init() { // Return a field that's already in the header. if (!mxField.is()) { if (!mxComponent.is()) // Load an empty document. mxComponent = loadFromDesktop("private:factory/scalc"); uno::Reference xSM(mxComponent, UNO_QUERY_THROW); // Create a new URL field object, and populate it with name and URL. mxField.set(xSM->createInstance("com.sun.star.text.TextField.Time"), UNO_QUERY_THROW); uno::Reference xSFS(mxComponent, UNO_QUERY_THROW); uno::Reference xStyleFamilies(xSFS->getStyleFamilies(), UNO_QUERY_THROW); uno::Reference xPageStyles(xStyleFamilies->getByName("PageStyles"), UNO_QUERY_THROW); uno::Reference xPropSet(xPageStyles->getByName("Default"), UNO_QUERY_THROW); uno::Reference xHeaderContent( xPropSet->getPropertyValue("RightPageHeaderContent"), UNO_QUERY_THROW); // Use the left header text. uno::Reference xText = xHeaderContent->getLeftText(); uno::Reference xCursor = xText->createTextCursor(); uno::Reference xRange(xCursor, UNO_QUERY_THROW); uno::Reference xContent(mxField, UNO_QUERY_THROW); xText->insertTextContent(xRange, xContent, sal_False); xPropSet->setPropertyValue("RightPageHeaderContent", uno::makeAny(xHeaderContent)); mxRightText = xHeaderContent->getRightText(); } return mxField; } uno::Reference ScEditFieldObj_Header::getTextContent() { // Return a field object that's not yet inserted. uno::Reference xSM(mxComponent, UNO_QUERY_THROW); uno::Reference xField( xSM->createInstance("com.sun.star.text.TextField.Date"), UNO_QUERY_THROW); return xField; } uno::Reference ScEditFieldObj_Header::getTextRange() { // Use the right header text for this. uno::Reference xRange(mxRightText, UNO_QUERY_THROW); return xRange; } CPPUNIT_TEST_SUITE_REGISTRATION(ScEditFieldObj_Header); CPPUNIT_PLUGIN_IMPLEMENT(); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */