[Libreoffice-commits] .: 7 commits - sc/CppunitTest_sc_editfieldobj_cell.mk sc/CppunitTest_sc_editfieldobj_header.mk sc/Module_sc.mk sc/qa sc/source test/inc test/source

Kohei Yoshida kohei at kemper.freedesktop.org
Fri Apr 27 21:24:31 PDT 2012


 sc/CppunitTest_sc_editfieldobj_cell.mk   |  134 +++++++++++++++++++++++++
 sc/CppunitTest_sc_editfieldobj_header.mk |  134 +++++++++++++++++++++++++
 sc/Module_sc.mk                          |    2 
 sc/qa/extras/sceditfieldobj-cell.cxx     |  165 +++++++++++++++++++++++++++++++
 sc/qa/extras/sceditfieldobj-header.cxx   |  158 +++++++++++++++++++++++++++++
 sc/source/ui/unoobj/fielduno.cxx         |    9 -
 test/inc/test/text/xtextcontent.hxx      |    4 
 test/inc/test/text/xtextfield.hxx        |    4 
 test/source/text/xtextcontent.cxx        |    1 
 9 files changed, 604 insertions(+), 7 deletions(-)

New commits:
commit df92f499f963a5a4d8cb7100ea1f846bb0f91014
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Sat Apr 28 00:23:51 2012 -0400

    Fixed crash on tear down during cppunit test.
    
    Change-Id: I5573e554420967d8942295cabe788a9e56835ba0

diff --git a/sc/qa/extras/sceditfieldobj-cell.cxx b/sc/qa/extras/sceditfieldobj-cell.cxx
index 962834a..e7ad2ed 100644
--- a/sc/qa/extras/sceditfieldobj-cell.cxx
+++ b/sc/qa/extras/sceditfieldobj-cell.cxx
@@ -83,7 +83,10 @@ void ScEditFieldObj_Cell::setUp()
 void ScEditFieldObj_Cell::tearDown()
 {
     if (nTest == NUMBER_OF_TESTS)
+    {
+        mxField.clear();
         closeDocument(mxComponent);
+    }
 
     UnoApiTest::tearDown();
 }
diff --git a/sc/qa/extras/sceditfieldobj-header.cxx b/sc/qa/extras/sceditfieldobj-header.cxx
index 85d9817..44bdeb5 100644
--- a/sc/qa/extras/sceditfieldobj-header.cxx
+++ b/sc/qa/extras/sceditfieldobj-header.cxx
@@ -86,7 +86,12 @@ void ScEditFieldObj_Header::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();
 }
commit 852f502efd7eff39db8168abdb4ae41eb5933123
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Apr 27 22:47:14 2012 -0400

    Test the header field API for real.
    
    But it crashes on exit, due to some sort of order of deletion...
    
    Change-Id: Ife9da1c0a647038cbdc68410db5b211bcce5dfa4

diff --git a/sc/qa/extras/sceditfieldobj-header.cxx b/sc/qa/extras/sceditfieldobj-header.cxx
index ab84b70..85d9817 100644
--- a/sc/qa/extras/sceditfieldobj-header.cxx
+++ b/sc/qa/extras/sceditfieldobj-header.cxx
@@ -32,17 +32,20 @@
 
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/container/XEnumerationAccess.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/style/XStyleFamiliesSupplier.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>
+#include <com/sun/star/sheet/XHeaderFooterContent.hpp>
 
-#define NUMBER_OF_TESTS 3
+#define NUMBER_OF_TESTS 2
 
 namespace sc_apitest {
 
-class ScEditFieldObj_Header : public UnoApiTest, apitest::XTextField, apitest::XTextContent
+class ScEditFieldObj_Header : public UnoApiTest, apitest::XTextContent
 {
 public:
     ScEditFieldObj_Header();
@@ -52,11 +55,9 @@ public:
     virtual uno::Reference<uno::XInterface> init();
     virtual uno::Reference<text::XTextContent> getTextContent();
     virtual uno::Reference<text::XTextRange> getTextRange();
-    virtual bool isAttachSupported() { return true; }
+    virtual bool isAttachSupported() { return false; }
 
     CPPUNIT_TEST_SUITE(ScEditFieldObj_Header);
-    // XTextField
-    CPPUNIT_TEST(testGetPresentation);
     // XTextContent
     CPPUNIT_TEST(testGetAnchor);
     CPPUNIT_TEST(testAttach);
@@ -66,11 +67,13 @@ private:
     static sal_Int32 nTest;
     static uno::Reference<lang::XComponent> mxComponent;
     static uno::Reference<text::XTextField> mxField;
+    static uno::Reference<text::XText> mxRightText;
 };
 
 sal_Int32 ScEditFieldObj_Header::nTest = 0;
 uno::Reference<lang::XComponent> ScEditFieldObj_Header::mxComponent;
 uno::Reference<text::XTextField> ScEditFieldObj_Header::mxField;
+uno::Reference<text::XText> ScEditFieldObj_Header::mxRightText;
 
 ScEditFieldObj_Header::ScEditFieldObj_Header() {}
 
@@ -88,23 +91,9 @@ void ScEditFieldObj_Header::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_Header::init()
 {
-    // Return a field that's already in the cell.
+    // Return a field that's already in the header.
     if (!mxField.is())
     {
         if (!mxComponent.is())
@@ -114,21 +103,28 @@ uno::Reference<uno::XInterface> ScEditFieldObj_Header::init()
         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);
+        mxField.set(xSM->createInstance("com.sun.star.text.TextField.Time"), UNO_QUERY_THROW);
+
+        uno::Reference<style::XStyleFamiliesSupplier> xSFS(mxComponent, UNO_QUERY_THROW);
+        uno::Reference<container::XNameAccess> xStyleFamilies(xSFS->getStyleFamilies(), UNO_QUERY_THROW);
+        uno::Reference<container::XNameAccess> xPageStyles(xStyleFamilies->getByName("PageStyles"), UNO_QUERY_THROW);
+        uno::Reference<beans::XPropertySet> xPropSet(xPageStyles->getByName("Default"), UNO_QUERY_THROW);
 
-        // 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<sheet::XHeaderFooterContent> xHeaderContent(
+            xPropSet->getPropertyValue("RightPageHeaderContent"), UNO_QUERY_THROW);
 
+        // Use the left header text.
+        uno::Reference<text::XText> xText = xHeaderContent->getLeftText();
         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);
+
+        xPropSet->setPropertyValue("RightPageHeaderContent", uno::makeAny(xHeaderContent));
+
+        mxRightText = xHeaderContent->getRightText();
     }
+
     return mxField;
 }
 
@@ -136,20 +132,15 @@ uno::Reference<text::XTextContent> ScEditFieldObj_Header::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::XTextContent> xField(
+        xSM->createInstance("com.sun.star.text.TextField.Date"), UNO_QUERY_THROW);
+    return xField;
 }
 
 uno::Reference<text::XTextRange> ScEditFieldObj_Header::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);
+    // Use the right header text for this.
+    uno::Reference<text::XTextRange> xRange(mxRightText, UNO_QUERY_THROW);
     return xRange;
 }
 
commit 9c9e0db4f0dd17843eae06c30730358a60b5ea8e
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Apr 27 21:03:46 2012 -0400

    Copy & paste the *_Cell test code into *_Header test code.
    
    I still need to rewrite it to make it the header test.
    
    Change-Id: I0f8c469d51340ae72cb61696a22ebcbdcf84ffa6

diff --git a/sc/CppunitTest_sc_editfieldobj.mk b/sc/CppunitTest_sc_editfieldobj.mk
deleted file mode 100644
index c14dc4d..0000000
--- a/sc/CppunitTest_sc_editfieldobj.mk
+++ /dev/null
@@ -1,134 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#*************************************************************************
-# Version: MPL 1.1 / GPLv3+ / LGPLv3+
-#
-# The contents of this file are subject to the Mozilla Public License Version
-# 1.1 (the "License"); you may not use this file except in compliance with
-# the License or as specified alternatively below. You may obtain a copy of
-# the License at http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-# for the specific language governing rights and limitations under the
-# License.
-#
-# The Initial Developer of the Original Code is
-#       Kohei Yoshida <kohei.yoshida at suse.com>
-# Portions created by the Initial Developer are Copyright (C) 2011 the
-# Initial Developer. All Rights Reserved.
-#
-# Major Contributor(s):
-#
-# For minor contributions see the git repository.
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
-# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
-# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
-# instead of those above.
-#*************************************************************************
-
-$(eval $(call gb_CppunitTest_CppunitTest,sc_editfieldobj))
-
-$(eval $(call gb_CppunitTest_add_exception_objects,sc_editfieldobj, \
-    sc/qa/extras/sceditfieldobj-cell \
-))
-
-$(eval $(call gb_CppunitTest_use_libraries,sc_editfieldobj, \
-    avmedia \
-    basegfx \
-    comphelper \
-    cppu \
-    cppuhelper \
-    drawinglayer \
-    editeng \
-    fileacc \
-    for \
-    forui \
-    i18nisolang1 \
-    msfilter \
-    oox \
-    sal \
-    salhelper \
-    sax \
-    sb \
-    sc \
-    sfx \
-    sot \
-    svl \
-    svt \
-    svx \
-    svxcore \
-    test \
-    tl \
-    tk \
-    subsequenttest \
-    ucbhelper \
-    unotest \
-    utl \
-    vbahelper \
-    vcl \
-    xo \
-    $(gb_STDLIBS) \
-))
-
-$(eval $(call gb_CppunitTest_set_include,sc_editfieldobj,\
-    -I$(SRCDIR)/sc/source/ui/inc \
-    -I$(SRCDIR)/sc/inc \
-    $$(INCLUDE) \
-))
-
-$(eval $(call gb_CppunitTest_use_api,sc_editfieldobj,\
-    offapi \
-    udkapi \
-))
-
-$(eval $(call gb_CppunitTest_use_ure,sc_editfieldobj))
-
-$(eval $(call gb_CppunitTest_use_components,sc_editfieldobj,\
-    basic/util/sb \
-    comphelper/util/comphelp \
-    configmgr/source/configmgr \
-    dbaccess/util/dba \
-    fileaccess/source/fileacc \
-    filter/source/config/cache/filterconfig1 \
-    forms/util/frm \
-    framework/util/fwk \
-    i18npool/util/i18npool \
-    oox/util/oox \
-    package/source/xstor/xstor \
-    package/util/package2 \
-    sax/source/expatwrap/expwrap \
-    sax/source/fastparser/fastsax \
-    sc/util/sc \
-    sc/util/scd \
-    sc/util/scfilt \
-    sc/util/vbaobj \
-    scripting/source/basprov/basprov \
-    scripting/util/scriptframe \
-    sfx2/util/sfx \
-    sot/util/sot \
-    svl/source/fsstor/fsstorage \
-    toolkit/util/tk \
-    ucb/source/core/ucb1 \
-    ucb/source/ucp/file/ucpfile1 \
-    ucb/source/ucp/tdoc/ucptdoc1 \
-    unotools/util/utl \
-    unoxml/source/rdf/unordf \
-    unoxml/source/service/unoxml \
-))
-
-$(eval $(call gb_CppunitTest_use_configuration,sc_editfieldobj))
-
-$(eval $(call gb_CppunitTest_use_filter_configuration,sc_editfieldobj))
-
-$(eval $(call gb_CppunitTest_use_extra_configuration,sc_editfieldobj,\
-    $(OUTDIR)/unittest/registry \
-))
-
-# we need to
-# - explicitly depend on the sc resource files needed at unit-test runtime
-$(call gb_CppunitTest_get_target,sc_editfieldobj) : \
-    $(WORKDIR)/AllLangRes/sc \
-
-# vim: set noet sw=4 ts=4:
diff --git a/sc/CppunitTest_sc_editfieldobj_cell.mk b/sc/CppunitTest_sc_editfieldobj_cell.mk
new file mode 100644
index 0000000..70ca94c
--- /dev/null
+++ b/sc/CppunitTest_sc_editfieldobj_cell.mk
@@ -0,0 +1,134 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Initial Developer of the Original Code is
+#       Kohei Yoshida <kohei.yoshida at suse.com>
+# Portions created by the Initial Developer are Copyright (C) 2011 the
+# Initial Developer. All Rights Reserved.
+#
+# Major Contributor(s):
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+#*************************************************************************
+
+$(eval $(call gb_CppunitTest_CppunitTest,sc_editfieldobj_cell))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sc_editfieldobj_cell, \
+    sc/qa/extras/sceditfieldobj-cell \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,sc_editfieldobj_cell, \
+    avmedia \
+    basegfx \
+    comphelper \
+    cppu \
+    cppuhelper \
+    drawinglayer \
+    editeng \
+    fileacc \
+    for \
+    forui \
+    i18nisolang1 \
+    msfilter \
+    oox \
+    sal \
+    salhelper \
+    sax \
+    sb \
+    sc \
+    sfx \
+    sot \
+    svl \
+    svt \
+    svx \
+    svxcore \
+    test \
+    tl \
+    tk \
+    subsequenttest \
+    ucbhelper \
+    unotest \
+    utl \
+    vbahelper \
+    vcl \
+    xo \
+    $(gb_STDLIBS) \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sc_editfieldobj_cell,\
+    -I$(SRCDIR)/sc/source/ui/inc \
+    -I$(SRCDIR)/sc/inc \
+    $$(INCLUDE) \
+))
+
+$(eval $(call gb_CppunitTest_use_api,sc_editfieldobj_cell,\
+    offapi \
+    udkapi \
+))
+
+$(eval $(call gb_CppunitTest_use_ure,sc_editfieldobj_cell))
+
+$(eval $(call gb_CppunitTest_use_components,sc_editfieldobj_cell,\
+    basic/util/sb \
+    comphelper/util/comphelp \
+    configmgr/source/configmgr \
+    dbaccess/util/dba \
+    fileaccess/source/fileacc \
+    filter/source/config/cache/filterconfig1 \
+    forms/util/frm \
+    framework/util/fwk \
+    i18npool/util/i18npool \
+    oox/util/oox \
+    package/source/xstor/xstor \
+    package/util/package2 \
+    sax/source/expatwrap/expwrap \
+    sax/source/fastparser/fastsax \
+    sc/util/sc \
+    sc/util/scd \
+    sc/util/scfilt \
+    sc/util/vbaobj \
+    scripting/source/basprov/basprov \
+    scripting/util/scriptframe \
+    sfx2/util/sfx \
+    sot/util/sot \
+    svl/source/fsstor/fsstorage \
+    toolkit/util/tk \
+    ucb/source/core/ucb1 \
+    ucb/source/ucp/file/ucpfile1 \
+    ucb/source/ucp/tdoc/ucptdoc1 \
+    unotools/util/utl \
+    unoxml/source/rdf/unordf \
+    unoxml/source/service/unoxml \
+))
+
+$(eval $(call gb_CppunitTest_use_configuration,sc_editfieldobj_cell))
+
+$(eval $(call gb_CppunitTest_use_filter_configuration,sc_editfieldobj_cell))
+
+$(eval $(call gb_CppunitTest_use_extra_configuration,sc_editfieldobj_cell,\
+    $(OUTDIR)/unittest/registry \
+))
+
+# we need to
+# - explicitly depend on the sc resource files needed at unit-test runtime
+$(call gb_CppunitTest_get_target,sc_editfieldobj_cell) : \
+    $(WORKDIR)/AllLangRes/sc \
+
+# vim: set noet sw=4 ts=4:
diff --git a/sc/CppunitTest_sc_editfieldobj_header.mk b/sc/CppunitTest_sc_editfieldobj_header.mk
new file mode 100644
index 0000000..301c8f0
--- /dev/null
+++ b/sc/CppunitTest_sc_editfieldobj_header.mk
@@ -0,0 +1,134 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Initial Developer of the Original Code is
+#       Kohei Yoshida <kohei.yoshida at suse.com>
+# Portions created by the Initial Developer are Copyright (C) 2011 the
+# Initial Developer. All Rights Reserved.
+#
+# Major Contributor(s):
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+#*************************************************************************
+
+$(eval $(call gb_CppunitTest_CppunitTest,sc_editfieldobj_header))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sc_editfieldobj_header, \
+    sc/qa/extras/sceditfieldobj-header \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,sc_editfieldobj_header, \
+    avmedia \
+    basegfx \
+    comphelper \
+    cppu \
+    cppuhelper \
+    drawinglayer \
+    editeng \
+    fileacc \
+    for \
+    forui \
+    i18nisolang1 \
+    msfilter \
+    oox \
+    sal \
+    salhelper \
+    sax \
+    sb \
+    sc \
+    sfx \
+    sot \
+    svl \
+    svt \
+    svx \
+    svxcore \
+    test \
+    tl \
+    tk \
+    subsequenttest \
+    ucbhelper \
+    unotest \
+    utl \
+    vbahelper \
+    vcl \
+    xo \
+    $(gb_STDLIBS) \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sc_editfieldobj_header,\
+    -I$(SRCDIR)/sc/source/ui/inc \
+    -I$(SRCDIR)/sc/inc \
+    $$(INCLUDE) \
+))
+
+$(eval $(call gb_CppunitTest_use_api,sc_editfieldobj_header,\
+    offapi \
+    udkapi \
+))
+
+$(eval $(call gb_CppunitTest_use_ure,sc_editfieldobj_header))
+
+$(eval $(call gb_CppunitTest_use_components,sc_editfieldobj_header,\
+    basic/util/sb \
+    comphelper/util/comphelp \
+    configmgr/source/configmgr \
+    dbaccess/util/dba \
+    fileaccess/source/fileacc \
+    filter/source/config/cache/filterconfig1 \
+    forms/util/frm \
+    framework/util/fwk \
+    i18npool/util/i18npool \
+    oox/util/oox \
+    package/source/xstor/xstor \
+    package/util/package2 \
+    sax/source/expatwrap/expwrap \
+    sax/source/fastparser/fastsax \
+    sc/util/sc \
+    sc/util/scd \
+    sc/util/scfilt \
+    sc/util/vbaobj \
+    scripting/source/basprov/basprov \
+    scripting/util/scriptframe \
+    sfx2/util/sfx \
+    sot/util/sot \
+    svl/source/fsstor/fsstorage \
+    toolkit/util/tk \
+    ucb/source/core/ucb1 \
+    ucb/source/ucp/file/ucpfile1 \
+    ucb/source/ucp/tdoc/ucptdoc1 \
+    unotools/util/utl \
+    unoxml/source/rdf/unordf \
+    unoxml/source/service/unoxml \
+))
+
+$(eval $(call gb_CppunitTest_use_configuration,sc_editfieldobj_header))
+
+$(eval $(call gb_CppunitTest_use_filter_configuration,sc_editfieldobj_header))
+
+$(eval $(call gb_CppunitTest_use_extra_configuration,sc_editfieldobj_header,\
+    $(OUTDIR)/unittest/registry \
+))
+
+# we need to
+# - explicitly depend on the sc resource files needed at unit-test runtime
+$(call gb_CppunitTest_get_target,sc_editfieldobj_header) : \
+    $(WORKDIR)/AllLangRes/sc \
+
+# vim: set noet sw=4 ts=4:
diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk
index 926ac33..4727d74 100644
--- a/sc/Module_sc.mk
+++ b/sc/Module_sc.mk
@@ -64,7 +64,8 @@ $(eval $(call gb_Module_add_subsequentcheck_targets,sc,\
     CppunitTest_sc_namedrangesobj \
     CppunitTest_sc_tablesheetobj \
     CppunitTest_sc_tablesheetsobj \
-    CppunitTest_sc_editfieldobj \
+    CppunitTest_sc_editfieldobj_cell \
+    CppunitTest_sc_editfieldobj_header \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/sc/qa/extras/sceditfieldobj-header.cxx b/sc/qa/extras/sceditfieldobj-header.cxx
new file mode 100644
index 0000000..ab84b70
--- /dev/null
+++ b/sc/qa/extras/sceditfieldobj-header.cxx
@@ -0,0 +1,162 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ *   Copyright (C) 2012 Kohei Yoshida <kohei.yoshida at suse.com>
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#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 3
+
+namespace sc_apitest {
+
+class ScEditFieldObj_Header : public UnoApiTest, apitest::XTextField, apitest::XTextContent
+{
+public:
+    ScEditFieldObj_Header();
+
+    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_Header);
+    // 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_Header::nTest = 0;
+uno::Reference<lang::XComponent> ScEditFieldObj_Header::mxComponent;
+uno::Reference<text::XTextField> ScEditFieldObj_Header::mxField;
+
+ScEditFieldObj_Header::ScEditFieldObj_Header() {}
+
+void ScEditFieldObj_Header::setUp()
+{
+    ++nTest;
+    UnoApiTest::setUp();
+}
+
+void ScEditFieldObj_Header::tearDown()
+{
+    if (nTest == NUMBER_OF_TESTS)
+        closeDocument(mxComponent);
+
+    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_Header::init()
+{
+    // 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;
+}
+
+uno::Reference<text::XTextContent> ScEditFieldObj_Header::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_Header::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_Header);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 8600f21b7d3c3656c1458aa440dbb330c08a7c7c
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Apr 27 20:48:08 2012 -0400

    Renamed the file to make room for the header version of the same test.
    
    This ScEditFieldObj is used for both cell fields and header/footer
    fields.
    
    Change-Id: I8c51de5d173ae934ea604c68030cd84b13f90ef3

diff --git a/sc/CppunitTest_sc_editfieldobj.mk b/sc/CppunitTest_sc_editfieldobj.mk
index 2e68c1e..c14dc4d 100644
--- a/sc/CppunitTest_sc_editfieldobj.mk
+++ b/sc/CppunitTest_sc_editfieldobj.mk
@@ -31,7 +31,7 @@
 $(eval $(call gb_CppunitTest_CppunitTest,sc_editfieldobj))
 
 $(eval $(call gb_CppunitTest_add_exception_objects,sc_editfieldobj, \
-    sc/qa/extras/sceditfieldobj \
+    sc/qa/extras/sceditfieldobj-cell \
 ))
 
 $(eval $(call gb_CppunitTest_use_libraries,sc_editfieldobj, \
diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk
index 18ab358..926ac33 100644
--- a/sc/Module_sc.mk
+++ b/sc/Module_sc.mk
@@ -64,6 +64,7 @@ $(eval $(call gb_Module_add_subsequentcheck_targets,sc,\
     CppunitTest_sc_namedrangesobj \
     CppunitTest_sc_tablesheetobj \
     CppunitTest_sc_tablesheetsobj \
+    CppunitTest_sc_editfieldobj \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/sc/qa/extras/sceditfieldobj-cell.cxx b/sc/qa/extras/sceditfieldobj-cell.cxx
new file mode 100644
index 0000000..962834a
--- /dev/null
+++ b/sc/qa/extras/sceditfieldobj-cell.cxx
@@ -0,0 +1,162 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ *   Copyright (C) 2012 Kohei Yoshida <kohei.yoshida at suse.com>
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#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 3
+
+namespace sc_apitest {
+
+class ScEditFieldObj_Cell : public UnoApiTest, apitest::XTextField, apitest::XTextContent
+{
+public:
+    ScEditFieldObj_Cell();
+
+    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_Cell);
+    // 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_Cell::nTest = 0;
+uno::Reference<lang::XComponent> ScEditFieldObj_Cell::mxComponent;
+uno::Reference<text::XTextField> ScEditFieldObj_Cell::mxField;
+
+ScEditFieldObj_Cell::ScEditFieldObj_Cell() {}
+
+void ScEditFieldObj_Cell::setUp()
+{
+    ++nTest;
+    UnoApiTest::setUp();
+}
+
+void ScEditFieldObj_Cell::tearDown()
+{
+    if (nTest == NUMBER_OF_TESTS)
+        closeDocument(mxComponent);
+
+    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_Cell::init()
+{
+    // 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;
+}
+
+uno::Reference<text::XTextContent> ScEditFieldObj_Cell::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_Cell::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_Cell);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/qa/extras/sceditfieldobj.cxx b/sc/qa/extras/sceditfieldobj.cxx
deleted file mode 100644
index d5a22ad..0000000
--- a/sc/qa/extras/sceditfieldobj.cxx
+++ /dev/null
@@ -1,162 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * Version: MPL 1.1 / GPLv3+ / LGPLv3+
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License or as specified alternatively below. You may obtain a copy of
- * the License at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * Major Contributor(s):
- *   Copyright (C) 2012 Kohei Yoshida <kohei.yoshida at suse.com>
- *
- * All Rights Reserved.
- *
- * For minor contributions see the git repository.
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
- * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
- * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
- * instead of those above.
- */
-
-#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 3
-
-namespace sc_apitest {
-
-class ScEditFieldObj : public UnoApiTest, apitest::XTextField, apitest::XTextContent
-{
-public:
-    ScEditFieldObj();
-
-    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() {}
-
-void ScEditFieldObj::setUp()
-{
-    ++nTest;
-    UnoApiTest::setUp();
-}
-
-void ScEditFieldObj::tearDown()
-{
-    if (nTest == NUMBER_OF_TESTS)
-        closeDocument(mxComponent);
-
-    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()
-{
-    // 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;
-}
-
-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);
-
-CPPUNIT_PLUGIN_IMPLEMENT();
-
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 219cef62f8bbb5a057eaa830e6a4b2964c242c44
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Apr 27 20:41:52 2012 -0400

    Do the test for real.  XTextField and XTextContent.
    
    Change-Id: I303562873fab5d41614f092966e47ff296c12610

diff --git a/sc/qa/extras/sceditfieldobj.cxx b/sc/qa/extras/sceditfieldobj.cxx
index a065a3f..d5a22ad 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 c6662e7..8e84dc2 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)
     {
commit e3c7b1a0bebb96e51b7c7927367a243c0a2f8402
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Apr 27 17:06:46 2012 -0400

    Oops I should return empty strings on fail.
    
    Change-Id: I9f04ef448055e14c3d003c977a3c83421838a88b

diff --git a/sc/source/ui/unoobj/fielduno.cxx b/sc/source/ui/unoobj/fielduno.cxx
index 2753fa6..6bef71a 100644
--- a/sc/source/ui/unoobj/fielduno.cxx
+++ b/sc/source/ui/unoobj/fielduno.cxx
@@ -965,7 +965,7 @@ rtl::OUString SAL_CALL ScEditFieldObj::getPresentation( sal_Bool bShowCommand )
     SolarMutexGuard aGuard;
 
     if (!mpEditSource)
-        return rtl::OUString("no edit source!!!");
+        return rtl::OUString();
 
     //! Feld-Funktionen muessen an den Forwarder !!!
     ScEditEngineDefaulter* pEditEngine = mpEditSource->GetEditEngine();
@@ -975,14 +975,15 @@ rtl::OUString SAL_CALL ScEditFieldObj::getPresentation( sal_Bool bShowCommand )
     const SvxFieldData* pField = aTempEngine.FindByPos( aSelection.nStartPara, aSelection.nStartPos, 0 );
     OSL_ENSURE(pField,"getPresentation: Feld nicht gefunden");
     if (!pField)
-        return rtl::OUString("not inserted yet");
+        return rtl::OUString();
 
     switch (meType)
     {
         case URL:
         {
             if (pField->GetClassId() != SVX_URLFIELD)
-                return rtl::OUString("not url field but url expected");
+                // Not an URL field, but URL is expected.
+                throw uno::RuntimeException();
 
             const SvxURLField* pURL = static_cast<const SvxURLField*>(pField);
             return bShowCommand ? pURL->GetURL() : pURL->GetRepresentation();
@@ -991,7 +992,7 @@ rtl::OUString SAL_CALL ScEditFieldObj::getPresentation( sal_Bool bShowCommand )
         default:
             ;
     }
-    return rtl::OUString("total fail");
+    return rtl::OUString();
 }
 
 // XTextContent
commit d0af33e87db753d6d171548f75c2e242cde00497
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Apr 27 15:32:19 2012 -0400

    Initial skeleton for API test on ScEditFieldObj.
    
    ScEditFieldObj was formerly ScCellFieldObj and ScHeaderFieldObj merged
    into one.
    
    Change-Id: I600188d7ee22bb7c7c18735f570460ce50083c6a

diff --git a/sc/CppunitTest_sc_editfieldobj.mk b/sc/CppunitTest_sc_editfieldobj.mk
new file mode 100644
index 0000000..2e68c1e
--- /dev/null
+++ b/sc/CppunitTest_sc_editfieldobj.mk
@@ -0,0 +1,134 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Initial Developer of the Original Code is
+#       Kohei Yoshida <kohei.yoshida at suse.com>
+# Portions created by the Initial Developer are Copyright (C) 2011 the
+# Initial Developer. All Rights Reserved.
+#
+# Major Contributor(s):
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+#*************************************************************************
+
+$(eval $(call gb_CppunitTest_CppunitTest,sc_editfieldobj))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sc_editfieldobj, \
+    sc/qa/extras/sceditfieldobj \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,sc_editfieldobj, \
+    avmedia \
+    basegfx \
+    comphelper \
+    cppu \
+    cppuhelper \
+    drawinglayer \
+    editeng \
+    fileacc \
+    for \
+    forui \
+    i18nisolang1 \
+    msfilter \
+    oox \
+    sal \
+    salhelper \
+    sax \
+    sb \
+    sc \
+    sfx \
+    sot \
+    svl \
+    svt \
+    svx \
+    svxcore \
+    test \
+    tl \
+    tk \
+    subsequenttest \
+    ucbhelper \
+    unotest \
+    utl \
+    vbahelper \
+    vcl \
+    xo \
+    $(gb_STDLIBS) \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sc_editfieldobj,\
+    -I$(SRCDIR)/sc/source/ui/inc \
+    -I$(SRCDIR)/sc/inc \
+    $$(INCLUDE) \
+))
+
+$(eval $(call gb_CppunitTest_use_api,sc_editfieldobj,\
+    offapi \
+    udkapi \
+))
+
+$(eval $(call gb_CppunitTest_use_ure,sc_editfieldobj))
+
+$(eval $(call gb_CppunitTest_use_components,sc_editfieldobj,\
+    basic/util/sb \
+    comphelper/util/comphelp \
+    configmgr/source/configmgr \
+    dbaccess/util/dba \
+    fileaccess/source/fileacc \
+    filter/source/config/cache/filterconfig1 \
+    forms/util/frm \
+    framework/util/fwk \
+    i18npool/util/i18npool \
+    oox/util/oox \
+    package/source/xstor/xstor \
+    package/util/package2 \
+    sax/source/expatwrap/expwrap \
+    sax/source/fastparser/fastsax \
+    sc/util/sc \
+    sc/util/scd \
+    sc/util/scfilt \
+    sc/util/vbaobj \
+    scripting/source/basprov/basprov \
+    scripting/util/scriptframe \
+    sfx2/util/sfx \
+    sot/util/sot \
+    svl/source/fsstor/fsstorage \
+    toolkit/util/tk \
+    ucb/source/core/ucb1 \
+    ucb/source/ucp/file/ucpfile1 \
+    ucb/source/ucp/tdoc/ucptdoc1 \
+    unotools/util/utl \
+    unoxml/source/rdf/unordf \
+    unoxml/source/service/unoxml \
+))
+
+$(eval $(call gb_CppunitTest_use_configuration,sc_editfieldobj))
+
+$(eval $(call gb_CppunitTest_use_filter_configuration,sc_editfieldobj))
+
+$(eval $(call gb_CppunitTest_use_extra_configuration,sc_editfieldobj,\
+    $(OUTDIR)/unittest/registry \
+))
+
+# we need to
+# - explicitly depend on the sc resource files needed at unit-test runtime
+$(call gb_CppunitTest_get_target,sc_editfieldobj) : \
+    $(WORKDIR)/AllLangRes/sc \
+
+# vim: set noet sw=4 ts=4:
diff --git a/sc/qa/extras/sceditfieldobj.cxx b/sc/qa/extras/sceditfieldobj.cxx
new file mode 100644
index 0000000..a065a3f
--- /dev/null
+++ b/sc/qa/extras/sceditfieldobj.cxx
@@ -0,0 +1,89 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ *   Copyright (C) 2012 Kohei Yoshida <kohei.yoshida at suse.com>
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include <test/unoapi_test.hxx>
+#include <test/text/xtextfield.hxx>
+
+#include <com/sun/star/text/XTextField.hpp>
+
+#define NUMBER_OF_TESTS 1
+
+namespace sc_apitest {
+
+class ScEditFieldObj : public UnoApiTest, apitest::XTextField
+{
+public:
+    ScEditFieldObj();
+
+    virtual void setUp();
+    virtual void tearDown();
+    virtual uno::Reference<uno::XInterface> init();
+
+    CPPUNIT_TEST_SUITE(ScEditFieldObj);
+    CPPUNIT_TEST(testGetPresentation);
+    CPPUNIT_TEST_SUITE_END();
+
+private:
+    static sal_Int32 nTest;
+    static uno::Reference<lang::XComponent> mxComponent;
+};
+
+sal_Int32 ScEditFieldObj::nTest = 0;
+uno::Reference<lang::XComponent> ScEditFieldObj::mxComponent;
+
+ScEditFieldObj::ScEditFieldObj() {}
+
+void ScEditFieldObj::setUp()
+{
+    ++nTest;
+    UnoApiTest::setUp();
+}
+
+void ScEditFieldObj::tearDown()
+{
+    if (nTest == NUMBER_OF_TESTS)
+        closeDocument(mxComponent);
+
+    UnoApiTest::tearDown();
+}
+
+uno::Reference<uno::XInterface> ScEditFieldObj::init()
+{
+    if (!mxComponent.is())
+        mxComponent = loadFromDesktop("private:factory/scalc");
+
+    return mxComponent;
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(ScEditFieldObj);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/test/inc/test/text/xtextcontent.hxx b/test/inc/test/text/xtextcontent.hxx
index 6009849..4f13d0b 100644
--- a/test/inc/test/text/xtextcontent.hxx
+++ b/test/inc/test/text/xtextcontent.hxx
@@ -30,11 +30,13 @@
 #include <com/sun/star/text/XTextRange.hpp>
 #include <com/sun/star/text/XTextContent.hpp>
 
+#include "test/testdllapi.hxx"
+
 using namespace com::sun::star;
 
 namespace apitest {
 
-class XTextContent
+class OOO_DLLPUBLIC_TEST XTextContent
 {
 public:
     virtual ~XTextContent() {}
diff --git a/test/inc/test/text/xtextfield.hxx b/test/inc/test/text/xtextfield.hxx
index 9798ecc..dc95779 100644
--- a/test/inc/test/text/xtextfield.hxx
+++ b/test/inc/test/text/xtextfield.hxx
@@ -28,12 +28,14 @@
 
 #include <com/sun/star/uno/Reference.hxx>
 
+#include "test/testdllapi.hxx"
+
 using namespace com::sun::star;
 
 namespace apitest
 {
 
-class XTextField
+class OOO_DLLPUBLIC_TEST XTextField
 {
 public:
     virtual ~XTextField() {}


More information about the Libreoffice-commits mailing list