summaryrefslogtreecommitdiff
path: root/sc/qa/complex/dataPilot/CheckDataPilot.java
diff options
context:
space:
mode:
Diffstat (limited to 'sc/qa/complex/dataPilot/CheckDataPilot.java')
-rw-r--r--sc/qa/complex/dataPilot/CheckDataPilot.java403
1 files changed, 403 insertions, 0 deletions
diff --git a/sc/qa/complex/dataPilot/CheckDataPilot.java b/sc/qa/complex/dataPilot/CheckDataPilot.java
new file mode 100644
index 000000000000..b042f259072e
--- /dev/null
+++ b/sc/qa/complex/dataPilot/CheckDataPilot.java
@@ -0,0 +1,403 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+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.lang.XMultiServiceFactory;
+// import com.sun.star.sheet.TableFilterField;
+import com.sun.star.sheet.XDataPilotDescriptor;
+import com.sun.star.sheet.XDataPilotTable;
+import com.sun.star.sheet.XDataPilotTables;
+import com.sun.star.sheet.XDataPilotTablesSupplier;
+// import com.sun.star.sheet.XSheetFilterDescriptor;
+import com.sun.star.sheet.XSpreadsheet;
+import com.sun.star.sheet.XSpreadsheetDocument;
+import com.sun.star.sheet.XSpreadsheets;
+import com.sun.star.table.CellAddress;
+import com.sun.star.table.CellRangeAddress;
+import com.sun.star.uno.AnyConverter;
+import com.sun.star.uno.Type;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XInterface;
+import com.sun.star.util.XCloseable;
+import complex.dataPilot._XPropertySet;
+import complex.dataPilot._XNamed;
+import complex.dataPilot._XDataPilotDescriptor;
+import complex.dataPilot._XDataPilotTable;
+// import complexlib.ComplexTestCase;
+import lib.StatusException;
+import lib.TestParameters;
+import util.SOfficeFactory;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openoffice.test.OfficeConnection;
+import static org.junit.Assert.*;
+
+
+/**
+ * check the DataPilot of Calc.
+ */
+public class CheckDataPilot {
+ /** The data pilot field object **/
+ private XInterface mDataPilotFieldObject = null;
+ /** The data pilot table object **/
+ private XInterface mDataPilotTableObject = null;
+
+
+ private XSpreadsheetDocument xSheetDoc = null;
+
+ /**
+ * A field is filled some values. This integer determines the size of the
+ * field in x and y direction.
+ */
+ private int mMaxFieldIndex = 6;
+
+ /**
+ * The test parameters
+ */
+ private static TestParameters param = null;
+
+ /**
+ * Get all test methods
+ * @return The test methods
+ */
+ public String[] getTestMethodNames() {
+ return new String[]{"testDataPilotTableObject",
+ "testDataPilotFieldObject"};
+ }
+
+ /**
+ * Test the data pilot field object:
+ * simply execute the interface tests in a row
+ */
+ @Test public void testDataPilotFieldObject() {
+ System.out.println("Starting 'testDataPilotFieldObject'");
+ // _XNamed
+ XNamed xNamed = UnoRuntime.queryInterface(
+ XNamed.class, mDataPilotFieldObject);
+
+ _XNamed _xNamed = new _XNamed(xNamed/*, log*/, param);
+ assertTrue("_getName failed.",_xNamed._getName());
+ assertTrue("_setName failed.",_xNamed._setName());
+
+ // _XPropertySet
+ XPropertySet xProp = UnoRuntime.queryInterface(
+ XPropertySet.class, mDataPilotFieldObject);
+ _XPropertySet _xProp = new _XPropertySet(xProp/*, log*/, param);
+ assertTrue("_getPropertySetInfo failed.",_xProp._getPropertySetInfo());
+ assertTrue("_addPropertyChangeListener failed.",_xProp._addPropertyChangeListener());
+ assertTrue("_addVetoableChangeListener failed.",_xProp._addVetoableChangeListener());
+ assertTrue("_setPropertyValue failed.",_xProp._setPropertyValue());
+ assertTrue("_getPropertyValue failed.",_xProp._getPropertyValue());
+ assertTrue("_removePropertyChangeListener failed.",_xProp._removePropertyChangeListener());
+ assertTrue("_removeVetoableChangeListener failed.",_xProp._removeVetoableChangeListener());
+
+ }
+
+ /**
+ * Test the data pilot table object:
+ * simply execute the interface tests in a row
+ */
+ @Test public void testDataPilotTableObject() {
+ System.out.println("Starting 'testDataPilotTableObject'");
+ // _XNamed
+ XNamed xNamed = UnoRuntime.queryInterface(
+ XNamed.class, mDataPilotTableObject);
+ _XNamed _xNamed = new _XNamed(xNamed/*, log*/, param);
+ assertTrue("_getName failed.",_xNamed._getName());
+ assertTrue("_setName failed.",_xNamed._setName());
+
+ // _XDataPilotTable
+ XDataPilotTable xDataPilotTable =
+ UnoRuntime.queryInterface(XDataPilotTable.class,
+ mDataPilotTableObject);
+ _XDataPilotTable _xDataPilotTable =
+ new _XDataPilotTable(xDataPilotTable/*, log*/, param);
+ assertTrue("before failed.", _xDataPilotTable.before());
+ assertTrue("_getOutputRange failed.", _xDataPilotTable._getOutputRange()) ;
+// assertTrue("_refresh failed.", _xDataPilotTable._refresh()) ;
+
+ // _XDataPilotDescriptor
+ XDataPilotDescriptor xDataPilotDescriptor =
+ UnoRuntime.queryInterface(XDataPilotDescriptor.class,
+ mDataPilotTableObject);
+ _XDataPilotDescriptor _xDataPilotDescriptor =
+ new _XDataPilotDescriptor(xDataPilotDescriptor/*, log*/, param);
+ assertTrue("before failed.", _xDataPilotDescriptor.before());
+ assertTrue("_setTag failed.", _xDataPilotDescriptor._setTag()) ;
+ assertTrue("_getTag failed.", _xDataPilotDescriptor._getTag()) ;
+ assertTrue("_getFilterDescriptor failed.", _xDataPilotDescriptor._getFilterDescriptor()) ;
+ assertTrue("_getDataPilotFields failed.", _xDataPilotDescriptor._getDataPilotFields()) ;
+ assertTrue("_getColumnFields failed.", _xDataPilotDescriptor._getColumnFields()) ;
+ assertTrue("_getRowFields failed.", _xDataPilotDescriptor._getRowFields()) ;
+ assertTrue("_getDataFields failed.", _xDataPilotDescriptor._getDataFields()) ;
+ assertTrue("_getHiddenFields failed.", _xDataPilotDescriptor._getHiddenFields()) ;
+ assertTrue("_getPageFields failed.", _xDataPilotDescriptor._getPageFields()) ;
+ assertTrue("_setSourceRange failed.", _xDataPilotDescriptor._setSourceRange()) ;
+ assertTrue("_getSourceRange failed.", _xDataPilotDescriptor._getSourceRange()) ;
+ }
+
+ /**
+ * create an environment for the test
+ */
+ @Before public void before() {
+// Object oInterface = null;
+
+ // SOfficeFactory SOF = SOfficeFactory.getFactory( (XMultiServiceFactory)param.getMSF() );
+ final XMultiServiceFactory xMsf = UnoRuntime.queryInterface(XMultiServiceFactory.class, connection.getComponentContext().getServiceManager());
+ SOfficeFactory SOF = SOfficeFactory.getFactory(xMsf);
+
+ param = new TestParameters();
+ param.put("ServiceFactory", xMsf);
+
+ // the cell range
+ CellRangeAddress sCellRangeAdress = new CellRangeAddress();
+ sCellRangeAdress.Sheet = 0;
+ sCellRangeAdress.StartColumn = 1;
+ sCellRangeAdress.StartRow = 0;
+ sCellRangeAdress.EndColumn = mMaxFieldIndex-1;
+ sCellRangeAdress.EndRow = mMaxFieldIndex - 1;
+
+ // position of the data pilot table
+ CellAddress sCellAdress = new CellAddress();
+ sCellAdress.Sheet = 0;
+ sCellAdress.Column = 7;
+ sCellAdress.Row = 8;
+
+ try {
+ System.out.println( "Creating a Spreadsheet document" );
+ xSheetDoc = SOF.createCalcDoc(null);
+ } catch (com.sun.star.uno.Exception e) {
+ // Some exception occures.FAILED
+ e.printStackTrace();
+ throw new StatusException( "Couldn't create document", e );
+ }
+
+ System.out.println("Getting a sheet");
+ XSpreadsheets xSpreadsheets = xSheetDoc.getSheets();
+ XSpreadsheet oSheet = null;
+ XSpreadsheet oSheet2 = null;
+ XIndexAccess oIndexAccess =
+ UnoRuntime.queryInterface(XIndexAccess.class, xSpreadsheets);
+
+ try {
+ oSheet = (XSpreadsheet) AnyConverter.toObject(
+ new Type(XSpreadsheet.class),oIndexAccess.getByIndex(0));
+ oSheet2 = (XSpreadsheet) AnyConverter.toObject(
+ new Type(XSpreadsheet.class),oIndexAccess.getByIndex(1));
+ } catch (com.sun.star.lang.WrappedTargetException e) {
+ e.printStackTrace();
+ throw new StatusException( "Couldn't get a spreadsheet", e);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ e.printStackTrace();
+ throw new StatusException( "Couldn't get a spreadsheet", e);
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ e.printStackTrace();
+ throw new StatusException( "Couldn't get a spreadsheet", e);
+ }
+
+ try {
+ System.out.println("Filling a table");
+ for (int i = 1; i < mMaxFieldIndex; i++) {
+ oSheet.getCellByPosition(i, 0).setFormula("Col" + i);
+ oSheet.getCellByPosition(0, i).setFormula("Row" + i);
+ oSheet2.getCellByPosition(i, 0).setFormula("Col" + i);
+ oSheet2.getCellByPosition(0, i).setFormula("Row" + i);
+ }
+
+ for (int i = 1; i < mMaxFieldIndex; i++)
+ {
+ for (int j = 1; j < mMaxFieldIndex; j++)
+ {
+ oSheet.getCellByPosition(i, j).setValue(i * (j + 1));
+ oSheet2.getCellByPosition(i, j).setValue(i * (j + 2));
+ }
+ }
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ e.printStackTrace();
+ throw new StatusException("Couldn't fill some cells", e);
+ }
+
+ // change a value of a cell and check the change in the data pilot
+ // (for the XDataPilotTable.refresh() test)
+ Object oChangeCell = null;
+ Object oCheckCell = null;
+ Integer aChangeValue = null;
+ try {
+ // cell of data
+ oChangeCell = oSheet.getCellByPosition(1, 5);
+ int x = sCellAdress.Column;
+ int y = sCellAdress.Row + 3;
+ // cell of the data pilot output
+ oCheckCell = oSheet.getCellByPosition(x, y);
+ aChangeValue = new Integer(27);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ e.printStackTrace();
+ throw new StatusException( "Couldn't get cells for changeing.", e);
+ }
+
+
+ // create the test objects
+ System.out.println("Getting test objects") ;
+ XDataPilotTablesSupplier DPTS =
+ UnoRuntime.queryInterface(XDataPilotTablesSupplier.class, oSheet);
+ XDataPilotTables DPT = DPTS.getDataPilotTables();
+ XDataPilotDescriptor DPDsc = DPT.createDataPilotDescriptor();
+ DPDsc.setSourceRange(sCellRangeAdress);
+
+ XPropertySet fieldPropSet = null;
+ try {
+ Object oDataPilotField = DPDsc.getDataPilotFields().getByIndex(0);
+ fieldPropSet =
+ UnoRuntime.queryInterface(XPropertySet.class, oDataPilotField);
+ } catch (com.sun.star.lang.WrappedTargetException e) {
+ e.printStackTrace();
+ throw new StatusException("Couldn't create a test environment", e);
+ } catch(com.sun.star.lang.IndexOutOfBoundsException e) {
+ e.printStackTrace();
+ throw new StatusException("Couldn't create a test environment", e);
+ }
+
+ try {
+ fieldPropSet.setPropertyValue("Function",
+ com.sun.star.sheet.GeneralFunction.SUM);
+ fieldPropSet.setPropertyValue("Orientation",
+ com.sun.star.sheet.DataPilotFieldOrientation.DATA);
+ } catch(com.sun.star.lang.WrappedTargetException e) {
+ e.printStackTrace();
+ throw new StatusException("Couldn't create a test environment", e);
+ } catch(com.sun.star.lang.IllegalArgumentException e) {
+ e.printStackTrace();
+ throw new StatusException("Couldn't create a test environment", e);
+ } catch(com.sun.star.beans.PropertyVetoException e) {
+ e.printStackTrace();
+ throw new StatusException("Couldn't create a test environment", e);
+ } catch(com.sun.star.beans.UnknownPropertyException e) {
+ e.printStackTrace();
+ throw new StatusException("Couldn't create a test environment", e);
+ }
+
+ System.out.println("Insert the DataPilotTable");
+ if (DPT.hasByName("DataPilotTable")) {
+ DPT.removeByName("DataPilotTable");
+ }
+ DPT.insertNewByName("DataPilotTable", sCellAdress, DPDsc);
+ try {
+ mDataPilotTableObject = (XInterface) AnyConverter.toObject(
+ new Type(XInterface.class),DPT.getByName(DPT.getElementNames()[0]));
+ } catch (com.sun.star.lang.WrappedTargetException e) {
+ e.printStackTrace();
+ throw new StatusException("Couldn't create a test environment", e);
+ } catch (com.sun.star.container.NoSuchElementException e) {
+ e.printStackTrace();
+ throw new StatusException("Couldn't create a test environment", e);
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ e.printStackTrace();
+ throw new StatusException("Couldn't create a test environment", e);
+ }
+
+ XIndexAccess IA = DPDsc.getDataPilotFields();
+ try {
+ mDataPilotFieldObject = (XInterface)AnyConverter.toObject(
+ new Type(XInterface.class),IA.getByIndex(0));
+ } catch (com.sun.star.lang.WrappedTargetException e) {
+ e.printStackTrace();
+ throw new StatusException("Couldn't get data pilot field", e);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ e.printStackTrace();
+ throw new StatusException("Couldn't get data pilot field", e);
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ e.printStackTrace();
+ throw new StatusException("Couldn't get data pilot field", e);
+ }
+
+ // Other parameters required for interface tests
+ param.put("OUTPUTRANGE", sCellAdress);
+ param.put("CELLFORCHANGE", oChangeCell);
+ param.put("CELLFORCHECK", oCheckCell);
+ param.put("CHANGEVALUE", aChangeValue);
+ param.put("FIELDSAMOUNT", new Integer(5));
+
+ }
+
+ /*
+ * this method closes a calc document and resets the corresponding class variable xSheetDoc
+ */
+ protected boolean closeSpreadsheetDocument() {
+ boolean worked = true;
+
+ System.out.println(" disposing xSheetDoc ");
+
+ try {
+ XCloseable oCloser = UnoRuntime.queryInterface(
+ XCloseable.class, xSheetDoc);
+ oCloser.close(true);
+ } catch (com.sun.star.util.CloseVetoException e) {
+ worked = false;
+ System.out.println("Couldn't close document");
+ } catch (com.sun.star.lang.DisposedException e) {
+ worked = false;
+ System.out.println("Document already disposed");
+ } catch (java.lang.NullPointerException e) {
+ worked = false;
+ System.out.println("Couldn't get XCloseable");
+ }
+
+ xSheetDoc = null;
+
+ return worked;
+ }
+
+ @After public void after()
+ {
+ closeSpreadsheetDocument();
+ }
+
+
+ @BeforeClass public static void setUpConnection() throws Exception {
+ System.out.println("setUpConnection()");
+ connection.setUp();
+ }
+
+ @AfterClass public static void tearDownConnection()
+ throws InterruptedException, com.sun.star.uno.Exception
+ {
+ System.out.println("tearDownConnection()");
+ connection.tearDown();
+ }
+
+ private static final OfficeConnection connection = new OfficeConnection();
+
+
+}