diff options
Diffstat (limited to 'qadevOOo/tests/java/ifc/sheet/_XCellRangesQuery.java')
-rw-r--r-- | qadevOOo/tests/java/ifc/sheet/_XCellRangesQuery.java | 300 |
1 files changed, 300 insertions, 0 deletions
diff --git a/qadevOOo/tests/java/ifc/sheet/_XCellRangesQuery.java b/qadevOOo/tests/java/ifc/sheet/_XCellRangesQuery.java new file mode 100644 index 000000000..de0c327af --- /dev/null +++ b/qadevOOo/tests/java/ifc/sheet/_XCellRangesQuery.java @@ -0,0 +1,300 @@ +/* + * 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.CellFlags; +import com.sun.star.sheet.FormulaResult; +import com.sun.star.sheet.XCellRangesQuery; +import com.sun.star.sheet.XSheetCellRanges; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.table.CellAddress; +import com.sun.star.table.CellRangeAddress; +import com.sun.star.table.XColumnRowRange; +import com.sun.star.table.XTableColumns; +import com.sun.star.table.XTableRows; +import com.sun.star.uno.UnoRuntime; + +/** + * Test the XCellRangesQuery interface. + * Needed object relations: + * <ul> + * <li>"SHEET": an XSpreadSheet object + * </li> + * <li>"XCellRangesQuery.EXPECTEDRESULTS": the expected results for the test + * methods as a String array.<br> + * @see mod._sc.ScCellCursorObj or + * @see mod._sc.ScCellObj for an example how this should look like. + * </li> + * </ul> + */ +public class _XCellRangesQuery extends MultiMethodTest { + public XCellRangesQuery oObj; + protected XSpreadsheet oSheet; + protected XTableRows oRows; + protected XTableColumns oColumns; + protected String[] mExpectedResults = null; + protected boolean bMakeEntriesAndDispose = false; + String getting = ""; + String expected = ""; + // provide the object with constants to fill the expected results array + public static final int QUERYCOLUMNDIFFERENCES = 0; + public static final int QUERYCONTENTCELLS = 1; + public static final int QUERYEMPTYCELLS = 2; + public static final int QUERYFORMULACELLS = 3; + public static final int QUERYINTERSECTION = 4; + public static final int QUERYROWDIFFERENCES = 5; + public static final int QUERYVISIBLECELLS = 6; + + @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")); + } + } + + // expected results + mExpectedResults = (String[])tEnv.getObjRelation( + "XCellRangesQuery.EXPECTEDRESULTS"); + + XColumnRowRange oColumnRowRange = UnoRuntime.queryInterface( + XColumnRowRange.class, + oSheet); + oRows = oColumnRowRange.getRows(); + oColumns = oColumnRowRange.getColumns(); + + // set this in object if the interface has to make its own settings + // and the environment has to be disposed: this is necessary for objects + // that do not make entries on the sheet themselves + Object o = tEnv.getObjRelation("XCellRangesQuery.CREATEENTRIES"); + if (o instanceof Boolean) { + bMakeEntriesAndDispose = ((Boolean)o).booleanValue(); + } + if(bMakeEntriesAndDispose) { + oRows.removeByIndex(4, oRows.getCount() - 4); + oColumns.removeByIndex(4, oColumns.getCount() - 4); + + try { + oSheet.getCellByPosition(1, 1).setValue(5); + oSheet.getCellByPosition(1, 2).setValue(15); + oSheet.getCellByPosition(2, 1).setFormula("=B2+B3"); + oSheet.getCellByPosition(1, 3).setFormula("=B2+B4"); + oSheet.getCellByPosition(3, 2).setFormula(""); + oSheet.getCellByPosition(3, 3).setFormula(""); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Couldn't fill cells " + e.getLocalizedMessage()); + } + } + + } + + /** + * Tested method returns each cell of each column that is different to the + * cell in a given row + */ + public void _queryColumnDifferences() { + boolean res = true; + XSheetCellRanges ranges = oObj.queryColumnDifferences( + new CellAddress((short) 0, 1, 1)); + getting = ranges.getRangeAddressesAsString(); + expected = mExpectedResults[QUERYCOLUMNDIFFERENCES]; + + if (!getting.startsWith(expected)) { + log.println("Getting: " + getting); + log.println("Should have started with: " + expected); + res = false; + } + + tRes.tested("queryColumnDifferences()", res); + } + + /** + * Tested method returns all cells of a given type, defined in + * CellFlags + * @see com.sun.star.sheet.CellFlags + */ + public void _queryContentCells() { + boolean res = true; + XSheetCellRanges ranges = oObj.queryContentCells( + (short) CellFlags.VALUE); + getting = ranges.getRangeAddressesAsString(); + expected = mExpectedResults[QUERYCONTENTCELLS]; + + if (!getting.startsWith(expected)) { + log.println("Getting: " + getting); + log.println("Should have started with: " + expected); + res = false; + } + + tRes.tested("queryContentCells()", res); + } + + /** + * Tested method returns all empty cells of the range + */ + public void _queryEmptyCells() { + boolean res = true; + XSheetCellRanges ranges = oObj.queryEmptyCells(); + getting = ranges.getRangeAddressesAsString(); + expected = mExpectedResults[QUERYEMPTYCELLS]; + + int startIndex = 0; + int endIndex = -5; + String checkString = null; + + while (endIndex != -1) { + startIndex = endIndex + 5; + endIndex = expected.indexOf(" ... ", startIndex); + if (endIndex == -1) { + checkString = expected.substring(startIndex); + } + else { + checkString = expected.substring(startIndex, endIndex); + } + res &= (getting.indexOf(checkString) > -1); + } + + if (!res) { + log.println("Getting: " + getting); + log.println("Should have contained: " + expected); + } + + tRes.tested("queryEmptyCells()", res); + } + + /** + * Tested method returns all cells of a given type, defined in + * FormulaResult + * @see com.sun.star.sheet.FormulaResult + */ + public void _queryFormulaCells() { + boolean res = true; + XSheetCellRanges ranges = oObj.queryFormulaCells( + (short) FormulaResult.VALUE); + getting = ranges.getRangeAddressesAsString(); + expected = mExpectedResults[QUERYFORMULACELLS]; + + if (!getting.equals(expected)) { + log.println("Getting: " + getting); + log.println("Expected: " + expected); + res = false; + } + + tRes.tested("queryFormulaCells()", res); + } + + public void _queryIntersection() { + boolean res = true; + XSheetCellRanges ranges = oObj.queryIntersection( + new CellRangeAddress((short) 0, 3, 3, 7, 7)); + getting = ranges.getRangeAddressesAsString(); + expected = mExpectedResults[QUERYINTERSECTION]; + + if (!getting.startsWith(expected)) { + log.println("Getting: " + getting); + log.println("Should have started with: " + expected); + res = false; + } + + tRes.tested("queryIntersection()", res); + } + + /** + * Tested method returns each cell of each row that is different to the + * cell in a given column + */ + public void _queryRowDifferences() { + boolean res = true; + XSheetCellRanges ranges = oObj.queryRowDifferences( + new CellAddress((short) 0, 1, 1)); + getting = ranges.getRangeAddressesAsString(); + expected = mExpectedResults[QUERYROWDIFFERENCES]; + + if (!getting.startsWith(expected)) { + log.println("Getting: " + getting); + log.println("Should have started with: " + expected); + res = false; + } + + tRes.tested("queryRowDifferences()", res); + } + + public void _queryVisibleCells() { + setRowVisible(false); + + boolean res = true; + XSheetCellRanges ranges = oObj.queryVisibleCells(); + getting = ranges.getRangeAddressesAsString(); + expected = mExpectedResults[QUERYVISIBLECELLS]; + + if (!getting.startsWith(expected)) { + log.println("Getting: " + getting); + log.println("Should have started with: " + expected); + res = false; + } + + setRowVisible(true); + tRes.tested("queryVisibleCells()", res); + } + + protected void setRowVisible(boolean vis) { + try { + XPropertySet rowProp = UnoRuntime.queryInterface( + XPropertySet.class, + oRows.getByIndex(0)); + rowProp.setPropertyValue("IsVisible", Boolean.valueOf(vis)); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("couldn't get Row " + e.getLocalizedMessage()); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("problems setting Property 'isVisible' " + + e.getLocalizedMessage()); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("problems setting Property 'isVisible' " + + e.getLocalizedMessage()); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("problems setting Property 'isVisible' " + + e.getLocalizedMessage()); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("problems setting Property 'isVisible' " + + e.getLocalizedMessage()); + } + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + if(bMakeEntriesAndDispose) { + disposeEnvironment(); + } + } +} |