Kaydet (Commit) 219cef62 authored tarafından Kohei Yoshida's avatar Kohei Yoshida

Do the test for real. XTextField and XTextContent.

Change-Id: I303562873fab5d41614f092966e47ff296c12610
üst e3c7b1a0
......@@ -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);
......
......@@ -63,7 +63,6 @@ void XTextContent::testAttach()
bool bAttachSupported = isAttachSupported();
if (bAttachSupported)
CPPUNIT_ASSERT(false);
}
catch (const RuntimeException& e)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment