summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@gmail.com>2012-04-27 20:41:52 -0400
committerKohei Yoshida <kohei.yoshida@gmail.com>2012-04-28 00:24:49 -0400
commit219cef62f8bbb5a057eaa830e6a4b2964c242c44 (patch)
tree3d4b16acac3c97f4eb97f4dcf4f9b05ab41e3597 /sc
parente3c7b1a0bebb96e51b7c7927367a243c0a2f8402 (diff)
Do the test for real. XTextField and XTextContent.
Change-Id: I303562873fab5d41614f092966e47ff296c12610
Diffstat (limited to 'sc')
-rw-r--r--sc/qa/extras/sceditfieldobj.cxx83
1 files changed, 78 insertions, 5 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);