diff options
author | Kohei Yoshida <kohei.yoshida@gmail.com> | 2012-04-27 20:41:52 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@gmail.com> | 2012-04-28 00:24:49 -0400 |
commit | 219cef62f8bbb5a057eaa830e6a4b2964c242c44 (patch) | |
tree | 3d4b16acac3c97f4eb97f4dcf4f9b05ab41e3597 | |
parent | e3c7b1a0bebb96e51b7c7927367a243c0a2f8402 (diff) |
Do the test for real. XTextField and XTextContent.
Change-Id: I303562873fab5d41614f092966e47ff296c12610
-rw-r--r-- | sc/qa/extras/sceditfieldobj.cxx | 83 | ||||
-rw-r--r-- | test/source/text/xtextcontent.cxx | 1 |
2 files changed, 78 insertions, 6 deletions
diff --git a/sc/qa/extras/sceditfieldobj.cxx b/sc/qa/extras/sceditfieldobj.cxx index a065a3fe50cc..d5a22adb435d 100644 --- a/sc/qa/extras/sceditfieldobj.cxx +++ b/sc/qa/extras/sceditfieldobj.cxx @@ -28,14 +28,21 @@ #include <test/unoapi_test.hxx> #include <test/text/xtextfield.hxx> +#include <test/text/xtextcontent.hxx> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/container/XEnumerationAccess.hpp> +#include <com/sun/star/text/XText.hpp> #include <com/sun/star/text/XTextField.hpp> +#include <com/sun/star/text/XTextFieldsSupplier.hpp> +#include <com/sun/star/sheet/XSpreadsheetDocument.hpp> +#include <com/sun/star/sheet/XSpreadsheet.hpp> -#define NUMBER_OF_TESTS 1 +#define NUMBER_OF_TESTS 3 namespace sc_apitest { -class ScEditFieldObj : public UnoApiTest, apitest::XTextField +class ScEditFieldObj : public UnoApiTest, apitest::XTextField, apitest::XTextContent { public: ScEditFieldObj(); @@ -43,18 +50,27 @@ public: virtual void setUp(); virtual void tearDown(); virtual uno::Reference<uno::XInterface> init(); + virtual uno::Reference<text::XTextContent> getTextContent(); + virtual uno::Reference<text::XTextRange> getTextRange(); + virtual bool isAttachSupported() { return true; } CPPUNIT_TEST_SUITE(ScEditFieldObj); + // XTextField CPPUNIT_TEST(testGetPresentation); + // XTextContent + CPPUNIT_TEST(testGetAnchor); + CPPUNIT_TEST(testAttach); CPPUNIT_TEST_SUITE_END(); private: static sal_Int32 nTest; static uno::Reference<lang::XComponent> mxComponent; + static uno::Reference<text::XTextField> mxField; }; sal_Int32 ScEditFieldObj::nTest = 0; uno::Reference<lang::XComponent> ScEditFieldObj::mxComponent; +uno::Reference<text::XTextField> ScEditFieldObj::mxField; ScEditFieldObj::ScEditFieldObj() {} @@ -72,12 +88,69 @@ void ScEditFieldObj::tearDown() UnoApiTest::tearDown(); } +namespace { + +uno::Reference<text::XTextField> getNewField(const uno::Reference<lang::XMultiServiceFactory>& xSM) +{ + uno::Reference<text::XTextField> xField( + xSM->createInstance("com.sun.star.text.TextField.URL"), UNO_QUERY_THROW); + uno::Reference<beans::XPropertySet> xPropSet(xField, UNO_QUERY_THROW); + xPropSet->setPropertyValue("Representation", uno::makeAny(rtl::OUString("LibreOffice"))); + xPropSet->setPropertyValue("URL", uno::makeAny(rtl::OUString("http://www.libreoffice.org/"))); + return xField; +} + +} + uno::Reference<uno::XInterface> ScEditFieldObj::init() { - if (!mxComponent.is()) - mxComponent = loadFromDesktop("private:factory/scalc"); + // Return a field that's already in the cell. + if (!mxField.is()) + { + if (!mxComponent.is()) + // Load an empty document. + mxComponent = loadFromDesktop("private:factory/scalc"); + + uno::Reference<lang::XMultiServiceFactory> xSM(mxComponent, UNO_QUERY_THROW); + + // Create a new URL field object, and populate it with name and URL. + mxField = getNewField(xSM); + + // Insert this field into a cell. + uno::Reference<sheet::XSpreadsheetDocument> xDoc(mxComponent, UNO_QUERY_THROW); + uno::Reference<container::XIndexAccess> xIA(xDoc->getSheets(), UNO_QUERY_THROW); + uno::Reference<sheet::XSpreadsheet> xSheet(xIA->getByIndex(0), UNO_QUERY_THROW); + // Use cell A1 for this. + uno::Reference<table::XCell> xCell = xSheet->getCellByPosition(0, 0); + uno::Reference<text::XText> xText(xCell, UNO_QUERY_THROW); + + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + uno::Reference<text::XTextRange> xRange(xCursor, UNO_QUERY_THROW); + uno::Reference<text::XTextContent> xContent(mxField, UNO_QUERY_THROW); + xText->insertTextContent(xRange, xContent, sal_False); + } + return mxField; +} - return mxComponent; +uno::Reference<text::XTextContent> ScEditFieldObj::getTextContent() +{ + // Return a field object that's not yet inserted. + uno::Reference<lang::XMultiServiceFactory> xSM(mxComponent, UNO_QUERY_THROW); + return uno::Reference<text::XTextContent>(getNewField(xSM), UNO_QUERY_THROW); +} + +uno::Reference<text::XTextRange> ScEditFieldObj::getTextRange() +{ + // Use cell A2 for this. + uno::Reference<sheet::XSpreadsheetDocument> xDoc(mxComponent, UNO_QUERY_THROW); + uno::Reference<container::XIndexAccess> xIA(xDoc->getSheets(), UNO_QUERY_THROW); + uno::Reference<sheet::XSpreadsheet> xSheet(xIA->getByIndex(0), UNO_QUERY_THROW); + uno::Reference<table::XCell> xCell = xSheet->getCellByPosition(0, 1); + uno::Reference<text::XText> xText(xCell, UNO_QUERY_THROW); + + uno::Reference<text::XTextCursor> xCursor = xText->createTextCursor(); + uno::Reference<text::XTextRange> xRange(xCursor, UNO_QUERY_THROW); + return xRange; } CPPUNIT_TEST_SUITE_REGISTRATION(ScEditFieldObj); diff --git a/test/source/text/xtextcontent.cxx b/test/source/text/xtextcontent.cxx index c6662e7cf687..8e84dc2c7b57 100644 --- a/test/source/text/xtextcontent.cxx +++ b/test/source/text/xtextcontent.cxx @@ -63,7 +63,6 @@ void XTextContent::testAttach() bool bAttachSupported = isAttachSupported(); if (bAttachSupported) CPPUNIT_ASSERT(false); - } catch (const RuntimeException& e) { |