[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