| /************************************************************** |
| * |
| * 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 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| package ifc.sheet; |
| |
| import lib.MultiMethodTest; |
| import lib.Status; |
| import lib.StatusException; |
| |
| import com.sun.star.beans.PropertyValue; |
| import com.sun.star.sheet.SubTotalColumn; |
| import com.sun.star.sheet.XDatabaseRange; |
| import com.sun.star.sheet.XSheetFilterDescriptor; |
| import com.sun.star.sheet.XSubTotalDescriptor; |
| import com.sun.star.table.CellRangeAddress; |
| import com.sun.star.table.XCell; |
| import com.sun.star.table.XCellRange; |
| |
| /** |
| * Testing <code>com.sun.star.sheet.XDatabaseRange</code> |
| * interface methods : |
| * <ul> |
| * <li><code> getDataArea()</code></li> |
| * <li><code> setDataArea()</code></li> |
| * <li><code> getSortDescriptor()</code></li> |
| * <li><code> getFilterDescriptor()</code></li> |
| * <li><code> getSubTotalDescriptor()</code></li> |
| * <li><code> getImportDescriptor()</code></li> |
| * <li><code> refresh()</code></li> |
| * </ul> <p> |
| * This test needs the following object relations : |
| * <ul> |
| * <li> <code>'DATAAREA'</code> (of type <code>CellRangeAddress</code>): |
| * to have cell range address for test of method <code>getDataArea()</code></li> |
| * <li> <code>'XCELLRANGE'</code> (of type <code>XCellRange</code>): |
| * cell range of the spreadsheet with database range, |
| * to get values of cell</li> |
| * <ul> <p> |
| * @see com.sun.star.sheet.XDatabaseRange |
| * @see com.sun.star.table.CellRangeAddress |
| */ |
| public class _XDatabaseRange extends MultiMethodTest { |
| |
| public XDatabaseRange oObj = null; |
| CellRangeAddress oldCRA = null; |
| XCellRange xCellRange = null; |
| |
| /** |
| * Retrieves object relations. |
| * @throws StatusException If one of relations not found. |
| */ |
| protected void before() { |
| oldCRA = (CellRangeAddress)tEnv.getObjRelation("DATAAREA"); |
| if (oldCRA == null) { |
| throw new StatusException(Status.failed |
| ("Relation 'DATAAREA' not found")); |
| } |
| xCellRange = (XCellRange)tEnv.getObjRelation("XCELLRANGE"); |
| if (xCellRange == null) { |
| throw new StatusException(Status.failed |
| ("Relation 'XCELLRANGE' not found")); |
| } |
| } |
| |
| /** |
| * Test calls the method and compares returned cell range address with |
| * cell range address obtained by object relation <code>'DATAAREA'</code>.<p> |
| * Has <b> OK </b> status if all fields of cell range addresses are equal. <p> |
| */ |
| public void _getDataArea() { |
| boolean bResult = true; |
| CellRangeAddress objCRA = oObj.getDataArea(); |
| bResult &= objCRA.EndColumn == oldCRA.EndColumn; |
| bResult &= objCRA.EndRow == oldCRA.EndRow; |
| bResult &= objCRA.Sheet == oldCRA.Sheet; |
| bResult &= objCRA.StartColumn == oldCRA.StartColumn; |
| bResult &= objCRA.StartRow == oldCRA.StartRow; |
| tRes.tested("getDataArea()", bResult); |
| } |
| |
| /** |
| * Test calls the method and checks returned value. <p> |
| * Has <b> OK </b> status if returned value isn't null. <p> |
| */ |
| public void _getFilterDescriptor() { |
| XSheetFilterDescriptor FD = oObj.getFilterDescriptor(); |
| tRes.tested("getFilterDescriptor()", FD != null); |
| } |
| |
| /** |
| * Test calls the method and checks returned value. <p> |
| * Has <b> OK </b> status if returned value isn't null. <p> |
| */ |
| public void _getImportDescriptor() { |
| PropertyValue[] pva = oObj.getImportDescriptor(); |
| tRes.tested("getImportDescriptor()", pva != null); |
| } |
| |
| /** |
| * Test calls the method and checks returned value. <p> |
| * Has <b> OK </b> status if returned value isn't null. <p> |
| */ |
| public void _getSortDescriptor() { |
| PropertyValue[] pva = oObj.getSortDescriptor(); |
| tRes.tested("getSortDescriptor()", pva != null); |
| } |
| |
| /** |
| * Test calls the method and checks returned value. <p> |
| * Has <b> OK </b> status if returned value isn't null. <p> |
| */ |
| public void _getSubTotalDescriptor() { |
| STD = oObj.getSubTotalDescriptor(); |
| tRes.tested("getSubTotalDescriptor()", STD != null); |
| } |
| |
| XSubTotalDescriptor STD = null; |
| |
| /** |
| * Test adds new SubTotalDescriptor and checks value of cell with |
| * subtotal sum after refresh() call. <p> |
| * Has <b> OK </b> if value of cell with subtotal sum was changed |
| * after refresh() call.<p> |
| */ |
| public void _refresh() { |
| requiredMethod("getSubTotalDescriptor()"); |
| requiredMethod("setDataArea()"); |
| |
| for(int i = STARTROW; i < ENDROW+1; i++) { |
| try { |
| XCell cell = xCellRange.getCellByPosition(COL, i); |
| cell.setValue(i); |
| } catch(com.sun.star.lang.IndexOutOfBoundsException e) { |
| log.println("Unexpected exception"); |
| e.printStackTrace(log); |
| tRes.tested("refresh()", false); |
| } |
| } |
| |
| SubTotalColumn[] STC = new SubTotalColumn[1]; |
| STC[0] = new SubTotalColumn(); |
| STC[0].Column = COL; |
| STC[0].Function = com.sun.star.sheet.GeneralFunction.SUM; |
| |
| double oldVal = 0; |
| try { |
| XCell checkCell = xCellRange.getCellByPosition(COL, ENDROW); |
| oldVal = checkCell.getValue(); |
| } catch(com.sun.star.lang.IndexOutOfBoundsException e) { |
| log.println("Unexpected exception"); |
| e.printStackTrace(log); |
| tRes.tested("refresh()", false); |
| } |
| log.println("Value of the cell (" + COL + ", " + ENDROW + |
| ") : " + oldVal ); |
| |
| log.println("Set new SubTotal descriptor..."); |
| |
| STD.clear(); |
| STD.addNew(STC, 1); |
| |
| double valBeforeRefresh = 0; |
| try { |
| XCell checkCell = xCellRange.getCellByPosition(COL, ENDROW); |
| valBeforeRefresh = checkCell.getValue(); |
| } catch(com.sun.star.lang.IndexOutOfBoundsException e) { |
| log.println("Unexpected exception"); |
| e.printStackTrace(log); |
| tRes.tested("refresh()", false); |
| } |
| log.println("Value of the cell (" + COL + ", " + ENDROW + |
| ") : " + valBeforeRefresh ); |
| |
| log.println("Now call refresh()..."); |
| oObj.refresh(); |
| |
| double valAfterRefresh = 0; |
| try { |
| XCell checkCell = xCellRange.getCellByPosition(COL, ENDROW); |
| valAfterRefresh = checkCell.getValue(); |
| } catch(com.sun.star.lang.IndexOutOfBoundsException e) { |
| log.println("Unexpected exception"); |
| e.printStackTrace(log); |
| tRes.tested("refresh()", false); |
| } |
| log.println("Value of the cell (" + COL + ", " + ENDROW + |
| ") : " + valAfterRefresh ); |
| |
| tRes.tested("refresh()", oldVal != valAfterRefresh && |
| oldVal == valBeforeRefresh); |
| } |
| |
| final short COL = 0; |
| final short STARTROW = 0; |
| final short ENDROW = 5; |
| |
| /** |
| * Test creates new cell range address and calls the method. <p> |
| * Has <b> OK </b> status if the method successfully returns. <p> |
| */ |
| public void _setDataArea() { |
| executeMethod("getDataArea()"); |
| CellRangeAddress newCRA = new CellRangeAddress(); |
| newCRA.Sheet = oldCRA.Sheet; |
| newCRA.StartColumn = COL; |
| newCRA.EndColumn = COL; |
| newCRA.StartRow = STARTROW; |
| newCRA.EndRow = ENDROW; |
| |
| oObj.setDataArea(newCRA); |
| |
| tRes.tested("setDataArea()", true); |
| } |
| |
| protected void after() { |
| disposeEnvironment(); |
| } |
| } |
| |
| |