Hey guys,

after we enabled subsequenttests in sc again we have now a lot of
failing tests. Instead of debugging the java based tests I plan to
rewrite them in c++ and fix them during that.

I have attached a first patch that is only porting one part of a
failing test to c++. It would be nice if someone could have a look at
it and comment on my concept. The test itself is a bit ridiculous and
I think the original author did some concept mistakes in this test.

Here are some comments from me:

- based on macros_test, and therefore loads a testfile through
Desktop::loadComponentFromURL
- inits the UI like the old subsequenttests
- having test files instead of code that fills the cells make it
easier to use the test data outside of the test ( e.g. debugging a
problem, having a testdocument with known result for some actions)
- only a little bit of code needed for a new test, most code is shared
with our in-build tests
- porting old tests is straightforward
- does not need an installation
- needs much more makefile lines than the old tests ( there might be a
solution to this )

The concept needs still a lot of love and is only intended as starting
point. I hope that this makes debugging subsequenttests easier and
writing new tests as easy as writing in-build tests.

Do you have comments or suggestions?

Regards,
Markus
From bbce3329e791a0c9c5c1594bc215c466c3bfb294 Mon Sep 17 00:00:00 2001
From: Markus Mohrhard <markus.mohrh...@googlemail.com>
Date: Wed, 30 Nov 2011 14:40:29 +0100
Subject: [PATCH] first try to replace failing subsequentest with c++ test

---
 sc/Module_sc.mk                                 |    3 +-
 sc/qa/unoapi/testdocuments/xcellrangesquery.ods |  Bin 0 -> 8851 bytes
 sc/qa/unoapi/xcellrangesquery.cxx               |  156 +++++++++++++++++++++++
 test/inc/test/unoapi_test.hxx                   |   64 +++++++++
 test/prj/d.lst                                  |    2 +-
 test/source/makefile.mk                         |    2 +-
 test/source/unoapi_test.cxx                     |   67 ++++++++++
 7 files changed, 290 insertions(+), 4 deletions(-)
 create mode 100644 sc/qa/unoapi/testdocuments/xcellrangesquery.ods
 create mode 100644 sc/qa/unoapi/xcellrangesquery.cxx
 create mode 100644 test/inc/test/unoapi_test.hxx
 create mode 100644 test/source/unoapi_test.cxx

diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk
index 0e15220..8619c9d 100644
--- a/sc/Module_sc.mk
+++ b/sc/Module_sc.mk
@@ -35,8 +35,7 @@ $(eval $(call gb_Module_add_targets,sc,\
 ))
 
 $(eval $(call gb_Module_add_check_targets,sc,\
-	CppunitTest_sc_filters_test \
-	CppunitTest_sc_ucalc \
+	CppunitTest_sc_unoapi_xcellrangesquery \
 ))
 
 $(eval $(call gb_Module_add_subsequentcheck_targets,sc,\
diff --git a/sc/qa/unoapi/testdocuments/xcellrangesquery.ods b/sc/qa/unoapi/testdocuments/xcellrangesquery.ods
new file mode 100644
index 0000000000000000000000000000000000000000..0435fee9a74e55106d82d9d162564ff532c97fa2
GIT binary patch
literal 8851
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
VqO)&536F*NLql|o1WwY|{{ydkUo!vz

literal 0
HcmV?d00001

diff --git a/sc/qa/unoapi/xcellrangesquery.cxx b/sc/qa/unoapi/xcellrangesquery.cxx
new file mode 100644
index 0000000..18ffda8
--- /dev/null
+++ b/sc/qa/unoapi/xcellrangesquery.cxx
@@ -0,0 +1,156 @@
+/* -*- 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.mohrh...@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 testQueryColumnDifference();
+    void testQueryContentDifference();
+    void testQueryEmptyCells();
+    void testQueryFormulaCells();
+    void testQueryIntersection();
+    void testQueryRowDifference();
+    void testQueryVisibleCells();
+    void testSetRowVisible();
+
+    CPPUNIT_TEST_SUITE(ScXCellRangesQuery);
+    CPPUNIT_TEST(testQueryColumnDifference);
+    CPPUNIT_TEST(testQueryContentDifference);
+    CPPUNIT_TEST(testQueryFormulaCells);
+    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(""));
+    uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery = init();
+    uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryEmptyCells();
+    rtl::OUString aResult = xRanges->getRangeAddressesAsString();
+    //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->queryContentCells(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()
+{
+
+}
+
+void ScXCellRangesQuery::testQueryRowDifference()
+{
+
+}
+
+void ScXCellRangesQuery::testQueryVisibleCells()
+{
+
+}
+
+void ScXCellRangesQuery::testSetRowVisible()
+{
+
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(ScXCellRangesQuery);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/test/inc/test/unoapi_test.hxx b/test/inc/test/unoapi_test.hxx
new file mode 100644
index 0000000..54dcff8
--- /dev/null
+++ b/test/inc/test/unoapi_test.hxx
@@ -0,0 +1,64 @@
+/* -*- 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.mohrh...@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 <sal/config.h>
+#include <test/bootstrapfixture.hxx>
+#include <unotest/macros_test.hxx>
+#include <rtl/ustrbuf.hxx>
+#include <osl/file.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;
+
+// basic uno api test class
+
+class OOO_DLLPUBLIC_TEST UnoApiTest : public test::BootstrapFixture, public unotest::MacrosTest
+{
+public:
+    UnoApiTest();
+
+    void createFileURL(const rtl::OUString& aFileBase, rtl::OUString& rFilePath);
+
+    virtual void setUp();
+    virtual void tearDown();
+
+
+private:
+    uno::Reference<uno::XInterface> m_xCalcComponent;
+    rtl::OUString m_aBaseString;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/test/prj/d.lst b/test/prj/d.lst
index 49b0f95..a021852 100644
--- a/test/prj/d.lst
+++ b/test/prj/d.lst
@@ -6,7 +6,7 @@ mkdir: %_DEST%\inc\test
 ..\%__SRC%\lib\libtest.dll.a %_DEST%\lib\libtest.dll.a
 ..\inc\test\testdllapi.hxx %_DEST%\inc\test\testdllapi.hxx
 ..\inc\test\bootstrapfixture.hxx %_DEST%\inc\test\bootstrapfixture.hxx
-..\inc\test\unoapitest.hxx %_DEST%\inc\test\unoapitest.hxx
+..\inc\test\unoapi_test.hxx %_DEST%\inc\test\unoapi_test.hxx
 mkdir: %_DEST%\unittest
 mkdir: %_DEST%\unittest\user\
 mkdir: %_DEST%\unittest\user\autocorr
diff --git a/test/source/makefile.mk b/test/source/makefile.mk
index 876e263..43f32a6 100644
--- a/test/source/makefile.mk
+++ b/test/source/makefile.mk
@@ -39,7 +39,7 @@ CFLAGSCXX += $(CPPUNIT_CFLAGS)
 
 SLOFILES = \
     $(SLO)/bootstrapfixture.obj \
-    $(SLO)/unoapitest.obj
+    $(SLO)/unoapi_test.obj
 
 .IF "$(CROSS_COMPILING)" == "YES"
 SHL1IMPLIB = $(SHL1TARGET)
diff --git a/test/source/unoapi_test.cxx b/test/source/unoapi_test.cxx
new file mode 100644
index 0000000..0a8213e
--- /dev/null
+++ b/test/source/unoapi_test.cxx
@@ -0,0 +1,67 @@
+/* -*- 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.mohrh...@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"
+
+UnoApiTest::UnoApiTest()
+      : m_aBaseString(RTL_CONSTASCII_USTRINGPARAM("/sc/qa/unoapi/testdocuments"))
+{
+}
+
+void UnoApiTest::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 UnoApiTest::tearDown()
+{
+    uno::Reference< lang::XComponent >( m_xCalcComponent, UNO_QUERY_THROW )->dispose();
+    test::BootstrapFixture::tearDown();
+}
+
+void UnoApiTest::createFileURL(const rtl::OUString& aFileBase, rtl::OUString& rFilePath)
+{
+    rtl::OUString aSep(RTL_CONSTASCII_USTRINGPARAM("/"));
+    rtl::OUStringBuffer aBuffer( getSrcRootURL() );
+    rtl::OUString aFileExtension(RTL_CONSTASCII_USTRINGPARAM("ods"));
+    aBuffer.append(m_aBaseString).append(aSep);
+    aBuffer.append(aFileBase);
+    rFilePath = aBuffer.makeStringAndClear();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-- 
1.7.3.4

_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to