[Libreoffice-commits] core.git: include/test qadevOOo/Jar_OOoRunner.mk qadevOOo/objdsc qadevOOo/tests sc/qa test/Library_subsequenttest.mk test/source

Jens Carl j.carl43 at gmx.de
Sun Oct 29 22:46:00 UTC 2017


 include/test/sheet/xsheetfilterable.hxx                         |   38 ++
 qadevOOo/Jar_OOoRunner.mk                                       |    1 
 qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellCursorObj.csv |    2 
 qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellRangeObj.csv  |    2 
 qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableSheetObj.csv |    2 
 qadevOOo/tests/java/ifc/sheet/_XSheetFilterable.java            |  127 ----------
 sc/qa/extras/sccellcursorobj.cxx                                |    8 
 sc/qa/extras/sccellrangeobj.cxx                                 |   32 ++
 sc/qa/extras/sctablesheetobj.cxx                                |    8 
 test/Library_subsequenttest.mk                                  |    1 
 test/source/sheet/xsheetfilterable.cxx                          |   88 ++++++
 11 files changed, 168 insertions(+), 141 deletions(-)

New commits:
commit bbfec269bda9906eae66b207987d53bbea969eec
Author: Jens Carl <j.carl43 at gmx.de>
Date:   Sun Oct 29 06:24:22 2017 +0000

    tdf#45904: Move Java _XSheetFilterable test to C++
    
    Change-Id: Ib94aeb98c9c659118800b2dcc327c44a77d5fcc6
    Reviewed-on: https://gerrit.libreoffice.org/44019
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    Tested-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/include/test/sheet/xsheetfilterable.hxx b/include/test/sheet/xsheetfilterable.hxx
new file mode 100644
index 000000000000..a46b10b078f3
--- /dev/null
+++ b/include/test/sheet/xsheetfilterable.hxx
@@ -0,0 +1,38 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_TEST_SHEET_XSHEETFILTERABLE_HXX
+#define INCLUDED_TEST_SHEET_XSHEETFILTERABLE_HXX
+
+
+#include <com/sun/star/uno/XInterface.hpp>
+#include <com/sun/star/uno/Reference.hxx>
+
+#include <test/testdllapi.hxx>
+
+namespace apitest {
+
+class OOO_DLLPUBLIC_TEST XSheetFilterable
+{
+public:
+    virtual css::uno::Reference< css::uno::XInterface > init() =0;
+    virtual css::uno::Reference< css::uno::XInterface > getXSpreadsheet() =0;
+
+    void testCreateFilterDescriptor();
+    void testFilter();
+
+protected:
+    ~XSheetFilterable() {}
+};
+
+}
+
+#endif // INCLUDED_TEST_SHEET_XSHEETFILTERABLE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/qadevOOo/Jar_OOoRunner.mk b/qadevOOo/Jar_OOoRunner.mk
index 796fc0805945..570a69d29e79 100644
--- a/qadevOOo/Jar_OOoRunner.mk
+++ b/qadevOOo/Jar_OOoRunner.mk
@@ -624,7 +624,6 @@ $(eval $(call gb_Jar_add_sourcefiles,OOoRunner,\
     qadevOOo/tests/java/ifc/sheet/_XSheetCondition \
     qadevOOo/tests/java/ifc/sheet/_XSheetConditionalEntries \
     qadevOOo/tests/java/ifc/sheet/_XSheetConditionalEntry \
-    qadevOOo/tests/java/ifc/sheet/_XSheetFilterable \
     qadevOOo/tests/java/ifc/sheet/_XSheetFilterableEx \
     qadevOOo/tests/java/ifc/sheet/_XSpreadsheetView \
     qadevOOo/tests/java/ifc/style/_CharacterProperties \
diff --git a/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellCursorObj.csv b/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellCursorObj.csv
index b58f89f320a8..3b19776b3b04 100644
--- a/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellCursorObj.csv
+++ b/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellCursorObj.csv
@@ -29,8 +29,6 @@
 "ScCellCursorObj";"com::sun::star::util::XSearchable";"findNext()"
 "ScCellCursorObj";"com::sun::star::table::XColumnRowRange";"getColumns()"
 "ScCellCursorObj";"com::sun::star::table::XColumnRowRange";"getRows()"
-"ScCellCursorObj";"com::sun::star::sheet::XSheetFilterable";"createFilterDescriptor()"
-"ScCellCursorObj";"com::sun::star::sheet::XSheetFilterable";"filter()"
 "ScCellCursorObj";"com::sun::star::style::CharacterPropertiesAsian";"CharHeightAsian"
 "ScCellCursorObj";"com::sun::star::style::CharacterPropertiesAsian";"CharWeightAsian"
 "ScCellCursorObj";"com::sun::star::style::CharacterPropertiesAsian";"CharFontNameAsian"
diff --git a/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellRangeObj.csv b/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellRangeObj.csv
index a44495862bf6..9f539f5bbf10 100644
--- a/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellRangeObj.csv
+++ b/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScCellRangeObj.csv
@@ -29,8 +29,6 @@
 "ScCellRangeObj";"com::sun::star::util::XSearchable";"findNext()"
 "ScCellRangeObj";"com::sun::star::table::XColumnRowRange";"getColumns()"
 "ScCellRangeObj";"com::sun::star::table::XColumnRowRange";"getRows()"
-"ScCellRangeObj";"com::sun::star::sheet::XSheetFilterable";"createFilterDescriptor()"
-"ScCellRangeObj";"com::sun::star::sheet::XSheetFilterable";"filter()"
 "ScCellRangeObj";"com::sun::star::style::CharacterPropertiesAsian";"CharHeightAsian"
 "ScCellRangeObj";"com::sun::star::style::CharacterPropertiesAsian";"CharWeightAsian"
 "ScCellRangeObj";"com::sun::star::style::CharacterPropertiesAsian";"CharFontNameAsian"
diff --git a/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableSheetObj.csv b/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableSheetObj.csv
index 89344e1ff08a..b3ea64aca54d 100644
--- a/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableSheetObj.csv
+++ b/qadevOOo/objdsc/sc/com.sun.star.comp.office.ScTableSheetObj.csv
@@ -29,8 +29,6 @@
 "ScTableSheetObj";"com::sun::star::util::XSearchable";"findNext()"
 "ScTableSheetObj";"com::sun::star::table::XColumnRowRange";"getColumns()"
 "ScTableSheetObj";"com::sun::star::table::XColumnRowRange";"getRows()"
-"ScTableSheetObj";"com::sun::star::sheet::XSheetFilterable";"createFilterDescriptor()"
-"ScTableSheetObj";"com::sun::star::sheet::XSheetFilterable";"filter()"
 "ScTableSheetObj";"com::sun::star::style::CharacterPropertiesAsian";"CharHeightAsian"
 "ScTableSheetObj";"com::sun::star::style::CharacterPropertiesAsian";"CharWeightAsian"
 "ScTableSheetObj";"com::sun::star::style::CharacterPropertiesAsian";"CharFontNameAsian"
diff --git a/qadevOOo/tests/java/ifc/sheet/_XSheetFilterable.java b/qadevOOo/tests/java/ifc/sheet/_XSheetFilterable.java
deleted file mode 100644
index 793635b0cf22..000000000000
--- a/qadevOOo/tests/java/ifc/sheet/_XSheetFilterable.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 .
- */
-package ifc.sheet;
-
-import lib.MultiMethodTest;
-import lib.Status;
-import lib.StatusException;
-
-import com.sun.star.beans.XPropertySet;
-import com.sun.star.sheet.TableFilterField;
-import com.sun.star.sheet.XSheetFilterDescriptor;
-import com.sun.star.sheet.XSheetFilterable;
-import com.sun.star.sheet.XSpreadsheet;
-import com.sun.star.table.XColumnRowRange;
-import com.sun.star.table.XTableRows;
-import com.sun.star.uno.UnoRuntime;
-
-
-public class _XSheetFilterable extends MultiMethodTest {
-    public XSheetFilterable oObj;
-    protected XSpreadsheet oSheet;
-    protected XSheetFilterDescriptor desc;
-
-    @Override
-    protected void before() {
-        oSheet = (XSpreadsheet) tEnv.getObjRelation("SHEET");
-
-        if (oSheet == null) {
-            log.println("Object relation oSheet is missing");
-            log.println("Trying to query the needed Interface");
-            oSheet = UnoRuntime.queryInterface(
-                             XSpreadsheet.class, tEnv.getTestObject());
-
-            if (oSheet == null) {
-                throw new StatusException(Status.failed(
-                                                  "Object relation oSheet is missing"));
-            }
-        }
-    }
-
-    public void _createFilterDescriptor() {
-        desc = oObj.createFilterDescriptor(true);
-
-        TableFilterField[] tff = new TableFilterField[2];
-        tff[0] = new TableFilterField();
-        tff[0].IsNumeric = true;
-        tff[0].Field = 0;
-        tff[0].NumericValue = 2;
-        tff[0].Operator = com.sun.star.sheet.FilterOperator.GREATER_EQUAL;
-        tff[1] = new TableFilterField();
-        tff[1].IsNumeric = false;
-        tff[1].Field = 1;
-        tff[1].StringValue = "C";
-        tff[1].Operator = com.sun.star.sheet.FilterOperator.LESS;
-        desc.setFilterFields(tff);
-        tRes.tested("createFilterDescriptor()", true);
-    }
-
-    public void _filter() {
-        boolean res = true;
-
-        try {
-            oSheet.getCellByPosition(0, 0).setValue(1);
-            oSheet.getCellByPosition(0, 1).setValue(2);
-            oSheet.getCellByPosition(0, 2).setValue(3);
-            oSheet.getCellByPosition(1, 0).setFormula("A");
-            oSheet.getCellByPosition(1, 1).setFormula("D");
-            oSheet.getCellByPosition(1, 2).setFormula("B");
-            oObj.filter(desc);
-
-            XColumnRowRange oColumnRowRange = UnoRuntime.queryInterface(
-                                                      XColumnRowRange.class,
-                                                      oSheet);
-            XTableRows oRows = oColumnRowRange.getRows();
-            XPropertySet rowProp = UnoRuntime.queryInterface(
-                                           XPropertySet.class,
-                                           oRows.getByIndex(0));
-            boolean locRes = ((Boolean) rowProp.getPropertyValue("IsVisible")).booleanValue();
-
-            if (locRes) {
-                log.println("Row 1 should be invisible after filter()");
-                res &= false;
-            } else {
-                res &= true;
-            }
-
-            rowProp = UnoRuntime.queryInterface(
-                              XPropertySet.class, oRows.getByIndex(1));
-            locRes = ((Boolean) rowProp.getPropertyValue("IsVisible")).booleanValue();
-
-            if (locRes) {
-                log.println("Row 2 should be invisible after filter()");
-                res &= false;
-            } else {
-                res &= true;
-            }
-        } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
-            log.println("couldn't fill cells " + e.getLocalizedMessage());
-            res = false;
-        } catch (com.sun.star.lang.WrappedTargetException e) {
-            log.println("problems getting Property 'isVisible' " +
-                        e.getLocalizedMessage());
-            res = false;
-        } catch (com.sun.star.beans.UnknownPropertyException e) {
-            log.println("problems getting Property 'isVisible' " +
-                        e.getLocalizedMessage());
-            res = false;
-        }
-
-        tRes.tested("filter()", res);
-    }
-}
diff --git a/sc/qa/extras/sccellcursorobj.cxx b/sc/qa/extras/sccellcursorobj.cxx
index 517d4ca41131..7bfd2dcc3060 100644
--- a/sc/qa/extras/sccellcursorobj.cxx
+++ b/sc/qa/extras/sccellcursorobj.cxx
@@ -9,6 +9,7 @@
 
 #include <test/calc_unoapi_test.hxx>
 #include <test/sheet/xcellseries.hxx>
+#include <test/sheet/xsheetfilterable.hxx>
 #include <test/sheet/xsheetoperation.hxx>
 #include <test/sheet/xsubtotalcalculatable.hxx>
 #include <test/sheet/xusedareacursor.hxx>
@@ -23,9 +24,10 @@ using namespace css::uno;
 
 namespace sc_apitest {
 
-#define NUMBER_OF_TESTS 9
+#define NUMBER_OF_TESTS 11
 
 class ScCellCursorObj : public CalcUnoApiTest, public apitest::XCellSeries,
+                                               public apitest::XSheetFilterable,
                                                public apitest::XSheetOperation,
                                                public apitest::XSubTotalCalculatable,
                                                public apitest::XUsedAreaCursor,
@@ -49,6 +51,10 @@ public:
     CPPUNIT_TEST(testFillAuto);
     CPPUNIT_TEST(testFillSeries);
 
+    // XSheetFilterable
+    CPPUNIT_TEST(testCreateFilterDescriptor);
+    CPPUNIT_TEST(testFilter);
+
     // XSheetOperation
     CPPUNIT_TEST(testComputeFunction);
     CPPUNIT_TEST(testClearContents);
diff --git a/sc/qa/extras/sccellrangeobj.cxx b/sc/qa/extras/sccellrangeobj.cxx
index ad6df24af046..66489225af1e 100644
--- a/sc/qa/extras/sccellrangeobj.cxx
+++ b/sc/qa/extras/sccellrangeobj.cxx
@@ -12,6 +12,7 @@
 #include <test/sheet/xcellrangedata.hxx>
 #include <test/sheet/xcellrangesquery.hxx>
 #include <test/sheet/xcellseries.hxx>
+#include <test/sheet/xsheetfilterable.hxx>
 #include <test/sheet/xsheetoperation.hxx>
 #include <test/sheet/xsubtotalcalculatable.hxx>
 #include <test/sheet/xuniquecellformatrangessupplier.hxx>
@@ -25,12 +26,22 @@
 #include <com/sun/star/util/SortField.hpp>
 #include <comphelper/propertysequence.hxx>
 
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/sheet/FilterOperator.hpp>
+#include <com/sun/star/sheet/TableFilterField.hpp>
+#include <com/sun/star/sheet/XSheetFilterable.hpp>
+#include <com/sun/star/sheet/XSheetFilterDescriptor.hpp>
+#include <com/sun/star/sheet/XSpreadsheet.hpp>
+#include <com/sun/star/table/XColumnRowRange.hpp>
+#include <com/sun/star/table/XTableRows.hpp>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
 using namespace css;
 using namespace css::uno;
 
 namespace sc_apitest {
 
-#define NUMBER_OF_TESTS 22
+#define NUMBER_OF_TESTS 24
 
 class ScCellRangeObj : public CalcUnoApiTest, public apitest::CellProperties,
                                               public apitest::XCellRangeData,
@@ -38,6 +49,7 @@ class ScCellRangeObj : public CalcUnoApiTest, public apitest::CellProperties,
                                               public apitest::XCellSeries,
                                               public apitest::XReplaceable,
                                               public apitest::XSearchable,
+                                              public apitest::XSheetFilterable,
                                               public apitest::XSheetOperation,
                                               public apitest::XSubTotalCalculatable,
                                               public apitest::XUniqueCellFormatRangesSupplier
@@ -97,6 +109,10 @@ public:
     CPPUNIT_TEST(testCreateSubTotalDescriptor);
     CPPUNIT_TEST(testApplyRemoveSubTotals);
 
+    // XSheetFilterable (has to be last tests; otherwise it'll crash)
+    CPPUNIT_TEST(testCreateFilterDescriptor);
+    CPPUNIT_TEST(testFilter);
+
     CPPUNIT_TEST_SUITE_END();
 
 private:
@@ -121,9 +137,11 @@ uno::Reference< uno::XInterface > ScCellRangeObj::init()
     const OUString aFileBase("xcellrangesquery.ods");
     createFileURL(aFileBase, aFileURL);
     std::cout << OUStringToOString(aFileURL, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
-    if( !mxComponent.is())
+    if (!mxComponent.is())
         mxComponent = loadFromDesktop(aFileURL, "com.sun.star.sheet.SpreadsheetDocument");
     uno::Reference< sheet::XSpreadsheetDocument> xDoc (mxComponent, UNO_QUERY_THROW);
+    CPPUNIT_ASSERT_MESSAGE("no calc document!", xDoc.is());
+
     uno::Reference< container::XIndexAccess > xIndex (xDoc->getSheets(), UNO_QUERY_THROW);
     uno::Reference< sheet::XSpreadsheet > xSheet( xIndex->getByIndex(0), UNO_QUERY_THROW);
 
@@ -141,11 +159,13 @@ uno::Reference< uno::XInterface > ScCellRangeObj::getXSpreadsheet()
     const OUString aFileBase("xcellrangesquery.ods");
     createFileURL(aFileBase, aFileURL);
     std::cout << OUStringToOString(aFileURL, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
-    if( !mxComponent.is())
+    if (!mxComponent.is())
         mxComponent = loadFromDesktop(aFileURL, "com.sun.star.sheet.SpreadsheetDocument");
     uno::Reference< sheet::XSpreadsheetDocument> xDoc (mxComponent, UNO_QUERY_THROW);
+    CPPUNIT_ASSERT_MESSAGE("no calc document!", xDoc.is());
+
     uno::Reference< container::XIndexAccess > xIndex (xDoc->getSheets(), UNO_QUERY_THROW);
-    uno::Reference< sheet::XSpreadsheet > xSheet( xIndex->getByIndex(0), UNO_QUERY_THROW);
+    uno::Reference< sheet::XSpreadsheet > xSheet(xIndex->getByIndex(0), UNO_QUERY_THROW);
 
     return xSheet;
 }
@@ -156,9 +176,11 @@ uno::Reference< uno::XInterface > ScCellRangeObj::getXCellRangeData()
     const OUString aFileBase("xcellrangesquery.ods");
     createFileURL(aFileBase, aFileURL);
     std::cout << OUStringToOString(aFileURL, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
-    if( !mxComponent.is())
+    if (!mxComponent.is())
         mxComponent = loadFromDesktop(aFileURL, "com.sun.star.sheet.SpreadsheetDocument");
     uno::Reference< sheet::XSpreadsheetDocument> xDoc (mxComponent, UNO_QUERY_THROW);
+    CPPUNIT_ASSERT_MESSAGE("no calc document!", xDoc.is());
+
     uno::Reference< container::XIndexAccess > xIndex (xDoc->getSheets(), UNO_QUERY_THROW);
     uno::Reference< sheet::XSpreadsheet > xSheet( xIndex->getByIndex(1), UNO_QUERY_THROW);
 
diff --git a/sc/qa/extras/sctablesheetobj.cxx b/sc/qa/extras/sctablesheetobj.cxx
index 277cd54cbddf..d13564d137c3 100644
--- a/sc/qa/extras/sctablesheetobj.cxx
+++ b/sc/qa/extras/sctablesheetobj.cxx
@@ -10,6 +10,7 @@
 #include <test/calc_unoapi_test.hxx>
 #include <test/sheet/xcellseries.hxx>
 #include <test/sheet/xprintareas.hxx>
+#include <test/sheet/xsheetfilterable.hxx>
 #include <test/sheet/xsheetlinkable.hxx>
 #include <test/sheet/xsheetoperation.hxx>
 #include <test/sheet/xsheetpagebreak.hxx>
@@ -28,12 +29,13 @@ using namespace css::uno;
 namespace sc_apitest
 {
 
-#define NUMBER_OF_TESTS 20
+#define NUMBER_OF_TESTS 22
 
 class ScTableSheetObj : public CalcUnoApiTest, public apitest::XCellSeries,
                                                public apitest::XPrintAreas,
                                                public apitest::XReplaceable,
                                                public apitest::XSearchable,
+                                               public apitest::XSheetFilterable,
                                                public apitest::XSheetLinkable,
                                                public apitest::XSheetOperation,
                                                public apitest::XSheetPageBreak,
@@ -71,6 +73,10 @@ public:
     CPPUNIT_TEST(testFindNext);
     CPPUNIT_TEST(testFindFirst);
 
+    // XSheetFilterable
+    CPPUNIT_TEST(testCreateFilterDescriptor);
+    CPPUNIT_TEST(testFilter);
+
     // XSheetLinkable
     CPPUNIT_TEST(testSheetLinkable);
 
diff --git a/test/Library_subsequenttest.mk b/test/Library_subsequenttest.mk
index 581614cc5c80..90090d55f461 100644
--- a/test/Library_subsequenttest.mk
+++ b/test/Library_subsequenttest.mk
@@ -70,6 +70,7 @@ $(eval $(call gb_Library_add_exception_objects,subsequenttest,\
 	test/source/sheet/xsheetannotation \
 	test/source/sheet/xsheetannotations \
 	test/source/sheet/xsheetannotationshapesupplier \
+	test/source/sheet/xsheetfilterable \
 	test/source/sheet/xsheetfilterdescriptor \
 	test/source/sheet/xsheetoutline \
 	test/source/sheet/xsheetlinkable \
diff --git a/test/source/sheet/xsheetfilterable.cxx b/test/source/sheet/xsheetfilterable.cxx
new file mode 100644
index 000000000000..8539a4315bd5
--- /dev/null
+++ b/test/source/sheet/xsheetfilterable.cxx
@@ -0,0 +1,88 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <iostream>
+#include <test/sheet/xsheetfilterable.hxx>
+
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/sheet/FilterOperator.hpp>
+#include <com/sun/star/sheet/TableFilterField.hpp>
+#include <com/sun/star/sheet/XSheetFilterable.hpp>
+#include <com/sun/star/sheet/XSheetFilterDescriptor.hpp>
+#include <com/sun/star/sheet/XSpreadsheet.hpp>
+#include <com/sun/star/table/XColumnRowRange.hpp>
+#include <com/sun/star/table/XTableRows.hpp>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+
+#include <cppunit/extensions/HelperMacros.h>
+
+using namespace css;
+using namespace css::uno;
+
+namespace apitest {
+
+void XSheetFilterable::testCreateFilterDescriptor()
+{
+    uno::Reference< sheet::XSheetFilterable > xFA(init(), UNO_QUERY_THROW);
+    uno::Reference< sheet::XSheetFilterDescriptor > xSFD = xFA->createFilterDescriptor(true);
+
+    uno::Sequence< sheet::TableFilterField > xTFF;
+    xTFF.realloc(2);
+    xTFF[0].IsNumeric = true;
+    xTFF[0].Field = 0;
+    xTFF[0].NumericValue = 2;
+    xTFF[0].Operator = sheet::FilterOperator_GREATER_EQUAL;
+    xTFF[1].IsNumeric = false;
+    xTFF[1].Field = 1;
+    xTFF[1].StringValue = "C";
+    xTFF[1].Operator = sheet::FilterOperator_LESS;
+
+    CPPUNIT_ASSERT_NO_THROW_MESSAGE("Unable to create XSheetFilterDescriptor", xSFD->setFilterFields(xTFF));
+}
+
+void XSheetFilterable::testFilter()
+{
+    uno::Reference< sheet::XSpreadsheet > xSheet(getXSpreadsheet(), UNO_QUERY_THROW);
+
+    uno::Reference< sheet::XSheetFilterable > xFA(xSheet, UNO_QUERY_THROW);
+    uno::Reference< sheet::XSheetFilterDescriptor > xSFD = xFA->createFilterDescriptor(true);
+
+    uno::Sequence< sheet::TableFilterField > xTFF;
+    xTFF.realloc(2);
+    xTFF[0].IsNumeric = true;
+    xTFF[0].Field = 0;
+    xTFF[0].NumericValue = 2;
+    xTFF[0].Operator = sheet::FilterOperator_GREATER_EQUAL;
+    xTFF[1].IsNumeric = false;
+    xTFF[1].Field = 1;
+    xTFF[1].StringValue = "C";
+    xTFF[1].Operator = sheet::FilterOperator_LESS;
+    xSFD->setFilterFields(xTFF);
+
+    xSheet->getCellByPosition(0, 0)->setValue(1);
+    xSheet->getCellByPosition(0, 1)->setValue(2);
+    xSheet->getCellByPosition(0, 2)->setValue(3);
+    xSheet->getCellByPosition(1, 0)->setFormula("A");
+    xSheet->getCellByPosition(1, 1)->setFormula("B");
+    xSheet->getCellByPosition(1, 2)->setFormula("C");
+    xFA->filter(xSFD);
+
+    uno::Reference< table::XColumnRowRange > xColRowRange(xSheet, UNO_QUERY_THROW);
+    uno::Reference< table::XTableRows > xTableRows = xColRowRange->getRows();
+    uno::Reference< beans::XPropertySet > xRowProps(xTableRows->getByIndex(0), UNO_QUERY_THROW);
+    bool bIsVisible = true;
+    CPPUNIT_ASSERT(xRowProps->getPropertyValue("IsVisible") >>= bIsVisible);
+
+    CPPUNIT_ASSERT_MESSAGE("Row 1 should be invisible", bIsVisible == false);
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list