/* * 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 complex.dataPilot; import com.sun.star.beans.XPropertySet; import com.sun.star.container.XIndexAccess; import com.sun.star.container.XNamed; import com.sun.star.sheet.DataPilotFieldOrientation; import com.sun.star.sheet.XDataPilotDescriptor; import com.sun.star.table.CellRangeAddress; import com.sun.star.uno.UnoRuntime; import lib.TestParameters; /** * Testing com.sun.star.sheet.XDataPilotDescriptor * interface methods : *

* This test needs the following object relations : *

* @see com.sun.star.sheet.XDataPilotDescriptor */ public class _XDataPilotDescriptor { private final XDataPilotDescriptor oObj; private final CellRangeAddress CRA = new CellRangeAddress((short)1, 0, 0, 5, 5); private static final String sTag = "XDataPilotDescriptor_Tag"; private String fieldsNames[]; private int tEnvFieldsAmount = 0; /** * The test parameters */ private final TestParameters param; /** * Constructor: gets the object to test, a logger and the test parameters * @param xObj The test object * @param param The test parameters */ public _XDataPilotDescriptor(XDataPilotDescriptor xObj/*, LogWriter log*/, TestParameters param) { oObj = xObj; this.param = param; } /** * Retrieves object relations. */ public boolean before() { Integer amount = (Integer)param.get("FIELDSAMOUNT"); if (amount == null) { System.out.println("Relation 'FIELDSAMOUNT' not found"); return false; } tEnvFieldsAmount = amount.intValue(); return true; } /** * Test calls the method and compares returned value with value that was set * in method setSourceRange().

* Has OK status if all fields of cell range addresses are equal.

* The following method tests are to be completed successfully before : *

*/ public boolean _getSourceRange(){ // requiredMethod("setSourceRange()"); boolean bResult = true; CellRangeAddress objRA = oObj.getSourceRange(); bResult &= objRA.Sheet == CRA.Sheet; bResult &= objRA.StartRow == CRA.StartRow; bResult &= objRA.StartColumn == CRA.StartColumn; bResult &= objRA.EndRow == CRA.EndRow; bResult &= objRA.EndColumn == CRA.EndColumn; return bResult; } /** * Test gets the current source range, stores it and sets new source range.

* Has OK status if the method successfully returns.

* The following method tests are to be executed before : *

*/ public boolean _setSourceRange(){ oObj.setSourceRange(CRA); return true; } /** * Test calls the method and checks returned value with value that was set * by method setTag().

* Has OK status if returned value is equal to value that was set * by method setTag().

* The following method tests are to be completed successfully before : *

*/ public boolean _getTag(){ boolean bResult = true; String objTag = oObj.getTag(); bResult &= objTag.equals(sTag); return bResult; } /** * Test just calls the method.

* Has OK status if the method successfully returns.

*/ public boolean _setTag(){ oObj.setTag(sTag); return true; } /** * Test calls the method , checks returned value, compares * number of fields gotten from returned value and obtained by object * relation 'FIELDSAMOUNT' and set property * Orientation to one of DataPilotFieldOrientation values.

* Has OK status if returned value isn't null, number of fields * gotten from returned value is less than number of fields obtained by relation * and no exceptions were thrown.

*/ public boolean _getDataPilotFields(){ boolean bResult = true; XIndexAccess IA = null; IA = oObj.getDataPilotFields(); if (IA == null) { System.out.println("Returned value is null."); return false; } else {System.out.println("getDataPilotFields returned not Null value -- OK");} int fieldsAmount = IA.getCount(); if (fieldsAmount < tEnvFieldsAmount) { System.out.println("Number of fields is less than number gotten by relation."); return false; } else {System.out.println("count of returned fields -- OK");} fieldsNames = new String[tEnvFieldsAmount]; int i = -1 ; int cnt = 0 ; while (++i < fieldsAmount) { Object field; try { field = IA.getByIndex(i); } catch(com.sun.star.lang.WrappedTargetException e) { e.printStackTrace(); return false; } catch(com.sun.star.lang.IndexOutOfBoundsException e) { e.printStackTrace(); return false; } XNamed named = UnoRuntime.queryInterface(XNamed.class, field); String name = named.getName(); System.out.println("Field : '" + name + "' ... ") ; if (!name.equals("Data")) { fieldsNames[cnt] = name ; XPropertySet props = UnoRuntime.queryInterface(XPropertySet.class, field); try { switch (cnt % 5) { case 0 : props.setPropertyValue("Orientation", DataPilotFieldOrientation.COLUMN); System.out.println(" Column") ; break; case 1 : props.setPropertyValue("Orientation", DataPilotFieldOrientation.ROW); System.out.println(" Row") ; break; case 2 : props.setPropertyValue("Orientation", DataPilotFieldOrientation.DATA); System.out.println(" Data") ; break; case 3 : props.setPropertyValue("Orientation", DataPilotFieldOrientation.HIDDEN); System.out.println(" Hidden") ; break; case 4 : props.setPropertyValue("Orientation", DataPilotFieldOrientation.PAGE); System.out.println(" Page") ; props.setPropertyValue("CurrentPage", "20"); break; } } catch (com.sun.star.lang.WrappedTargetException e) { e.printStackTrace(); return false; } catch (com.sun.star.lang.IllegalArgumentException e) { e.printStackTrace(); return false; } catch (com.sun.star.beans.PropertyVetoException e) { e.printStackTrace(); return false; } catch (com.sun.star.beans.UnknownPropertyException e) { e.printStackTrace(); return false; } if (++cnt > 4) { break; } } else { return false; } } return bResult; } /** * Test calls the method and checks returned collection using the method * CheckNames().

* Has OK status if the method CheckNames() returns true * and no exceptions were thrown.

* The following method tests are to be completed successfully before : *

*/ public boolean _getColumnFields(){ System.out.println("getColumnFields") ; XIndexAccess IA = oObj.getColumnFields(); return CheckNames(IA, 0); } /** * Test calls the method and checks returned collection using the method * CheckNames().

* Has OK status if the method CheckNames() returned true * and no exceptions were thrown.

* The following method tests are to be completed successfully before : *

*/ public boolean _getDataFields(){ System.out.println("getDataFields") ; XIndexAccess IA = oObj.getDataFields(); return CheckNames(IA, 2); } /** * Test calls the method and checks returned collection using the method * CheckNames().

* Has OK status if the method CheckNames() returned true * and no exceptions were thrown.

* The following method tests are to be completed successfully before : *

*/ public boolean _getHiddenFields(){ System.out.println("getHiddenFields") ; XIndexAccess IA = oObj.getHiddenFields(); return CheckNames(IA, 3); } /** * Test calls the method and checks returned collection using the method * CheckNames().

* Has OK status if the method CheckNames() returned true * and no exceptions were thrown.

* The following method tests are to be completed successfully before : *

*/ public boolean _getRowFields(){ System.out.println("getRowFields") ; XIndexAccess IA = oObj.getRowFields(); boolean bResult = CheckNames(IA, 1); return bResult; } /** * setting of PageFields isn't supported by StarOffice Calc * Has OK status if the returned IndexAccess * isn't NULL.

* The following method tests are to be completed successfully before : *

*/ public boolean _getPageFields(){ System.out.println("getPageFields") ; XIndexAccess IA = oObj.getPageFields(); boolean bResult = CheckNames(IA, 4); return bResult; } /** * Test calls the method and checks returned value.

* Has OK status if returned value isn't null * and no exceptions were thrown.

*/ public boolean _getFilterDescriptor(){ boolean bResult = oObj.getFilterDescriptor() != null; return bResult; } /** * Method checks that the field with index rem exists * in the array IA. * @param IA collection of elements that support interface XNamed * @param rem index of field in the array of field names that was stored in * the method getDataPilotFields() * @return true if required field name exists in passed collection; * false otherwise * @see com.sun.star.container.XNamed */ private boolean CheckNames(XIndexAccess IA, int rem) { String name = null; if (IA == null) { System.out.println("Null returned.") ; return false ; } if (fieldsNames[rem] == null) { System.out.println("No fields were set to this orientation - can't check result") ; return true ; } if (IA.getCount() == 0) { System.out.println("No fields found. Must be at least '" + fieldsNames[rem] + "'") ; return false ; } try { System.out.println("Fields returned ") ; for (int i = 0; i < IA.getCount(); i++) { Object field = IA.getByIndex(i); XNamed named = UnoRuntime.queryInterface (XNamed.class, field); name = named.getName(); System.out.println(" " + name) ; if (fieldsNames[rem].equals(name)) { System.out.println(" - OK") ; return true ; } } } catch (com.sun.star.lang.WrappedTargetException e) { e.printStackTrace(); return false ; } catch (com.sun.star.lang.IndexOutOfBoundsException e) { e.printStackTrace(); return false ; } System.out.println(" - FAILED (field " + fieldsNames[rem] + " was not found.)") ; return false ; } /** * Recreates object(to back old orientations of the fields). * protected void after() { disposeEnvironment(); }*/ }