[Libreoffice-commits] .: 4 commits - sc/CppunitTest_sc_filters_test.mk sc/CppunitTest_sc_macros_test.mk sc/CppunitTest_sc_subsequent_filters_test.mk sc/CppunitTest_sc_unoapi_xcellrangesquery.mk sc/CppunitTest_sc_xcellrangesquery.mk sc/Module_sc.mk sc/qa test/source

Markus Mohrhard mmohrhard at kemper.freedesktop.org
Wed Nov 30 14:48:20 PST 2011


 dev/null                                        |binary
 sc/CppunitTest_sc_filters_test.mk               |   14 
 sc/CppunitTest_sc_macros_test.mk                |    2 
 sc/CppunitTest_sc_subsequent_filters_test.mk    |  155 +++++
 sc/CppunitTest_sc_unoapi_xcellrangesquery.mk    |  141 -----
 sc/CppunitTest_sc_xcellrangesquery.mk           |  141 +++++
 sc/Module_sc.mk                                 |    3 
 sc/qa/extras/macros-test.cxx                    |  223 ++++++++
 sc/qa/extras/testdocuments/xcellrangesquery.ods |binary
 sc/qa/extras/xcellrangesquery.cxx               |  181 ++++++
 sc/qa/unit/filters-test.cxx                     |  324 ------------
 sc/qa/unit/macros-test.cxx                      |  223 --------
 sc/qa/unit/subsequent_filters-test.cxx          |  627 ++++++++++++++++++++++++
 sc/qa/unoapi/xcellrangesquery.cxx               |  179 ------
 test/source/unoapi_test.cxx                     |    2 
 15 files changed, 1332 insertions(+), 883 deletions(-)

New commits:
commit 4e23a821d3f5b409a33837e9a0b9ea2e1cd65bec
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Wed Nov 30 23:24:43 2011 +0100

    split sc's filters-test into in-build and subsequent tests
    
    only testContent and the ods range name test remain in-build, everything
    else is now a subsequenttest
    if needed the subsequent_filters-test can be moved to an in-build test
    in Module_sc.mk

diff --git a/sc/CppunitTest_sc_filters_test.mk b/sc/CppunitTest_sc_filters_test.mk
index 9fcdf9d..59de35f 100644
--- a/sc/CppunitTest_sc_filters_test.mk
+++ b/sc/CppunitTest_sc_filters_test.mk
@@ -115,22 +115,8 @@ $(eval $(call gb_CppunitTest_add_components,sc_filters_test,\
     unotools/util/utl \
     unoxml/source/rdf/unordf \
     unoxml/source/service/unoxml \
-    xmlsecurity/util/xsec_fw \
-    xmlsecurity/util/xmlsecurity \
 ))
 
-ifeq ($(ENABLE_XMLSEC),YES)
-ifeq ($(OS),WNT)
-$(eval $(call gb_CppunitTest_add_components,sc_filters_test,\
-    xmlsecurity/util/xsec_xmlsec.windows \
-))
-else
-$(eval $(call gb_CppunitTest_add_components,sc_filters_test,\
-    xmlsecurity/util/xsec_xmlsec \
-))
-endif
-endif
-
 $(eval $(call gb_CppunitTest_add_old_components,sc_filters_test,\
 	embobj \
     configmgr \
diff --git a/sc/CppunitTest_sc_subsequent_filters_test.mk b/sc/CppunitTest_sc_subsequent_filters_test.mk
new file mode 100644
index 0000000..31c2eaf
--- /dev/null
+++ b/sc/CppunitTest_sc_subsequent_filters_test.mk
@@ -0,0 +1,155 @@
+# -*- 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
+#       Caolán McNamara, Red Hat, Inc. <caolanm at redhat.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_subsequent_filters_test))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sc_subsequent_filters_test, \
+    sc/qa/unit/subsequent_filters-test \
+))
+
+$(eval $(call gb_CppunitTest_add_linked_libs,sc_subsequent_filters_test, \
+    avmedia \
+    basegfx \
+    comphelper \
+    cppu \
+    cppuhelper \
+    drawinglayer \
+    editeng \
+    fileacc \
+    for \
+    forui \
+    i18nisolang1 \
+    msfilter \
+    oox \
+    sal \
+    salhelper \
+    sax \
+    sc \
+    sfx \
+    sot \
+    svl \
+    svt \
+    svx \
+    svxcore \
+	test \
+    tl \
+    tk \
+    ucbhelper \
+	unotest \
+    utl \
+    vcl \
+    xo \
+	$(gb_STDLIBS) \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sc_subsequent_filters_test,\
+    -I$(realpath $(SRCDIR)/sc/source/ui/inc) \
+    -I$(realpath $(SRCDIR)/sc/inc) \
+    $$(INCLUDE) \
+    -I$(OUTDIR)/inc \
+))
+
+$(eval $(call gb_CppunitTest_add_api,sc_subsequent_filters_test,\
+    offapi \
+    udkapi \
+))
+
+$(eval $(call gb_CppunitTest_uses_ure,sc_subsequent_filters_test))
+
+$(eval $(call gb_CppunitTest_add_type_rdbs,sc_subsequent_filters_test,\
+    types \
+))
+
+$(eval $(call gb_CppunitTest_add_components,sc_subsequent_filters_test,\
+    chart2/source/controller/chartcontroller \
+    chart2/source/tools/charttools \
+    chart2/source/model/chartmodel \
+    comphelper/util/comphelp \
+    dbaccess/util/dba \
+    eventattacher/source/evtatt \
+    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/scfilt \
+    scaddins/source/analysis/analysis \
+    scaddins/source/datefunc/date \
+    sfx2/util/sfx \
+    sot/util/sot \
+    svl/util/svl \
+    toolkit/util/tk \
+    unotools/util/utl \
+    unoxml/source/rdf/unordf \
+    unoxml/source/service/unoxml \
+    xmlsecurity/util/xsec_fw \
+    xmlsecurity/util/xmlsecurity \
+))
+
+ifeq ($(ENABLE_XMLSEC),YES)
+ifeq ($(OS),WNT)
+$(eval $(call gb_CppunitTest_add_components,sc_subsequent_filters_test,\
+    xmlsecurity/util/xsec_xmlsec.windows \
+))
+else
+$(eval $(call gb_CppunitTest_add_components,sc_subsequent_filters_test,\
+    xmlsecurity/util/xsec_xmlsec \
+))
+endif
+endif
+
+$(eval $(call gb_CppunitTest_add_old_components,sc_subsequent_filters_test,\
+	embobj \
+    configmgr \
+    ucb1 \
+    ucpfile1 \
+    ucptdoc1 \
+))
+
+$(eval $(call gb_CppunitTest_set_args,sc_subsequent_filters_test,\
+    --headless \
+    --protector unoexceptionprotector$(gb_Library_DLLEXT) unoexceptionprotector \
+    "-env:CONFIGURATION_LAYERS=xcsxcu:$(call gb_CppunitTarget__make_url,$(OUTDIR)/xml/registry) module:$(call gb_CppunitTarget__make_url,$(OUTDIR)/xml/registry/spool)" \
+))
+    # .../spool is required for the (somewhat strange) filter configuration
+
+# we need to
+# a) explicitly depend on library msword because it is not implied by a link
+#    relation
+# b) explicitly depend on the sc resource files needed at unit-test runtime
+$(call gb_CppunitTest_get_target,sc_subsequent_filters_test) : $(call gb_Library_get_target,scfilt) $(WORKDIR)/AllLangRes/sc
+
+# vim: set noet sw=4 ts=4:
diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk
index eb85591..1cbbc72 100644
--- a/sc/Module_sc.mk
+++ b/sc/Module_sc.mk
@@ -42,6 +42,7 @@ $(eval $(call gb_Module_add_check_targets,sc,\
 $(eval $(call gb_Module_add_subsequentcheck_targets,sc,\
     CppunitTest_sc_macros_test \
     CppunitTest_sc_xcellrangesquery \
+    CppunitTest_sc_subsequent_filters_test \
     JunitTest_sc_complex \
     JunitTest_sc_unoapi \
 ))
diff --git a/sc/qa/unit/filters-test.cxx b/sc/qa/unit/filters-test.cxx
index 7fb1d5e..bffb4f6 100644
--- a/sc/qa/unit/filters-test.cxx
+++ b/sc/qa/unit/filters-test.cxx
@@ -39,9 +39,6 @@
 #include <sfx2/sfxmodelfactory.hxx>
 #include <svl/stritem.hxx>
 
-#include <editeng/brshitem.hxx>
-#include <editeng/justifyitem.hxx>
-
 #define CALC_DEBUG_OUTPUT 0
 #define TEST_BUG_FILES 0
 
@@ -114,31 +111,6 @@ void testFile(rtl::OUString& aFileName, ScDocument* pDoc, SCTAB nTab, StringType
     }
 }
 
-//need own handler because conditional formatting strings must be generated
-void testCondFile(rtl::OUString& aFileName, ScDocument* pDoc, SCTAB nTab)
-{
-    conditional_format_handler aHandler(pDoc, nTab);
-    orcus::csv_parser_config aConfig;
-    aConfig.delimiters.push_back(',');
-    aConfig.delimiters.push_back(';');
-    aConfig.text_qualifier = '"';
-    std::string aContent;
-    loadFile(aFileName, aContent);
-    orcus::csv_parser<conditional_format_handler> parser ( &aContent[0], aContent.size() , aHandler, aConfig);
-    try
-    {
-        parser.parse();
-    }
-    catch (const orcus::csv_parse_error& e)
-    {
-        std::cout << "reading csv content file failed: " << e.what() << std::endl;
-        rtl::OStringBuffer aErrorMsg("csv parser error: ");
-        aErrorMsg.append(e.what());
-        CPPUNIT_ASSERT_MESSAGE(aErrorMsg.getStr(), false);
-    }
-
-}
-
 }
 
 /* Implementation of Filters test */
@@ -168,16 +140,6 @@ public:
     //ods, xls, xlsx filter tests
     void testRangeName();
     void testContent();
-    void testFunctions();
-    void testDatabaseRanges();
-    void testFormats();
-    void testMatrix();
-    void testBugFixesODS();
-    void testBugFixesXLS();
-    void testBugFixesXLSX();
-
-    //misc tests unrelated to the import filters
-    void testPassword();
 
 #if TEST_BUG_FILES
     //goes recursively through all files in this dir and tries to open them
@@ -192,18 +154,6 @@ public:
     CPPUNIT_TEST(testCVEs);
     CPPUNIT_TEST(testRangeName);
     CPPUNIT_TEST(testContent);
-    CPPUNIT_TEST(testFunctions);
-    CPPUNIT_TEST(testDatabaseRanges);
-    CPPUNIT_TEST(testFormats);
-    CPPUNIT_TEST(testMatrix);
-    CPPUNIT_TEST(testBugFixesODS);
-    CPPUNIT_TEST(testBugFixesXLS);
-    CPPUNIT_TEST(testBugFixesXLSX);
-    //disable testPassword on MacOSX due to problems with libsqlite3
-    //also crashes on DragonFly due to problems with nss/nspr headers
-#if !defined(MACOSX) && !defined(DRAGONFLY)
-    CPPUNIT_TEST(testPassword);
-#endif
 
 #if TEST_BUG_FILES
     CPPUNIT_TEST(testBugFiles);
@@ -372,7 +322,7 @@ void ScFiltersTest::testRangeName()
 {
     const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("named-ranges-global."));
     //XLSX does not work yet
-    for (sal_uInt32 i = 0; i < 3; ++i)
+    for (sal_uInt32 i = 0; i < 1; ++i)
     {
         rtl::OUString aFileExtension(aFileFormats[i].pName, strlen(aFileFormats[i].pName), RTL_TEXTENCODING_UTF8 );
         rtl::OUString aFilterName(aFileFormats[i].pFilterName, strlen(aFileFormats[i].pFilterName), RTL_TEXTENCODING_UTF8) ;
@@ -451,278 +401,6 @@ void ScFiltersTest::testContent()
     }
 }
 
-void ScFiltersTest::testFunctions()
-{
-    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("functions."));
-    rtl::OUString aFileExtension(aFileFormats[0].pName, strlen(aFileFormats[0].pName), RTL_TEXTENCODING_UTF8 );
-    rtl::OUString aFilterName(aFileFormats[0].pFilterName, strlen(aFileFormats[0].pFilterName), RTL_TEXTENCODING_UTF8) ;
-    rtl::OUString aFileName;
-    createFileURL(aFileNameBase, aFileExtension, aFileName);
-    rtl::OUString aFilterType(aFileFormats[0].pTypeName, strlen(aFileFormats[0].pTypeName), RTL_TEXTENCODING_UTF8);
-    std::cout << aFileFormats[0].pName << " Test" << std::endl;
-    ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[0].nFormatType);
-    xDocSh->DoHardRecalc(true);
-
-    CPPUNIT_ASSERT_MESSAGE("Failed to load functions.*", xDocSh.Is());
-    ScDocument* pDoc = xDocSh->GetDocument();
-    rtl::OUString aCSVFileName;
-
-    //test logical functions
-    createCSVPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("logical-functions.")), aCSVFileName);
-    testFile(aCSVFileName, pDoc, 0);
-    //test spreadsheet functions
-    createCSVPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("spreadsheet-functions.")), aCSVFileName);
-    testFile(aCSVFileName, pDoc, 1);
-    //test mathematical functions
-    createCSVPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("mathematical-functions.")), aCSVFileName);
-    testFile(aCSVFileName, pDoc, 2, PureString);
-    //test informations functions
-    createCSVPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("information-functions.")), aCSVFileName);
-    testFile(aCSVFileName, pDoc, 3);
-
-    xDocSh->DoClose();
-}
-
-void ScFiltersTest::testDatabaseRanges()
-{
-    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("database."));
-    rtl::OUString aFileExtension(aFileFormats[0].pName, strlen(aFileFormats[0].pName), RTL_TEXTENCODING_UTF8 );
-    rtl::OUString aFilterName(aFileFormats[0].pFilterName, strlen(aFileFormats[0].pFilterName), RTL_TEXTENCODING_UTF8) ;
-    rtl::OUString aFileName;
-    createFileURL(aFileNameBase, aFileExtension, aFileName);
-    rtl::OUString aFilterType(aFileFormats[0].pTypeName, strlen(aFileFormats[0].pTypeName), RTL_TEXTENCODING_UTF8);
-    std::cout << aFileFormats[0].pName << " Test" << std::endl;
-    ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[0].nFormatType);
-    xDocSh->DoHardRecalc(true);
-
-    CPPUNIT_ASSERT_MESSAGE("Failed to load database.*", xDocSh.Is());
-    ScDocument* pDoc = xDocSh->GetDocument();
-    ScDBCollection* pDBCollection = pDoc->GetDBCollection();
-    CPPUNIT_ASSERT_MESSAGE("no database collection", pDBCollection);
-
-    ScDBData* pAnonDBData = pDoc->GetAnonymousDBData(0);
-    CPPUNIT_ASSERT_MESSAGE("missing anonymous DB data in sheet 1", pAnonDBData);
-    //control hidden rows
-    bool bHidden;
-    SCROW nRow1, nRow2;
-    bHidden = pDoc->RowHidden(0, 0, &nRow1, &nRow2);
-    CPPUNIT_ASSERT_MESSAGE("Sheet1: row 0 should be visible", !bHidden && nRow1 == 0 && nRow2 == 0);
-    bHidden = pDoc->RowHidden(1, 0, &nRow1, &nRow2);
-    CPPUNIT_ASSERT_MESSAGE("Sheet1: rows 1-2 should be hidden", bHidden && nRow1 == 1 && nRow2 == 2);
-    bHidden = pDoc->RowHidden(3, 0, &nRow1, &nRow2);
-    CPPUNIT_ASSERT_MESSAGE("Sheet1: row 3 should be visible", !bHidden && nRow1 == 3 && nRow2 == 3);
-    bHidden = pDoc->RowHidden(4, 0, &nRow1, &nRow2);
-    CPPUNIT_ASSERT_MESSAGE("Sheet1: row 4-5 should be hidden", bHidden && nRow1 == 4 && nRow2 == 5);
-    bHidden = pDoc->RowHidden(6, 0, &nRow1, &nRow2);
-    CPPUNIT_ASSERT_MESSAGE("Sheet1: row 6-end should be visible", !bHidden && nRow1 == 6 && nRow2 == MAXROW);
-    double aValue;
-    pDoc->GetValue(0,10,1, aValue);
-    rtl::OUString aString;
-    pDoc->GetFormula(0,10,1,aString);
-    rtl::OString aOString;
-    aOString = rtl::OUStringToOString(aString, RTL_TEXTENCODING_UTF8);
-    CPPUNIT_ASSERT_MESSAGE("Sheet2: A11: formula result is incorrect", aValue == 4);
-    pDoc->GetValue(1, 10, 1, aValue);
-    CPPUNIT_ASSERT_MESSAGE("Sheet2: B11: formula result is incorrect", aValue == 2);
-    xDocSh->DoClose();
-}
-
-void ScFiltersTest::testFormats()
-{
-    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("formats."));
-    for(int i = 0; i < 3; ++i)
-    {
-        rtl::OUString aFileExtension(aFileFormats[i].pName, strlen(aFileFormats[i].pName), RTL_TEXTENCODING_UTF8 );
-        rtl::OUString aFilterName(aFileFormats[i].pFilterName, strlen(aFileFormats[i].pFilterName), RTL_TEXTENCODING_UTF8) ;
-        rtl::OUString aFileName;
-        createFileURL(aFileNameBase, aFileExtension, aFileName);
-        rtl::OUString aFilterType(aFileFormats[i].pTypeName, strlen(aFileFormats[i].pTypeName), RTL_TEXTENCODING_UTF8);
-        std::cout << aFileFormats[i].pName << " Test" << std::endl;
-        ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[i].nFormatType);
-        xDocSh->DoHardRecalc(true);
-
-        CPPUNIT_ASSERT_MESSAGE("Failed to load formats.*", xDocSh.Is());
-        ScDocument* pDoc = xDocSh->GetDocument();
-
-        //test Sheet1 with csv file
-        rtl::OUString aCSVFileName;
-        createCSVPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("numberFormat.")), aCSVFileName);
-        testFile(aCSVFileName, pDoc, 0, PureString);
-        //need to test the color of B3
-        //it's not a font color!
-        //formatting for B5: # ??/100 gets lost during import
-
-        //test Sheet2
-        const ScPatternAttr* pPattern = NULL;
-        pPattern = pDoc->GetPattern(0,0,1);
-        Font aFont;
-        pPattern->GetFont(aFont,SC_AUTOCOL_RAW);
-        CPPUNIT_ASSERT_MESSAGE("font size should be 10", aFont.GetSize().getHeight() == 200);
-        CPPUNIT_ASSERT_MESSAGE("font color should be black", aFont.GetColor() == COL_AUTO);
-        pPattern = pDoc->GetPattern(0,1,1);
-        pPattern->GetFont(aFont, SC_AUTOCOL_RAW);
-        CPPUNIT_ASSERT_MESSAGE("font size should be 12", aFont.GetSize().getHeight() == 240);
-        pPattern = pDoc->GetPattern(0,2,1);
-        pPattern->GetFont(aFont, SC_AUTOCOL_RAW);
-        CPPUNIT_ASSERT_MESSAGE("font should be italic",aFont.GetItalic() == ITALIC_NORMAL);
-        pPattern = pDoc->GetPattern(0,4,1);
-        pPattern->GetFont(aFont, SC_AUTOCOL_RAW);
-        CPPUNIT_ASSERT_MESSAGE("font should be bold",aFont.GetWeight() == WEIGHT_BOLD );
-        pPattern = pDoc->GetPattern(1,0,1);
-        pPattern->GetFont(aFont, SC_AUTOCOL_RAW);
-        CPPUNIT_ASSERT_MESSAGE("font should be blue", aFont.GetColor() == COL_BLUE );
-        pPattern = pDoc->GetPattern(1,1,1);
-        pPattern->GetFont(aFont, SC_AUTOCOL_RAW);
-        CPPUNIT_ASSERT_MESSAGE("font should be striked out with a single line", aFont.GetStrikeout() == STRIKEOUT_SINGLE );
-        //test double strikeout only for ods
-        if (i == ODS)
-        {
-            pPattern = pDoc->GetPattern(1,2,1);
-            pPattern->GetFont(aFont, SC_AUTOCOL_RAW);
-            CPPUNIT_ASSERT_MESSAGE("font should be striked out with a double line", aFont.GetStrikeout() == STRIKEOUT_DOUBLE );
-            pPattern = pDoc->GetPattern(1,3,1);
-            pPattern->GetFont(aFont, SC_AUTOCOL_RAW);
-            CPPUNIT_ASSERT_MESSAGE("font should be underlined with a dotted line", aFont.GetUnderline() == UNDERLINE_DOTTED);
-        }
-        pPattern = pDoc->GetPattern(1,4,1);
-        Color aColor = static_cast<const SvxBrushItem&>(pPattern->GetItem(ATTR_BACKGROUND)).GetColor();
-        CPPUNIT_ASSERT_MESSAGE("background color should be green", aColor == COL_LIGHTGREEN);
-        pPattern = pDoc->GetPattern(2,0,1);
-        SvxCellHorJustify eHorJustify = static_cast<SvxCellHorJustify>(static_cast<const SvxHorJustifyItem&>(pPattern->GetItem(ATTR_HOR_JUSTIFY)).GetValue());
-        CPPUNIT_ASSERT_MESSAGE("cell content should be aligned centre horizontally", eHorJustify == SVX_HOR_JUSTIFY_CENTER);
-        //test alignment
-        pPattern = pDoc->GetPattern(2,1,1);
-        eHorJustify = static_cast<SvxCellHorJustify>(static_cast<const SvxHorJustifyItem&>(pPattern->GetItem(ATTR_HOR_JUSTIFY)).GetValue());
-        CPPUNIT_ASSERT_MESSAGE("cell content should be aligned right horizontally", eHorJustify == SVX_HOR_JUSTIFY_RIGHT);
-        pPattern = pDoc->GetPattern(2,2,1);
-        eHorJustify = static_cast<SvxCellHorJustify>(static_cast<const SvxHorJustifyItem&>(pPattern->GetItem(ATTR_HOR_JUSTIFY)).GetValue());
-        CPPUNIT_ASSERT_MESSAGE("cell content should be aligned block horizontally", eHorJustify == SVX_HOR_JUSTIFY_BLOCK);
-
-        //test Sheet3 only for ods
-        if ( i == ODS )
-        {
-            rtl::OUString aCondString = getConditionalFormatString(pDoc, 3,0,2);
-            createCSVPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("conditionalFormatting.")), aCSVFileName);
-            testCondFile(aCSVFileName, pDoc, 2);
-        }
-        xDocSh->DoClose();
-    }
-}
-
-void ScFiltersTest::testMatrix()
-{
-    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("matrix."));
-    for (int i = 0; i < 2; ++i)
-    {
-        rtl::OUString aFileExtension(aFileFormats[1].pName, strlen(aFileFormats[1].pName), RTL_TEXTENCODING_UTF8 );
-        rtl::OUString aFilterName(aFileFormats[1].pFilterName, strlen(aFileFormats[1].pFilterName), RTL_TEXTENCODING_UTF8) ;
-        rtl::OUString aFileName;
-        createFileURL(aFileNameBase, aFileExtension, aFileName);
-        rtl::OUString aFilterType(aFileFormats[1].pTypeName, strlen(aFileFormats[1].pTypeName), RTL_TEXTENCODING_UTF8);
-        std::cout << aFileFormats[1].pName << " Test" << std::endl;
-        ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[1].nFormatType);
-
-        CPPUNIT_ASSERT_MESSAGE("Failed to load matrix.*", xDocSh.Is());
-        ScDocument* pDoc = xDocSh->GetDocument();
-
-        rtl::OUString aCSVFileName;
-        createCSVPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("matrix.")), aCSVFileName);
-        testFile(aCSVFileName, pDoc, 0);
-
-        xDocSh->DoClose();
-    }
-}
-
-void ScFiltersTest::testBugFixesODS()
-{
-    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("bug-fixes."));
-    rtl::OUString aFileExtension(aFileFormats[0].pName, strlen(aFileFormats[0].pName), RTL_TEXTENCODING_UTF8 );
-    rtl::OUString aFilterName(aFileFormats[0].pFilterName, strlen(aFileFormats[0].pFilterName), RTL_TEXTENCODING_UTF8) ;
-    rtl::OUString aFileName;
-    createFileURL(aFileNameBase, aFileExtension, aFileName);
-    rtl::OUString aFilterType(aFileFormats[0].pTypeName, strlen(aFileFormats[0].pTypeName), RTL_TEXTENCODING_UTF8);
-    std::cout << aFileFormats[0].pName << " Test" << std::endl;
-    ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[0].nFormatType);
-
-    CPPUNIT_ASSERT_MESSAGE("Failed to load bugFixes.ods", xDocSh.Is());
-    ScDocument* pDoc = xDocSh->GetDocument();
-
-    rtl::OUString aCSVFileName;
-    createCSVPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("bugFix_Sheet2.")), aCSVFileName);
-    testFile(aCSVFileName, pDoc, 1);
-
-    xDocSh->DoClose();
-}
-
-void ScFiltersTest::testBugFixesXLS()
-{
-    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("bug-fixes."));
-    rtl::OUString aFileExtension(aFileFormats[1].pName, strlen(aFileFormats[1].pName), RTL_TEXTENCODING_UTF8 );
-    rtl::OUString aFilterName(aFileFormats[1].pFilterName, strlen(aFileFormats[1].pFilterName), RTL_TEXTENCODING_UTF8) ;
-    rtl::OUString aFileName;
-    createFileURL(aFileNameBase, aFileExtension, aFileName);
-    rtl::OUString aFilterType(aFileFormats[1].pTypeName, strlen(aFileFormats[1].pTypeName), RTL_TEXTENCODING_UTF8);
-    std::cout << aFileFormats[1].pName << " Test" << std::endl;
-    ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[1].nFormatType);
-
-    CPPUNIT_ASSERT_MESSAGE("Failed to load bugFixes.xls", xDocSh.Is());
-    ScDocument* pDoc = xDocSh->GetDocument();
-    CPPUNIT_ASSERT_MESSAGE("No Document", pDoc); //remove with first test
-    xDocSh->DoClose();
-}
-
-void ScFiltersTest::testBugFixesXLSX()
-{
-    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("bug-fixes."));
-    rtl::OUString aFileExtension(aFileFormats[2].pName, strlen(aFileFormats[2].pName), RTL_TEXTENCODING_UTF8 );
-    rtl::OUString aFilterName(aFileFormats[2].pFilterName, strlen(aFileFormats[2].pFilterName), RTL_TEXTENCODING_UTF8) ;
-    rtl::OUString aFileName;
-    createFileURL(aFileNameBase, aFileExtension, aFileName);
-    rtl::OUString aFilterType(aFileFormats[2].pTypeName, strlen(aFileFormats[2].pTypeName), RTL_TEXTENCODING_UTF8);
-    std::cout << aFileFormats[2].pName << " Test" << std::endl;
-    ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[2].nFormatType);
-
-    CPPUNIT_ASSERT_MESSAGE("Failed to load bugFixes.xlsx", xDocSh.Is());
-    ScDocument* pDoc = xDocSh->GetDocument();
-    CPPUNIT_ASSERT_MESSAGE("No Document", pDoc); //remove with first test
-    xDocSh->DoClose();
-}
-
-void ScFiltersTest::testPassword()
-{
-    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("password."));
-    rtl::OUString aFileExtension(aFileFormats[0].pName, strlen(aFileFormats[0].pName), RTL_TEXTENCODING_UTF8 );
-    rtl::OUString aFilterName(aFileFormats[0].pFilterName, strlen(aFileFormats[0].pFilterName), RTL_TEXTENCODING_UTF8) ;
-    rtl::OUString aFileName;
-    createFileURL(aFileNameBase, aFileExtension, aFileName);
-    rtl::OUString aFilterType(aFileFormats[0].pTypeName, strlen(aFileFormats[0].pTypeName), RTL_TEXTENCODING_UTF8);
-    std::cout << aFileFormats[0].pName << " Test" << std::endl;
-
-    sal_uInt32 nFormat = SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS;
-    SfxFilter* aFilter = new SfxFilter(
-        aFilterName,
-        rtl::OUString(), aFileFormats[0].nFormatType, nFormat, aFilterType, 0, rtl::OUString(),
-        rtl::OUString(), rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/scalc*")) );
-    aFilter->SetVersion(SOFFICE_FILEFORMAT_CURRENT);
-
-    ScDocShellRef xDocSh = new ScDocShell;
-    SfxMedium* pMedium = new SfxMedium(aFileName, STREAM_STD_READWRITE, true);
-    SfxItemSet* pSet = pMedium->GetItemSet();
-    pSet->Put(SfxStringItem(SID_PASSWORD, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("test"))));
-    pMedium->SetFilter(aFilter);
-    if (!xDocSh->DoLoad(pMedium))
-    {
-        xDocSh->DoClose();
-        // load failed.
-        xDocSh.Clear();
-    }
-
-    CPPUNIT_ASSERT_MESSAGE("Failed to load password.ods", xDocSh.Is());
-    ScDocument* pDoc = xDocSh->GetDocument();
-    CPPUNIT_ASSERT_MESSAGE("No Document", pDoc); //remove with first test
-    xDocSh->DoClose();
-}
-
 ScFiltersTest::ScFiltersTest()
       : m_aBaseString(RTL_CONSTASCII_USTRINGPARAM("/sc/qa/unit/data"))
 {
diff --git a/sc/qa/unit/subsequent_filters-test.cxx b/sc/qa/unit/subsequent_filters-test.cxx
new file mode 100644
index 0000000..0c4ac4f
--- /dev/null
+++ b/sc/qa/unit/subsequent_filters-test.cxx
@@ -0,0 +1,627 @@
+/* -*- 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. 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
+ *       Caolán McNamara <caolanm at redhat.com>
+ * Portions created by the Initial Developer are Copyright (C) 2011 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Caolán McNamara <caolanm at redhat.com>
+ *
+ * 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 <sal/config.h>
+#include <unotest/filters-test.hxx>
+#include <test/bootstrapfixture.hxx>
+#include <rtl/strbuf.hxx>
+#include <osl/file.hxx>
+
+#include <sfx2/app.hxx>
+#include <sfx2/docfilt.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/sfxmodelfactory.hxx>
+#include <svl/stritem.hxx>
+
+#include <editeng/brshitem.hxx>
+#include <editeng/justifyitem.hxx>
+
+#define CALC_DEBUG_OUTPUT 0
+#define TEST_BUG_FILES 0
+
+#include "helper/csv_handler.hxx"
+#include "helper/debughelper.hxx"
+#include "orcus/csv_parser.hpp"
+#include <fstream>
+#include <string>
+#include <sstream>
+
+#define ODS_FORMAT_TYPE 50331943
+#define XLS_FORMAT_TYPE 318767171
+#define XLSX_FORMAT_TYPE 268959811
+
+#define ODS     0
+#define XLS     1
+#define XLSX    2
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+namespace {
+
+struct FileFormat {
+    const char* pName; const char* pFilterName; const char* pTypeName; sal_uLong nFormatType;
+};
+
+FileFormat aFileFormats[] = {
+    { "ods" , "calc8", "", ODS_FORMAT_TYPE },
+    { "xls" , "MS Excel 97", "calc_MS_EXCEL_97", XLS_FORMAT_TYPE },
+    { "xlsx", "Calc MS Excel 2007 XML" , "MS Excel 2007 XML", XLSX_FORMAT_TYPE }
+};
+
+void loadFile(const rtl::OUString& aFileName, std::string& aContent)
+{
+    rtl::OString aOFileName = rtl::OUStringToOString(aFileName, RTL_TEXTENCODING_UTF8);
+    std::ifstream aFile(aOFileName.getStr());
+
+    rtl::OStringBuffer aErrorMsg("Could not open csv file: ");
+    aErrorMsg.append(aOFileName);
+    CPPUNIT_ASSERT_MESSAGE(aErrorMsg.getStr(), aFile);
+    std::ostringstream aOStream;
+    aOStream << aFile.rdbuf();
+    aFile.close();
+    aContent = aOStream.str();
+}
+
+void testFile(rtl::OUString& aFileName, ScDocument* pDoc, SCTAB nTab, StringType aStringFormat = StringValue)
+{
+    csv_handler aHandler(pDoc, nTab, aStringFormat);
+    orcus::csv_parser_config aConfig;
+    aConfig.delimiters.push_back(',');
+    aConfig.delimiters.push_back(';');
+    aConfig.text_qualifier = '"';
+
+
+    std::string aContent;
+    loadFile(aFileName, aContent);
+    orcus::csv_parser<csv_handler> parser ( &aContent[0], aContent.size() , aHandler, aConfig);
+    try
+    {
+        parser.parse();
+    }
+    catch (const orcus::csv_parse_error& e)
+    {
+        std::cout << "reading csv content file failed: " << e.what() << std::endl;
+        rtl::OStringBuffer aErrorMsg("csv parser error: ");
+        aErrorMsg.append(e.what());
+        CPPUNIT_ASSERT_MESSAGE(aErrorMsg.getStr(), false);
+    }
+}
+
+//need own handler because conditional formatting strings must be generated
+void testCondFile(rtl::OUString& aFileName, ScDocument* pDoc, SCTAB nTab)
+{
+    conditional_format_handler aHandler(pDoc, nTab);
+    orcus::csv_parser_config aConfig;
+    aConfig.delimiters.push_back(',');
+    aConfig.delimiters.push_back(';');
+    aConfig.text_qualifier = '"';
+    std::string aContent;
+    loadFile(aFileName, aContent);
+    orcus::csv_parser<conditional_format_handler> parser ( &aContent[0], aContent.size() , aHandler, aConfig);
+    try
+    {
+        parser.parse();
+    }
+    catch (const orcus::csv_parse_error& e)
+    {
+        std::cout << "reading csv content file failed: " << e.what() << std::endl;
+        rtl::OStringBuffer aErrorMsg("csv parser error: ");
+        aErrorMsg.append(e.what());
+        CPPUNIT_ASSERT_MESSAGE(aErrorMsg.getStr(), false);
+    }
+
+}
+
+}
+
+/* Implementation of Filters test */
+
+class ScFiltersTest
+    : public test::FiltersTest
+    , public test::BootstrapFixture
+{
+public:
+    ScFiltersTest();
+
+    virtual bool load(const rtl::OUString &rFilter, const rtl::OUString &rURL, const rtl::OUString &rUserData);
+    ScDocShellRef load(const rtl::OUString &rFilter, const rtl::OUString &rURL,
+        const rtl::OUString &rUserData, const rtl::OUString& rTypeName, sal_uLong nFormatType=0);
+
+    void createFileURL(const rtl::OUString& aFileBase, const rtl::OUString& aFileExtension, rtl::OUString& rFilePath);
+    void createCSVPath(const rtl::OUString& aFileBase, rtl::OUString& rFilePath);
+
+    virtual void setUp();
+    virtual void tearDown();
+
+    /**
+     * Ensure CVEs remain unbroken
+     */
+    void testCVEs();
+
+    //ods, xls, xlsx filter tests
+    void testRangeName();
+    void testFunctions();
+    void testDatabaseRanges();
+    void testFormats();
+    void testMatrix();
+    void testBugFixesODS();
+    void testBugFixesXLS();
+    void testBugFixesXLSX();
+
+    //misc tests unrelated to the import filters
+    void testPassword();
+
+    CPPUNIT_TEST_SUITE(ScFiltersTest);
+    CPPUNIT_TEST(testCVEs);
+    CPPUNIT_TEST(testRangeName);
+    CPPUNIT_TEST(testFunctions);
+    CPPUNIT_TEST(testDatabaseRanges);
+    CPPUNIT_TEST(testFormats);
+    CPPUNIT_TEST(testMatrix);
+    CPPUNIT_TEST(testBugFixesODS);
+    CPPUNIT_TEST(testBugFixesXLS);
+    CPPUNIT_TEST(testBugFixesXLSX);
+    //disable testPassword on MacOSX due to problems with libsqlite3
+    //also crashes on DragonFly due to problems with nss/nspr headers
+#if !defined(MACOSX) && !defined(DRAGONFLY)
+    CPPUNIT_TEST(testPassword);
+#endif
+
+#if TEST_BUG_FILES
+    CPPUNIT_TEST(testBugFiles);
+    CPPUNIT_TEST(testBugFilesXLS);
+    CPPUNIT_TEST(testBugFilesXLSX);
+#endif
+    CPPUNIT_TEST_SUITE_END();
+
+private:
+    uno::Reference<uno::XInterface> m_xCalcComponent;
+    ::rtl::OUString m_aBaseString;
+};
+
+ScDocShellRef ScFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL,
+    const rtl::OUString &rUserData, const rtl::OUString& rTypeName, sal_uLong nFormatType)
+{
+    sal_uInt32 nFormat = 0;
+    if (nFormatType)
+        nFormat = SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS;
+    SfxFilter* aFilter = new SfxFilter(
+        rFilter,
+        rtl::OUString(), nFormatType, nFormat, rTypeName, 0, rtl::OUString(),
+        rUserData, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/scalc*")) );
+    aFilter->SetVersion(SOFFICE_FILEFORMAT_CURRENT);
+
+    ScDocShellRef xDocShRef = new ScDocShell;
+    SfxMedium* pSrcMed = new SfxMedium(rURL, STREAM_STD_READ, true);
+    pSrcMed->SetFilter(aFilter);
+    if (!xDocShRef->DoLoad(pSrcMed))
+    {
+        xDocShRef->DoClose();
+        // load failed.
+        xDocShRef.Clear();
+    }
+
+    return xDocShRef;
+}
+
+bool ScFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL,
+    const rtl::OUString &rUserData)
+{
+    ScDocShellRef xDocShRef = load(rFilter, rURL, rUserData, rtl::OUString());
+    bool bLoaded = xDocShRef.Is();
+    //reference counting of ScDocShellRef is very confused.
+    if (bLoaded)
+        xDocShRef->DoClose();
+    return bLoaded;
+}
+
+void ScFiltersTest::createFileURL(const rtl::OUString& aFileBase, const rtl::OUString& aFileExtension, rtl::OUString& rFilePath)
+{
+    rtl::OUString aSep(RTL_CONSTASCII_USTRINGPARAM("/"));
+    rtl::OUStringBuffer aBuffer( getSrcRootURL() );
+    aBuffer.append(m_aBaseString).append(aSep).append(aFileExtension);
+    aBuffer.append(aSep).append(aFileBase).append(aFileExtension);
+    rFilePath = aBuffer.makeStringAndClear();
+}
+
+void ScFiltersTest::createCSVPath(const rtl::OUString& aFileBase, rtl::OUString& rCSVPath)
+{
+    rtl::OUStringBuffer aBuffer(getSrcRootPath());
+    aBuffer.append(m_aBaseString).append(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/contentCSV/")));
+    aBuffer.append(aFileBase).append(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("csv")));
+    rCSVPath = aBuffer.makeStringAndClear();
+}
+
+void ScFiltersTest::testCVEs()
+{
+    testDir(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Quattro Pro 6.0")),
+        getURLFromSrc("/sc/qa/unit/data/qpro/"), rtl::OUString());
+
+    //warning, the current "sylk filter" in sc (docsh.cxx) automatically
+    //chains on failure on trying as csv, rtf, etc. so "success" may
+    //not indicate that it imported as .slk.
+    testDir(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SYLK")),
+        getURLFromSrc("/sc/qa/unit/data/slk/"), rtl::OUString());
+}
+
+namespace {
+
+void testRangeNameImpl(ScDocument* pDoc)
+{
+    //check one range data per sheet and one global more detailed
+    //add some more checks here
+    ScRangeData* pRangeData = pDoc->GetRangeName()->findByUpperName(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GLOBAL1")));
+    CPPUNIT_ASSERT_MESSAGE("range name Global1 not found", pRangeData);
+    double aValue;
+    pDoc->GetValue(1,0,0,aValue);
+    CPPUNIT_ASSERT_MESSAGE("range name Global1 should reference Sheet1.A1", aValue == 1);
+    pRangeData = pDoc->GetRangeName(0)->findByUpperName(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("LOCAL1")));
+    CPPUNIT_ASSERT_MESSAGE("range name Sheet1.Local1 not found", pRangeData);
+    pDoc->GetValue(1,2,0,aValue);
+    CPPUNIT_ASSERT_MESSAGE("range name Sheet1.Local1 should reference Sheet1.A3", aValue == 3);
+    pRangeData = pDoc->GetRangeName(1)->findByUpperName(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("LOCAL2")));
+    CPPUNIT_ASSERT_MESSAGE("range name Sheet2.Local2 not found", pRangeData);
+    pDoc->GetValue(1,1,1,aValue);
+    CPPUNIT_ASSERT_MESSAGE("range name Sheet2.Local2 should reference Sheet2.A2", aValue == 7);
+    //check for correct results for the remaining formulas
+    pDoc->GetValue(1,1,0, aValue);
+    CPPUNIT_ASSERT_MESSAGE("=global2 should be 2", aValue == 2);
+    pDoc->GetValue(1,3,0, aValue);
+    CPPUNIT_ASSERT_MESSAGE("=local2 should be 4", aValue == 4);
+    pDoc->GetValue(2,0,0, aValue);
+    CPPUNIT_ASSERT_MESSAGE("=SUM(global3) should be 10", aValue == 10);
+    pDoc->GetValue(1,0,1,aValue);
+    CPPUNIT_ASSERT_MESSAGE("range name Sheet2.local1 should reference Sheet1.A5", aValue == 5);
+}
+
+}
+
+void ScFiltersTest::testRangeName()
+{
+    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("named-ranges-global."));
+    //XLSX does not work yet
+    for (sal_uInt32 i = 1; i < 3; ++i)
+    {
+        rtl::OUString aFileExtension(aFileFormats[i].pName, strlen(aFileFormats[i].pName), RTL_TEXTENCODING_UTF8 );
+        rtl::OUString aFilterName(aFileFormats[i].pFilterName, strlen(aFileFormats[i].pFilterName), RTL_TEXTENCODING_UTF8) ;
+        rtl::OUString aFileName;
+        createFileURL( aFileNameBase, aFileExtension, aFileName );
+        rtl::OUString aFilterType(aFileFormats[i].pTypeName, strlen(aFileFormats[i].pTypeName), RTL_TEXTENCODING_UTF8);
+        std::cout << aFileFormats[i].pName << " Test" << std::endl;
+        ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[i].nFormatType);
+        xDocSh->DoHardRecalc(true);
+
+        CPPUNIT_ASSERT_MESSAGE("Failed to load named-ranges-globals.*", xDocSh.Is());
+        ScDocument* pDoc = xDocSh->GetDocument();
+        testRangeNameImpl(pDoc);
+        xDocSh->DoClose();
+    }
+}
+
+void ScFiltersTest::testFunctions()
+{
+    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("functions."));
+    rtl::OUString aFileExtension(aFileFormats[0].pName, strlen(aFileFormats[0].pName), RTL_TEXTENCODING_UTF8 );
+    rtl::OUString aFilterName(aFileFormats[0].pFilterName, strlen(aFileFormats[0].pFilterName), RTL_TEXTENCODING_UTF8) ;
+    rtl::OUString aFileName;
+    createFileURL(aFileNameBase, aFileExtension, aFileName);
+    rtl::OUString aFilterType(aFileFormats[0].pTypeName, strlen(aFileFormats[0].pTypeName), RTL_TEXTENCODING_UTF8);
+    std::cout << aFileFormats[0].pName << " Test" << std::endl;
+    ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[0].nFormatType);
+    xDocSh->DoHardRecalc(true);
+
+    CPPUNIT_ASSERT_MESSAGE("Failed to load functions.*", xDocSh.Is());
+    ScDocument* pDoc = xDocSh->GetDocument();
+    rtl::OUString aCSVFileName;
+
+    //test logical functions
+    createCSVPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("logical-functions.")), aCSVFileName);
+    testFile(aCSVFileName, pDoc, 0);
+    //test spreadsheet functions
+    createCSVPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("spreadsheet-functions.")), aCSVFileName);
+    testFile(aCSVFileName, pDoc, 1);
+    //test mathematical functions
+    createCSVPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("mathematical-functions.")), aCSVFileName);
+    testFile(aCSVFileName, pDoc, 2, PureString);
+    //test informations functions
+    createCSVPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("information-functions.")), aCSVFileName);
+    testFile(aCSVFileName, pDoc, 3);
+
+    xDocSh->DoClose();
+}
+
+void ScFiltersTest::testDatabaseRanges()
+{
+    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("database."));
+    rtl::OUString aFileExtension(aFileFormats[0].pName, strlen(aFileFormats[0].pName), RTL_TEXTENCODING_UTF8 );
+    rtl::OUString aFilterName(aFileFormats[0].pFilterName, strlen(aFileFormats[0].pFilterName), RTL_TEXTENCODING_UTF8) ;
+    rtl::OUString aFileName;
+    createFileURL(aFileNameBase, aFileExtension, aFileName);
+    rtl::OUString aFilterType(aFileFormats[0].pTypeName, strlen(aFileFormats[0].pTypeName), RTL_TEXTENCODING_UTF8);
+    std::cout << aFileFormats[0].pName << " Test" << std::endl;
+    ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[0].nFormatType);
+    xDocSh->DoHardRecalc(true);
+
+    CPPUNIT_ASSERT_MESSAGE("Failed to load database.*", xDocSh.Is());
+    ScDocument* pDoc = xDocSh->GetDocument();
+    ScDBCollection* pDBCollection = pDoc->GetDBCollection();
+    CPPUNIT_ASSERT_MESSAGE("no database collection", pDBCollection);
+
+    ScDBData* pAnonDBData = pDoc->GetAnonymousDBData(0);
+    CPPUNIT_ASSERT_MESSAGE("missing anonymous DB data in sheet 1", pAnonDBData);
+    //control hidden rows
+    bool bHidden;
+    SCROW nRow1, nRow2;
+    bHidden = pDoc->RowHidden(0, 0, &nRow1, &nRow2);
+    CPPUNIT_ASSERT_MESSAGE("Sheet1: row 0 should be visible", !bHidden && nRow1 == 0 && nRow2 == 0);
+    bHidden = pDoc->RowHidden(1, 0, &nRow1, &nRow2);
+    CPPUNIT_ASSERT_MESSAGE("Sheet1: rows 1-2 should be hidden", bHidden && nRow1 == 1 && nRow2 == 2);
+    bHidden = pDoc->RowHidden(3, 0, &nRow1, &nRow2);
+    CPPUNIT_ASSERT_MESSAGE("Sheet1: row 3 should be visible", !bHidden && nRow1 == 3 && nRow2 == 3);
+    bHidden = pDoc->RowHidden(4, 0, &nRow1, &nRow2);
+    CPPUNIT_ASSERT_MESSAGE("Sheet1: row 4-5 should be hidden", bHidden && nRow1 == 4 && nRow2 == 5);
+    bHidden = pDoc->RowHidden(6, 0, &nRow1, &nRow2);
+    CPPUNIT_ASSERT_MESSAGE("Sheet1: row 6-end should be visible", !bHidden && nRow1 == 6 && nRow2 == MAXROW);
+    double aValue;
+    pDoc->GetValue(0,10,1, aValue);
+    rtl::OUString aString;
+    pDoc->GetFormula(0,10,1,aString);
+    rtl::OString aOString;
+    aOString = rtl::OUStringToOString(aString, RTL_TEXTENCODING_UTF8);
+    CPPUNIT_ASSERT_MESSAGE("Sheet2: A11: formula result is incorrect", aValue == 4);
+    pDoc->GetValue(1, 10, 1, aValue);
+    CPPUNIT_ASSERT_MESSAGE("Sheet2: B11: formula result is incorrect", aValue == 2);
+    xDocSh->DoClose();
+}
+
+void ScFiltersTest::testFormats()
+{
+    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("formats."));
+    for(int i = 0; i < 3; ++i)
+    {
+        rtl::OUString aFileExtension(aFileFormats[i].pName, strlen(aFileFormats[i].pName), RTL_TEXTENCODING_UTF8 );
+        rtl::OUString aFilterName(aFileFormats[i].pFilterName, strlen(aFileFormats[i].pFilterName), RTL_TEXTENCODING_UTF8) ;
+        rtl::OUString aFileName;
+        createFileURL(aFileNameBase, aFileExtension, aFileName);
+        rtl::OUString aFilterType(aFileFormats[i].pTypeName, strlen(aFileFormats[i].pTypeName), RTL_TEXTENCODING_UTF8);
+        std::cout << aFileFormats[i].pName << " Test" << std::endl;
+        ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[i].nFormatType);
+        xDocSh->DoHardRecalc(true);
+
+        CPPUNIT_ASSERT_MESSAGE("Failed to load formats.*", xDocSh.Is());
+        ScDocument* pDoc = xDocSh->GetDocument();
+
+        //test Sheet1 with csv file
+        rtl::OUString aCSVFileName;
+        createCSVPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("numberFormat.")), aCSVFileName);
+        testFile(aCSVFileName, pDoc, 0, PureString);
+        //need to test the color of B3
+        //it's not a font color!
+        //formatting for B5: # ??/100 gets lost during import
+
+        //test Sheet2
+        const ScPatternAttr* pPattern = NULL;
+        pPattern = pDoc->GetPattern(0,0,1);
+        Font aFont;
+        pPattern->GetFont(aFont,SC_AUTOCOL_RAW);
+        CPPUNIT_ASSERT_MESSAGE("font size should be 10", aFont.GetSize().getHeight() == 200);
+        CPPUNIT_ASSERT_MESSAGE("font color should be black", aFont.GetColor() == COL_AUTO);
+        pPattern = pDoc->GetPattern(0,1,1);
+        pPattern->GetFont(aFont, SC_AUTOCOL_RAW);
+        CPPUNIT_ASSERT_MESSAGE("font size should be 12", aFont.GetSize().getHeight() == 240);
+        pPattern = pDoc->GetPattern(0,2,1);
+        pPattern->GetFont(aFont, SC_AUTOCOL_RAW);
+        CPPUNIT_ASSERT_MESSAGE("font should be italic",aFont.GetItalic() == ITALIC_NORMAL);
+        pPattern = pDoc->GetPattern(0,4,1);
+        pPattern->GetFont(aFont, SC_AUTOCOL_RAW);
+        CPPUNIT_ASSERT_MESSAGE("font should be bold",aFont.GetWeight() == WEIGHT_BOLD );
+        pPattern = pDoc->GetPattern(1,0,1);
+        pPattern->GetFont(aFont, SC_AUTOCOL_RAW);
+        CPPUNIT_ASSERT_MESSAGE("font should be blue", aFont.GetColor() == COL_BLUE );
+        pPattern = pDoc->GetPattern(1,1,1);
+        pPattern->GetFont(aFont, SC_AUTOCOL_RAW);
+        CPPUNIT_ASSERT_MESSAGE("font should be striked out with a single line", aFont.GetStrikeout() == STRIKEOUT_SINGLE );
+        //test double strikeout only for ods
+        if (i == ODS)
+        {
+            pPattern = pDoc->GetPattern(1,2,1);
+            pPattern->GetFont(aFont, SC_AUTOCOL_RAW);
+            CPPUNIT_ASSERT_MESSAGE("font should be striked out with a double line", aFont.GetStrikeout() == STRIKEOUT_DOUBLE );
+            pPattern = pDoc->GetPattern(1,3,1);
+            pPattern->GetFont(aFont, SC_AUTOCOL_RAW);
+            CPPUNIT_ASSERT_MESSAGE("font should be underlined with a dotted line", aFont.GetUnderline() == UNDERLINE_DOTTED);
+        }
+        pPattern = pDoc->GetPattern(1,4,1);
+        Color aColor = static_cast<const SvxBrushItem&>(pPattern->GetItem(ATTR_BACKGROUND)).GetColor();
+        CPPUNIT_ASSERT_MESSAGE("background color should be green", aColor == COL_LIGHTGREEN);
+        pPattern = pDoc->GetPattern(2,0,1);
+        SvxCellHorJustify eHorJustify = static_cast<SvxCellHorJustify>(static_cast<const SvxHorJustifyItem&>(pPattern->GetItem(ATTR_HOR_JUSTIFY)).GetValue());
+        CPPUNIT_ASSERT_MESSAGE("cell content should be aligned centre horizontally", eHorJustify == SVX_HOR_JUSTIFY_CENTER);
+        //test alignment
+        pPattern = pDoc->GetPattern(2,1,1);
+        eHorJustify = static_cast<SvxCellHorJustify>(static_cast<const SvxHorJustifyItem&>(pPattern->GetItem(ATTR_HOR_JUSTIFY)).GetValue());
+        CPPUNIT_ASSERT_MESSAGE("cell content should be aligned right horizontally", eHorJustify == SVX_HOR_JUSTIFY_RIGHT);
+        pPattern = pDoc->GetPattern(2,2,1);
+        eHorJustify = static_cast<SvxCellHorJustify>(static_cast<const SvxHorJustifyItem&>(pPattern->GetItem(ATTR_HOR_JUSTIFY)).GetValue());
+        CPPUNIT_ASSERT_MESSAGE("cell content should be aligned block horizontally", eHorJustify == SVX_HOR_JUSTIFY_BLOCK);
+
+        //test Sheet3 only for ods
+        if ( i == ODS )
+        {
+            rtl::OUString aCondString = getConditionalFormatString(pDoc, 3,0,2);
+            createCSVPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("conditionalFormatting.")), aCSVFileName);
+            testCondFile(aCSVFileName, pDoc, 2);
+        }
+        xDocSh->DoClose();
+    }
+}
+
+void ScFiltersTest::testMatrix()
+{
+    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("matrix."));
+    for (int i = 0; i < 2; ++i)
+    {
+        rtl::OUString aFileExtension(aFileFormats[1].pName, strlen(aFileFormats[1].pName), RTL_TEXTENCODING_UTF8 );
+        rtl::OUString aFilterName(aFileFormats[1].pFilterName, strlen(aFileFormats[1].pFilterName), RTL_TEXTENCODING_UTF8) ;
+        rtl::OUString aFileName;
+        createFileURL(aFileNameBase, aFileExtension, aFileName);
+        rtl::OUString aFilterType(aFileFormats[1].pTypeName, strlen(aFileFormats[1].pTypeName), RTL_TEXTENCODING_UTF8);
+        std::cout << aFileFormats[1].pName << " Test" << std::endl;
+        ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[1].nFormatType);
+
+        CPPUNIT_ASSERT_MESSAGE("Failed to load matrix.*", xDocSh.Is());
+        ScDocument* pDoc = xDocSh->GetDocument();
+
+        rtl::OUString aCSVFileName;
+        createCSVPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("matrix.")), aCSVFileName);
+        testFile(aCSVFileName, pDoc, 0);
+
+        xDocSh->DoClose();
+    }
+}
+
+void ScFiltersTest::testBugFixesODS()
+{
+    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("bug-fixes."));
+    rtl::OUString aFileExtension(aFileFormats[0].pName, strlen(aFileFormats[0].pName), RTL_TEXTENCODING_UTF8 );
+    rtl::OUString aFilterName(aFileFormats[0].pFilterName, strlen(aFileFormats[0].pFilterName), RTL_TEXTENCODING_UTF8) ;
+    rtl::OUString aFileName;
+    createFileURL(aFileNameBase, aFileExtension, aFileName);
+    rtl::OUString aFilterType(aFileFormats[0].pTypeName, strlen(aFileFormats[0].pTypeName), RTL_TEXTENCODING_UTF8);
+    std::cout << aFileFormats[0].pName << " Test" << std::endl;
+    ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[0].nFormatType);
+
+    CPPUNIT_ASSERT_MESSAGE("Failed to load bugFixes.ods", xDocSh.Is());
+    ScDocument* pDoc = xDocSh->GetDocument();
+
+    rtl::OUString aCSVFileName;
+    createCSVPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("bugFix_Sheet2.")), aCSVFileName);
+    testFile(aCSVFileName, pDoc, 1);
+
+    xDocSh->DoClose();
+}
+
+void ScFiltersTest::testBugFixesXLS()
+{
+    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("bug-fixes."));
+    rtl::OUString aFileExtension(aFileFormats[1].pName, strlen(aFileFormats[1].pName), RTL_TEXTENCODING_UTF8 );
+    rtl::OUString aFilterName(aFileFormats[1].pFilterName, strlen(aFileFormats[1].pFilterName), RTL_TEXTENCODING_UTF8) ;
+    rtl::OUString aFileName;
+    createFileURL(aFileNameBase, aFileExtension, aFileName);
+    rtl::OUString aFilterType(aFileFormats[1].pTypeName, strlen(aFileFormats[1].pTypeName), RTL_TEXTENCODING_UTF8);
+    std::cout << aFileFormats[1].pName << " Test" << std::endl;
+    ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[1].nFormatType);
+
+    CPPUNIT_ASSERT_MESSAGE("Failed to load bugFixes.xls", xDocSh.Is());
+    ScDocument* pDoc = xDocSh->GetDocument();
+    CPPUNIT_ASSERT_MESSAGE("No Document", pDoc); //remove with first test
+    xDocSh->DoClose();
+}
+
+void ScFiltersTest::testBugFixesXLSX()
+{
+    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("bug-fixes."));
+    rtl::OUString aFileExtension(aFileFormats[2].pName, strlen(aFileFormats[2].pName), RTL_TEXTENCODING_UTF8 );
+    rtl::OUString aFilterName(aFileFormats[2].pFilterName, strlen(aFileFormats[2].pFilterName), RTL_TEXTENCODING_UTF8) ;
+    rtl::OUString aFileName;
+    createFileURL(aFileNameBase, aFileExtension, aFileName);
+    rtl::OUString aFilterType(aFileFormats[2].pTypeName, strlen(aFileFormats[2].pTypeName), RTL_TEXTENCODING_UTF8);
+    std::cout << aFileFormats[2].pName << " Test" << std::endl;
+    ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[2].nFormatType);
+
+    CPPUNIT_ASSERT_MESSAGE("Failed to load bugFixes.xlsx", xDocSh.Is());
+    ScDocument* pDoc = xDocSh->GetDocument();
+    CPPUNIT_ASSERT_MESSAGE("No Document", pDoc); //remove with first test
+    xDocSh->DoClose();
+}
+
+void ScFiltersTest::testPassword()
+{
+    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("password."));
+    rtl::OUString aFileExtension(aFileFormats[0].pName, strlen(aFileFormats[0].pName), RTL_TEXTENCODING_UTF8 );
+    rtl::OUString aFilterName(aFileFormats[0].pFilterName, strlen(aFileFormats[0].pFilterName), RTL_TEXTENCODING_UTF8) ;
+    rtl::OUString aFileName;
+    createFileURL(aFileNameBase, aFileExtension, aFileName);
+    rtl::OUString aFilterType(aFileFormats[0].pTypeName, strlen(aFileFormats[0].pTypeName), RTL_TEXTENCODING_UTF8);
+    std::cout << aFileFormats[0].pName << " Test" << std::endl;
+
+    sal_uInt32 nFormat = SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS;
+    SfxFilter* aFilter = new SfxFilter(
+        aFilterName,
+        rtl::OUString(), aFileFormats[0].nFormatType, nFormat, aFilterType, 0, rtl::OUString(),
+        rtl::OUString(), rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/scalc*")) );
+    aFilter->SetVersion(SOFFICE_FILEFORMAT_CURRENT);
+
+    ScDocShellRef xDocSh = new ScDocShell;
+    SfxMedium* pMedium = new SfxMedium(aFileName, STREAM_STD_READWRITE, true);
+    SfxItemSet* pSet = pMedium->GetItemSet();
+    pSet->Put(SfxStringItem(SID_PASSWORD, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("test"))));
+    pMedium->SetFilter(aFilter);
+    if (!xDocSh->DoLoad(pMedium))
+    {
+        xDocSh->DoClose();
+        // load failed.
+        xDocSh.Clear();
+    }
+
+    CPPUNIT_ASSERT_MESSAGE("Failed to load password.ods", xDocSh.Is());
+    ScDocument* pDoc = xDocSh->GetDocument();
+    CPPUNIT_ASSERT_MESSAGE("No Document", pDoc); //remove with first test
+    xDocSh->DoClose();
+}
+
+ScFiltersTest::ScFiltersTest()
+      : m_aBaseString(RTL_CONSTASCII_USTRINGPARAM("/sc/qa/unit/data"))
+{
+}
+
+void ScFiltersTest::setUp()
+{
+    test::BootstrapFixture::setUp();
+
+    // This is a bit of a fudge, we do this to ensure that ScGlobals::ensure,
+    // which is a private symbol to us, gets called
+    m_xCalcComponent =
+        getMultiServiceFactory()->createInstance(rtl::OUString(
+        RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Calc.SpreadsheetDocument")));
+    CPPUNIT_ASSERT_MESSAGE("no calc component!", m_xCalcComponent.is());
+}
+
+void ScFiltersTest::tearDown()
+{
+    uno::Reference< lang::XComponent >( m_xCalcComponent, UNO_QUERY_THROW )->dispose();
+    test::BootstrapFixture::tearDown();
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(ScFiltersTest);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit bc84d4782ca3750fd9cabfdaea1d9e89cca20286
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Wed Nov 30 22:09:59 2011 +0100

    move sc's macros test into sc/qa/extras

diff --git a/sc/CppunitTest_sc_macros_test.mk b/sc/CppunitTest_sc_macros_test.mk
index dbed1f3..080939d 100644
--- a/sc/CppunitTest_sc_macros_test.mk
+++ b/sc/CppunitTest_sc_macros_test.mk
@@ -31,7 +31,7 @@
 $(eval $(call gb_CppunitTest_CppunitTest,sc_macros_test))
 
 $(eval $(call gb_CppunitTest_add_exception_objects,sc_macros_test, \
-    sc/qa/unit/macros-test \
+    sc/qa/extras/macros-test \
 ))
 
 $(eval $(call gb_CppunitTest_add_linked_libs,sc_macros_test, \
diff --git a/sc/qa/extras/macros-test.cxx b/sc/qa/extras/macros-test.cxx
new file mode 100644
index 0000000..969978a
--- /dev/null
+++ b/sc/qa/extras/macros-test.cxx
@@ -0,0 +1,223 @@
+/* -*- 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. 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
+ *       Caolán McNamara <caolanm at redhat.com>
+ * Portions created by the Initial Developer are Copyright (C) 2011 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Caolán McNamara <caolanm at redhat.com>
+ *   Markus Mohrhard <markus.mohrhard at googlemail.com>
+ *
+ * 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 <sal/config.h>
+#include <test/bootstrapfixture.hxx>
+#include <unotest/macros_test.hxx>
+#include <rtl/strbuf.hxx>
+#include <osl/file.hxx>
+
+#include <sfx2/app.hxx>
+#include <sfx2/docfilt.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/sfxmodelfactory.hxx>
+#include <svl/intitem.hxx>
+
+#include <basic/sbxdef.hxx>
+
+#include "docsh.hxx"
+#include "patattr.hxx"
+#include "scitems.hxx"
+#include "document.hxx"
+
+#define ODS_FORMAT_TYPE 50331943
+#define XLS_FORMAT_TYPE 318767171
+#define XLSX_FORMAT_TYPE 268959811
+
+#define ODS     0
+#define XLS     1
+#define XLSX    2
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+namespace {
+
+struct FileFormat {
+    const char* pName; const char* pFilterName; const char* pTypeName; sal_uLong nFormatType;
+};
+
+FileFormat aFileFormats[] = {
+    { "ods" , "calc8", "", ODS_FORMAT_TYPE },
+    { "xls" , "MS Excel 97", "calc_MS_EXCEL_97", XLS_FORMAT_TYPE },
+    { "xlsx", "Calc MS Excel 2007 XML" , "MS Excel 2007 XML", XLSX_FORMAT_TYPE }
+};
+
+}
+
+/* Implementation of Macros test */
+
+class ScMacrosTest : public test::BootstrapFixture, public unotest::MacrosTest
+{
+public:
+    ScMacrosTest();
+
+    void createFileURL(const rtl::OUString& aFileBase, const rtl::OUString& aFileExtension, rtl::OUString& rFilePath);
+
+    virtual void setUp();
+    virtual void tearDown();
+
+    void testStarBasic();
+    void testVba();
+    CPPUNIT_TEST_SUITE(ScMacrosTest);
+#if !defined(MACOSX) && !defined(WNT)
+    //enable this test if you want to play with star basic macros in unit tests
+    //works but does nothing useful yet
+    CPPUNIT_TEST(testStarBasic);
+    CPPUNIT_TEST(testVba);
+#endif
+
+    CPPUNIT_TEST_SUITE_END();
+
+private:
+    uno::Reference<uno::XInterface> m_xCalcComponent;
+    rtl::OUString m_aBaseString;
+};
+
+
+void ScMacrosTest::createFileURL(const rtl::OUString& aFileBase, const rtl::OUString& aFileExtension, rtl::OUString& rFilePath)
+{
+    rtl::OUString aSep(RTL_CONSTASCII_USTRINGPARAM("/"));
+    rtl::OUStringBuffer aBuffer( getSrcRootURL() );
+    aBuffer.append(m_aBaseString).append(aSep).append(aFileExtension);
+    aBuffer.append(aSep).append(aFileBase).append(aFileExtension);
+    rFilePath = aBuffer.makeStringAndClear();
+}
+
+void ScMacrosTest::testStarBasic()
+{
+    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("StarBasic."));
+    rtl::OUString aFileExtension(aFileFormats[0].pName, strlen(aFileFormats[0].pName), RTL_TEXTENCODING_UTF8 );
+    rtl::OUString aFilterName(aFileFormats[0].pFilterName, strlen(aFileFormats[0].pFilterName), RTL_TEXTENCODING_UTF8) ;
+    rtl::OUString aFileName;
+    createFileURL(aFileNameBase, aFileExtension, aFileName);
+    rtl::OUString aFilterType(aFileFormats[0].pTypeName, strlen(aFileFormats[0].pTypeName), RTL_TEXTENCODING_UTF8);
+    std::cout << aFileFormats[0].pName << " Test" << std::endl;
+    uno::Reference< com::sun::star::lang::XComponent > xComponent = loadFromDesktop(aFileName);
+
+    CPPUNIT_ASSERT_MESSAGE("Failed to load StarBasic.ods", xComponent.is());
+
+    rtl::OUString aURL(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.Star.script:Standard.Module1.Macro1?language=Basic&location=document"));
+    String sUrl = aURL;
+    Any aRet;
+    Sequence< sal_Int16 > aOutParamIndex;
+    Sequence< Any > aOutParam;
+    Sequence< uno::Any > aParams;
+
+    SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
+
+    CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
+    ScDocShell* xDocSh = static_cast<ScDocShell*>(pFoundShell);
+    ScDocument* pDoc = xDocSh->GetDocument();
+
+    pFoundShell->CallXScript(xComponent, sUrl, aParams, aRet, aOutParamIndex,aOutParam);
+    double aValue;
+    pDoc->GetValue(0,0,0,aValue);
+    std::cout << "returned value = " << aValue << std::endl;
+    CPPUNIT_ASSERT_MESSAGE("script did not change the value of Sheet1.A1",aValue==2);
+    xDocSh->DoClose();
+}
+
+
+void ScMacrosTest::testVba()
+{
+    TestMacroInfo testInfo[] = {
+        {
+            rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TestAddress.")),
+            rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.Star.script:VBAProject.testMacros.test?language=Basic&location=document"))
+        },
+        {
+            rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vba.")),
+            rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.Star.script:VBAProject.Modul1.Modul1?language=Basic&location=document")),
+        }
+    };
+
+    rtl::OUString aFileExtension(aFileFormats[1].pName, strlen(aFileFormats[1].pName), RTL_TEXTENCODING_UTF8 );
+    rtl::OUString aFilterName(aFileFormats[1].pFilterName, strlen(aFileFormats[1].pFilterName), RTL_TEXTENCODING_UTF8) ;
+    rtl::OUString aFilterType(aFileFormats[1].pTypeName, strlen(aFileFormats[1].pTypeName), RTL_TEXTENCODING_UTF8);
+    std::cout << aFileFormats[1].pName << " Test" << std::endl;
+    for ( sal_uInt32  i=0; i<SAL_N_ELEMENTS( testInfo ); ++i )
+    {
+        rtl::OUString aFileName;
+        createFileURL(testInfo[i].sFileBaseName, aFileExtension, aFileName);
+        uno::Reference< com::sun::star::lang::XComponent > xComponent = loadFromDesktop(aFileName);
+        rtl::OUString sMsg( RTL_CONSTASCII_USTRINGPARAM("Failed to load ") );
+        sMsg.concat( aFileName );
+        CPPUNIT_ASSERT_MESSAGE( rtl::OUStringToOString( sMsg, RTL_TEXTENCODING_UTF8 ).getStr(), xComponent.is() );
+
+        String sUrl = testInfo[i].sMacroUrl;
+        Any aRet;
+        Sequence< sal_Int16 > aOutParamIndex;
+        Sequence< Any > aOutParam;
+        Sequence< uno::Any > aParams;
+
+        SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
+
+        CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
+        pFoundShell->CallXScript(xComponent, sUrl, aParams, aRet, aOutParamIndex,aOutParam);
+        rtl::OUString aStringRes;
+        aRet >>= aStringRes;
+        std::cout << "value of Ret " << rtl::OUStringToOString( aStringRes, RTL_TEXTENCODING_UTF8 ).getStr() << std::endl;
+        CPPUNIT_ASSERT_MESSAGE("script reported failure",aStringRes.equals( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("OK") )) );
+        pFoundShell->DoClose();
+    }
+}
+
+ScMacrosTest::ScMacrosTest()
+      : m_aBaseString(RTL_CONSTASCII_USTRINGPARAM("/sc/qa/unit/data"))
+{
+}
+
+void ScMacrosTest::setUp()
+{
+    test::BootstrapFixture::setUp();
+
+    // This is a bit of a fudge, we do this to ensure that ScGlobals::ensure,
+    // which is a private symbol to us, gets called
+    m_xCalcComponent =
+        getMultiServiceFactory()->createInstance(rtl::OUString(
+        RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Calc.SpreadsheetDocument")));
+    CPPUNIT_ASSERT_MESSAGE("no calc component!", m_xCalcComponent.is());
+    mxDesktop = Reference<com::sun::star::frame::XDesktop>( getMultiServiceFactory()->createInstance(
+                rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ))), UNO_QUERY );
+    CPPUNIT_ASSERT_MESSAGE("", mxDesktop.is());
+}
+
+void ScMacrosTest::tearDown()
+{
+    uno::Reference< lang::XComponent >( m_xCalcComponent, UNO_QUERY_THROW )->dispose();
+    test::BootstrapFixture::tearDown();
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(ScMacrosTest);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/qa/unit/macros-test.cxx b/sc/qa/unit/macros-test.cxx
deleted file mode 100644
index 969978a..0000000
--- a/sc/qa/unit/macros-test.cxx
+++ /dev/null
@@ -1,223 +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. 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
- *       Caolán McNamara <caolanm at redhat.com>
- * Portions created by the Initial Developer are Copyright (C) 2011 the
- * Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Caolán McNamara <caolanm at redhat.com>
- *   Markus Mohrhard <markus.mohrhard at googlemail.com>
- *
- * 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 <sal/config.h>
-#include <test/bootstrapfixture.hxx>
-#include <unotest/macros_test.hxx>
-#include <rtl/strbuf.hxx>
-#include <osl/file.hxx>
-
-#include <sfx2/app.hxx>
-#include <sfx2/docfilt.hxx>
-#include <sfx2/docfile.hxx>
-#include <sfx2/sfxmodelfactory.hxx>
-#include <svl/intitem.hxx>
-
-#include <basic/sbxdef.hxx>
-
-#include "docsh.hxx"
-#include "patattr.hxx"
-#include "scitems.hxx"
-#include "document.hxx"
-
-#define ODS_FORMAT_TYPE 50331943
-#define XLS_FORMAT_TYPE 318767171
-#define XLSX_FORMAT_TYPE 268959811
-
-#define ODS     0
-#define XLS     1
-#define XLSX    2
-
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-
-namespace {
-
-struct FileFormat {
-    const char* pName; const char* pFilterName; const char* pTypeName; sal_uLong nFormatType;
-};
-
-FileFormat aFileFormats[] = {
-    { "ods" , "calc8", "", ODS_FORMAT_TYPE },
-    { "xls" , "MS Excel 97", "calc_MS_EXCEL_97", XLS_FORMAT_TYPE },
-    { "xlsx", "Calc MS Excel 2007 XML" , "MS Excel 2007 XML", XLSX_FORMAT_TYPE }
-};
-
-}
-
-/* Implementation of Macros test */
-
-class ScMacrosTest : public test::BootstrapFixture, public unotest::MacrosTest
-{
-public:
-    ScMacrosTest();
-
-    void createFileURL(const rtl::OUString& aFileBase, const rtl::OUString& aFileExtension, rtl::OUString& rFilePath);
-
-    virtual void setUp();
-    virtual void tearDown();
-
-    void testStarBasic();
-    void testVba();
-    CPPUNIT_TEST_SUITE(ScMacrosTest);
-#if !defined(MACOSX) && !defined(WNT)
-    //enable this test if you want to play with star basic macros in unit tests
-    //works but does nothing useful yet
-    CPPUNIT_TEST(testStarBasic);
-    CPPUNIT_TEST(testVba);
-#endif
-
-    CPPUNIT_TEST_SUITE_END();
-
-private:
-    uno::Reference<uno::XInterface> m_xCalcComponent;
-    rtl::OUString m_aBaseString;
-};
-
-
-void ScMacrosTest::createFileURL(const rtl::OUString& aFileBase, const rtl::OUString& aFileExtension, rtl::OUString& rFilePath)
-{
-    rtl::OUString aSep(RTL_CONSTASCII_USTRINGPARAM("/"));
-    rtl::OUStringBuffer aBuffer( getSrcRootURL() );
-    aBuffer.append(m_aBaseString).append(aSep).append(aFileExtension);
-    aBuffer.append(aSep).append(aFileBase).append(aFileExtension);
-    rFilePath = aBuffer.makeStringAndClear();
-}
-
-void ScMacrosTest::testStarBasic()
-{
-    const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("StarBasic."));
-    rtl::OUString aFileExtension(aFileFormats[0].pName, strlen(aFileFormats[0].pName), RTL_TEXTENCODING_UTF8 );
-    rtl::OUString aFilterName(aFileFormats[0].pFilterName, strlen(aFileFormats[0].pFilterName), RTL_TEXTENCODING_UTF8) ;
-    rtl::OUString aFileName;
-    createFileURL(aFileNameBase, aFileExtension, aFileName);
-    rtl::OUString aFilterType(aFileFormats[0].pTypeName, strlen(aFileFormats[0].pTypeName), RTL_TEXTENCODING_UTF8);
-    std::cout << aFileFormats[0].pName << " Test" << std::endl;
-    uno::Reference< com::sun::star::lang::XComponent > xComponent = loadFromDesktop(aFileName);
-
-    CPPUNIT_ASSERT_MESSAGE("Failed to load StarBasic.ods", xComponent.is());
-
-    rtl::OUString aURL(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.Star.script:Standard.Module1.Macro1?language=Basic&location=document"));
-    String sUrl = aURL;
-    Any aRet;
-    Sequence< sal_Int16 > aOutParamIndex;
-    Sequence< Any > aOutParam;
-    Sequence< uno::Any > aParams;
-
-    SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
-
-    CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
-    ScDocShell* xDocSh = static_cast<ScDocShell*>(pFoundShell);
-    ScDocument* pDoc = xDocSh->GetDocument();
-
-    pFoundShell->CallXScript(xComponent, sUrl, aParams, aRet, aOutParamIndex,aOutParam);
-    double aValue;
-    pDoc->GetValue(0,0,0,aValue);
-    std::cout << "returned value = " << aValue << std::endl;
-    CPPUNIT_ASSERT_MESSAGE("script did not change the value of Sheet1.A1",aValue==2);
-    xDocSh->DoClose();
-}
-
-
-void ScMacrosTest::testVba()
-{
-    TestMacroInfo testInfo[] = {
-        {
-            rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TestAddress.")),
-            rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.Star.script:VBAProject.testMacros.test?language=Basic&location=document"))
-        },
-        {
-            rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vba.")),
-            rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.Star.script:VBAProject.Modul1.Modul1?language=Basic&location=document")),
-        }
-    };
-
-    rtl::OUString aFileExtension(aFileFormats[1].pName, strlen(aFileFormats[1].pName), RTL_TEXTENCODING_UTF8 );
-    rtl::OUString aFilterName(aFileFormats[1].pFilterName, strlen(aFileFormats[1].pFilterName), RTL_TEXTENCODING_UTF8) ;
-    rtl::OUString aFilterType(aFileFormats[1].pTypeName, strlen(aFileFormats[1].pTypeName), RTL_TEXTENCODING_UTF8);
-    std::cout << aFileFormats[1].pName << " Test" << std::endl;
-    for ( sal_uInt32  i=0; i<SAL_N_ELEMENTS( testInfo ); ++i )
-    {
-        rtl::OUString aFileName;
-        createFileURL(testInfo[i].sFileBaseName, aFileExtension, aFileName);
-        uno::Reference< com::sun::star::lang::XComponent > xComponent = loadFromDesktop(aFileName);
-        rtl::OUString sMsg( RTL_CONSTASCII_USTRINGPARAM("Failed to load ") );
-        sMsg.concat( aFileName );
-        CPPUNIT_ASSERT_MESSAGE( rtl::OUStringToOString( sMsg, RTL_TEXTENCODING_UTF8 ).getStr(), xComponent.is() );
-
-        String sUrl = testInfo[i].sMacroUrl;
-        Any aRet;
-        Sequence< sal_Int16 > aOutParamIndex;
-        Sequence< Any > aOutParam;
-        Sequence< uno::Any > aParams;
-
-        SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
-
-        CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
-        pFoundShell->CallXScript(xComponent, sUrl, aParams, aRet, aOutParamIndex,aOutParam);
-        rtl::OUString aStringRes;
-        aRet >>= aStringRes;
-        std::cout << "value of Ret " << rtl::OUStringToOString( aStringRes, RTL_TEXTENCODING_UTF8 ).getStr() << std::endl;
-        CPPUNIT_ASSERT_MESSAGE("script reported failure",aStringRes.equals( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("OK") )) );
-        pFoundShell->DoClose();
-    }
-}
-
-ScMacrosTest::ScMacrosTest()
-      : m_aBaseString(RTL_CONSTASCII_USTRINGPARAM("/sc/qa/unit/data"))
-{
-}
-
-void ScMacrosTest::setUp()
-{
-    test::BootstrapFixture::setUp();
-
-    // This is a bit of a fudge, we do this to ensure that ScGlobals::ensure,
-    // which is a private symbol to us, gets called
-    m_xCalcComponent =
-        getMultiServiceFactory()->createInstance(rtl::OUString(
-        RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Calc.SpreadsheetDocument")));
-    CPPUNIT_ASSERT_MESSAGE("no calc component!", m_xCalcComponent.is());
-    mxDesktop = Reference<com::sun::star::frame::XDesktop>( getMultiServiceFactory()->createInstance(
-                rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ))), UNO_QUERY );
-    CPPUNIT_ASSERT_MESSAGE("", mxDesktop.is());
-}
-
-void ScMacrosTest::tearDown()
-{
-    uno::Reference< lang::XComponent >( m_xCalcComponent, UNO_QUERY_THROW )->dispose();
-    test::BootstrapFixture::tearDown();
-}
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ScMacrosTest);
-
-CPPUNIT_PLUGIN_IMPLEMENT();
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 973406e43989005c6ccd4f803a48ce344bb06d19
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Wed Nov 30 21:46:21 2011 +0100

    only load the testfile once and after that reuse the already loaded file
    
    this is not perfect but better than loading the file several times while
    we should only call read-only methods

diff --git a/sc/qa/extras/xcellrangesquery.cxx b/sc/qa/extras/xcellrangesquery.cxx
index 3d395d6..9fc9139 100644
--- a/sc/qa/extras/xcellrangesquery.cxx
+++ b/sc/qa/extras/xcellrangesquery.cxx
@@ -81,7 +81,9 @@ uno::Reference<sheet::XCellRangesQuery> ScXCellRangesQuery::init()
     const rtl::OUString aFileBase(RTL_CONSTASCII_USTRINGPARAM("xcellrangesquery.ods"));
     createFileURL(aFileBase, aFileURL);
     std::cout << rtl::OUStringToOString(aFileURL, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
-    uno::Reference< lang::XComponent > xComponent = loadFromDesktop(aFileURL);
+    static uno::Reference< lang::XComponent > xComponent;
+    if( !xComponent.is())
+        xComponent = loadFromDesktop(aFileURL);
     uno::Reference< sheet::XSpreadsheetDocument> xDoc (xComponent, UNO_QUERY_THROW);
     uno::Reference< container::XIndexAccess > xIndex (xDoc->getSheets(), UNO_QUERY_THROW);
     uno::Reference< sheet::XSpreadsheet > xSheet( xIndex->getByIndex(0), UNO_QUERY_THROW);
commit 3dbc46d99a14b56f27371d45736b11904a1f3dc8
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Wed Nov 30 20:09:22 2011 +0100

    move c++ based subsequenttest to sc/qa/extras

diff --git a/sc/CppunitTest_sc_unoapi_xcellrangesquery.mk b/sc/CppunitTest_sc_unoapi_xcellrangesquery.mk
deleted file mode 100644
index 2dc2f18..0000000
--- a/sc/CppunitTest_sc_unoapi_xcellrangesquery.mk
+++ /dev/null
@@ -1,141 +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
-#       Markus Mohrhard <markus.mohrhard at googlemail.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_unoapi_xcellrangesquery))
-
-$(eval $(call gb_CppunitTest_add_exception_objects,sc_unoapi_xcellrangesquery, \
-    sc/qa/unoapi/xcellrangesquery \
-))
-
-$(eval $(call gb_CppunitTest_add_linked_libs,sc_unoapi_xcellrangesquery, \
-    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 \
-    ucbhelper \
-	unotest \
-    utl \
-    vbahelper \
-    vcl \
-    xo \
-	$(gb_STDLIBS) \
-))
-
-$(eval $(call gb_CppunitTest_set_include,sc_unoapi_xcellrangesquery,\
-    -I$(realpath $(SRCDIR)/sc/source/ui/inc) \
-    -I$(realpath $(SRCDIR)/sc/inc) \
-    $$(INCLUDE) \
-    -I$(OUTDIR)/inc \
-))
-
-$(eval $(call gb_CppunitTest_add_api,sc_unoapi_xcellrangesquery,\
-    offapi \
-    udkapi \
-))
-
-$(eval $(call gb_CppunitTest_uses_ure,sc_unoapi_xcellrangesquery))
-
-$(eval $(call gb_CppunitTest_add_type_rdbs,sc_unoapi_xcellrangesquery,\
-    types \
-))
-
-$(eval $(call gb_CppunitTest_add_components,sc_unoapi_xcellrangesquery,\
-    basic/util/sb \
-    comphelper/util/comphelp \
-    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 \
-    unotools/util/utl \
-    unoxml/source/rdf/unordf \
-    unoxml/source/service/unoxml \
-))
-
-$(eval $(call gb_CppunitTest_add_old_components,sc_unoapi_xcellrangesquery,\
-    configmgr \
-    ucb1 \
-    ucpfile1 \
-    ucptdoc1 \
-))
-
-$(eval $(call gb_CppunitTest_set_args,sc_unoapi_xcellrangesquery,\
-    --headless \
-    --protector unoexceptionprotector$(gb_Library_DLLEXT) unoexceptionprotector \
-    "-env:CONFIGURATION_LAYERS=xcsxcu:$(call gb_CppunitTarget__make_url,$(OUTDIR)/xml/registry) module:$(call gb_CppunitTarget__make_url,$(OUTDIR)/xml/registry/spool) xcsxcu:$(call gb_CppunitTarget__make_url,$(SRCDIR)/sc/qa/unit/data/registry)" \
-))
-    # .../spool is required for the (somewhat strange) filter configuration
-
-# we need to
-# a) explicitly depend on library msword because it is not implied by a link
-#    relation
-# b) explicitly depend on the sc resource files needed at unit-test runtime
-$(call gb_CppunitTest_get_target,sc_unoapi_xcellrangesquery) : $(call gb_Library_get_target,scfilt) $(WORKDIR)/AllLangRes/sc
-
-# vim: set noet sw=4 ts=4:
diff --git a/sc/CppunitTest_sc_xcellrangesquery.mk b/sc/CppunitTest_sc_xcellrangesquery.mk
new file mode 100644
index 0000000..a0e4bf4
--- /dev/null
+++ b/sc/CppunitTest_sc_xcellrangesquery.mk
@@ -0,0 +1,141 @@
+# -*- 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
+#       Markus Mohrhard <markus.mohrhard at googlemail.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_xcellrangesquery))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sc_xcellrangesquery, \
+    sc/qa/extras/xcellrangesquery \
+))
+
+$(eval $(call gb_CppunitTest_add_linked_libs,sc_xcellrangesquery, \
+    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 \
+    ucbhelper \
+	unotest \
+    utl \
+    vbahelper \
+    vcl \
+    xo \
+	$(gb_STDLIBS) \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sc_xcellrangesquery,\
+    -I$(realpath $(SRCDIR)/sc/source/ui/inc) \
+    -I$(realpath $(SRCDIR)/sc/inc) \
+    $$(INCLUDE) \
+    -I$(OUTDIR)/inc \
+))
+
+$(eval $(call gb_CppunitTest_add_api,sc_xcellrangesquery,\
+    offapi \
+    udkapi \
+))
+
+$(eval $(call gb_CppunitTest_uses_ure,sc_xcellrangesquery))
+
+$(eval $(call gb_CppunitTest_add_type_rdbs,sc_xcellrangesquery,\
+    types \
+))
+
+$(eval $(call gb_CppunitTest_add_components,sc_xcellrangesquery,\
+    basic/util/sb \
+    comphelper/util/comphelp \
+    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 \
+    unotools/util/utl \
+    unoxml/source/rdf/unordf \
+    unoxml/source/service/unoxml \
+))
+
+$(eval $(call gb_CppunitTest_add_old_components,sc_xcellrangesquery,\
+    configmgr \
+    ucb1 \
+    ucpfile1 \
+    ucptdoc1 \
+))
+
+$(eval $(call gb_CppunitTest_set_args,sc_xcellrangesquery,\
+    --headless \
+    --protector unoexceptionprotector$(gb_Library_DLLEXT) unoexceptionprotector \
+    "-env:CONFIGURATION_LAYERS=xcsxcu:$(call gb_CppunitTarget__make_url,$(OUTDIR)/xml/registry) module:$(call gb_CppunitTarget__make_url,$(OUTDIR)/xml/registry/spool) xcsxcu:$(call gb_CppunitTarget__make_url,$(SRCDIR)/sc/qa/unit/data/registry)" \
+))
+    # .../spool is required for the (somewhat strange) filter configuration
+
+# we need to
+# a) explicitly depend on library msword because it is not implied by a link
+#    relation
+# b) explicitly depend on the sc resource files needed at unit-test runtime
+$(call gb_CppunitTest_get_target,sc_xcellrangesquery) : $(call gb_Library_get_target,scfilt) $(WORKDIR)/AllLangRes/sc
+
+# vim: set noet sw=4 ts=4:
diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk
index 5b2d9fd..eb85591 100644
--- a/sc/Module_sc.mk
+++ b/sc/Module_sc.mk
@@ -41,7 +41,7 @@ $(eval $(call gb_Module_add_check_targets,sc,\
 
 $(eval $(call gb_Module_add_subsequentcheck_targets,sc,\
     CppunitTest_sc_macros_test \
-    CppunitTest_sc_unoapi_xcellrangesquery \
+    CppunitTest_sc_xcellrangesquery \
     JunitTest_sc_complex \
     JunitTest_sc_unoapi \
 ))
diff --git a/sc/qa/extras/testdocuments/xcellrangesquery.ods b/sc/qa/extras/testdocuments/xcellrangesquery.ods
new file mode 100644
index 0000000..562229c
Binary files /dev/null and b/sc/qa/extras/testdocuments/xcellrangesquery.ods differ
diff --git a/sc/qa/extras/xcellrangesquery.cxx b/sc/qa/extras/xcellrangesquery.cxx
new file mode 100644
index 0000000..3d395d6
--- /dev/null
+++ b/sc/qa/extras/xcellrangesquery.cxx
@@ -0,0 +1,179 @@
+/* -*- 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) 2011 Markus Mohrhard <markus.mohrhard at googlemail.com> (initial developer) ]
+ *
+ * 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 <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#include <com/sun/star/sheet/XSpreadsheet.hpp>
+#include <com/sun/star/sheet/XCellRangesQuery.hpp>
+#include <com/sun/star/sheet/XSheetCellRanges.hpp>
+#include <com/sun/star/table/CellAddress.hpp>
+#include <com/sun/star/sheet/CellFlags.hpp>
+
+using namespace com::sun::star;
+
+
+namespace ScCellRangeObj {
+
+class ScXCellRangesQuery : public UnoApiTest
+{
+public:
+    ScXCellRangesQuery();
+
+    uno::Reference<sheet::XCellRangesQuery> init();
+
+    void setRowVisible(bool bVisible);
+
+    //Testcases
+    void testQueryColumnDifference();
+    void testQueryContentDifference();
+    void testQueryEmptyCells();
+    void testQueryFormulaCells();
+    void testQueryIntersection();
+    void testQueryRowDifference();
+    void testQueryVisibleCells();
+
+    CPPUNIT_TEST_SUITE(ScXCellRangesQuery);
+    CPPUNIT_TEST(testQueryColumnDifference);
+    CPPUNIT_TEST(testQueryContentDifference);
+    CPPUNIT_TEST(testQueryEmptyCells);
+    //looks broken
+    //CPPUNIT_TEST(testQueryFormulaCells);
+    CPPUNIT_TEST(testQueryIntersection);
+    CPPUNIT_TEST(testQueryRowDifference);
+    CPPUNIT_TEST_SUITE_END();
+
+};
+
+ScXCellRangesQuery::ScXCellRangesQuery()
+{
+
+}
+
+uno::Reference<sheet::XCellRangesQuery> ScXCellRangesQuery::init()
+{
+    rtl::OUString aFileURL;
+    const rtl::OUString aFileBase(RTL_CONSTASCII_USTRINGPARAM("xcellrangesquery.ods"));
+    createFileURL(aFileBase, aFileURL);
+    std::cout << rtl::OUStringToOString(aFileURL, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
+    uno::Reference< lang::XComponent > xComponent = loadFromDesktop(aFileURL);
+    uno::Reference< sheet::XSpreadsheetDocument> xDoc (xComponent, UNO_QUERY_THROW);
+    uno::Reference< container::XIndexAccess > xIndex (xDoc->getSheets(), UNO_QUERY_THROW);
+    uno::Reference< sheet::XSpreadsheet > xSheet( xIndex->getByIndex(0), UNO_QUERY_THROW);
+
+    CPPUNIT_ASSERT_MESSAGE("Could not create interface of type XSpreadsheet", xSheet.is());
+
+    uno::Reference<sheet::XCellRangesQuery> xReturn(xSheet->getCellRangeByPosition(0,0,3,4), UNO_QUERY_THROW);
+
+    CPPUNIT_ASSERT_MESSAGE("Could not create object of type XCellRangesQuery", xReturn.is());
+    return xReturn;
+}
+
+void ScXCellRangesQuery::testQueryColumnDifference()
+{
+    rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.B1:C1,Sheet1.B3:C5"));
+    uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init();
+    uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryColumnDifferences(table::CellAddress(0, 1, 1));
+    rtl::OUString aResult = xRanges->getRangeAddressesAsString();
+    std::cout << "testQueryColumnDifference: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
+    CPPUNIT_ASSERT_MESSAGE("testQueryColumnDifference", aResult == aExpected);
+}
+
+void ScXCellRangesQuery::testQueryContentDifference()
+{
+    rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.B2:B3"));
+    uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init();
+    uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryContentCells(sheet::CellFlags::VALUE);
+    rtl::OUString aResult = xRanges->getRangeAddressesAsString();
+    std::cout << "testQueryContentDifference: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
+    CPPUNIT_ASSERT_MESSAGE("testQueryContentDifference", aResult == aExpected);
+}
+
+void ScXCellRangesQuery::testQueryEmptyCells()
+{
+    rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.A1:A5,Sheet1.B1:C1,Sheet1.B5,Sheet1.C3:C5,Sheet1.D1:D5"));
+    uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init();
+    uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryEmptyCells();
+    rtl::OUString aResult = xRanges->getRangeAddressesAsString();
+    std::cout << "testQueryEmptyCells: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
+    CPPUNIT_ASSERT_MESSAGE("testQueryEmptyCells", aResult == aExpected);
+}
+
+void ScXCellRangesQuery::testQueryFormulaCells()
+{
+    rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.C2"));
+    uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init();
+    uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryFormulaCells(sheet::CellFlags::FORMULA);
+    rtl::OUString aResult = xRanges->getRangeAddressesAsString();
+    std::cout << "testQueryFormulaCells: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
+    CPPUNIT_ASSERT_MESSAGE("testQueryFormulaCells", aResult == aExpected);
+}
+
+void ScXCellRangesQuery::testQueryIntersection()
+{
+    rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.D4:D5"));
+    uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init();
+    uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryIntersection(table::CellRangeAddress(0,3,3,7,7));
+    rtl::OUString aResult = xRanges->getRangeAddressesAsString();
+    std::cout << "testQueryIntersection: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
+    CPPUNIT_ASSERT_MESSAGE("testQueryFormulaCells", aResult == aExpected);
+}
+
+void ScXCellRangesQuery::testQueryRowDifference()
+{
+    rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.A2:A4,Sheet1.C2:D4"));
+    uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init();
+    uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryRowDifferences(table::CellAddress(0,1,1));
+    rtl::OUString aResult = xRanges->getRangeAddressesAsString();
+    std::cout << "testQueryRowDifference: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
+    CPPUNIT_ASSERT_MESSAGE("testQueryFormulaCells", aResult == aExpected);
+}
+
+void ScXCellRangesQuery::testQueryVisibleCells()
+{
+    setRowVisible(false);
+    rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.A2"));
+    uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init();
+    uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryVisibleCells();
+    rtl::OUString aResult = xRanges->getRangeAddressesAsString();
+    std::cout << "testQueryVisibleCells: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
+    CPPUNIT_ASSERT_MESSAGE("testQueryFormulaCells", aResult == aExpected);
+}
+
+void ScXCellRangesQuery::setRowVisible(bool bVisible)
+{
+
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(ScXCellRangesQuery);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/qa/unoapi/testdocuments/xcellrangesquery.ods b/sc/qa/unoapi/testdocuments/xcellrangesquery.ods
deleted file mode 100644
index 562229c..0000000
Binary files a/sc/qa/unoapi/testdocuments/xcellrangesquery.ods and /dev/null differ
diff --git a/sc/qa/unoapi/xcellrangesquery.cxx b/sc/qa/unoapi/xcellrangesquery.cxx
deleted file mode 100644
index 3d395d6..0000000
--- a/sc/qa/unoapi/xcellrangesquery.cxx
+++ /dev/null
@@ -1,179 +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) 2011 Markus Mohrhard <markus.mohrhard at googlemail.com> (initial developer) ]
- *
- * 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 <com/sun/star/sheet/XSpreadsheetDocument.hpp>
-#include <com/sun/star/sheet/XSpreadsheet.hpp>
-#include <com/sun/star/sheet/XCellRangesQuery.hpp>
-#include <com/sun/star/sheet/XSheetCellRanges.hpp>
-#include <com/sun/star/table/CellAddress.hpp>
-#include <com/sun/star/sheet/CellFlags.hpp>
-
-using namespace com::sun::star;
-
-
-namespace ScCellRangeObj {
-
-class ScXCellRangesQuery : public UnoApiTest
-{
-public:
-    ScXCellRangesQuery();
-
-    uno::Reference<sheet::XCellRangesQuery> init();
-
-    void setRowVisible(bool bVisible);
-
-    //Testcases
-    void testQueryColumnDifference();
-    void testQueryContentDifference();
-    void testQueryEmptyCells();
-    void testQueryFormulaCells();
-    void testQueryIntersection();
-    void testQueryRowDifference();
-    void testQueryVisibleCells();
-
-    CPPUNIT_TEST_SUITE(ScXCellRangesQuery);
-    CPPUNIT_TEST(testQueryColumnDifference);
-    CPPUNIT_TEST(testQueryContentDifference);
-    CPPUNIT_TEST(testQueryEmptyCells);
-    //looks broken
-    //CPPUNIT_TEST(testQueryFormulaCells);
-    CPPUNIT_TEST(testQueryIntersection);
-    CPPUNIT_TEST(testQueryRowDifference);
-    CPPUNIT_TEST_SUITE_END();
-
-};
-
-ScXCellRangesQuery::ScXCellRangesQuery()
-{
-
-}
-
-uno::Reference<sheet::XCellRangesQuery> ScXCellRangesQuery::init()
-{
-    rtl::OUString aFileURL;
-    const rtl::OUString aFileBase(RTL_CONSTASCII_USTRINGPARAM("xcellrangesquery.ods"));
-    createFileURL(aFileBase, aFileURL);
-    std::cout << rtl::OUStringToOString(aFileURL, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
-    uno::Reference< lang::XComponent > xComponent = loadFromDesktop(aFileURL);
-    uno::Reference< sheet::XSpreadsheetDocument> xDoc (xComponent, UNO_QUERY_THROW);
-    uno::Reference< container::XIndexAccess > xIndex (xDoc->getSheets(), UNO_QUERY_THROW);
-    uno::Reference< sheet::XSpreadsheet > xSheet( xIndex->getByIndex(0), UNO_QUERY_THROW);
-
-    CPPUNIT_ASSERT_MESSAGE("Could not create interface of type XSpreadsheet", xSheet.is());
-
-    uno::Reference<sheet::XCellRangesQuery> xReturn(xSheet->getCellRangeByPosition(0,0,3,4), UNO_QUERY_THROW);
-
-    CPPUNIT_ASSERT_MESSAGE("Could not create object of type XCellRangesQuery", xReturn.is());
-    return xReturn;
-}
-
-void ScXCellRangesQuery::testQueryColumnDifference()
-{
-    rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.B1:C1,Sheet1.B3:C5"));
-    uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init();
-    uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryColumnDifferences(table::CellAddress(0, 1, 1));
-    rtl::OUString aResult = xRanges->getRangeAddressesAsString();
-    std::cout << "testQueryColumnDifference: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
-    CPPUNIT_ASSERT_MESSAGE("testQueryColumnDifference", aResult == aExpected);
-}
-
-void ScXCellRangesQuery::testQueryContentDifference()
-{
-    rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.B2:B3"));
-    uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init();
-    uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryContentCells(sheet::CellFlags::VALUE);
-    rtl::OUString aResult = xRanges->getRangeAddressesAsString();
-    std::cout << "testQueryContentDifference: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
-    CPPUNIT_ASSERT_MESSAGE("testQueryContentDifference", aResult == aExpected);
-}
-
-void ScXCellRangesQuery::testQueryEmptyCells()
-{
-    rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.A1:A5,Sheet1.B1:C1,Sheet1.B5,Sheet1.C3:C5,Sheet1.D1:D5"));
-    uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init();
-    uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryEmptyCells();
-    rtl::OUString aResult = xRanges->getRangeAddressesAsString();
-    std::cout << "testQueryEmptyCells: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
-    CPPUNIT_ASSERT_MESSAGE("testQueryEmptyCells", aResult == aExpected);
-}
-
-void ScXCellRangesQuery::testQueryFormulaCells()
-{
-    rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.C2"));
-    uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init();
-    uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryFormulaCells(sheet::CellFlags::FORMULA);
-    rtl::OUString aResult = xRanges->getRangeAddressesAsString();
-    std::cout << "testQueryFormulaCells: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
-    CPPUNIT_ASSERT_MESSAGE("testQueryFormulaCells", aResult == aExpected);
-}
-
-void ScXCellRangesQuery::testQueryIntersection()
-{
-    rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.D4:D5"));
-    uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init();
-    uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryIntersection(table::CellRangeAddress(0,3,3,7,7));
-    rtl::OUString aResult = xRanges->getRangeAddressesAsString();
-    std::cout << "testQueryIntersection: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
-    CPPUNIT_ASSERT_MESSAGE("testQueryFormulaCells", aResult == aExpected);
-}
-
-void ScXCellRangesQuery::testQueryRowDifference()
-{
-    rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.A2:A4,Sheet1.C2:D4"));
-    uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init();
-    uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryRowDifferences(table::CellAddress(0,1,1));
-    rtl::OUString aResult = xRanges->getRangeAddressesAsString();
-    std::cout << "testQueryRowDifference: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
-    CPPUNIT_ASSERT_MESSAGE("testQueryFormulaCells", aResult == aExpected);
-}
-
-void ScXCellRangesQuery::testQueryVisibleCells()
-{
-    setRowVisible(false);
-    rtl::OUString aExpected(RTL_CONSTASCII_USTRINGPARAM("Sheet1.A2"));
-    uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init();
-    uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryVisibleCells();
-    rtl::OUString aResult = xRanges->getRangeAddressesAsString();
-    std::cout << "testQueryVisibleCells: Result: " << rtl::OUStringToOString(aResult, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
-    CPPUNIT_ASSERT_MESSAGE("testQueryFormulaCells", aResult == aExpected);
-}
-
-void ScXCellRangesQuery::setRowVisible(bool bVisible)
-{
-
-}
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ScXCellRangesQuery);
-
-CPPUNIT_PLUGIN_IMPLEMENT();
-
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/test/source/unoapi_test.cxx b/test/source/unoapi_test.cxx
index 0a8213e..0a6f4aa 100644
--- a/test/source/unoapi_test.cxx
+++ b/test/source/unoapi_test.cxx
@@ -29,7 +29,7 @@
 #include "test/unoapi_test.hxx"
 
 UnoApiTest::UnoApiTest()
-      : m_aBaseString(RTL_CONSTASCII_USTRINGPARAM("/sc/qa/unoapi/testdocuments"))
+      : m_aBaseString(RTL_CONSTASCII_USTRINGPARAM("/sc/qa/extras/testdocuments"))
 {
 }
 


More information about the Libreoffice-commits mailing list