diff options
Diffstat (limited to 'qadevOOo/tests/java/mod/_sc')
44 files changed, 8187 insertions, 0 deletions
diff --git a/qadevOOo/tests/java/mod/_sc/AccessibleEditableTextPara_HeaderFooter.java b/qadevOOo/tests/java/mod/_sc/AccessibleEditableTextPara_HeaderFooter.java new file mode 100644 index 000000000..ed9e5da9a --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/AccessibleEditableTextPara_HeaderFooter.java @@ -0,0 +1,202 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.AccessibilityTools; +import util.SOfficeFactory; +import util.utils; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleAction; +import com.sun.star.accessibility.XAccessibleContext; +import com.sun.star.accessibility.XAccessibleEditableText; +import com.sun.star.accessibility.XAccessibleText; +import com.sun.star.awt.XExtendedToolkit; +import com.sun.star.awt.XWindow; +import com.sun.star.frame.XController; +import com.sun.star.frame.XDispatch; +import com.sun.star.frame.XDispatchProvider; +import com.sun.star.frame.XModel; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.URL; +import com.sun.star.util.XURLTransformer; + + +public class AccessibleEditableTextPara_HeaderFooter extends TestCase { + protected static XComponent xCalcDoc = null; + protected static XMultiServiceFactory msf = null; + protected static XAccessibleAction action = null; + + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, + PrintWriter log) throws Exception { + XAccessibleContext oObj = null; + Object toolkit = msf.createInstance("com.sun.star.awt.Toolkit"); + + XExtendedToolkit tk = UnoRuntime.queryInterface( + XExtendedToolkit.class, toolkit); + + util.utils.waitForEventIdle(Param.getMSF()); + + DiagThread psDiag = new DiagThread(xCalcDoc, msf); + psDiag.start(); + + util.utils.waitForEventIdle(Param.getMSF()); + + Object atw = tk.getActiveTopWindow(); + + XWindow xWindow = UnoRuntime.queryInterface(XWindow.class, + atw); + + XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); + + util.utils.waitForEventIdle(Param.getMSF()); + + AccessibilityTools.printAccessibleTree(log, xRoot, Param.getBool(util.PropertyName.DEBUG_IS_ACTIVE)); + XAccessibleContext ok_button = AccessibilityTools.getAccessibleObjectForRole(xRoot, + AccessibleRole.PUSH_BUTTON, + "Cancel"); + + oObj = AccessibilityTools.getAccessibleObjectForRole(xRoot, AccessibleRole.PARAGRAPH); + + log.println("ImplementationName " + utils.getImplName(oObj)); + log.println("AccessibleName " + oObj.getAccessibleName()); + log.println("ParentDescription " + + oObj.getAccessibleParent().getAccessibleContext() + .getAccessibleDescription()); + + TestEnvironment tEnv = new TestEnvironment(oObj); + + action = UnoRuntime.queryInterface( + XAccessibleAction.class, ok_button); + + XAccessibleText text = UnoRuntime.queryInterface( + XAccessibleText.class, oObj); + + XAccessibleEditableText eText = UnoRuntime.queryInterface( + XAccessibleEditableText.class, + oObj); + + eText.setText("LEFT"); + + tEnv.addObjRelation("XAccessibleText.Text", text.getText()); + + tEnv.addObjRelation("Destroy", "AccessibleEditableTextPara_PreviewCell"); + + final XAccessibleEditableText editText = eText; + + tEnv.addObjRelation("EventProducer", + new ifc.accessibility._XAccessibleEventBroadcaster.EventProducer() { + public void fireEvent() { + editText.setText("LEFT_EVENT"); + } + }); + + return tEnv; + } + + /** + * Closes the dialog using accessible button 'OK' found in + * <code>createTestEnvironment()</code>. + */ + @Override + protected void cleanup(TestParameters Param, PrintWriter log) { + log.println(" disposing xCalcDoc "); + + try { + action.doAccessibleAction(0); + } catch (com.sun.star.lang.IndexOutOfBoundsException ioe) { + log.println("Couldn't close dialog"); + } catch (com.sun.star.lang.DisposedException de) { + log.println("Dialog already disposed"); + } + + util.DesktopTools.closeDoc(xCalcDoc); + } + + /** + * Opens new writer document. + */ + @Override + protected void initialize(TestParameters Param, PrintWriter log) throws Exception { + msf = Param.getMSF(); + + SOfficeFactory SOF = SOfficeFactory.getFactory(msf); + xCalcDoc = UnoRuntime.queryInterface(XComponent.class, + SOF.createCalcDoc( + null)); + } + + + /** + * Thread for opening modal dialog 'Print Settings'. + */ + private class DiagThread extends Thread { + private XComponent xCalcDoc = null; + private XMultiServiceFactory msf = null; + + private DiagThread(XComponent xCalcDoc, XMultiServiceFactory msf) { + this.xCalcDoc = xCalcDoc; + this.msf = msf; + } + + @Override + public void run() { + XModel aModel = UnoRuntime.queryInterface(XModel.class, + xCalcDoc); + + XController xController = aModel.getCurrentController(); + + //Opening HeaderFooterDialog + try { + String aSlotID = ".uno:EditHeaderAndFooter"; + XDispatchProvider xDispProv = UnoRuntime.queryInterface( + XDispatchProvider.class, + xController); + XURLTransformer xParser = UnoRuntime.queryInterface( + XURLTransformer.class, + msf.createInstance( + "com.sun.star.util.URLTransformer")); + + // Because it's an in/out parameter + // we must use an array of URL objects. + URL[] aParseURL = new URL[1]; + aParseURL[0] = new URL(); + aParseURL[0].Complete = aSlotID; + xParser.parseStrict(aParseURL); + + URL aURL = aParseURL[0]; + XDispatch xDispatcher = xDispProv.queryDispatch(aURL, "", 0); + + if (xDispatcher != null) { + xDispatcher.dispatch(aURL, null); + } + } catch (com.sun.star.uno.Exception e) { + log.println("Couldn't open dialog"); + } + } + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/mod/_sc/AccessibleEditableTextPara_PreviewCell.java b/qadevOOo/tests/java/mod/_sc/AccessibleEditableTextPara_PreviewCell.java new file mode 100644 index 000000000..b8ecfbfc2 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/AccessibleEditableTextPara_PreviewCell.java @@ -0,0 +1,161 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.AccessibilityTools; +import util.SOfficeFactory; +import util.utils; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleContext; +import com.sun.star.container.XIndexAccess; +import com.sun.star.frame.XController; +import com.sun.star.frame.XDispatch; +import com.sun.star.frame.XDispatchProvider; +import com.sun.star.frame.XModel; +import com.sun.star.lang.DisposedException; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.table.XCell; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.URL; +import com.sun.star.util.XURLTransformer; + + +public class AccessibleEditableTextPara_PreviewCell extends TestCase { + XSpreadsheetDocument xSheetDoc = null; + + /** + * Creates a spreadsheet document. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + log.println( "creating a Spreadsheet document" ); + xSheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes a spreadsheet document. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xSheetDoc " ); + XComponent oComp = UnoRuntime.queryInterface + (XComponent.class, xSheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Obtains the accessible object for a one of cell in preview mode. + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, PrintWriter log) throws Exception { + + XCell xCell = null; + + log.println("Getting spreadsheet") ; + XSpreadsheets oSheets = xSheetDoc.getSheets() ; + XIndexAccess oIndexSheets = UnoRuntime.queryInterface(XIndexAccess.class, oSheets); + XSpreadsheet oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class),oIndexSheets.getByIndex(0)); + + log.println("Getting a cell from sheet") ; + xCell = oSheet.getCellByPosition(0, 0); + + xCell.setFormula("Value"); + + XModel xModel = UnoRuntime.queryInterface(XModel.class, xSheetDoc); + + XController xController = xModel.getCurrentController(); + + //switch to 'Print Preview' mode + XDispatchProvider xDispProv = UnoRuntime.queryInterface(XDispatchProvider.class, xController); + XURLTransformer xParser = UnoRuntime.queryInterface(XURLTransformer.class, + Param.getMSF().createInstance("com.sun.star.util.URLTransformer")); + URL[] aParseURL = new URL[1]; + aParseURL[0] = new URL(); + aParseURL[0].Complete = ".uno:PrintPreview"; + xParser.parseStrict(aParseURL); + URL aURL = aParseURL[0]; + XDispatch xDispatcher = xDispProv.queryDispatch(aURL, "", 0); + if(xDispatcher != null) + xDispatcher.dispatch( aURL, null ); + + XAccessibleContext oObj = null; + for (int i = 0;; ++i) { + Thread.sleep(500); + try { + XAccessible xRoot = AccessibilityTools.getAccessibleObject( + AccessibilityTools.getCurrentWindow( + xModel)); + if (xRoot != null) { + AccessibilityTools.getAccessibleObjectForRole( + xRoot, AccessibleRole.TABLE_CELL, true); + xRoot = AccessibilityTools.SearchedAccessible; + if (xRoot != null) { + oObj = AccessibilityTools.getAccessibleObjectForRole( + xRoot, AccessibleRole.PARAGRAPH); + if (oObj != null) { + break; + } + } + } + } catch (DisposedException e) { + log.println("Ignoring DisposedException"); + } + if (i == 20) { // give up after 10 sec + throw new RuntimeException( + "Couldn't get AccessibleRoot.HEADER object"); + } + log.println("No TABLE_CELL/PARAGRAPH found yet, retrying"); + } + + log.println("ImplementationName " + utils.getImplName(oObj)); + log.println("AccessibleName " + oObj.getAccessibleName()); + log.println("Parent " + utils.getImplName(oObj.getAccessibleParent())); + + TestEnvironment tEnv = new TestEnvironment( oObj ); + + tEnv.addObjRelation("EditOnly", "AccessibleEditableTextPara_PreviewCell"); + tEnv.addObjRelation("Destroy", "AccessibleEditableTextPara_PreviewCell"); + + final XCell cell_to_change = xCell; + tEnv.addObjRelation("EventProducer", + new ifc.accessibility._XAccessibleEventBroadcaster.EventProducer(){ + public void fireEvent() { + cell_to_change.setFormula("NewString"); + } + }); + + return tEnv; + } +} diff --git a/qadevOOo/tests/java/mod/_sc/ScAccessibleCell.java b/qadevOOo/tests/java/mod/_sc/ScAccessibleCell.java new file mode 100644 index 000000000..1ec596a09 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScAccessibleCell.java @@ -0,0 +1,175 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.AccessibilityTools; +import util.SOfficeFactory; +import util.utils; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.awt.XWindow; +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexAccess; +import com.sun.star.frame.XModel; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.table.XCell; +import com.sun.star.table.XColumnRowRange; +import com.sun.star.table.XTableColumns; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** + * Test for object which is represented by accessible component of + * a cell in the spreadsheet. <p> + * Object implements the following interfaces : + * <ul> + * <li> <code>::com::sun::star::accessibility::XAccessibleSelection</code></li> + * <li> <code>::com::sun::star::accessibility::XAccessibleEventBroadcaster</code></li> + * <li> <code>::com::sun::star::accessibility::XAccessibleComponent</code></li> + * <li> <code>::com::sun::star::accessibility::XAccessibleTable</code></li> + * <li> <code>::com::sun::star::accessibility::XAccessibleContext</code></li> + * </ul> <p> + * + * @see com.sun.star.accessibility.XAccessibleSelection + * @see com.sun.star.accessibility.XAccessibleEventBroadcaster + * @see com.sun.star.accessibility.XAccessibleComponent + * @see com.sun.star.accessibility.XAccessibleTable + * @see com.sun.star.accessibility.XAccessibleContext + * @see ifc.accessibility._XAccessibleSelection + * @see ifc.accessibility._XAccessibleEventBroadcaster + * @see ifc.accessibility._XAccessibleComponent + * @see ifc.accessibility._XAccessibleTable + * @see ifc.accessibility._XAccessibleContext + */ +public class ScAccessibleCell extends TestCase { + + private XSpreadsheetDocument xSpreadsheetDoc = null; + + /** + * Called to create an instance of <code>TestEnvironment</code> + * with an object to test and related objects. + * Switches the document to Print Preview mode. + * Obtains accessible object for the page view. + * + * @param Param test parameters + * @param log writer to log information while testing + * + * @see TestEnvironment + * @see #getTestEnvironment + */ + @Override + protected TestEnvironment createTestEnvironment( + TestParameters Param, PrintWriter log) throws Exception { + + // get a soffice factory object + SOfficeFactory SOF = SOfficeFactory.getFactory( Param.getMSF()); + + log.println("creating a spreadsheetdocument"); + xSpreadsheetDoc = SOF.createCalcDoc(null); + + XInterface oObj = null; + + XModel aModel = UnoRuntime.queryInterface(XModel.class, xSpreadsheetDoc); + + XWindow xWindow = AccessibilityTools.getCurrentWindow(aModel); + XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); + + oObj = AccessibilityTools.getAccessibleObjectForRole + (xRoot, AccessibleRole.TABLE_CELL, "B1"); + + log.println("ImplementationName " + utils.getImplName(oObj)); + + TestEnvironment tEnv = new TestEnvironment(oObj); + + // relation for XAccessibleEventBroadcaster + XCell xCell = null; + final String text = "XAccessibleText"; + try { + XSpreadsheets oSheets = xSpreadsheetDoc.getSheets() ; + XIndexAccess oIndexSheets = UnoRuntime.queryInterface(XIndexAccess.class, oSheets); + XSpreadsheet oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class),oIndexSheets.getByIndex(0)); + xCell = oSheet.getCellByPosition(1, 0) ; + xCell.setFormula(text); + XColumnRowRange oColumnRowRange = UnoRuntime.queryInterface(XColumnRowRange.class, oSheet); + XTableColumns oColumns = oColumnRowRange.getColumns(); + XIndexAccess oIndexAccess = UnoRuntime.queryInterface(XIndexAccess.class, oColumns); + XPropertySet column = UnoRuntime.queryInterface( + XPropertySet.class,oIndexAccess.getByIndex(1)); + column.setPropertyValue("OptimalWidth", Boolean.TRUE); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Exception creating relation :"); + e.printStackTrace(log); + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception creating relation :"); + e.printStackTrace(log); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception creating relation :"); + e.printStackTrace(log); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Exception creating relation :"); + e.printStackTrace(log); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception creating relation :"); + e.printStackTrace(log); + } + + tEnv.addObjRelation("EditOnly", + "This method is only supported if the Cell is in edit mode"); + + final XCell fCell = xCell ; + + tEnv.addObjRelation("EventProducer", + new ifc.accessibility._XAccessibleEventBroadcaster.EventProducer(){ + public void fireEvent() { + fCell.setFormula("firing event"); + fCell.setFormula(text); + } + }); + + tEnv.addObjRelation("XAccessibleText.Text", text); + + return tEnv; + + } + + /** + * Called while disposing a <code>TestEnvironment</code>. + * Disposes calc document. + * @param Param test parameters + * @param log writer to log information while testing + */ + @Override + protected void cleanup( TestParameters Param, PrintWriter log) { + log.println( " disposing xSheetDoc " ); + XComponent oComp = UnoRuntime.queryInterface (XComponent.class, xSpreadsheetDoc) ; + util.DesktopTools.closeDoc(oComp); + } +} diff --git a/qadevOOo/tests/java/mod/_sc/ScAccessibleCsvCell.java b/qadevOOo/tests/java/mod/_sc/ScAccessibleCsvCell.java new file mode 100644 index 000000000..3e4be0a8f --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScAccessibleCsvCell.java @@ -0,0 +1,145 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.AccessibilityTools; +import util.SOfficeFactory; +import util.utils; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleAction; +import com.sun.star.accessibility.XAccessibleContext; +import com.sun.star.awt.XExtendedToolkit; +import com.sun.star.awt.XWindow; +import com.sun.star.beans.PropertyValue; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +public class ScAccessibleCsvCell extends TestCase { + + static XAccessibleAction accAction = null; + + /** + * Called to create an instance of <code>TestEnvironment</code> with an + * object to test and related objects. Subclasses should implement this + * method to provide the implementation and related objects. The method is + * called from <code>getTestEnvironment()</code>. + * + * @param tParam test parameters + * @param log writer to log information while testing + * + * @see TestEnvironment + * @see #getTestEnvironment + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters tParam, PrintWriter log) throws Exception { + + XInterface oObj = (XInterface) tParam.getMSF().createInstance + ("com.sun.star.awt.Toolkit") ; + + XExtendedToolkit tk = UnoRuntime.queryInterface(XExtendedToolkit.class,oObj); + + XWindow xWindow = UnoRuntime.queryInterface(XWindow.class,tk.getActiveTopWindow()); + + XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); + + AccessibilityTools.printAccessibleTree(log, xRoot, tParam.getBool(util.PropertyName.DEBUG_IS_ACTIVE)); + oObj = AccessibilityTools.getAccessibleObjectForRole + (xRoot, AccessibleRole.PUSH_BUTTON, "Cancel"); + + accAction = UnoRuntime.queryInterface(XAccessibleAction.class, oObj); + + oObj = AccessibilityTools.getAccessibleObjectForRole + (xRoot, AccessibleRole.TABLE, true); + + XAccessibleContext cont = UnoRuntime.queryInterface(XAccessibleContext.class, oObj); + + String name = ""; + try { + XAccessible acc = cont.getAccessibleChild(3); + name = acc.getAccessibleContext().getAccessibleName(); + log.println("Child: "+ name); + log.println("ImplementationName " + utils.getImplName(acc)); + oObj = acc; + } + catch(com.sun.star.lang.IndexOutOfBoundsException e) {} + + TestEnvironment tEnv = new TestEnvironment(oObj); + + tEnv.addObjRelation("EditOnly", + "This method isn't supported in this dialog"); + + tEnv.addObjRelation("XAccessibleText.Text", name); + + return tEnv; + } + + /** + * Called while disposing a <code>TestEnvironment</code>. + * Disposes calc document. + * @param Param test parameters + * @param log writer to log information while testing + */ + @Override + protected void cleanup( TestParameters Param, PrintWriter log) { + log.println( " closing Dialog " ); + try { + accAction.doAccessibleAction(0); + } catch (com.sun.star.lang.IndexOutOfBoundsException iae) { + log.println("Couldn't close dialog"); + } + } + + /** + * Called while the <code>TestCase</code> initialization. In the + * implementation does nothing. Subclasses can override to initialize + * objects shared among all <code>TestEnvironment</code>s. + * + * @param Param test parameters + * @param log writer to log information while testing + * + * @see #initializeTestCase + */ + @Override + protected void initialize(TestParameters Param, PrintWriter log) throws Exception { + // get a soffice factory object + SOfficeFactory SOF = SOfficeFactory.getFactory( Param.getMSF()); + + log.println("opening dialog"); + + PropertyValue[] args = new PropertyValue[1]; + try { + args[0] = new PropertyValue(); + args[0].Name = "InteractionHandler"; + args[0].Value = Param.getMSF().createInstance( + "com.sun.star.comp.uui.UUIInteractionHandler"); + } catch(com.sun.star.uno.Exception e) { + } + + String url= utils.getFullTestURL("10test.csv"); + log.println("loading "+url); + SOF.loadDocument(url,args); + } +} diff --git a/qadevOOo/tests/java/mod/_sc/ScAccessibleCsvGrid.java b/qadevOOo/tests/java/mod/_sc/ScAccessibleCsvGrid.java new file mode 100644 index 000000000..0e7aefc2b --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScAccessibleCsvGrid.java @@ -0,0 +1,129 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.AccessibilityTools; +import util.SOfficeFactory; +import util.utils; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleAction; +import com.sun.star.awt.XExtendedToolkit; +import com.sun.star.awt.XWindow; +import com.sun.star.beans.PropertyValue; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +public class ScAccessibleCsvGrid extends TestCase { + + static XAccessibleAction accAction = null; + + /** + * Called to create an instance of <code>TestEnvironment</code> with an + * object to test and related objects. Subclasses should implement this + * method to provide the implementation and related objects. The method is + * called from <code>getTestEnvironment()</code>. + * + * @param Param test parameters + * @param log writer to log information while testing + * + * @see TestEnvironment + * @see #getTestEnvironment + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, PrintWriter log) throws Exception { + + XInterface oObj = (XInterface) Param.getMSF().createInstance + ("com.sun.star.awt.Toolkit") ; + + XExtendedToolkit tk = UnoRuntime.queryInterface(XExtendedToolkit.class,oObj); + + XWindow xWindow = UnoRuntime.queryInterface(XWindow.class,tk.getActiveTopWindow()); + + XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); + + oObj = AccessibilityTools.getAccessibleObjectForRole + (xRoot, AccessibleRole.PUSH_BUTTON, "Cancel"); + + accAction = UnoRuntime.queryInterface(XAccessibleAction.class, oObj); + + oObj = AccessibilityTools.getAccessibleObjectForRole + (xRoot, AccessibleRole.TABLE, true); + + log.println("ImplementationName " + utils.getImplName(oObj)); + + TestEnvironment tEnv = new TestEnvironment(oObj); + + return tEnv; + } + + /** + * Called while disposing a <code>TestEnvironment</code>. + * Disposes calc document. + * @param Param test parameters + * @param log writer to log information while testing + */ + @Override + protected void cleanup( TestParameters Param, PrintWriter log) { + log.println( " closing Dialog " ); + try { + accAction.doAccessibleAction(0); + } catch (com.sun.star.lang.IndexOutOfBoundsException iae) { + log.println("Couldn't close dialog"); + } + } + + /** + * Called while the <code>TestCase</code> initialization. In the + * implementation does nothing. Subclasses can override to initialize + * objects shared among all <code>TestEnvironment</code>s. + * + * @param Param test parameters + * @param log writer to log information while testing + * + * @see #initializeTestCase + */ + @Override + protected void initialize(TestParameters Param, PrintWriter log) throws Exception { + // get a soffice factory object + SOfficeFactory SOF = SOfficeFactory.getFactory( Param.getMSF()); + + log.println("opening dialog"); + + PropertyValue[] args = new PropertyValue[1]; + try { + args[0] = new PropertyValue(); + args[0].Name = "InteractionHandler"; + args[0].Value = Param.getMSF().createInstance( + "com.sun.star.comp.uui.UUIInteractionHandler"); + } catch(com.sun.star.uno.Exception e) { + } + + String url= utils.getFullTestURL("10test.csv"); + log.println("loading "+url); + SOF.loadDocument(url,args); + } + +} diff --git a/qadevOOo/tests/java/mod/_sc/ScAccessibleCsvRuler.java b/qadevOOo/tests/java/mod/_sc/ScAccessibleCsvRuler.java new file mode 100644 index 000000000..d3cd92464 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScAccessibleCsvRuler.java @@ -0,0 +1,166 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.AccessibilityTools; +import util.SOfficeFactory; +import util.utils; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleAction; +import com.sun.star.accessibility.XAccessibleContext; +import com.sun.star.accessibility.XAccessibleText; +import com.sun.star.awt.XExtendedToolkit; +import com.sun.star.awt.XWindow; +import com.sun.star.beans.PropertyValue; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +public class ScAccessibleCsvRuler extends TestCase { + + static XAccessibleAction accAction = null; + + /** + * Called to create an instance of <code>TestEnvironment</code> with an + * object to test and related objects. Subclasses should implement this + * method to provide the implementation and related objects. The method is + * called from <code>getTestEnvironment()</code>. + * + * @param Param test parameters + * @param log writer to log information while testing + * + * @see TestEnvironment + * @see #getTestEnvironment + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, + PrintWriter log) throws Exception { + XMultiServiceFactory msf = Param.getMSF(); + + XInterface oObj = (XInterface) msf.createInstance("com.sun.star.awt.Toolkit"); + + XExtendedToolkit tk = UnoRuntime.queryInterface( + XExtendedToolkit.class, oObj); + + XWindow xWindow = UnoRuntime.queryInterface(XWindow.class, + tk.getActiveTopWindow()); + + XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); + + oObj = AccessibilityTools.getAccessibleObjectForRole(xRoot, AccessibleRole.PUSH_BUTTON, + "Cancel"); + + accAction = UnoRuntime.queryInterface( + XAccessibleAction.class, oObj); + + XAccessibleContext acc = AccessibilityTools.getAccessibleObjectForRole(xRoot, + AccessibleRole.RADIO_BUTTON); + + log.println("Click on: " + acc.getAccessibleName()); + + XAccessibleAction accAction2 = UnoRuntime.queryInterface( + XAccessibleAction.class, acc); + + try { + accAction2.doAccessibleAction(0); + } catch (com.sun.star.lang.IndexOutOfBoundsException iae) { + } + + + AccessibilityTools.printAccessibleTree(log, xRoot); + oObj = AccessibilityTools.getAccessibleObjectForRole(xRoot, AccessibleRole.TEXT, + "Ruler", true); + + log.println("ImplementationName " + utils.getImplName(oObj)); + + TestEnvironment tEnv = new TestEnvironment(oObj); + + tEnv.addObjRelation("EditOnly", + "This method isn't supported in this dialog"); + + XAccessibleText text = UnoRuntime.queryInterface( + XAccessibleText.class, oObj); + + int lastone = 100; + + for (int i = 0; i < 1000; i++) { + try { + text.getCharacterBounds(i); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + lastone = i - 1; + + break; + } + } + + tEnv.addObjRelation("LimitedBounds", Integer.valueOf(lastone)); + tEnv.addObjRelation("PreviousUsed",new int[]{11,22,33,44,55,66,77,88,99}); + + return tEnv; + } + + /** + * Called while disposing a <code>TestEnvironment</code>. + * Disposes calc document. + * @param Param test parameters + * @param log writer to log information while testing + */ + @Override + protected void cleanup( TestParameters Param, PrintWriter log) { + } + + /** + * Called while the <code>TestCase</code> initialization. In the + * implementation does nothing. Subclasses can override to initialize + * objects shared among all <code>TestEnvironment</code>s. + * + * @param Param test parameters + * @param log writer to log information while testing + * + * @see #initializeTestCase + */ + @Override + protected void initialize(TestParameters Param, PrintWriter log) throws Exception { + // get a soffice factory object + SOfficeFactory SOF = SOfficeFactory.getFactory( Param.getMSF()); + + log.println("opening dialog"); + + PropertyValue[] args = new PropertyValue[1]; + try { + args[0] = new PropertyValue(); + args[0].Name = "InteractionHandler"; + args[0].Value = Param.getMSF().createInstance( + "com.sun.star.comp.uui.UUIInteractionHandler"); + } catch(com.sun.star.uno.Exception e) { + } + + String url= utils.getFullTestURL("10test.csv"); + log.println("loading "+url); + SOF.loadDocument(url,args); + } + +} diff --git a/qadevOOo/tests/java/mod/_sc/ScAccessibleDocument.java b/qadevOOo/tests/java/mod/_sc/ScAccessibleDocument.java new file mode 100644 index 000000000..348e8a6bc --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScAccessibleDocument.java @@ -0,0 +1,143 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.AccessibilityTools; +import util.SOfficeFactory; +import util.utils; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.awt.Rectangle; +import com.sun.star.awt.XWindow; +import com.sun.star.frame.XModel; +import com.sun.star.lang.XComponent; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + + +/** + * Test for object which is represented by accessible component of + * a spreadsheet document. + * + * Object implements the following interfaces : + * <ul> + * <li> <code>::com::sun::star::accessibility::XAccessibleComponent</code></li> + * <li> <code>::com::sun::star::accessibility::XAccessibleContext</code></li> + * <li> <code>::com::sun::star::accessibility::XAccessibleEventBroadcaster</code></li> + * <li> <code>::com::sun::star::accessibility::XAccessibleSelection</code></li> + * </ul> <p> + * + * @see com.sun.star.accessibility.XAccessibleComponent + * @see com.sun.star.accessibility.XAccessibleContext + * @see com.sun.star.accessibility.XAccessibleEventBroadcaster + * @see com.sun.star.accessibility.XAccessibleSelection + * @see ifc.accessibility._XAccessibleComponent + * @see ifc.accessibility._XAccessibleEventBroadcaster + * @see ifc.accessibility._XAccessibleSelection + * @see ifc.accessibility._XAccessibleContext + */ +public class ScAccessibleDocument extends TestCase { + + static XComponent xSpreadsheetDoc = null; + + /** + * Called to create an instance of <code>TestEnvironment</code> + * with an object to test and related objects. + * Obtains accessible object for the spreadsheet document. + * + * @param Param test parameters + * @param log writer to log information while testing + * + * @see TestEnvironment + * @see #getTestEnvironment + */ + @Override + protected TestEnvironment createTestEnvironment( + TestParameters Param, PrintWriter log) { + + XInterface oObj = null; + + // get the drawpage of drawing here + log.println( "getting Drawpages" ); + + XModel aModel = UnoRuntime.queryInterface(XModel.class, xSpreadsheetDoc); + + XWindow xWindow = AccessibilityTools.getCurrentWindow(aModel); + XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); + + oObj = AccessibilityTools.getAccessibleObjectForRole(xRoot, AccessibleRole.DOCUMENT, ""); + AccessibilityTools.printAccessibleTree(log, xRoot, Param.getBool(util.PropertyName.DEBUG_IS_ACTIVE)); + log.println("ImplementationName " + utils.getImplName(oObj)); + + TestEnvironment tEnv = new TestEnvironment(oObj); + + final XWindow xDocWin = xWindow; + tEnv.addObjRelation("EventProducer", + new ifc.accessibility._XAccessibleEventBroadcaster.EventProducer() { + public void fireEvent() { + Rectangle rect = xDocWin.getPosSize(); + xDocWin.setPosSize(rect.X,rect.Y,rect.Height,rect.Width-10,com.sun.star.awt.PosSize.POSSIZE); + } + }); + + return tEnv; + + } + + /** + * Called while disposing a <code>TestEnvironment</code>. + * Disposes calc document. + * @param Param test parameters + * @param log writer to log information while testing + */ + @Override + protected void cleanup( TestParameters Param, PrintWriter log) { + log.println( " disposing xSheetDoc " ); + util.DesktopTools.closeDoc(xSpreadsheetDoc); + } + + /** + * Called while the <code>TestCase</code> initialization. In the + * implementation does nothing. Subclasses can override to initialize + * objects shared among all <code>TestEnvironment</code>s. + * + * @param Param test parameters + * @param log writer to log information while testing + * + * @see #initializeTestCase + */ + @Override + protected void initialize(TestParameters Param, PrintWriter log) throws Exception { + // get a soffice factory object + SOfficeFactory SOF = SOfficeFactory.getFactory( Param.getMSF()); + + log.println("creating a spreadsheetdocument"); + String url = utils.getFullTestURL("calcshapes.sxc"); + log.println("loading document "+url); + xSpreadsheetDoc = SOF.loadDocument(url); + util.utils.waitForEventIdle(Param.getMSF()); + } + +} diff --git a/qadevOOo/tests/java/mod/_sc/ScAccessibleDocumentPagePreview.java b/qadevOOo/tests/java/mod/_sc/ScAccessibleDocumentPagePreview.java new file mode 100644 index 000000000..6474f8d84 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScAccessibleDocumentPagePreview.java @@ -0,0 +1,198 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.AccessibilityTools; +import util.SOfficeFactory; +import util.utils; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.awt.Rectangle; +import com.sun.star.awt.XWindow; +import com.sun.star.container.XIndexAccess; +import com.sun.star.frame.XController; +import com.sun.star.frame.XDesktop; +import com.sun.star.frame.XDispatch; +import com.sun.star.frame.XDispatchProvider; +import com.sun.star.frame.XModel; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.table.XCell; +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.URL; +import com.sun.star.util.XURLTransformer; + +/** + * Test for object which is represented by accessible component of + * a spreadsheet page in 'Page Preview' mode. + * + * Object implements the following interfaces : + * <ul> + * <li> <code>::com::sun::star::accessibility::XAccessibleComponent</code></li> + * <li> <code>::com::sun::star::accessibility::XAccessibleContext</code></li> + * </ul> <p> + * + * @see com.sun.star.accessibility.XAccessibleComponent + * @see com.sun.star.accessibility.XAccessibleContext + * @see ifc.accessibility._XAccessibleComponent + * @see ifc.accessibility._XAccessibleContext + */ +public class ScAccessibleDocumentPagePreview extends TestCase { + + private XSpreadsheetDocument xSpreadsheetDoc = null; + + /** + * Called to create an instance of <code>TestEnvironment</code> + * with an object to test and related objects. + * Switches the document to Print Preview mode. + * Obtains accessible object for the page view. + * + * @param Param test parameters + * @param log writer to log information while testing + * + * @see TestEnvironment + * @see #getTestEnvironment + */ + @Override + protected TestEnvironment createTestEnvironment( + TestParameters Param, PrintWriter log) throws Exception { + + XInterface oObj = null; + + // inserting some content to have non-empty page preview + XCell xCell = null; + try { + XSpreadsheets oSheets = xSpreadsheetDoc.getSheets() ; + XIndexAccess oIndexSheets = UnoRuntime.queryInterface(XIndexAccess.class, oSheets); + XSpreadsheet oSheet = null; + oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class),oIndexSheets.getByIndex(1)); + xCell = oSheet.getCellByPosition(0, 0) ; + xCell.setFormula("ScAccessibleDocumentPagePreview - Page 2"); + oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class),oIndexSheets.getByIndex(2)); + xCell = oSheet.getCellByPosition(0, 0) ; + xCell.setFormula("ScAccessibleDocumentPagePreview - Page 3"); + + oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class),oIndexSheets.getByIndex(0)); + xCell = oSheet.getCellByPosition(0, 0) ; + xCell.setFormula("ScAccessibleDocumentPagePreview"); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Exception creating document page preview :"); + e.printStackTrace(log); + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception creating document page preview :"); + e.printStackTrace(log); + } + + XModel aModel = UnoRuntime.queryInterface(XModel.class, xSpreadsheetDoc); + + XController xController = aModel.getCurrentController(); + + // switching to 'Page Preview' mode + XDispatchProvider xDispProv = UnoRuntime.queryInterface(XDispatchProvider.class, xController); + XURLTransformer xParser = UnoRuntime.queryInterface(XURLTransformer.class, + Param.getMSF().createInstance("com.sun.star.util.URLTransformer")); + // Because it's an in/out parameter we must use an array of URL objects. + URL[] aParseURL = new URL[1]; + aParseURL[0] = new URL(); + aParseURL[0].Complete = ".uno:PrintPreview"; + xParser.parseStrict(aParseURL); + URL aURL = aParseURL[0]; + XDispatch xDispatcher = xDispProv.queryDispatch(aURL, "", 0); + if(xDispatcher != null) + xDispatcher.dispatch( aURL, null ); + + util.utils.shortWait(); + + XWindow xWindow = AccessibilityTools.getCurrentContainerWindow(aModel); + XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); + AccessibilityTools.printAccessibleTree(log, xRoot, Param.getBool(util.PropertyName.DEBUG_IS_ACTIVE)); + + oObj = AccessibilityTools.getAccessibleObjectForRole + (xRoot, AccessibleRole.DOCUMENT, ""); + + log.println("ImplementationName " + utils.getImplName(oObj)); + + TestEnvironment tEnv = new TestEnvironment(oObj); + + XDesktop desk = util.DesktopTools.createDesktop(Param.getMSF()); + final XWindow win = desk.getCurrentFrame().getComponentWindow(); + + tEnv.addObjRelation("EventProducer", + new ifc.accessibility._XAccessibleEventBroadcaster.EventProducer() { + public void fireEvent() { + Rectangle rec = win.getPosSize(); + win.setPosSize(rec.X,rec.Y,rec.Height-10,rec.Width, com.sun.star.awt.PosSize.POSSIZE); + win.setPosSize(rec.X,rec.Y,rec.Height,rec.Width,com.sun.star.awt.PosSize.POSSIZE ); + } + }); + + return tEnv; + + } + + /** + * Called while disposing a <code>TestEnvironment</code>. + * Disposes calc document. + * @param Param test parameters + * @param log writer to log information while testing + */ + @Override + protected void cleanup( TestParameters Param, PrintWriter log) { + log.println( " disposing xSheetDoc " ); + XComponent oComp = UnoRuntime.queryInterface (XComponent.class, xSpreadsheetDoc) ; + util.DesktopTools.closeDoc(oComp); + } + + /** + * Called while the <code>TestCase</code> initialization. In the + * implementation does nothing. Subclasses can override to initialize + * objects shared among all <code>TestEnvironment</code>s. + * + * @param Param test parameters + * @param log writer to log information while testing + * + * @see #initializeTestCase + */ + @Override + protected void initialize(TestParameters Param, PrintWriter log) throws Exception { + // get a soffice factory object + SOfficeFactory SOF = SOfficeFactory.getFactory( Param.getMSF()); + + log.println("creating a spreadsheetdocument"); + String url = utils.getFullTestURL("calcshapes.sxc"); + log.println("loading document "+url); + xSpreadsheetDoc = UnoRuntime.queryInterface( + XSpreadsheetDocument.class,SOF.loadDocument(url)); + util.utils.waitForEventIdle(Param.getMSF()); + } +} diff --git a/qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeader.java b/qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeader.java new file mode 100644 index 000000000..74670742c --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeader.java @@ -0,0 +1,238 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.AccessibilityTools; +import util.SOfficeFactory; +import util.utils; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.awt.XWindow; +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XNameAccess; +import com.sun.star.frame.XController; +import com.sun.star.frame.XDispatch; +import com.sun.star.frame.XDispatchProvider; +import com.sun.star.frame.XModel; +import com.sun.star.lang.DisposedException; +import com.sun.star.sheet.XHeaderFooterContent; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.style.XStyle; +import com.sun.star.style.XStyleFamiliesSupplier; +import com.sun.star.table.XCell; +import com.sun.star.text.XText; +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.URL; +import com.sun.star.util.XCloseable; +import com.sun.star.util.XURLTransformer; + +/** + * Test for object which is represented by accessible component of + * a printed header in 'Page Preview' mode. + * + * Object implements the following interfaces : + * <ul> + * <li> <code>::com::sun::star::accessibility::XAccessibleComponent</code></li> + * <li> <code>::com::sun::star::accessibility::XAccessibleContext</code></li> + * </ul> <p> + * + * @see com.sun.star.accessibility.XAccessibleComponent + * @see com.sun.star.accessibility.XAccessibleContext + * @see ifc.accessibility._XAccessibleComponent + * @see ifc.accessibility._XAccessibleContext + */ +public class ScAccessiblePageHeader extends TestCase { + + private XSpreadsheetDocument xSpreadsheetDoc = null; + + /** + * Called to create an instance of <code>TestEnvironment</code> + * with an object to test and related objects. + * Switches the document to Print Preview mode. + * Obtains accessible object for the page view. + * + * @param Param test parameters + * @param log writer to log information while testing + * + * @see TestEnvironment + * @see #getTestEnvironment + */ + @Override + protected TestEnvironment createTestEnvironment( + TestParameters Param, PrintWriter log) throws Exception { + + // inserting some content to have non-empty page preview + XCell xCell = null; + try { + XSpreadsheets oSheets = xSpreadsheetDoc.getSheets() ; + XIndexAccess oIndexSheets = UnoRuntime.queryInterface(XIndexAccess.class, oSheets); + XSpreadsheet oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class),oIndexSheets.getByIndex(0)); + xCell = oSheet.getCellByPosition(0, 0) ; + xCell.setFormula("ScAccessiblePageHeader"); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Exception creating page header :"); + e.printStackTrace(log); + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception creating page header :"); + e.printStackTrace(log); + } + + XModel aModel = UnoRuntime.queryInterface(XModel.class, xSpreadsheetDoc); + + XController xController = aModel.getCurrentController(); + + // switching to 'Page Preview' mode + XDispatchProvider xDispProv = UnoRuntime.queryInterface(XDispatchProvider.class, xController); + XURLTransformer xParser = UnoRuntime.queryInterface(XURLTransformer.class, + Param.getMSF().createInstance("com.sun.star.util.URLTransformer")); + // Because it's an in/out parameter we must use an array of URL objects. + URL[] aParseURL = new URL[1]; + aParseURL[0] = new URL(); + aParseURL[0].Complete = ".uno:PrintPreview"; + xParser.parseStrict(aParseURL); + URL aURL = aParseURL[0]; + XDispatch xDispatcher = xDispProv.queryDispatch(aURL, "", 0); + if(xDispatcher != null) + xDispatcher.dispatch( aURL, null ); + + XInterface oObj = null; + for (int i = 0;; ++i) { + Thread.sleep(500); + try { + XWindow xWindow = AccessibilityTools.getCurrentWindow(aModel); + XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); + if (xRoot != null) { + oObj = AccessibilityTools.getAccessibleObjectForRole + (xRoot, AccessibleRole.HEADER, ""); + if (oObj != null) { + log.println("ImplementationName " + utils.getImplName(oObj)); + AccessibilityTools.printAccessibleTree(log, xRoot, Param.getBool(util.PropertyName.DEBUG_IS_ACTIVE)); + break; + } + } + } catch (DisposedException e) { + log.println("Ignoring DisposedException"); + } + if (i == 20) { // give up after 10 sec + throw new RuntimeException( + "Couldn't get AccessibleRoot.HEADER object"); + } + log.println("No HEADER found yet, retrying"); + } + + TestEnvironment tEnv = new TestEnvironment(oObj); + + XStyleFamiliesSupplier StyleFam = UnoRuntime.queryInterface( + XStyleFamiliesSupplier.class, + xSpreadsheetDoc ); + XNameAccess StyleFamNames = StyleFam.getStyleFamilies(); + XStyle StdStyle = null; + + XNameAccess PageStyles = (XNameAccess) AnyConverter.toObject( + new Type(XNameAccess.class), + StyleFamNames.getByName("PageStyles")); + StdStyle = (XStyle) AnyConverter.toObject( + new Type(XStyle.class), PageStyles.getByName("Default")); + + //get the property-set + final XPropertySet PropSet = UnoRuntime.queryInterface(XPropertySet.class, StdStyle); + + XHeaderFooterContent RPHC = null; + // creation of testobject here + // first we write what we are intend to do to log file + log.println( "creating a test environment" ); + RPHC = (XHeaderFooterContent) AnyConverter.toObject( + new Type(XHeaderFooterContent.class), + PropSet.getPropertyValue("RightPageHeaderContent")); + + final XHeaderFooterContent RPHC2 = RPHC; + + final XText center = RPHC2.getCenterText(); + final XText left = RPHC2.getLeftText(); + final XText right = RPHC2.getRightText(); + + tEnv.addObjRelation("EventProducer", + new ifc.accessibility._XAccessibleEventBroadcaster.EventProducer(){ + public void fireEvent() { + center.setString("CENTER"); + left.setString("LEFT"); + right.setString("RIGHT"); + try { + PropSet.setPropertyValue("RightPageHeaderContent",RPHC2); + } catch (com.sun.star.beans.UnknownPropertyException e) { + } catch (com.sun.star.beans.PropertyVetoException e) { + } catch (com.sun.star.lang.IllegalArgumentException e) { + } catch (com.sun.star.lang.WrappedTargetException e) {} + } + }); + + + return tEnv; + + } + + /** + * Called while disposing a <code>TestEnvironment</code>. + * Disposes calc document. + * @param Param test parameters + * @param log writer to log information while testing + */ + @Override + protected void cleanup( TestParameters Param, PrintWriter log) { + log.println( " disposing xSheetDoc " ); + try { + XCloseable oComp = UnoRuntime.queryInterface (XCloseable.class, xSpreadsheetDoc) ; + oComp.close(true); + } catch(com.sun.star.util.CloseVetoException e) { + log.println("Couldn't close document: "+e.getMessage()); + } + } + + /** + * Called while the <code>TestCase</code> initialization. In the + * implementation does nothing. Subclasses can override to initialize + * objects shared among all <code>TestEnvironment</code>s. + * + * @param Param test parameters + * @param log writer to log information while testing + * + * @see #initializeTestCase + */ + @Override + protected void initialize(TestParameters Param, PrintWriter log) throws Exception { + // get a soffice factory object + SOfficeFactory SOF = SOfficeFactory.getFactory( Param.getMSF()); + + log.println("creating a spreadsheetdocument"); + xSpreadsheetDoc = SOF.createCalcDoc(null); + } +} diff --git a/qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeaderArea.java b/qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeaderArea.java new file mode 100644 index 000000000..87f1c5a74 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScAccessiblePageHeaderArea.java @@ -0,0 +1,200 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.AccessibilityTools; +import util.SOfficeFactory; +import util.utils; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleAction; +import com.sun.star.accessibility.XAccessibleContext; +import com.sun.star.accessibility.XAccessibleStateSet; +import com.sun.star.awt.XWindow; +import com.sun.star.container.XIndexAccess; +import com.sun.star.frame.XController; +import com.sun.star.frame.XDispatch; +import com.sun.star.frame.XDispatchProvider; +import com.sun.star.frame.XModel; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.table.XCell; +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.URL; +import com.sun.star.util.XCloseable; +import com.sun.star.util.XURLTransformer; + +/** + * Test for object which is represented by accessible component of + * a printed header in 'Page Preview' mode. + * + * Object implements the following interfaces : + * <ul> + * <li> <code>::com::sun::star::accessibility::XAccessibleComponent</code></li> + * <li> <code>::com::sun::star::accessibility::XAccessibleContext</code></li> + * </ul> <p> + * + * @see com.sun.star.accessibility.XAccessibleComponent + * @see com.sun.star.accessibility.XAccessibleContext + * @see ifc.accessibility._XAccessibleComponent + * @see ifc.accessibility._XAccessibleContext + */ +public class ScAccessiblePageHeaderArea extends TestCase { + + private XSpreadsheetDocument xSpreadsheetDoc = null; + + /** + * Called to create an instance of <code>TestEnvironment</code> + * with an object to test and related objects. + * Switches the document to Print Preview mode. + * Obtains accessible object for the page view. + * + * @param Param test parameters + * @param log writer to log information while testing + * + * @see TestEnvironment + * @see #getTestEnvironment + */ + @Override + protected TestEnvironment createTestEnvironment( + TestParameters Param, PrintWriter log) throws Exception { + + XInterface oObj = null; + + // inserting some content to have non-empty page preview + XCell xCell = null; + try { + XSpreadsheets oSheets = xSpreadsheetDoc.getSheets() ; + XIndexAccess oIndexSheets = UnoRuntime.queryInterface(XIndexAccess.class, oSheets); + XSpreadsheet oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class),oIndexSheets.getByIndex(0)); + xCell = oSheet.getCellByPosition(0, 0) ; + xCell.setFormula("ScAccessiblePageHeaderArea"); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Exception creating page header area :"); + e.printStackTrace(log); + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception creating page header area :"); + e.printStackTrace(log); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception creating page header area :"); + e.printStackTrace(log); + } + + XModel aModel = UnoRuntime.queryInterface(XModel.class, xSpreadsheetDoc); + + XController xController = aModel.getCurrentController(); + + // switching to 'Page Preview' mode + XDispatchProvider xDispProv = UnoRuntime.queryInterface(XDispatchProvider.class, xController); + XURLTransformer xParser = UnoRuntime.queryInterface(XURLTransformer.class, + Param.getMSF().createInstance("com.sun.star.util.URLTransformer")); + // Because it's an in/out parameter we must use an array of URL objects. + URL[] aParseURL = new URL[1]; + aParseURL[0] = new URL(); + aParseURL[0].Complete = ".uno:PrintPreview"; + xParser.parseStrict(aParseURL); + URL aURL = aParseURL[0]; + XDispatch xDispatcher = xDispProv.queryDispatch(aURL, "", 0); + if(xDispatcher != null) + xDispatcher.dispatch( aURL, null ); + + util.utils.waitForEventIdle(Param.getMSF()); + + XWindow xWindow = AccessibilityTools.getCurrentContainerWindow(aModel); + XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); + + oObj = AccessibilityTools.getAccessibleObjectForRole + (xRoot, AccessibleRole.HEADER, "").getAccessibleChild(0); + XAccessibleContext cont = UnoRuntime.queryInterface(XAccessibleContext.class, oObj); + XAccessibleStateSet StateSet = cont.getAccessibleStateSet(); + if (StateSet.contains((short)27)) { + log.println("Object is transient"); + } + + log.println("ImplementationName " + utils.getImplName(oObj)); + AccessibilityTools.printAccessibleTree(log, xRoot, Param.getBool(util.PropertyName.DEBUG_IS_ACTIVE)); + + TestEnvironment tEnv = new TestEnvironment(oObj); + + XAccessibleContext zoomIn = + AccessibilityTools.getAccessibleObjectForRole(xRoot,AccessibleRole.PUSH_BUTTON, "Zoom In"); + + final XAccessibleAction pressZoom = UnoRuntime.queryInterface(XAccessibleAction.class, zoomIn); + tEnv.addObjRelation("EventProducer", + new ifc.accessibility._XAccessibleEventBroadcaster.EventProducer() { + public void fireEvent() { + try { + pressZoom.doAccessibleAction(0); + } catch (com.sun.star.lang.IndexOutOfBoundsException ibe) { + System.out.println("caught exception: " + ibe); + } + } + }); + + return tEnv; + + } + + /** + * Called while disposing a <code>TestEnvironment</code>. + * Disposes calc document. + * @param Param test parameters + * @param log writer to log information while testing + */ + @Override + protected void cleanup( TestParameters Param, PrintWriter log) { + log.println( " disposing xSheetDoc " ); + try { + XCloseable oComp = UnoRuntime.queryInterface (XCloseable.class, xSpreadsheetDoc) ; + oComp.close(true); + }catch(com.sun.star.util.CloseVetoException e) { + log.println("Couldn't close document: "+e.getMessage()); + } + } + + /** + * Called while the <code>TestCase</code> initialization. In the + * implementation does nothing. Subclasses can override to initialize + * objects shared among all <code>TestEnvironment</code>s. + * + * @param Param test parameters + * @param log writer to log information while testing + * + * @see #initializeTestCase + */ + @Override + protected void initialize(TestParameters Param, PrintWriter log) throws Exception { + // get a soffice factory object + SOfficeFactory SOF = SOfficeFactory.getFactory( Param.getMSF()); + + log.println("creating a spreadsheetdocument"); + xSpreadsheetDoc = SOF.createCalcDoc(null); + } +} diff --git a/qadevOOo/tests/java/mod/_sc/ScAccessiblePreviewCell.java b/qadevOOo/tests/java/mod/_sc/ScAccessiblePreviewCell.java new file mode 100644 index 000000000..d645c407a --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScAccessiblePreviewCell.java @@ -0,0 +1,173 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.AccessibilityTools; +import util.SOfficeFactory; +import util.utils; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.container.XIndexAccess; +import com.sun.star.frame.XController; +import com.sun.star.frame.XDispatch; +import com.sun.star.frame.XDispatchProvider; +import com.sun.star.frame.XModel; +import com.sun.star.lang.DisposedException; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.table.XCell; +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.URL; +import com.sun.star.util.XURLTransformer; + +/** + * Object implements the following interfaces: + * <ul> + * <li> <code>::com::sun::star::accessibility::XAccessibleComponent</code> + * </li> + * <li> <code>::com::sun::star::accessibility::XAccessibleContext</code> + * </li> + * <li> <code>::com::sun::star::accessibility::XAccessibleSelection + * </code></li> + * <li><code>::com::sun::star::accessibility::XAccessibleValue</code> + * </li> + * <li><code>::com::sun::star::accessibility::XAccessibleEventBroadcaster + * </code></li> + * </ul> + * @see com.sun.star.accessibility.XAccessibleComponent + * @see com.sun.star.accessibility.XAccessibleContext + * @see com.sun.star.accessibility.XAccessibleSelection + * @see com.sun.star.accessibility.XAccessibleValue + * @see com.sun.star.accessibility.XAccessibleEventBroadcaster + * @see ifc.accessibility._XAccessibleEventBroadcaster + * @see ifc.accessibility._XAccessibleComponent + * @see ifc.accessibility._XAccessibleContext + * @see ifc.accessibility._XAccessibleSelection + * @see ifc.accessibility._XAccessibleTable + */ +public class ScAccessiblePreviewCell extends TestCase { + private XSpreadsheetDocument xSheetDoc = null; + + /** + * Creates a spreadsheet document. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + log.println( "creating a Spreadsheet document" ); + xSheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes a spreadsheet document. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xSheetDoc " ); + XComponent oComp = UnoRuntime.queryInterface + (XComponent.class, xSheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Obtains the accessible object for a one of cell in preview mode. + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, PrintWriter log) throws Exception { + XCell xCell = null; + + log.println("Getting spreadsheet") ; + XSpreadsheets oSheets = xSheetDoc.getSheets() ; + XIndexAccess oIndexSheets = UnoRuntime.queryInterface(XIndexAccess.class, oSheets); + XSpreadsheet oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class),oIndexSheets.getByIndex(0)); + + log.println("Getting a cell from sheet") ; + xCell = oSheet.getCellByPosition(0, 0); + + xCell.setFormula("Value"); + + XModel xModel = UnoRuntime.queryInterface(XModel.class, xSheetDoc); + + XController xController = xModel.getCurrentController(); + + //switch to 'Print Preview' mode + XDispatchProvider xDispProv = UnoRuntime.queryInterface(XDispatchProvider.class, xController); + XURLTransformer xParser = UnoRuntime.queryInterface(XURLTransformer.class, + Param.getMSF().createInstance("com.sun.star.util.URLTransformer")); + URL[] aParseURL = new URL[1]; + aParseURL[0] = new URL(); + aParseURL[0].Complete = ".uno:PrintPreview"; + xParser.parseStrict(aParseURL); + URL aURL = aParseURL[0]; + XDispatch xDispatcher = xDispProv.queryDispatch(aURL, "", 0); + if(xDispatcher != null) + xDispatcher.dispatch( aURL, null ); + + XInterface oObj = null; + for (int i = 0;; ++i) { + Thread.sleep(500); + try { + XAccessible xRoot = AccessibilityTools.getAccessibleObject( + AccessibilityTools.getCurrentWindow( + xModel)); + if (xRoot != null) { + oObj = AccessibilityTools.getAccessibleObjectForRole( + xRoot, AccessibleRole.TABLE_CELL, true); + if (oObj != null) { + break; + } + } + } catch (DisposedException e) { + log.println("Ignoring DisposedException"); + } + if (i == 20) { // give up after 10 sec + throw new RuntimeException( + "Couldn't get AccessibleRole.TABLE_CELL object"); + } + log.println("No TABLE_CELL found yet, retrying"); + } + + log.println("ImplementationName " + utils.getImplName(oObj)); + + TestEnvironment tEnv = new TestEnvironment( oObj ); + + tEnv.addObjRelation("EventProducer", + new ifc.accessibility._XAccessibleEventBroadcaster.EventProducer(){ + public void fireEvent() { + System.out.println("Fire Event"); + } + }); + + return tEnv; + } +} diff --git a/qadevOOo/tests/java/mod/_sc/ScAccessiblePreviewHeaderCell.java b/qadevOOo/tests/java/mod/_sc/ScAccessiblePreviewHeaderCell.java new file mode 100644 index 000000000..911b65aec --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScAccessiblePreviewHeaderCell.java @@ -0,0 +1,232 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.AccessibilityTools; +import util.SOfficeFactory; +import util.utils; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XNameAccess; +import com.sun.star.frame.XController; +import com.sun.star.frame.XDispatch; +import com.sun.star.frame.XDispatchProvider; +import com.sun.star.frame.XModel; +import com.sun.star.lang.DisposedException; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.style.XStyleFamiliesSupplier; +import com.sun.star.table.XCell; +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.URL; +import com.sun.star.util.XCloseable; +import com.sun.star.util.XURLTransformer; + + +/** + * Object implements the following interfaces: + * <ul> + * <li> <code>::com::sun::star::accessibility::XAccessibleComponent</code> + * </li> + * <li> <code>::com::sun::star::accessibility::XAccessibleContext</code> + * </li> + * <li> <code>::com::sun::star::accessibility::XAccessibleSelection + * </code></li> + * <li><code>::com::sun::star::accessibility::XAccessibleValue</code> + * </li> + * <li><code>::com::sun::star::accessibility::XAccessibleEventBroadcaster + * </code></li> + * </ul> + * @see com.sun.star.accessibility.XAccessibleComponent + * @see com.sun.star.accessibility.XAccessibleContext + * @see com.sun.star.accessibility.XAccessibleSelection + * @see com.sun.star.accessibility.XAccessibleValue + * @see com.sun.star.accessibility.XAccessibleEventBroadcaster + * @see ifc.accessibility._XAccessibleEventBroadcaster + * @see ifc.accessibility._XAccessibleComponent + * @see ifc.accessibility._XAccessibleContext + * @see ifc.accessibility._XAccessibleSelection + * @see ifc.accessibility._XAccessibleTable + */ +public class ScAccessiblePreviewHeaderCell extends TestCase { + private XSpreadsheetDocument xSheetDoc = null; + + /** + * Creates a spreadsheet document. + */ + @Override + protected void initialize(TestParameters tParam, PrintWriter log) throws Exception { + } + + /** + * Disposes a spreadsheet document. + */ + @Override + protected void cleanup(TestParameters tParam, PrintWriter log) { + log.println(" disposing xSheetDoc "); + + if (xSheetDoc != null) { + try { + XCloseable oComp = UnoRuntime.queryInterface( + XCloseable.class, xSheetDoc); + oComp.close(true); + xSheetDoc = null; + } catch (com.sun.star.util.CloseVetoException e) { + e.printStackTrace(log); + } catch (com.sun.star.lang.DisposedException e) { + log.println("document already disposed"); + xSheetDoc = null; + } + } + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Sets a value of the cell 'A1'. Sets the property 'PrintHeaders' + * of the style 'Default' of the family 'PageStyles' to true. + * Switch the document to preview mode and then obtains the + * accessible object for the header cell. + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, + PrintWriter log) throws Exception { + if (xSheetDoc != null) { + XComponent oComp = UnoRuntime.queryInterface( + XComponent.class, xSheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + SOfficeFactory SOF = SOfficeFactory.getFactory( Param.getMSF()); + + log.println("creating a Spreadsheet document"); + xSheetDoc = SOF.createCalcDoc(null); + + XModel xModel = UnoRuntime.queryInterface(XModel.class, + xSheetDoc); + + XController xController = xModel.getCurrentController(); + + //setting value of cell A1 + XCell xCell = null; + + log.println("Getting spreadsheet"); + + XSpreadsheets oSheets = xSheetDoc.getSheets(); + XIndexAccess oIndexSheets = UnoRuntime.queryInterface( + XIndexAccess.class, oSheets); + XSpreadsheet oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class), + oIndexSheets.getByIndex(0)); + + log.println("Getting a cell from sheet"); + xCell = oSheet.getCellByPosition(0, 0); + + xCell.setFormula("Value"); + + //setting property 'PrintHeaders' of the style 'Default' + XStyleFamiliesSupplier xSFS = UnoRuntime.queryInterface( + XStyleFamiliesSupplier.class, + xSheetDoc); + XNameAccess xNA = xSFS.getStyleFamilies(); + XPropertySet xPropSet = null; + + Object oPageStyles = xNA.getByName("PageStyles"); + xNA = UnoRuntime.queryInterface(XNameAccess.class, + oPageStyles); + + Object oDefStyle = xNA.getByName("Default"); + xPropSet = UnoRuntime.queryInterface( + XPropertySet.class, oDefStyle); + + xPropSet.setPropertyValue("PrintHeaders", Boolean.TRUE); + + //switching to 'Print Preview' mode + XDispatchProvider xDispProv = UnoRuntime.queryInterface( + XDispatchProvider.class, + xController); + XURLTransformer xParser = UnoRuntime.queryInterface( + XURLTransformer.class, + Param.getMSF() + .createInstance("com.sun.star.util.URLTransformer")); + URL[] aParseURL = new URL[1]; + aParseURL[0] = new URL(); + aParseURL[0].Complete = ".uno:PrintPreview"; + xParser.parseStrict(aParseURL); + + URL aURL = aParseURL[0]; + XDispatch xDispatcher = xDispProv.queryDispatch(aURL, "", 0); + + if (xDispatcher != null) { + xDispatcher.dispatch(aURL, null); + } + + XInterface oObj = null; + for (int i = 0;; ++i) { + Thread.sleep(500); + try { + XAccessible xRoot = AccessibilityTools.getAccessibleObject( + AccessibilityTools.getCurrentWindow( + xModel)); + if (xRoot != null) { + oObj = AccessibilityTools.getAccessibleObjectForRole( + xRoot, AccessibleRole.TABLE, "A"); + if (oObj == null) { + log.println("Version with a fixed #103863#?"); + oObj = AccessibilityTools.getAccessibleObjectForRole( + xRoot, AccessibleRole.TABLE_CELL, true); + } + if (oObj != null) { + break; + } + } + } catch (DisposedException e) { + log.println("Ignoring DisposedException"); + } + if (i == 20) { // give up after 10 sec + throw new RuntimeException( + "Couldn't get AccessibleRole.TABLE/TABLE_CELL object"); + } + log.println("No TABLE/TABLE_CELL found yet, retrying"); + } + + log.println("ImplementationName " + utils.getImplName(oObj)); + + TestEnvironment tEnv = new TestEnvironment(oObj); + + tEnv.addObjRelation("EventProducer", + new ifc.accessibility._XAccessibleEventBroadcaster.EventProducer() { + public void fireEvent() { + } + }); + + return tEnv; + } +} diff --git a/qadevOOo/tests/java/mod/_sc/ScAccessiblePreviewTable.java b/qadevOOo/tests/java/mod/_sc/ScAccessiblePreviewTable.java new file mode 100644 index 000000000..fece4f3d1 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScAccessiblePreviewTable.java @@ -0,0 +1,191 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.AccessibilityTools; +import util.SOfficeFactory; +import util.utils; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleAction; +import com.sun.star.accessibility.XAccessibleContext; +import com.sun.star.container.XIndexAccess; +import com.sun.star.frame.XController; +import com.sun.star.frame.XDispatch; +import com.sun.star.frame.XDispatchProvider; +import com.sun.star.frame.XModel; +import com.sun.star.lang.DisposedException; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.table.XCell; +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.URL; +import com.sun.star.util.XURLTransformer; + +/** + * Object implements the following interfaces: + * <ul> + * <li> <code>::com::sun::star::accessibility::XAccessibleComponent</code> + * </li> + * <li> <code>::com::sun::star::accessibility::XAccessibleContext</code> + * </li> + * <li> <code>::com::sun::star::accessibility::XAccessibleSelection + * </code></li> + * <li><code>::com::sun::star::accessibility::XAccessibleTable</code> + * </li> + * <li><code>::com::sun::star::accessibility::XAccessibleEventBroadcaster + * </code></li> + * </ul> + * @see com.sun.star.accessibility.XAccessibleComponent + * @see com.sun.star.accessibility.XAccessibleContext + * @see com.sun.star.accessibility.XAccessibleSelection + * @see com.sun.star.accessibility.XAccessibleTable + * @see com.sun.star.accessibility.XAccessibleEventBroadcaster + * @see ifc.accessibility._XAccessibleEventBroadcaster + * @see ifc.accessibility._XAccessibleComponent + * @see ifc.accessibility._XAccessibleContext + * @see ifc.accessibility._XAccessibleSelection + * @see ifc.accessibility._XAccessibleTable + */ +public class ScAccessiblePreviewTable extends TestCase { + private XSpreadsheetDocument xSheetDoc = null; + + /** + * Creates a spreadsheet document. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + log.println( "creating a Spreadsheet document" ); + xSheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes a spreadsheet document. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xSheetDoc " ); + XComponent oComp = UnoRuntime.queryInterface + (XComponent.class, xSheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Obtains the accessible object for a table in preview mode. + */ + @Override + protected TestEnvironment createTestEnvironment(final TestParameters Param, + final PrintWriter log) throws Exception { + + log.println("Getting spreadsheet") ; + XSpreadsheets oSheets = xSheetDoc.getSheets() ; + XIndexAccess oIndexSheets = UnoRuntime.queryInterface(XIndexAccess.class, oSheets); + XSpreadsheet oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class),oIndexSheets.getByIndex(0)); + + log.println("Getting a cell from sheet") ; + XCell xCell = oSheet.getCellByPosition(0, 0); + xCell.setFormula("Value"); + + XModel xModel = UnoRuntime.queryInterface(XModel.class, xSheetDoc); + + XController xController = xModel.getCurrentController(); + + //switch to 'Print Preview' mode + XDispatchProvider xDispProv = UnoRuntime.queryInterface(XDispatchProvider.class, xController); + XURLTransformer xParser = UnoRuntime.queryInterface(XURLTransformer.class, + Param.getMSF().createInstance("com.sun.star.util.URLTransformer")); + URL[] aParseURL = new URL[1]; + aParseURL[0] = new URL(); + aParseURL[0].Complete = ".uno:PrintPreview"; + xParser.parseStrict(aParseURL); + URL aURL = aParseURL[0]; + XDispatch xDispatcher = xDispProv.queryDispatch(aURL, "", 0); + if(xDispatcher != null) + xDispatcher.dispatch( aURL, null ); + + XAccessible xRoot; + XInterface oObj; + for (int i = 0;; ++i) { + Thread.sleep(500); + try { + xRoot = AccessibilityTools.getAccessibleObject( + AccessibilityTools.getCurrentContainerWindow( + xModel)); + if (xRoot != null) { + oObj = AccessibilityTools.getAccessibleObjectForRole( + xRoot, AccessibleRole.TABLE); + if (oObj != null) { + break; + } + } + } catch (DisposedException e) { + log.println("Ignoring DisposedException"); + } + if (i == 20) { // give up after 10 sec + throw new RuntimeException( + "Couldn't get AccessibleRole.TABLE/PUSH_BUTTON object"); + } + log.println("No TABLE/PUSH_BUTTON found yet, retrying"); + } + + log.println("ImplementationName " + utils.getImplName(oObj)); + + TestEnvironment tEnv = new TestEnvironment( oObj ); + + XAccessibleContext zoomIn = + AccessibilityTools.getAccessibleObjectForRole(xRoot,AccessibleRole.PUSH_BUTTON, "Zoom In"); + + log.println("Getting \"" + zoomIn.getAccessibleName() + "\" which is a \"" + UnoRuntime.queryInterface(com.sun.star.lang.XServiceInfo.class, zoomIn).getImplementationName() + "\""); + + final XAccessibleAction pressZoom = UnoRuntime.queryInterface(XAccessibleAction.class, zoomIn); + tEnv.addObjRelation("EventProducer", + new ifc.accessibility._XAccessibleEventBroadcaster.EventProducer() { + public void fireEvent() { + try { + pressZoom.doAccessibleAction(0); + // the action is not triggered on the preview table + // but some toolbar button - this will indirectly + // trigger a table event but only from VCL main loop + utils.waitForEventIdle(Param.getMSF()); + // sadly it turns out that idle is not enough... + Thread.sleep(500); + } catch (com.sun.star.lang.IndexOutOfBoundsException ibe) { + log.println("ScAccessiblePreviewTable: IndexOutOfBoundsException from pressZoom.doAccessibleAction(0)"); + } catch (InterruptedException ex) {} + } + }); + + return tEnv; + } +} diff --git a/qadevOOo/tests/java/mod/_sc/ScAccessibleSpreadsheet.java b/qadevOOo/tests/java/mod/_sc/ScAccessibleSpreadsheet.java new file mode 100644 index 000000000..dd177b7e3 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScAccessibleSpreadsheet.java @@ -0,0 +1,149 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.StatusException; +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.AccessibilityTools; +import util.SOfficeFactory; +import util.utils; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.awt.XWindow; +import com.sun.star.container.XIndexAccess; +import com.sun.star.frame.XModel; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.table.XCell; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** + * Test for accessible object of spreadsheet document.<p> + * Object implements the following interfaces: + * <ul> + * <li> <code>::com::sun::star::accessibility::XAccessibleComponent</code> + * </li> + * <li> <code>::com::sun::star::accessibility::XAccessibleContext</code> + * </li> + * <li> <code>::com::sun::star::accessibility::XAccessibleSelection + * </code></li> + * <li><code>::com::sun::star::accessibility::XAccessibleTable</code> + * </li> + * </ul> + * @see com.sun.star.accessibility.XAccessibleComponent + * @see com.sun.star.accessibility.XAccessibleContext + * @see com.sun.star.accessibility.XAccessibleSelection + * @see com.sun.star.accessibility.XAccessibleTable + * @see ifc.accessibility._XAccessibleComponent + * @see ifc.accessibility._XAccessibleContext + * @see ifc.accessibility._XAccessibleSelection + * @see ifc.accessibility._XAccessibleTable + */ +public class ScAccessibleSpreadsheet extends TestCase { + private XSpreadsheetDocument xSheetDoc = null; + + /** + * Creates a spreadsheet document. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + log.println( "creating a Spreadsheet document" ); + xSheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes a spreadsheet document. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xSheetDoc " ); + XComponent oComp = UnoRuntime.queryInterface + (XComponent.class, xSheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Obtains the accessible object for the spreadsheet. + */ + @Override + public TestEnvironment createTestEnvironment + ( TestParameters Param, PrintWriter log ) + throws StatusException { + + XInterface oObj = null; + + XModel xModel = UnoRuntime.queryInterface(XModel.class, xSheetDoc); + + XWindow xWindow = AccessibilityTools.getCurrentWindow(xModel); + XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); + + oObj = AccessibilityTools.getAccessibleObjectForRole(xRoot, AccessibleRole.TABLE ); + + log.println("ImplementationName " + utils.getImplName(oObj)); + + TestEnvironment tEnv = new TestEnvironment( oObj ); + + // relation for XAccessibleEventBroadcaster + XCell xCell = null; + final String text = "Text for testing of the interface XAccessibleText"; + try { + XSpreadsheets oSheets = xSheetDoc.getSheets() ; + XIndexAccess oIndexSheets = UnoRuntime.queryInterface(XIndexAccess.class, oSheets); + XSpreadsheet oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class),oIndexSheets.getByIndex(0)); + xCell = oSheet.getCellByPosition(5, 5) ; + xCell.setFormula(text); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Exception creating accessible text :"); + e.printStackTrace(log); + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception creating accessible text :"); + e.printStackTrace(log); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception creating accessible text :"); + e.printStackTrace(log); + } + + final XCell fCell = xCell ; + + tEnv.addObjRelation("EventProducer", + new ifc.accessibility._XAccessibleEventBroadcaster.EventProducer(){ + public void fireEvent() { + fCell.setFormula("firing event"); + fCell.setFormula(text); + } + }); + + return tEnv; + } + +} diff --git a/qadevOOo/tests/java/mod/_sc/ScAnnotationShapeObj.java b/qadevOOo/tests/java/mod/_sc/ScAnnotationShapeObj.java new file mode 100644 index 000000000..21cae1a41 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScAnnotationShapeObj.java @@ -0,0 +1,185 @@ +/* + * 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 mod._sc; + +import com.sun.star.container.XIndexAccess; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XSheetAnnotation; +import com.sun.star.sheet.XSheetAnnotationAnchor; +import com.sun.star.sheet.XSheetAnnotationShapeSupplier; +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.XCell; +import com.sun.star.table.XCellRange; +import com.sun.star.text.XSimpleText; +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 lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; + +import util.SOfficeFactory; +import util.utils; + +import java.io.PrintWriter; +import util.DefaultDsc; +import util.InstCreator; + + +/** +* Test for object which represents some text annotation +* anchored to some cell in spreadsheet (implement +* <code>com.sun.star.sheet.CellAnnotation</code>).<p> +* Object implements the following interfaces : +* <ul> +* <li> <code>com::sun::star::text::XSimpleText</code></li> +* <li> <code>com::sun::star::text::XTextRange</code></li> +* <li> <code>com::sun::star::sheet::XSheetAnnotation</code></li> +* </ul> +* This object test <b> is NOT </b> designed to be run in several +* threads concurrently. +* @see com.sun.star.sheet.CellAnnotation +* @see com.sun.star.text.XSimpleText +* @see com.sun.star.text.XTextRange +* @see com.sun.star.sheet.XSheetAnnotation +* @see ifc.text._XSimpleText +* @see ifc.text._XTextRange +* @see ifc.sheet._XSheetAnnotation +*/ +public class ScAnnotationShapeObj extends TestCase { + private XSpreadsheetDocument xSheetDoc = null; + + /** + * Creates a spreadsheet document. + */ + @Override + protected void initialize(TestParameters tParam, PrintWriter log) throws Exception { + SOfficeFactory SOF = + SOfficeFactory.getFactory(tParam + .getMSF()); + + log.println("creating a Spreadsheet document"); + log.println("Loading: "+utils.getFullTestURL( + "ScAnnotationShapeObj.sxc")); + xSheetDoc = + UnoRuntime.queryInterface(XSpreadsheetDocument.class, + SOF.loadDocument(utils.getFullTestURL( + "ScAnnotationShapeObj.sxc"))); + } + + /** + * Disposes a spreadsheet document. + */ + @Override + protected void cleanup(TestParameters tParam, PrintWriter log) { + log.println(" disposing xSheetDoc "); + + XComponent oComp = + UnoRuntime.queryInterface(XComponent.class, + xSheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Retrieves a collection of spreadsheets from a document, + * and takes one them. Then a single cell is retrieved, and + * using its <code>com.sun.star.sheet.XSheetAnnotationAnchor</code> + * interface an annotation is got. + * Object relations created : + * <ul> + * <li> <code>'CELLPOS'</code> for + * {@link ifc.sheet._XSheetAnnotation} (of <code> + * com.sun.star.table.CellAddress</code> type) which + * contains the annotation cell address.</li> + * </ul> + */ + @Override + public TestEnvironment createTestEnvironment( + TestParameters Param, PrintWriter log) throws Exception { + XInterface oObj = null; + + // creation of testobject here + // first we write what we are intend to do to log file + log.println("Creating a test environment"); + + CellAddress cellPos = new CellAddress((short) 0, 1, 2); + + log.println("Getting test object "); + + XSpreadsheetDocument xArea = + UnoRuntime.queryInterface(XSpreadsheetDocument.class, + xSheetDoc); + XSpreadsheets oSheets = xArea.getSheets(); + + XIndexAccess XAccess = + UnoRuntime.queryInterface(XIndexAccess.class, + oSheets); + XCell oCell = null; + + XSpreadsheet oSheet = + (XSpreadsheet) AnyConverter.toObject(new Type( + XSpreadsheet.class), + XAccess.getByIndex(cellPos.Sheet)); + XCellRange oCRange = + UnoRuntime.queryInterface(XCellRange.class, + oSheet); + oCell = + oCRange.getCellByPosition(cellPos.Column, cellPos.Row); + + XSheetAnnotationAnchor oAnnoA = + UnoRuntime.queryInterface(XSheetAnnotationAnchor.class, + oCell); + XSheetAnnotation oAnno = oAnnoA.getAnnotation(); + + XSimpleText xAnnoText = + UnoRuntime.queryInterface(XSimpleText.class, + oAnno); + xAnnoText.setString("ScAnnotationShapeObj"); + + XSheetAnnotationShapeSupplier xSheetAnnotationShapeSupplier = + UnoRuntime.queryInterface(XSheetAnnotationShapeSupplier.class, + oAnno); + + oObj = xSheetAnnotationShapeSupplier.getAnnotationShape(); + + log.println("ImplementationName: " + + util.utils.getImplName(oObj)); + + TestEnvironment tEnv = new TestEnvironment(oObj); + + //adding ObjRelation for RotationDescriptor + tEnv.addObjRelation("NoShear", Boolean.TRUE); + + //adding ObjRelation for XText + DefaultDsc tDsc = new DefaultDsc("com.sun.star.text.XTextContent", + "com.sun.star.text.TextField.DateTime"); + + log.println( "adding InstCreator object" ); + tEnv.addObjRelation( + "XTEXTINFO", new InstCreator( xSheetDoc, tDsc ) ); + + return tEnv; + } +} + // finish class ScAnnotationShapeObj diff --git a/qadevOOo/tests/java/mod/_sc/ScAnnotationTextCursor.java b/qadevOOo/tests/java/mod/_sc/ScAnnotationTextCursor.java new file mode 100644 index 000000000..caa2e2a91 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScAnnotationTextCursor.java @@ -0,0 +1,124 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; + +import com.sun.star.container.XIndexAccess; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XSheetAnnotation; +import com.sun.star.sheet.XSheetAnnotationAnchor; +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.XCell; +import com.sun.star.table.XCellRange; +import com.sun.star.text.XSimpleText; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + + +/** + * + * initial description + * @see com.sun.star.beans.XPropertySet + * @see com.sun.star.beans.XPropertyState + * @see com.sun.star.document.XDocumentInsertable + * @see com.sun.star.style.CharacterProperties + * @see com.sun.star.style.ParagraphProperties + * @see com.sun.star.text.XParagraphCursor + * @see com.sun.star.text.XSentenceCursor + * @see com.sun.star.text.XTextCursor + * @see com.sun.star.text.XTextRange + * @see com.sun.star.text.XWordCursor + * @see com.sun.star.util.XSortable + * + */ +public class ScAnnotationTextCursor extends TestCase { + + private XSpreadsheetDocument xSheetDoc = null; + + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + log.println( "creating a Spreadsheet document" ); + xSheetDoc = SOF.createCalcDoc(null); + } + + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xSheetDoc " ); + XComponent oComp = UnoRuntime.queryInterface + (XComponent.class, xSheetDoc) ; + util.DesktopTools.closeDoc(oComp); + } + + + /** + * creating a TestEnvironment for the interfaces to be tested + */ + @Override + public TestEnvironment createTestEnvironment + ( TestParameters Param, PrintWriter log ) + throws Exception { + + XInterface oObj = null; + + // creation of testobject here + // first we write what we are intend to do to log file + log.println( "Creating a test environment" ); + + CellAddress cellPos = new CellAddress((short)0, 1, 2); + + log.println("Getting test object ") ; + + XSpreadsheetDocument xArea = UnoRuntime.queryInterface(XSpreadsheetDocument.class, xSheetDoc); + + XSpreadsheets oSheets = xArea.getSheets(); + + XIndexAccess XAccess = UnoRuntime.queryInterface(XIndexAccess.class, oSheets); + + XSpreadsheet oSheet = (XSpreadsheet)XAccess.getByIndex(cellPos.Sheet); + + XCellRange oCRange = UnoRuntime.queryInterface(XCellRange.class, oSheet); + + XCell oCell = oCRange.getCellByPosition(cellPos.Column, cellPos.Row); + + XSheetAnnotationAnchor oAnnoA = UnoRuntime.queryInterface(XSheetAnnotationAnchor.class, oCell); + + XSheetAnnotation oAnno = oAnnoA.getAnnotation(); + XSimpleText aText = UnoRuntime.queryInterface(XSimpleText.class,oAnno); + aText.setString("A nice little Test"); + oObj = aText.createTextCursor(); + + TestEnvironment tEnv = new TestEnvironment( oObj ); + + // Other parameters required for interface tests + + return tEnv; + } + +} // finish class ScAnnotationTextCursor + diff --git a/qadevOOo/tests/java/mod/_sc/ScAutoFormatFieldObj.java b/qadevOOo/tests/java/mod/_sc/ScAutoFormatFieldObj.java new file mode 100644 index 000000000..a97d3bbb4 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScAutoFormatFieldObj.java @@ -0,0 +1,97 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.StatusException; +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import com.sun.star.container.XIndexAccess; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Test for object which is represented by service +* <code>com.sun.star.sheet.TableAutoFormatField</code>. +* In StarCalc application there is a collection of autoformats +* for tables (you can select a predefined format for a +* table or create your own). Each autoformat has a number +* of fields with definitions of font parameters, number +* formats etc. for different parts of a table (column and +* row names, footers, data). This object represents the +* field of the same kind. <p> +* Object implements the following interfaces : +* <ul> +* <li> <code>com::sun::star::sheet::TableAutoFormatField</code></li> +* <li> <code>com::sun::star::beans::XPropertySet</code></li> +* </ul> +* This object test <b> is NOT </b> designed to be run in several +* threads concurrently. +* @see com.sun.star.sheet.TableAutoFormatField +* @see com.sun.star.beans.XPropertySet +* @see ifc.sheet._TableAutoFormatField +* @see ifc.beans._XPropertySet +*/ +public class ScAutoFormatFieldObj extends TestCase { + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Using SOffice ServiceManager an instance of + * <code>com.sun.star.sheet.TableAutoFormatField</code> service + * is created. From this collection one Format is retrieved + * and then from this format one of its compound fields is + * retrieved. + */ + @Override + public TestEnvironment createTestEnvironment + ( TestParameters Param, PrintWriter log ) throws StatusException { + + XInterface oObj = null; + + try { + + log.println ("create Object ...") ; + // creation of testobject here + XInterface formats = (XInterface)Param.getMSF().createInstance + ("com.sun.star.sheet.TableAutoFormats"); + XIndexAccess formatsIndex = UnoRuntime.queryInterface + (XIndexAccess.class, formats); + XInterface format = (XInterface) AnyConverter.toObject( + new Type(XInterface.class),formatsIndex.getByIndex(0)); + XIndexAccess formatIndex = UnoRuntime.queryInterface + (XIndexAccess.class, format); + oObj = (XInterface) AnyConverter.toObject( + new Type(XInterface.class),formatIndex.getByIndex(0)); + + } catch (com.sun.star.uno.Exception e) { + log.println ("Exception occurred while creating test Object.") ; + e.printStackTrace(log) ; + } + + TestEnvironment tEnv = new TestEnvironment(oObj) ; + + return tEnv; + } + +} // finish class ScAutoFormatFieldObj + diff --git a/qadevOOo/tests/java/mod/_sc/ScCellCursorObj.java b/qadevOOo/tests/java/mod/_sc/ScCellCursorObj.java new file mode 100644 index 000000000..fe155bba8 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScCellCursorObj.java @@ -0,0 +1,294 @@ +/* + * 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 mod._sc; +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; +import util.ValueComparer; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XSheetCellRange; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.table.XCell; +import com.sun.star.table.XCellRange; +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 ifc.sheet._XCellRangesQuery; + + +/** +* Test for object which is represented by service +* <code>com.sun.star.sheet.SheetCellCursor</code>. <p> +* Object implements the following interfaces : +* <ul> +* <li> <code>com::sun::star::style::ParagraphProperties</code></li> +* <li> <code>com::sun::star::sheet::XUsedAreaCursor</code></li> +* <li> <code>com::sun::star::table::CellProperties</code></li> +* <li> <code>com::sun::star::table::XCellRange</code></li> +* <li> <code>com::sun::star::sheet::XCellRangeAddressable</code></li> +* <li> <code>com::sun::star::table::XCellCursor</code></li> +* <li> <code>com::sun::star::sheet::XSheetCellCursor</code></li> +* <li> <code>com::sun::star::style::CharacterProperties</code></li> +* <li> <code>com::sun::star::sheet::XSheetOperation</code></li> +* <li> <code>com::sun::star::sheet::XArrayFormulaRange</code></li> +* <li> <code>com::sun::star::sheet::XSheetCellRange</code></li> +* <li> <code>com::sun::star::sheet::SheetCellRange</code></li> +* <li> <code>com::sun::star::chart::XChartData</code></li> +* <li> <code>com::sun::star::beans::XPropertySet</code></li> +* <li> <code>com::sun::star::util::XMergeable</code></li> +* <li> <code>com::sun::star::table::XColumnRowRange</code></li> +* </ul> +* @see com.sun.star.sheet.SheetCellCursor +* @see com.sun.star.style.ParagraphProperties +* @see com.sun.star.sheet.XUsedAreaCursor +* @see com.sun.star.table.CellProperties +* @see com.sun.star.table.XCellRange +* @see com.sun.star.sheet.XCellRangeAddressable +* @see com.sun.star.table.XCellCursor +* @see com.sun.star.sheet.XSheetCellCursor +* @see com.sun.star.style.CharacterProperties +* @see com.sun.star.sheet.XSheetOperation +* @see com.sun.star.sheet.XArrayFormulaRange +* @see com.sun.star.sheet.XSheetCellRange +* @see com.sun.star.sheet.SheetCellRange +* @see com.sun.star.chart.XChartData +* @see com.sun.star.beans.XPropertySet +* @see com.sun.star.util.XMergeable +* @see com.sun.star.table.XColumnRowRange +* @see ifc.style._ParagraphProperties +* @see ifc.sheet._XUsedAreaCursor +* @see ifc.table._CellProperties +* @see ifc.table._XCellRange +* @see ifc.sheet._XCellRangeAddressable +* @see ifc.table._XCellCursor +* @see ifc.sheet._XSheetCellCursor +* @see ifc.style._CharacterProperties +* @see ifc.sheet._XSheetOperation +* @see ifc.sheet._XArrayFormulaRange +* @see ifc.sheet._XSheetCellRange +* @see ifc.sheet._SheetCellRange +* @see ifc.chart._XChartData +* @see ifc.beans._XPropertySet +* @see ifc.util._XMergeable +* @see ifc.table._XColumnRowRange +*/ +public class ScCellCursorObj extends TestCase { + private XSpreadsheetDocument xSheetDoc = null; + + /** + * Creates Spreadsheet document. + */ + @Override + protected void initialize(TestParameters tParam, PrintWriter log) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( + tParam.getMSF()); + + log.println("creating a Spreadsheet document"); + xSheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes Spreadsheet document. + */ + @Override + protected void cleanup(TestParameters tParam, PrintWriter log) { + log.println(" disposing xSheetDoc "); + + XComponent oComp = UnoRuntime.queryInterface( + XComponent.class, xSheetDoc); + + util.DesktopTools.closeDoc(oComp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Retrieves a collection of spreadsheets from a document, + * and takes one of them, retrieves some cell range and creates cursor range + * that is instance of the service + * <code>com.sun.star.sheet.SheetCellCursor</code>, + * fills some cells in the cell range. + * Object relations created : + * <ul> + * <li> <code>'SHEET'</code> for + * {@link ifc.table._XCellCursor}, + * {@link ifc.sheet._XArrayFormulaRange} (the spreadsheet that was + * retrieved from collection)</li> + * </ul> + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, + PrintWriter log) throws Exception { + XInterface oObj = null; + TestEnvironment tEnv = null; + XSpreadsheet oSheet = null; + XCellRange testRange = null; + + + // creation of testobject here + // first we write what we are intend to do to log file + log.println("Creating a test environment"); + + XSpreadsheets oSpreadsheets = UnoRuntime.queryInterface( + XSpreadsheetDocument.class, + xSheetDoc).getSheets(); + + oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class), + oSpreadsheets.getByName( + oSpreadsheets.getElementNames()[0])); + + testRange = oSheet.getCellRangeByName("$A$1:$D$4"); + + XSheetCellRange testSheetRange = UnoRuntime.queryInterface( + XSheetCellRange.class, + testRange); + oObj = oSheet.createCursorByRange(testSheetRange); + oSheet.getCellByPosition(1, 1).setValue(1); + oSheet.getCellByPosition(4, 5).setValue(1); + oSheet.getCellByPosition(3, 2).setFormula("xTextDoc"); + oSheet.getCellByPosition(3, 3).setFormula("xTextDoc"); + + log.println("Test object successfully created."); + + tEnv = new TestEnvironment(oObj); + + tEnv.addObjRelation("CRDESC", + "Column and RowDescriptions can't be changed for this Object"); + + tEnv.addObjRelation("SHEET", oSheet); + // add expected results for the XCellRangesQuery interface test + String[]expectedResults = new String[7]; + expectedResults[_XCellRangesQuery.QUERYCOLUMNDIFFERENCES] = "Sheet1.B1"; + expectedResults[_XCellRangesQuery.QUERYCONTENTCELLS] = "Sheet1.B2"; + expectedResults[_XCellRangesQuery.QUERYEMPTYCELLS] = "Sheet1.A1 ... Sheet1.B1 ... Sheet1.B3 ... Sheet1.C1 ... Sheet1.D1"; + expectedResults[_XCellRangesQuery.QUERYFORMULACELLS] = ""; + expectedResults[_XCellRangesQuery.QUERYINTERSECTION] = "Sheet1.D4"; + expectedResults[_XCellRangesQuery.QUERYROWDIFFERENCES] = "Sheet1.A2;Sheet1.C2"; + expectedResults[_XCellRangesQuery.QUERYVISIBLECELLS] = "Sheet1.A2"; + tEnv.addObjRelation("XCellRangesQuery.EXPECTEDRESULTS", expectedResults); + + tEnv.addObjRelation("NewData", + new Object[][] + { + { "", "", "", "" }, + { "", "2", "3", "4" }, + { "", "2", "3", "4" }, + { "", "2", "3", "4" } + }); + + XPropertySet PropSet = UnoRuntime.queryInterface( + XPropertySet.class, oObj); + tEnv.addObjRelation("PropSet", PropSet); + + //Adding relation for util.XSortable + final PrintWriter finalLog = log; + final XCellRange oTable = testRange; + tEnv.addObjRelation("SORTCHECKER", + new ifc.util._XSortable.XSortChecker() { + PrintWriter out = finalLog; + + public void setPrintWriter(PrintWriter log) { + out = log; + } + + public void prepareToSort() { + try { + oTable.getCellByPosition(0, 0).setValue(4); + oTable.getCellByPosition(0, 1).setFormula("b"); + oTable.getCellByPosition(0, 2).setValue(3); + oTable.getCellByPosition(0, 3).setValue(23); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + out.println("Exception while checking sort"); + } + } + + public boolean checkSort(boolean isSortNumbering, + boolean isSortAscending) { + out.println("Sort checking..."); + + boolean res = false; + String[] value = new String[4]; + + for (int i = 0; i < 4; i++) { + try { + XCell cell = oTable.getCellByPosition(0, i); + value[i] = cell.getFormula(); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + out.println("Exception while checking sort"); + } + } + + if (isSortNumbering) { + if (isSortAscending) { + out.println("Sorting ascending"); + + String[] rightVal = { "3", "4", "23", "b" }; + String[] vals = { value[0], value[1], value[2], value[3] }; + res = ValueComparer.equalValue(vals, rightVal); + out.println("Expected 3, 4, 23, b"); + out.println("getting: " + value[0] + ", " + + value[1] + ", " + value[2] + ", " + + value[3]); + } else { + String[] rightVal = { "b", "23", "4", "3" }; + String[] vals = { value[0], value[1], value[2], value[3] }; + res = ValueComparer.equalValue(vals, rightVal); + out.println("Expected b, 23, 4, 3"); + out.println("getting: " + value[0] + ", " + + value[1] + ", " + value[2] + ", " + + value[3]); + } + } else { + if (isSortAscending) { + String[] rightVal = { "3", "4", "23", "b" }; + res = ValueComparer.equalValue(value, rightVal); + out.println("Expected 3, 4, 23, b"); + out.println("getting: " + value[0] + ", " + + value[1] + ", " + value[2] + ", " + + value[3]); + } else { + String[] rightVal = { "b", "23", "4", "3" }; + res = ValueComparer.equalValue(value, rightVal); + out.println("Expected b, 23, 4, 3"); + out.println("getting: " + value[0] + ", " + + value[1] + ", " + value[2] + ", " + + value[3]); + } + } + + if (res) { + out.println("Sorted correctly"); + } else { + out.println("Sorted incorrectly"); + } + + return res; + } + }); + + return tEnv; + } +} // finish class ScCellCursorObj diff --git a/qadevOOo/tests/java/mod/_sc/ScCellObj.java b/qadevOOo/tests/java/mod/_sc/ScCellObj.java new file mode 100644 index 000000000..1c5e02d37 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScCellObj.java @@ -0,0 +1,183 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.DefaultDsc; +import util.InstCreator; +import util.SOfficeFactory; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexAccess; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.table.XCell; +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 ifc.sheet._XCellRangesQuery; + +/** +* Test for object which is represented by service +* <code>com.sun.star.sheet.SheetCell</code>. <p> +* Object implements the following interfaces : +* <ul> +* <li> <code>com::sun::star::table::CellProperties</code></li> +* <li> <code>com::sun::star::text::XSimpleText</code></li> +* <li> <code>com::sun::star::table::XCell</code></li> +* <li> <code>com::sun::star::text::XTextRange</code></li> +* <li> <code>com::sun::star::beans::XPropertySet</code></li> +* <li> <code>com::sun::star::style::CharacterProperties</code></li> +* <li> <code>com::sun::star::document::XActionLockable</code></li> +* <li> <code>com::sun::star::style::ParagraphProperties</code></li> +* <li> <code>com::sun::star::text::XText</code></li> +* <li> <code>com::sun::star::sheet::XCellAddressable</code></li> +* </ul> +* @see com.sun.star.sheet.SheetCell +* @see com.sun.star.table.CellProperties +* @see com.sun.star.text.XSimpleText +* @see com.sun.star.table.XCell +* @see com.sun.star.text.XTextRange +* @see com.sun.star.beans.XPropertySet +* @see com.sun.star.style.CharacterProperties +* @see com.sun.star.document.XActionLockable +* @see com.sun.star.style.ParagraphProperties +* @see com.sun.star.text.XText +* @see com.sun.star.sheet.XCellAddressable +* @see ifc.table._CellProperties +* @see ifc.text._XSimpleText +* @see ifc.table._XCell +* @see ifc.text._XTextRange +* @see ifc.beans._XPropertySet +* @see ifc.style._CharacterProperties +* @see ifc.document._XActionLockable +* @see ifc.style._ParagraphProperties +* @see ifc.text._XText +* @see ifc.sheet._XCellAddressable +*/ +public class ScCellObj extends TestCase { + private XSpreadsheetDocument xSheetDoc = null; + + + /** + * Creates Spreadsheet document. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + log.println( "Creating a Spreadsheet document" ); + xSheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes Spreadsheet document. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xSheetDoc " ); + XComponent oComp = UnoRuntime.queryInterface (XComponent.class, xSheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Retrieves a collection of spreadsheets from a document, + * and takes one of them. Retrieves some cell from the spreadsheet + * that is instance of the service <code>com.sun.star.sheet.SheetCell</code>. + * Object relations created : + * <ul> + * <li> <code>'XTEXTINFO',</code> for + * {@link ifc.text._XText} </li> + * </ul> + * @see com.sun.star.sheet.SheetCell + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, PrintWriter log) throws Exception { + + XInterface oObj = null; + + // creation of testobject here + // first we write what we are intend to do to log file + log.println( "Creating a test environment" ); + + XSpreadsheet oSheet = null; + XCell cell = null; + log.println("Getting spreadsheet") ; + XSpreadsheets oSheets = xSheetDoc.getSheets() ; + XIndexAccess oIndexSheets = UnoRuntime.queryInterface(XIndexAccess.class, oSheets); + oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class),oIndexSheets.getByIndex(0)); + + log.println("Getting a cell from sheet") ; + oObj = oSheet.getCellByPosition(2, 3) ; + cell = UnoRuntime.queryInterface(XCell.class, oObj); + + log.println( "creating a new environment for ScCellObj object" ); + TestEnvironment tEnv = new TestEnvironment( oObj ); + + // Object relations for interface tests + DefaultDsc tDsc = new DefaultDsc( + "com.sun.star.text.XTextContent", "com.sun.star.text.TextField.URL"); + log.println( " adding InstCreator object" ); + tEnv.addObjRelation( "XTEXTINFO", new InstCreator( xSheetDoc, tDsc ) ); + // add the sheet + tEnv.addObjRelation("SHEET", oSheet); + // add expected results for the XCellRangesQuery interface test + String[]expectedResults = new String[7]; + + expectedResults[_XCellRangesQuery.QUERYCOLUMNDIFFERENCES] = "Sheet1.C4"; + expectedResults[_XCellRangesQuery.QUERYCONTENTCELLS] = ""; + expectedResults[_XCellRangesQuery.QUERYEMPTYCELLS] = "Sheet1.C4"; + expectedResults[_XCellRangesQuery.QUERYFORMULACELLS] = ""; + expectedResults[_XCellRangesQuery.QUERYINTERSECTION] = ""; + expectedResults[_XCellRangesQuery.QUERYROWDIFFERENCES] = "Sheet1.C4"; + expectedResults[_XCellRangesQuery.QUERYVISIBLECELLS] = "Sheet1.C4"; + tEnv.addObjRelation("XCellRangesQuery.EXPECTEDRESULTS", expectedResults); + tEnv.addObjRelation("XCellRangesQuery.CREATEENTRIES", Boolean.TRUE); + + // make entries in this cell at the interface test + tEnv.addObjRelation("XTextFieldsSupplier.MAKEENTRY", Boolean.TRUE); + tEnv.addObjRelation("MAKEENTRYINCELL", cell); + + // for XSearchable and XReplaceable interface test + tEnv.addObjRelation("XSearchable.MAKEENTRYINCELL", cell); + tEnv.addObjRelation("EXCLUDEFINDNEXT", Boolean.TRUE); + + // for XFormulaQuery interface test + tEnv.addObjRelation("EXPECTEDDEPENDENTVALUES", new int[]{2,2,3,3}); + tEnv.addObjRelation("EXPECTEDPRECEDENTVALUES", new int[]{0,3,0,0}); + tEnv.addObjRelation("RANGEINDICES", new int[]{0,0}); + + // XTextFieldsSupplier + tEnv.addObjRelation("SPREADSHEET", xSheetDoc); + + XPropertySet PropSet = UnoRuntime.queryInterface(XPropertySet.class, oObj); + tEnv.addObjRelation("PropSet",PropSet); + + return tEnv; + } // finish method getTestEnvironment + +} // finish class ScCellObj + diff --git a/qadevOOo/tests/java/mod/_sc/ScCellRangeObj.java b/qadevOOo/tests/java/mod/_sc/ScCellRangeObj.java new file mode 100644 index 000000000..c37e04015 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScCellRangeObj.java @@ -0,0 +1,279 @@ +/* + * 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 mod._sc; +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; +import util.ValueComparer; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XNameAccess; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.table.XCell; +import com.sun.star.table.XCellRange; +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 ifc.sheet._XCellRangesQuery; + + +/** +* Test for object which is represented by service +* <code>com.sun.star.sheet.SheetCellRange</code>. <p> +* Object implements the following interfaces : +* <ul> +* <li> <code>com::sun::star::table::CellProperties</code></li> +* <li> <code>com::sun::star::util::XMergeable</code></li> +* <li> <code>com::sun::star::sheet::XCellRangeAddressable</code></li> +* <li> <code>com::sun::star::sheet::XArrayFormulaRange</code></li> +* <li> <code>com::sun::star::chart::XChartData</code></li> +* <li> <code>com::sun::star::table::XColumnRowRange</code></li> +* <li> <code>com::sun::star::beans::XPropertySet</code></li> +* <li> <code>com::sun::star::style::CharacterProperties</code></li> +* <li> <code>com::sun::star::sheet::XSheetOperation</code></li> +* <li> <code>com::sun::star::table::XCellRange</code></li> +* <li> <code>com::sun::star::style::ParagraphProperties</code></li> +* <li> <code>com::sun::star::sheet::SheetCellRange</code></li> +* </ul> +* @see com.sun.star.sheet.SheetCellRange +* @see com.sun.star.table.CellProperties +* @see com.sun.star.util.XMergeable +* @see com.sun.star.sheet.XCellRangeAddressable +* @see com.sun.star.sheet.XArrayFormulaRange +* @see com.sun.star.chart.XChartData +* @see com.sun.star.table.XColumnRowRange +* @see com.sun.star.beans.XPropertySet +* @see com.sun.star.style.CharacterProperties +* @see com.sun.star.sheet.XSheetOperation +* @see com.sun.star.table.XCellRange +* @see com.sun.star.style.ParagraphProperties +* @see com.sun.star.sheet.SheetCellRange +* @see ifc.table._CellProperties +* @see ifc.util._XMergeable +* @see ifc.sheet._XCellRangeAddressable +* @see ifc.sheet._XArrayFormulaRange +* @see ifc.chart._XChartData +* @see ifc.table._XColumnRowRange +* @see ifc.beans._XPropertySet +* @see ifc.style._CharacterProperties +* @see ifc.sheet._XSheetOperation +* @see ifc.table._XCellRange +* @see ifc.style._ParagraphProperties +* @see ifc.sheet._SheetCellRange +*/ +public class ScCellRangeObj extends TestCase { + XSpreadsheetDocument xSheetDoc = null; + + /** + * Creates Spreadsheet document. + */ + @Override + protected void initialize(TestParameters tParam, PrintWriter log) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF()); + + log.println("creating a Spreadsheet document"); + xSheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes Spreadsheet document. + */ + @Override + protected void cleanup(TestParameters tParam, PrintWriter log) { + log.println(" disposing xSheetDoc "); + + XComponent oComp = UnoRuntime.queryInterface( + XComponent.class, xSheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Retrieves a collection of spreadsheets from a document, + * and takes one of them. Retrieves some cell range from the spreadsheet. + * The retrieved cell range is instance of the service + * <code>com.sun.star.sheet.SheetCellRange</code>. + * Object relations created : + * <ul> + * <li> <code>'SHEET'</code> for + * {@link ifc.sheet._XArrayFormulaRange} (the spreadsheet which the cell + * range was retrieved from)</li> + * </ul> + * @see com.sun.star.sheet.XSpreadsheet + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, + PrintWriter log) throws Exception { + XInterface oObj = null; + XCellRange testRange; + + + // creation of testobject here + // first we write what we are intend to do to log file + log.println("Creating a test environment"); + + XSpreadsheets oSpreadsheets = UnoRuntime.queryInterface( + XSpreadsheetDocument.class, + xSheetDoc).getSheets(); + XNameAccess oNames = UnoRuntime.queryInterface( + XNameAccess.class, oSpreadsheets); + + XSpreadsheet oSheet = null; + + oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class), + oNames.getByName(oNames.getElementNames()[0])); + + oObj = oSheet.getCellRangeByPosition(0, 0, 3, 4); + testRange = UnoRuntime.queryInterface( + XCellRange.class, oObj); + + TestEnvironment tEnv = new TestEnvironment(oObj); + + tEnv.addObjRelation("SHEET", oSheet); + // add expected results for the XCellRangesQuery interface test + String[]expectedResults = new String[7]; + expectedResults[_XCellRangesQuery.QUERYCOLUMNDIFFERENCES] = "Sheet1.B1:C1;Sheet1.B3"; + expectedResults[_XCellRangesQuery.QUERYCONTENTCELLS] = "Sheet1.B2:B3"; + expectedResults[_XCellRangesQuery.QUERYEMPTYCELLS] = "Sheet1.A1 ... Sheet1.B1 ... Sheet1.B5 ... Sheet1.C3 ... Sheet1.D1"; + expectedResults[_XCellRangesQuery.QUERYFORMULACELLS] = "Sheet1.C2"; + expectedResults[_XCellRangesQuery.QUERYINTERSECTION] = "Sheet1.D4"; + expectedResults[_XCellRangesQuery.QUERYROWDIFFERENCES] = "Sheet1.A2:A4;Sheet1.C2:D4"; + expectedResults[_XCellRangesQuery.QUERYVISIBLECELLS] = "Sheet1.A2"; + tEnv.addObjRelation("XCellRangesQuery.EXPECTEDRESULTS", expectedResults); + tEnv.addObjRelation("XCellRangesQuery.CREATEENTRIES", Boolean.TRUE); + + XPropertySet PropSet = UnoRuntime.queryInterface( + XPropertySet.class, oObj); + tEnv.addObjRelation("PropSet", PropSet); + + // XSearchable: Add a cell to make a searchable entry + try { + tEnv.addObjRelation("XSearchable.MAKEENTRYINCELL", new XCell[] { + testRange.getCellByPosition(0,0), testRange.getCellByPosition(0,1)}); + } + catch(com.sun.star.lang.IndexOutOfBoundsException e){ + e.printStackTrace(log); + log.println("Cannot make required object relation 'XSearchable.MAKEENTRYINCELL'."); + } + + // XCellRangeData +/* Object[][] newData = new Object[5][4]; + for (int i=0; i<newData.length; i++) { + for (int j=0; j<newData[i].length; j++) { + newData[i][j] = new Double(i*10+j); + } + } + tEnv.addObjRelation("NewData", newData); */ + + //Adding relation for util.XSortable + final PrintWriter finalLog = log; + final XCellRange oTable = testRange; + tEnv.addObjRelation("SORTCHECKER", + new ifc.util._XSortable.XSortChecker() { + PrintWriter out = finalLog; + + public void setPrintWriter(PrintWriter log) { + out = log; + } + + public void prepareToSort() { + try { + oTable.getCellByPosition(0, 0).setValue(4); + oTable.getCellByPosition(0, 1).setFormula("b"); + oTable.getCellByPosition(0, 2).setValue(3); + oTable.getCellByPosition(0, 3).setValue(23); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + out.println("Exception while checking sort"); + } + } + + public boolean checkSort(boolean isSortNumbering, + boolean isSortAscending) { + out.println("Sort checking..."); + + boolean res = false; + String[] value = new String[4]; + + for (int i = 0; i < 4; i++) { + try { + XCell cell = oTable.getCellByPosition(0, i); + value[i] = cell.getFormula(); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + out.println("Exception while checking sort"); + } + } + + if (isSortNumbering) { + if (isSortAscending) { + out.println("Sorting ascending"); + + String[] rightVal = { "3", "4", "23", "b" }; + String[] vals = { value[0], value[1], value[2], value[3] }; + res = ValueComparer.equalValue(vals, rightVal); + out.println("Expected 3, 4, 23, b"); + out.println("getting: " + value[0] + ", " + + value[1] + ", " + value[2] + ", " + + value[3]); + } else { + String[] rightVal = { "b", "23", "4", "3" }; + String[] vals = { value[0], value[1], value[2], value[3] }; + res = ValueComparer.equalValue(vals, rightVal); + out.println("Expected b, 23, 4, 3"); + out.println("getting: " + value[0] + ", " + + value[1] + ", " + value[2] + ", " + + value[3]); + } + } else { + if (isSortAscending) { + String[] rightVal = { "3", "4", "23", "b" }; + res = ValueComparer.equalValue(value, rightVal); + out.println("Expected 3, 4, 23, b"); + out.println("getting: " + value[0] + ", " + + value[1] + ", " + value[2] + ", " + + value[3]); + } else { + String[] rightVal = { "b", "23", "4", "3" }; + res = ValueComparer.equalValue(value, rightVal); + out.println("Expected b, 23, 4, 3"); + out.println("getting: " + value[0] + ", " + + value[1] + ", " + value[2] + ", " + + value[3]); + } + } + + if (res) { + out.println("Sorted correctly"); + } else { + out.println("Sorted incorrectly"); + } + + return res; + } + }); + + return tEnv; + } +} // finish class ScCellRangeObj diff --git a/qadevOOo/tests/java/mod/_sc/ScCellRangesObj.java b/qadevOOo/tests/java/mod/_sc/ScCellRangesObj.java new file mode 100644 index 000000000..1dfbcfc1e --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScCellRangesObj.java @@ -0,0 +1,224 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XNameContainer; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +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 ifc.sheet._XCellRangesQuery; + + +/** +* Test for object which is represented by service +* <code>com.sun.star.sheet.SheetCellRanges</code>. <p> +* Object implements the following interfaces : +* <ul> +* <li> <code>com::sun::star::table::CellProperties</code></li> +* <li> <code>com::sun::star::container::XNameReplace</code></li> +* <li> <code>com::sun::star::container::XNameContainer</code></li> +* <li> <code>com::sun::star::beans::XPropertySet</code></li> +* <li> <code>com::sun::star::container::XIndexAccess</code></li> +* <li> <code>com::sun::star::container::XElementAccess</code></li> +* <li> <code>com::sun::star::container::XEnumerationAccess</code></li> +* <li> <code>com::sun::star::sheet::XSheetCellRangeContainer</code></li> +* <li> <code>com::sun::star::sheet::XSheetOperation</code></li> +* <li> <code>com::sun::star::sheet::XSheetCellRanges</code></li> +* <li> <code>com::sun::star::container::XNameAccess</code></li> +* </ul> +* @see com.sun.star.sheet.SheetCellRanges +* @see com.sun.star.table.CellProperties +* @see com.sun.star.container.XNameReplace +* @see com.sun.star.container.XNameContainer +* @see com.sun.star.beans.XPropertySet +* @see com.sun.star.container.XIndexAccess +* @see com.sun.star.container.XElementAccess +* @see com.sun.star.container.XEnumerationAccess +* @see com.sun.star.sheet.XSheetCellRangeContainer +* @see com.sun.star.sheet.XSheetOperation +* @see com.sun.star.sheet.XSheetCellRanges +* @see com.sun.star.container.XNameAccess +* @see ifc.table._CellProperties +* @see ifc.container._XNameReplace +* @see ifc.container._XNameContainer +* @see ifc.beans._XPropertySet +* @see ifc.container._XIndexAccess +* @see ifc.container._XElementAccess +* @see ifc.container._XEnumerationAccess +* @see ifc.sheet._XSheetCellRangeContainer +* @see ifc.sheet._XSheetOperation +* @see ifc.sheet._XSheetCellRanges +* @see ifc.container._XNameAccess +*/ +public class ScCellRangesObj extends TestCase { + private XSpreadsheetDocument xSheetDoc = null; + + /** + * Creates Spreadsheet document. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + // get a soffice factory object + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF()); + log.println( "creating a sheetdocument" ); + xSheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes Spreadsheet document. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xSheetDoc " ); + XComponent oComp = + UnoRuntime.queryInterface (XComponent.class, xSheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Creates an instance of the service + * <code>com.sun.star.sheet.SheetCellRanges</code> and fills some cells. + * Object relations created : + * <ul> + * <li> <code>'INSTANCE1', ..., 'INSTANCEN'</code> for + * {@link ifc.container._XNameReplace}, + * {@link ifc.container._XNameContainer} (type of + * <code>XCellRange</code>)</li> + * <li> <code>'THRCNT'</code> for + * {@link ifc.container._XNameReplace}(the number of the running threads + * that was retrieved from the method parameter <code>Param</code>)</li> + * <li> <code>'NameReplaceIndex'</code> for + * {@link ifc.container._XNameReplace} </li> + * </ul> + * @see com.sun.star.table.XCellRange + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, PrintWriter log) throws Exception { + + XInterface oObj = null; + Object oRange = null ; + + // creation of testobject here + // first we write what we are intend to do to log file + log.println( "Creating a test environment" ); + + // get a soffice factory object + SOfficeFactory SOF = SOfficeFactory.getFactory( Param.getMSF() ); + + log.println("Getting test object "); + + XComponent oComp = UnoRuntime.queryInterface (XComponent.class, xSheetDoc); + + oObj = (XInterface) + SOF.createInstance(oComp, "com.sun.star.sheet.SheetCellRanges"); + + XSpreadsheets oSheets = xSheetDoc.getSheets() ; + XIndexAccess oIndSheets = UnoRuntime.queryInterface (XIndexAccess.class, oSheets); + XSpreadsheet oSheet = null; + oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class), oIndSheets.getByIndex(0)); + XNameContainer oRanges = UnoRuntime.queryInterface(XNameContainer.class, oObj); + + oRange = oSheet.getCellRangeByName("C1:D4"); + oRanges.insertByName("Range1", oRange); + oRange = oSheet.getCellRangeByName("E2:F5"); + oRanges.insertByName("Range2", oRange); + oRange = oSheet.getCellRangeByName("G2:H3"); + oRanges.insertByName("Range3", oRange); + oRange = oSheet.getCellRangeByName("I7:J8"); + oRanges.insertByName("Range4", oRange); + + log.println("filling some cells"); + for (int i = 0; i < 10; i++) { + for (int j = 0; j < 5; j++) { + oSheet.getCellByPosition(i, j).setFormula("a"); + } + } + for (int i = 0; i < 10; i++) { + for (int j = 5; j < 10; j++) { + oSheet.getCellByPosition(i, j).setValue(i + j); + } + } + + + TestEnvironment tEnv = new TestEnvironment( oObj ); + + // NameReplaceIndex : _XNameReplace + log.println( "adding NameReplaceIndex as mod relation to environment" ); + tEnv.addObjRelation("NameReplaceIndex", "0"); + + // INSTANCEn : _XNameContainer; _XNameReplace + log.println( "adding INSTANCEn as mod relation to environment" ); + + int THRCNT = 1; + if ((String)Param.get("THRCNT") != null) { + THRCNT= Integer.parseInt((String)Param.get("THRCNT")); + } + int a = 0; + int b = 0; + for (int n = 1; n < (THRCNT + 1) ; n++) { + a = n * 2; + b = a + 1; + oRange = oSheet.getCellRangeByName("A" + a + ":B" + b); + log.println( + "adding INSTANCE" + n + " as mod relation to environment" ); + + tEnv.addObjRelation("INSTANCE" + n, oRange); + } + + XPropertySet PropSet = UnoRuntime.queryInterface(XPropertySet.class, oObj); + tEnv.addObjRelation("PropSet",PropSet); + tEnv.addObjRelation("SHEET", oSheet); + // add expected results for the XCellRangesQuery interface test + String[]expectedResults = new String[7]; + expectedResults[_XCellRangesQuery.QUERYCOLUMNDIFFERENCES] = "Sheet1.I7:J8"; + expectedResults[_XCellRangesQuery.QUERYCONTENTCELLS] = ""; + expectedResults[_XCellRangesQuery.QUERYEMPTYCELLS] = ""; + expectedResults[_XCellRangesQuery.QUERYFORMULACELLS] = ""; + expectedResults[_XCellRangesQuery.QUERYINTERSECTION] = "Sheet1.D4"; + expectedResults[_XCellRangesQuery.QUERYROWDIFFERENCES] = "Sheet1.I7:J8"; + expectedResults[_XCellRangesQuery.QUERYVISIBLECELLS] = "Sheet1.C2:D4"; // first range, first line invisible + tEnv.addObjRelation("XCellRangesQuery.EXPECTEDRESULTS", expectedResults); + + // for XSearchable and XReplaceable interface test + tEnv.addObjRelation("SEARCHSTRING", "15"); + + // for XFormulaQuery interface test + tEnv.addObjRelation("EXPECTEDDEPENDENTVALUES", new int[]{4,5,1,4}); + tEnv.addObjRelation("EXPECTEDPRECEDENTVALUES", new int[]{4,5,1,4}); + return tEnv ; + } + +} // finish class ScCellRangesObj + diff --git a/qadevOOo/tests/java/mod/_sc/ScCellTextCursor.java b/qadevOOo/tests/java/mod/_sc/ScCellTextCursor.java new file mode 100644 index 000000000..882f25702 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScCellTextCursor.java @@ -0,0 +1,162 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; + +import com.sun.star.container.XIndexAccess; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.table.XCell; +import com.sun.star.text.XText; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Test for object which is represented by service +* <code>com.sun.star.text.TextCursor</code>. <p> +* Object implements the following interfaces : +* <ul> +* <li> <code>com::sun::star::text::XTextCursor</code></li> +* <li> <code>com::sun::star::text::XWordCursor</code></li> +* <li> <code>com::sun::star::style::CharacterPropertiesComplex</code></li> +* <li> <code>com::sun::star::text::XTextRange</code></li> +* <li> <code>com::sun::star::beans::XPropertySet</code></li> +* <li> <code>com::sun::star::container::XContentEnumerationAccess</code></li> +* <li> <code>com::sun::star::beans::XPropertyState</code></li> +* <li> <code>com::sun::star::style::CharacterProperties</code></li> +* <li> <code>com::sun::star::text::XSentenceCursor</code></li> +* <li> <code>com::sun::star::style::ParagraphProperties</code></li> +* <li> <code>com::sun::star::text::XParagraphCursor</code></li> +* <li> <code>com::sun::star::document::XDocumentInsertable</code></li> +* <li> <code>com::sun::star::util::XSortable</code></li> +* <li> <code>com::sun::star::style::CharacterPropertiesAsian</code></li> +* </ul> +* @see com.sun.star.text.TextCursor +* @see com.sun.star.text.XTextCursor +* @see com.sun.star.text.XWordCursor +* @see com.sun.star.style.CharacterPropertiesComplex +* @see com.sun.star.text.XTextRange +* @see com.sun.star.beans.XPropertySet +* @see com.sun.star.container.XContentEnumerationAccess +* @see com.sun.star.beans.XPropertyState +* @see com.sun.star.style.CharacterProperties +* @see com.sun.star.text.XSentenceCursor +* @see com.sun.star.style.ParagraphProperties +* @see com.sun.star.text.XParagraphCursor +* @see com.sun.star.document.XDocumentInsertable +* @see com.sun.star.util.XSortable +* @see com.sun.star.style.CharacterPropertiesAsian +* @see ifc.text._XTextCursor +* @see ifc.text._XWordCursor +* @see ifc.style._CharacterPropertiesComplex +* @see ifc.text._XTextRange +* @see ifc.beans._XPropertySet +* @see ifc.container._XContentEnumerationAccess +* @see ifc.beans._XPropertyState +* @see ifc.style._CharacterProperties +* @see ifc.text._XSentenceCursor +* @see ifc.style._ParagraphProperties +* @see ifc.text._XParagraphCursor +* @see ifc.document._XDocumentInsertable +* @see ifc.util._XSortable +* @see ifc.style._CharacterPropertiesAsian +*/ +public class ScCellTextCursor extends TestCase { + private XSpreadsheetDocument xSheetDoc = null; + + /** + * Creates Spreadsheet document. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + log.println( "creating a Spreadsheet document" ); + xSheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes Spreadsheet document. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xSheetDoc " ); + XComponent oComp = UnoRuntime.queryInterface (XComponent.class, xSheetDoc) ; + util.DesktopTools.closeDoc(oComp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Retrieves a collection of spreadsheets from a document + * and takes one of them. Retrieves the cell from the spreadsheet + * and creates text cursor of the cell using the interface + * <code>XText</code>. This text cursor is the instance of + * the service <code>com.sun.star.text.TextCursor</code>. + * Object relations created : + * <ul> + * <li> <code>'XTEXT'</code> for + * {@link ifc.text._XTextRange} (type of + * <code>XEnumerationAccess</code> that was retrieved from the + * collection of visible cells)</li> + * </ul> + * @see com.sun.star.text.XText + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters tParam, PrintWriter log) throws Exception { + + XInterface oObj = null; + XCell aCell = null; + + // creation of testobject here + // first we write what we are intend to do to log file + log.println( "Creating a test environment" ); + + // get a soffice factory object + log.println("Getting spreadsheet") ; + XSpreadsheets oSheets = xSheetDoc.getSheets() ; + XIndexAccess oIndexSheets = UnoRuntime.queryInterface(XIndexAccess.class, oSheets); + XSpreadsheet oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class),oIndexSheets.getByIndex(0)); + + log.println("Getting a cell from sheet") ; + aCell = oSheet.getCellByPosition(1,1) ; + + XText aText = UnoRuntime.queryInterface(XText.class, aCell); + aText.setString("ScCellTextCursor"); + oObj = aText.createTextCursor(); + + log.println( "creating a new environment for ScCellTextCursor object" ); + TestEnvironment tEnv = new TestEnvironment( oObj ); + + // Object relations for interface tests + tEnv.addObjRelation("XTEXT", aText); + + return tEnv; + } // finish method getTestEnvironment + +} // finish class ScCellTextCursor + diff --git a/qadevOOo/tests/java/mod/_sc/ScDataPilotItemObj.java b/qadevOOo/tests/java/mod/_sc/ScDataPilotItemObj.java new file mode 100644 index 000000000..47f43fd1d --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScDataPilotItemObj.java @@ -0,0 +1,328 @@ +/* + * 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 mod._sc; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XNamed; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.DataPilotFieldOrientation; +import com.sun.star.sheet.XDataPilotDescriptor; +import com.sun.star.sheet.XDataPilotField; +import com.sun.star.sheet.XDataPilotTables; +import com.sun.star.sheet.XDataPilotTablesSupplier; +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 java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; + +import util.SOfficeFactory; + + +/** +* Test for object which is represented by service +* <code>com.sun.star.sheet.DataPilotField</code>. <p> +* Object implements the following interfaces : +* <ul> +* <li> <code>com::sun::star::container::XNamed</code></li> +* <li> <code>com::sun::star::sheet::DataPilotField</code></li> +* <li> <code>com::sun::star::beans::XPropertySet</code></li> +* </ul> +* @see com.sun.star.sheet.DataPilotField +* @see com.sun.star.container.XNamed +* @see com.sun.star.sheet.DataPilotField +* @see com.sun.star.beans.XPropertySet +* @see ifc.container._XNamed +* @see ifc.sheet._DataPilotField +* @see ifc.beans._XPropertySet +*/ +public class ScDataPilotItemObj extends TestCase { + private XSpreadsheetDocument xSheetDoc = null; + + /** + * A field is filled some values. This integer determines the size of the + * field in x and y direction. + */ + private static final int mMaxFieldIndex = 6; + + /** + * Creates Spreadsheet document. + */ + @Override + protected void initialize(TestParameters tParam, PrintWriter log) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( + tParam.getMSF()); + + log.println("creating a Spreadsheet document"); + xSheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes Spreadsheet document. + */ + @Override + protected void cleanup(TestParameters tParam, PrintWriter log) { + log.println(" disposing xSheetDoc "); + + XComponent oComp = UnoRuntime.queryInterface( + XComponent.class, xSheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Retrieves a collection of spreadsheets from a document + * and takes one of them. Fills some table in the spreadsheet. + * Obtains the collection of data pilot tables using the interface + * <code>XDataPilotTablesSupplier</code>. Creates a data pilot descriptor + * for the filled table and inserts new data pilot table with this descriptor + * to the collection. Obtains the collection of all the data pilot fields + * using the interface <code>XDataPilotDescriptor</code>. Retrieves from + * the collection the data pilot field with index 0. This data pilot field + * is the instance of the service <code>com.sun.star.sheet.DataPilotField</code>. + * @see com.sun.star.sheet.DataPilotField + * @see com.sun.star.sheet.XDataPilotTablesSupplier + * @see com.sun.star.sheet.XDataPilotDescriptor + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, + PrintWriter log) throws Exception { + XInterface oObj = null; + + + // creation of testobject here + // first we write what we are intend to do to log file + log.println("Creating a test environment"); + + // the cell range + CellRangeAddress sCellRangeAddress = new CellRangeAddress(); + sCellRangeAddress.Sheet = 0; + sCellRangeAddress.StartColumn = 1; + sCellRangeAddress.StartRow = 0; + sCellRangeAddress.EndColumn = mMaxFieldIndex - 1; + sCellRangeAddress.EndRow = mMaxFieldIndex - 1; + + // position of the data pilot table + CellAddress sCellAddress = new CellAddress(); + sCellAddress.Sheet = 0; + sCellAddress.Column = 7; + sCellAddress.Row = 8; + + log.println("Getting a sheet"); + + XSpreadsheets xSpreadsheets = xSheetDoc.getSheets(); + XSpreadsheet oSheet = null; + XSpreadsheet oSheet2 = null; + XIndexAccess oIndexAccess = UnoRuntime.queryInterface( + XIndexAccess.class, xSpreadsheets); + // Make sure there are at least two sheets + xSpreadsheets.insertNewByName("Some Sheet", (short)0); + + oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class), + oIndexAccess.getByIndex(0)); + oSheet2 = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class), + oIndexAccess.getByIndex(1)); + + log.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)); + } + + oSheet.getCellByPosition(1, 5); + + int x = sCellAddress.Column; + int y = sCellAddress.Row + 3; + + + oSheet.getCellByPosition(x, y); + + + // create the test objects + log.println("Getting test objects"); + + XDataPilotTablesSupplier DPTS = UnoRuntime.queryInterface( + XDataPilotTablesSupplier.class, + oSheet); + XDataPilotTables DPT = DPTS.getDataPilotTables(); + XDataPilotDescriptor DPDsc = DPT.createDataPilotDescriptor(); + DPDsc.setSourceRange(sCellRangeAddress); + + XPropertySet fieldPropSet = null; + + Object oDataPilotField = DPDsc.getDataPilotFields().getByIndex(0); + fieldPropSet = UnoRuntime.queryInterface( + XPropertySet.class, oDataPilotField); + + fieldPropSet.setPropertyValue("Function", + com.sun.star.sheet.GeneralFunction.SUM); + fieldPropSet.setPropertyValue("Orientation", + com.sun.star.sheet.DataPilotFieldOrientation.DATA); + + log.println("Insert the DataPilotTable"); + + if (DPT.hasByName("DataPilotTable")) { + DPT.removeByName("DataPilotTable"); + } + + XIndexAccess IA = DPDsc.getDataPilotFields(); + getSRange(IA); + + DPT.insertNewByName("DataPilotTable", sCellAddress, DPDsc); + + oObj = (XInterface) AnyConverter.toObject( + new Type(XInterface.class), IA.getByIndex(0)); + + log.println("Creating object - " + + ((oObj == null) ? "FAILED" : "OK")); + + XDataPilotField xDataPilotField = UnoRuntime.queryInterface( + XDataPilotField.class, oObj); + + XIndexAccess xIA = xDataPilotField.getItems(); + + oObj = UnoRuntime.queryInterface(XInterface.class, + xIA.getByIndex(0)); + + TestEnvironment tEnv = new TestEnvironment(oObj); + + log.println("Implementationname: " + util.utils.getImplName(oObj)); + + // Other parameters required for interface tests + tEnv.addObjRelation("NoSetName", "ScDataPilotItemObj"); + return tEnv; + } + + private void getSRange(XIndexAccess IA) { + int fieldsAmount = IA.getCount() + 1; + + 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(log); + + return; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + e.printStackTrace(log); + + return; + } + + XNamed named = UnoRuntime.queryInterface(XNamed.class, + field); + String name = named.getName(); + + log.println("**Field : '" + name + "' ... "); + + if (!name.equals("Data")) { + + XPropertySet props = UnoRuntime.queryInterface( + XPropertySet.class, field); + + try { + switch (cnt % 5) { + case 0: + props.setPropertyValue("Orientation", + DataPilotFieldOrientation.COLUMN); + log.println(" Column"); + + break; + + case 1: + props.setPropertyValue("Orientation", + DataPilotFieldOrientation.ROW); + log.println(" Row"); + + break; + + case 2: + props.setPropertyValue("Orientation", + DataPilotFieldOrientation.DATA); + log.println(" Data"); + + break; + + case 3: + props.setPropertyValue("Orientation", + DataPilotFieldOrientation.HIDDEN); + log.println(" Hidden"); + + break; + + case 4: + props.setPropertyValue("Orientation", + DataPilotFieldOrientation.PAGE); + log.println(" Page"); + + break; + } + } catch (com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + + return; + } catch (com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log); + + return; + } catch (com.sun.star.beans.PropertyVetoException e) { + e.printStackTrace(log); + + return; + } catch (com.sun.star.beans.UnknownPropertyException e) { + e.printStackTrace(log); + + return; + } + + if ((++cnt) > 4) { + break; + } + } else { + return; + } + } + } +} diff --git a/qadevOOo/tests/java/mod/_sc/ScDatabaseRangeObj.java b/qadevOOo/tests/java/mod/_sc/ScDatabaseRangeObj.java new file mode 100644 index 000000000..65630bd00 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScDatabaseRangeObj.java @@ -0,0 +1,200 @@ +/* + * 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 mod._sc; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XNameAccess; +import com.sun.star.container.XNamed; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XCellRangeAddressable; +import com.sun.star.sheet.XCellRangeReferrer; +import com.sun.star.sheet.XDatabaseRanges; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.table.CellRangeAddress; +import com.sun.star.table.XCellRange; +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.XImportable; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; + +import util.SOfficeFactory; + + +/** +* Test for object which is represented by service +* <code>com.sun.star.sheet.DatabaseRange</code>. <p> +* Object implements the following interfaces : +* <ul> +* <li> <code>com::sun::star::container::XNamed</code></li> +* <li> <code>com::sun::star::sheet::DatabaseRange</code></li> +* <li> <code>com::sun::star::beans::XPropertySet</code></li> +* <li> <code>com::sun::star::sheet::XDatabaseRange</code></li> +* <li> <code>com::sun::star::sheet::XCellRangeReferrer</code></li> +* </ul> +* @see com.sun.star.sheet.DatabaseRange +* @see com.sun.star.container.XNamed +* @see com.sun.star.sheet.DatabaseRange +* @see com.sun.star.beans.XPropertySet +* @see com.sun.star.sheet.XDatabaseRange +* @see com.sun.star.sheet.XCellRangeReferrer +* @see ifc.container._XNamed +* @see ifc.sheet._DatabaseRange +* @see ifc.beans._XPropertySet +* @see ifc.sheet._XDatabaseRange +* @see ifc.sheet._XCellRangeReferrer +*/ +public class ScDatabaseRangeObj extends TestCase { + private XSpreadsheetDocument xSheetDoc = null; + + /** + * Creates Spreadsheet document. + */ + @Override + protected void initialize(TestParameters tParam, PrintWriter log) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( + tParam.getMSF()); + + log.println("creating a Spreadsheet document"); + xSheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes Spreadsheet document. + */ + @Override + protected void cleanup(TestParameters tParam, PrintWriter log) { + log.println(" disposing xSheetDoc "); + + XComponent oComp = UnoRuntime.queryInterface( + XComponent.class, xSheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Retrieves the collection of database ranges in the document. + * If the database range with name <code>'dbRange'</code> exists + * in the collection then removes it from the collection. + * Creates new database range and adds it to the collection with the name + * <code>'dbRange'</code>.The database range that was added to the collection + * is the instance of the service <code>com.sun.star.sheet.DatabaseRange</code>. + * Object relations created : + * <ul> + * <li> <code>'DATAAREA'</code> for + * {@link ifc.sheet._XCellRangeReferrer}(of type + * <code>CellRangeAddress</code>)</li> + * <li> <code>'XCELLRANGE'</code> (of type <code>XCellRange</code>): + * cell range of the spreadsheet with database range</li> + * </ul> + * @see com.sun.star.sheet.DatabaseRange + * @see com.sun.star.table.CellRangeAddress + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, + PrintWriter log) throws Exception { + XInterface oObj = null; + + + // creation of testobject here + // first we write what we are intend to do to log file + log.println("Creating a test environment"); + + log.println("Getting test object "); + + XPropertySet docProps = UnoRuntime.queryInterface( + XPropertySet.class, xSheetDoc); + + XSpreadsheets sheets = xSheetDoc.getSheets(); + String[] names = sheets.getElementNames(); + XDatabaseRanges dbRanges = null; + XImportable xImp = null; + + Object sheet = sheets.getByName(names[0]); + xImp = UnoRuntime.queryInterface(XImportable.class, + sheet); + dbRanges = (XDatabaseRanges) AnyConverter.toObject( + new Type(XDatabaseRanges.class), + docProps.getPropertyValue("DatabaseRanges")); + _doImport(xImp); + + String dbName = "dbRange"; + + if (dbRanges.hasByName(dbName)) { + dbRanges.removeByName(dbName); + } + + + CellRangeAddress aRange = null; + + XNameAccess dbrNA = UnoRuntime.queryInterface( + XNameAccess.class, dbRanges); + // we need to add it + dbRanges.addNewByName(dbName,new CellRangeAddress((short)0, 0, 0, 0, 5)); + + UnoRuntime.queryInterface(XNamed.class, + dbrNA.getByName( + dbName)); + + XCellRangeReferrer aReferrer = UnoRuntime.queryInterface( + XCellRangeReferrer.class, + dbrNA.getByName(dbName)); + XCellRangeAddressable aRangeA = UnoRuntime.queryInterface( + XCellRangeAddressable.class, + aReferrer.getReferredCells()); + aRange = aRangeA.getRangeAddress(); + oObj = (XInterface) AnyConverter.toObject( + new Type(XInterface.class), + dbrNA.getByName(dbName)); + + TestEnvironment tEnv = new TestEnvironment(oObj); + + + // Other parameters required for interface tests + tEnv.addObjRelation("DATAAREA", aRange); + + XCellRange xCellRange = UnoRuntime.queryInterface( + XCellRange.class, sheets.getByName(names[0])); + + tEnv.addObjRelation("XCELLRANGE", xCellRange); + + return tEnv; + } + + public void _doImport(XImportable imp) { + PropertyValue[] descriptor = imp.createImportDescriptor(false); + + log.print("Setting the ImportDescriptor (Bibliograpy, SQL, select Identifier from biblio) -- "); + descriptor[0].Value = "Bibliography"; + descriptor[1].Value = com.sun.star.sheet.DataImportMode.SQL; + descriptor[2].Value = "select Identifier from biblio"; + log.println("done"); + + log.print("Importing data (Bibliograpy, Table, biblio) -- "); + imp.doImport(descriptor); + log.println("done"); + } +} diff --git a/qadevOOo/tests/java/mod/_sc/ScDocumentConfiguration.java b/qadevOOo/tests/java/mod/_sc/ScDocumentConfiguration.java new file mode 100644 index 000000000..1add5a952 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScDocumentConfiguration.java @@ -0,0 +1,71 @@ +/* + * 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 mod._sc; + +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; + +import util.DesktopTools; +import util.SOfficeFactory; + + +public class ScDocumentConfiguration extends TestCase { + private XSpreadsheetDocument xSheetDoc = null; + + @Override + protected void initialize(TestParameters tParam, PrintWriter log) throws Exception { + // get a soffice factory object + SOfficeFactory SOF = SOfficeFactory.getFactory( + tParam.getMSF()); + + log.println("creating a sheetdocument"); + xSheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes Spreadsheet document. + */ + @Override + protected void cleanup(TestParameters tParam, PrintWriter log) { + log.println(" disposing xSheetDoc "); + DesktopTools.closeDoc(xSheetDoc); + } + + @Override + protected TestEnvironment createTestEnvironment(TestParameters tParam, + PrintWriter log) throws Exception { + XMultiServiceFactory docMSF = UnoRuntime.queryInterface( + XMultiServiceFactory.class, + xSheetDoc); + Object oObj = docMSF.createInstance("com.sun.star.sheet.DocumentSettings"); + + log.println("Implementationname: " + util.utils.getImplName(oObj)); + + TestEnvironment tEnv = new TestEnvironment((XInterface) oObj); + + return tEnv; + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/mod/_sc/ScHeaderFooterTextCursor.java b/qadevOOo/tests/java/mod/_sc/ScHeaderFooterTextCursor.java new file mode 100644 index 000000000..f91682023 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScHeaderFooterTextCursor.java @@ -0,0 +1,174 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XNameAccess; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XHeaderFooterContent; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.style.XStyle; +import com.sun.star.style.XStyleFamiliesSupplier; +import com.sun.star.text.XText; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Test for object which is represented by service +* <code>com.sun.star.text.TextCursor</code>. <p> +* Object implements the following interfaces : +* <ul> +* <li> <code>com::sun::star::text::XTextCursor</code></li> +* <li> <code>com::sun::star::text::XWordCursor</code></li> +* <li> <code>com::sun::star::style::CharacterPropertiesComplex</code></li> +* <li> <code>com::sun::star::text::XTextRange</code></li> +* <li> <code>com::sun::star::beans::XPropertySet</code></li> +* <li> <code>com::sun::star::container::XContentEnumerationAccess</code></li> +* <li> <code>com::sun::star::beans::XPropertyState</code></li> +* <li> <code>com::sun::star::style::CharacterProperties</code></li> +* <li> <code>com::sun::star::text::XSentenceCursor</code></li> +* <li> <code>com::sun::star::style::ParagraphProperties</code></li> +* <li> <code>com::sun::star::text::XParagraphCursor</code></li> +* <li> <code>com::sun::star::document::XDocumentInsertable</code></li> +* <li> <code>com::sun::star::util::XSortable</code></li> +* <li> <code>com::sun::star::style::CharacterPropertiesAsian</code></li> +* </ul> +* @see com.sun.star.text.TextCursor +* @see com.sun.star.text.XTextCursor +* @see com.sun.star.text.XWordCursor +* @see com.sun.star.style.CharacterPropertiesComplex +* @see com.sun.star.text.XTextRange +* @see com.sun.star.beans.XPropertySet +* @see com.sun.star.container.XContentEnumerationAccess +* @see com.sun.star.beans.XPropertyState +* @see com.sun.star.style.CharacterProperties +* @see com.sun.star.text.XSentenceCursor +* @see com.sun.star.style.ParagraphProperties +* @see com.sun.star.text.XParagraphCursor +* @see com.sun.star.document.XDocumentInsertable +* @see com.sun.star.util.XSortable +* @see com.sun.star.style.CharacterPropertiesAsian +* @see ifc.text._XTextCursor +* @see ifc.text._XWordCursor +* @see ifc.style._CharacterPropertiesComplex +* @see ifc.text._XTextRange +* @see ifc.beans._XPropertySet +* @see ifc.container._XContentEnumerationAccess +* @see ifc.beans._XPropertyState +* @see ifc.style._CharacterProperties +* @see ifc.text._XSentenceCursor +* @see ifc.style._ParagraphProperties +* @see ifc.text._XParagraphCursor +* @see ifc.document._XDocumentInsertable +* @see ifc.util._XSortable +* @see ifc.style._CharacterPropertiesAsian +*/ +public class ScHeaderFooterTextCursor extends TestCase { + private XSpreadsheetDocument xSpreadsheetDoc; + + /** + * Creates Spreadsheet document. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + log.println( "creating a Spreadsheet document" ); + xSpreadsheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes Spreadsheet document. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xSheetDoc " ); + XComponent oComp = UnoRuntime.queryInterface (XComponent.class, xSpreadsheetDoc) ; + util.DesktopTools.closeDoc(oComp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Retrieves the collection of style families available in the document + * using the interface <code>XStyleFamiliesSupplier</code>. + * Obtains default style from the style family <code>'PageStyles'</code>. + * Retrieves value of the property <code>'RightPageHeaderContent'</code>. + * Sets some string for the text which is printed in the center part of the + * header or footer using the interface <code>XHeaderFooterContent</code> + * and sets new value of the property <code>'RightPageHeaderContent'</code>. + * Creates text cursor for the text which is printed in the center part of + * the header or footer. This text cursor is the instance of the service + * <code>com.sun.star.text.TextCursor</code>. + * </ul> + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters tParam, PrintWriter log) throws Exception { + + XInterface oObj = null; + XPropertySet PropSet; + XNameAccess PageStyles = null; + XStyle StdStyle = null; + + XStyleFamiliesSupplier StyleFam = UnoRuntime.queryInterface( + XStyleFamiliesSupplier.class, + xSpreadsheetDoc ); + + XNameAccess StyleFamNames = StyleFam.getStyleFamilies(); + PageStyles = (XNameAccess) AnyConverter.toObject( + new Type(XNameAccess.class),StyleFamNames.getByName("PageStyles")); + StdStyle = (XStyle) AnyConverter.toObject( + new Type(XStyle.class),PageStyles.getByName("Default")); + + //get the property-set + PropSet = UnoRuntime.queryInterface(XPropertySet.class, StdStyle); + + XHeaderFooterContent RPHC = null; + // creation of testobject here + // first we write what we are intend to do to log file + log.println( "creating a test environment" ); + RPHC = (XHeaderFooterContent) AnyConverter.toObject( + new Type(XHeaderFooterContent.class), + PropSet.getPropertyValue("RightPageHeaderContent")); + + XText center = RPHC.getCenterText(); + center.setString("CENTER"); + + PropSet.setPropertyValue("RightPageHeaderContent",RPHC); + + // create testobject here + oObj = center.createTextCursor(); + TestEnvironment tEnv = new TestEnvironment(oObj); + + // add relation for XTextRange + tEnv.addObjRelation("XTEXT", + UnoRuntime.queryInterface(XText.class,center)); + + return tEnv; + + } // finish method getTestEnvironment + +} // finish class ScHeaderFooterTextCursor diff --git a/qadevOOo/tests/java/mod/_sc/ScHeaderFooterTextObj.java b/qadevOOo/tests/java/mod/_sc/ScHeaderFooterTextObj.java new file mode 100644 index 000000000..990d6183a --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScHeaderFooterTextObj.java @@ -0,0 +1,219 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.DefaultDsc; +import util.InstCreator; +import util.ParagraphDsc; +import util.SOfficeFactory; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XNameAccess; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XHeaderFooterContent; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.style.XStyle; +import com.sun.star.style.XStyleFamiliesSupplier; +import com.sun.star.text.ControlCharacter; +import com.sun.star.text.XText; +import com.sun.star.text.XTextCursor; +import com.sun.star.text.XTextRange; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Test for object which is represented by service +* <code>com.sun.star.text.Text</code>. <p> +* Object implements the following interfaces : +* <ul> +* <li> <code>com::sun::star::text::XTextRangeMover</code></li> +* <li> <code>com::sun::star::text::XSimpleText</code></li> +* <li> <code>com::sun::star::text::XTextRange</code></li> +* <li> <code>com::sun::star::text::XRelativeTextContentInsert</code></li> +* <li> <code>com::sun::star::text::XTextRangeCompare</code></li> +* <li> <code>com::sun::star::container::XElementAccess</code></li> +* <li> <code>com::sun::star::container::XEnumerationAccess</code></li> +* <li> <code>com::sun::star::text::XText</code></li> +* </ul> +* @see com.sun.star.text.Text +* @see com.sun.star.text.XTextRangeMover +* @see com.sun.star.text.XSimpleText +* @see com.sun.star.text.XTextRange +* @see com.sun.star.text.XRelativeTextContentInsert +* @see com.sun.star.text.XTextRangeCompare +* @see com.sun.star.container.XElementAccess +* @see com.sun.star.container.XEnumerationAccess +* @see com.sun.star.text.XText +* @see ifc.text._XTextRangeMover +* @see ifc.text._XSimpleText +* @see ifc.text._XTextRange +* @see ifc.text._XRelativeTextContentInsert +* @see ifc.text._XTextRangeCompare +* @see ifc.container._XElementAccess +* @see ifc.container._XEnumerationAccess +* @see ifc.text._XText +*/ +public class ScHeaderFooterTextObj extends TestCase { + + private XSpreadsheetDocument xSpreadsheetDoc; + + /** + * Creates Spreadsheet document. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + + log.println( "creating a Spreadsheet document" ); + xSpreadsheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes Spreadsheet document. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xSheetDoc " ); + XComponent oComp = UnoRuntime.queryInterface (XComponent.class, xSpreadsheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Retrieves the collection of style families available in the document + * using the interface <code>XStyleFamiliesSupplier</code>. + * Obtains default style from the style family <code>'PageStyles'</code>. + * Retrieves value of the property <code>'RightPageHeaderContent'</code>. + * Creates text cursor for the text which is printed in the center part of + * the header or footer using the interface <code>XHeaderFooterContent</code>. + * Insert some lines using the created cursor and sets new value of the + * property <code>'RightPageHeaderContent'</code>. The value of the property + * <code>'RightPageHeaderContent'</code> is the instance of the service + * <code>com.sun.star.text.Text</code>. + * Object relations created : + * <ul> + * <li> <code>'RangeForMove'</code> for + * {@link ifc.text._XTextRangeMover} (the range to be moved)</li> + * <li> <code>'XTextRange'</code> for + * {@link ifc.text._XTextRangeMover} (the range that includes moving + * range)</li> + * <li> <code>'XTEXTINFO'</code> for + * {@link ifc.text._XRelativeTextContentInsert}(the instance creator + * which can create instances of some text content service)</li> + * <li> <code>'PARA'</code> for + * {@link ifc.text._XRelativeTextContentInsert}(the instance creator + * which can create instances of <code>com.sun.star.text.Paragraph</code> + * service)</li> + * </ul> + * @see com.sun.star.text.Text + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters tParam, PrintWriter log) throws Exception { + + XInterface oObj = null; + XPropertySet PropSet; + XNameAccess PageStyles = null; + XStyle StdStyle = null; + + XStyleFamiliesSupplier StyleFam = UnoRuntime.queryInterface( + XStyleFamiliesSupplier.class, + xSpreadsheetDoc ); + XNameAccess StyleFamNames = StyleFam.getStyleFamilies(); + PageStyles = (XNameAccess) AnyConverter.toObject( + new Type(XNameAccess.class),StyleFamNames.getByName("PageStyles")); + StdStyle = (XStyle) AnyConverter.toObject( + new Type(XStyle.class),PageStyles.getByName("Default")); + + //get the property-set + PropSet = UnoRuntime.queryInterface(XPropertySet.class, StdStyle); + + XHeaderFooterContent RPHC = null; + // creation of testobject here + // first we write what we are intend to do to log file + log.println( "creating a test environment" ); + RPHC = (XHeaderFooterContent) AnyConverter.toObject( + new Type(XHeaderFooterContent.class), + PropSet.getPropertyValue("RightPageHeaderContent")); + + XText center = RPHC.getCenterText(); + + XTextRange text_to_move = null; + + log.println( "inserting some lines" ); + XTextCursor oCursor = center.createTextCursor(); + center.insertControlCharacter( + oCursor, ControlCharacter.PARAGRAPH_BREAK, false ); + center.insertControlCharacter( + oCursor, ControlCharacter.LINE_BREAK, false ); + center.insertString(oCursor,"Paragraph 1", false); + center.insertString(oCursor,": ScHeaderFooterTextObj", false); + center.insertControlCharacter( + oCursor, ControlCharacter.PARAGRAPH_BREAK, false ); + center.insertString(oCursor, "THE QUICK BROWN FOX JUMPS OVER THE" + + " LAZY DOG: ScHeaderFooterTextObj", false ); + center.insertControlCharacter( + oCursor, ControlCharacter.PARAGRAPH_BREAK, false ); + center.insertControlCharacter( + oCursor, ControlCharacter.LINE_BREAK, false ); + oCursor.setString("TextForMove"); + text_to_move = oCursor; + + XTextCursor oCursor1 = center.createTextCursorByRange(center.getEnd()); + center.insertString(oCursor1,"Paragraph 2", false); + center.insertString(oCursor1,": ScHeaderFooterTextObj", false); + center.insertControlCharacter( + oCursor1, ControlCharacter.PARAGRAPH_BREAK, false ); + center.insertString( oCursor1, "THE QUICK BROWN FOX JUMPS OVER THE" + + " LAZY DOG: ScHeaderFooterTextObj", false); + center.insertControlCharacter( + oCursor1, ControlCharacter.PARAGRAPH_BREAK, false ); + center.insertControlCharacter( + oCursor1, ControlCharacter.LINE_BREAK, false ); + + PropSet.setPropertyValue("RightPageHeaderContent", RPHC); + + // create testobject here + oObj = center; + TestEnvironment tEnv = new TestEnvironment(oObj); + + DefaultDsc tDsc = new DefaultDsc( + "com.sun.star.text.XTextContent","com.sun.star.text.TextField.Time"); + + log.println( "adding InstCreator object" ); + tEnv.addObjRelation( + "XTEXTINFO", new InstCreator( xSpreadsheetDoc, tDsc ) ); + + ParagraphDsc pDsc = new ParagraphDsc(); + tEnv.addObjRelation( "PARA", new InstCreator(xSpreadsheetDoc, pDsc) ); + + log.println("adding TextRange for XTextRangeMover" ); + tEnv.addObjRelation("RangeForMove", text_to_move); + tEnv.addObjRelation("XTextRange", RPHC.getCenterText()); + + return tEnv; + + } // finish method getTestEnvironment +} // finish class ScHeaderFooterTextObj diff --git a/qadevOOo/tests/java/mod/_sc/ScModelObj.java b/qadevOOo/tests/java/mod/_sc/ScModelObj.java new file mode 100644 index 000000000..e4a89b971 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScModelObj.java @@ -0,0 +1,209 @@ +/* + * 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 mod._sc; + +import com.sun.star.container.XIndexAccess; +import com.sun.star.frame.XController; +import com.sun.star.frame.XModel; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.table.XCell; +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.view.XSelectionSupplier; +import ifc.view._XPrintJobBroadcaster; +import java.io.File; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; + +import util.SOfficeFactory; +import util.utils; + + +/** +* Test for object which is represented by service +* <code>com.sun.star.sheet.SpreadsheetDocument</code>. <p> +* Object implements the following interfaces : +* <ul> +* <li> <code>com::sun::star::sheet::XSpreadsheetDocument</code></li> +* <li> <code>com::sun::star::sheet::SpreadsheetDocumentSettings</code></li> +* <li> <code>com::sun::star::lang::XComponent</code></li> +* <li> <code>com::sun::star::frame::XModel</code></li> +* <li> <code>com::sun::star::sheet::SpreadsheetDocument</code></li> +* <li> <code>com::sun::star::util::XNumberFormatsSupplier</code></li> +* <li> <code>com::sun::star::beans::XPropertySet</code></li> +* </ul> +* @see com.sun.star.sheet.SpreadsheetDocument +* @see com.sun.star.sheet.XSpreadsheetDocument +* @see com.sun.star.sheet.SpreadsheetDocumentSettings +* @see com.sun.star.lang.XComponent +* @see com.sun.star.frame.XModel +* @see com.sun.star.sheet.SpreadsheetDocument +* @see com.sun.star.util.XNumberFormatsSupplier +* @see com.sun.star.beans.XPropertySet +* @see ifc.sheet._XSpreadsheetDocument +* @see ifc.sheet._SpreadsheetDocumentSettings +* @see ifc.lang._XComponent +* @see ifc.frame._XModel +* @see ifc.sheet._SpreadsheetDocument +* @see ifc.util._XNumberFormatsSupplier +* @see ifc.beans._XPropertySet +*/ +public class ScModelObj extends TestCase { + private XSpreadsheetDocument xSpreadsheetDoc; + private XSpreadsheetDocument xSecondsheetDoc; + + /** + * Disposes Spreadsheet documents. + */ + @Override + protected void cleanup(TestParameters tParam, PrintWriter log) { + log.println(" disposing xSheetDoc "); + + XComponent oComp = UnoRuntime.queryInterface( + XComponent.class, xSpreadsheetDoc); + util.DesktopTools.closeDoc(oComp); + + oComp = UnoRuntime.queryInterface(XComponent.class, + xSecondsheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Disposes the spreadsheet documents if they were created already. + * Creates two spreadsheet documents. Retrieves the current controller for + * each of them. Obtains the collection of spreadsheets, takes one of them + * and takes some cell from the spreadsheet. The created documents are the instances + * of the service <code>com.sun.star.sheet.SpreadsheetDocument</code>. + * Object relations created : + * <ul> + * <li> <code>'SELSUPP'</code> for + * {@link ifc.frame._XModel}( the interface + * <code>XSelectionSupplier</code> that was queried from the current + * controller of the spreadsheet)</li> + * <li> <code>'TOSELECT'</code> for + * {@link ifc.frame._XModel}( the cell that was retrieved from the + * spreadsheet)</li> + * <li> <code>'CONT2'</code> for + * {@link ifc.frame._XModel}( the current controller of the second + * spreadsheet)</li> + * </ul> + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, + PrintWriter log) throws Exception { + // creation of the testobject here + // first we write what we are intend to do to log file + log.println("creating a test environment"); + + // get a soffice factory object + SOfficeFactory SOF = SOfficeFactory.getFactory( + Param.getMSF()); + + if (xSpreadsheetDoc != null) { + XComponent oComp = UnoRuntime.queryInterface( + XComponent.class, xSpreadsheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + if (xSecondsheetDoc != null) { + XComponent oComp = UnoRuntime.queryInterface( + XComponent.class, xSecondsheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + log.println("creating two spreadsheet documents"); + xSpreadsheetDoc = SOF.createCalcDoc(null); + xSecondsheetDoc = SOF.createCalcDoc(null); + + XModel model1 = UnoRuntime.queryInterface(XModel.class, + xSpreadsheetDoc); + XModel model2 = UnoRuntime.queryInterface(XModel.class, + xSecondsheetDoc); + XInterface oObj = model1; + + TestEnvironment tEnv = new TestEnvironment(oObj); + + XController cont1 = model1.getCurrentController(); + XController cont2 = model2.getCurrentController(); + cont1.getFrame().setName("cont1"); + cont2.getFrame().setName("cont2"); + + XSelectionSupplier sel = UnoRuntime.queryInterface( + XSelectionSupplier.class, cont1); + + XCell toSel = null; + XCell[] xCalculatableCells = null; + log.println("Getting spreadsheet"); + + XSpreadsheets oSheets = xSpreadsheetDoc.getSheets(); + XIndexAccess oIndexSheets = UnoRuntime.queryInterface( + XIndexAccess.class, oSheets); + XSpreadsheet oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class), + oIndexSheets.getByIndex(0)); + + log.println("Getting a cell from sheet"); + toSel = oSheet.getCellByPosition(2, 3); + // create a simple formula for XCalculatable + oSheet.getCellByPosition(4, 5).setValue(15); + oSheet.getCellByPosition(5, 5).setValue(10); + oSheet.getCellByPosition(6, 5).setFormula("= E6 * F6"); + xCalculatableCells = new XCell[]{ + oSheet.getCellByPosition(4, 5), + oSheet.getCellByPosition(5, 5), + oSheet.getCellByPosition(6, 5) + }; + + // Make sure there are at least two sheets: + oSheets.insertNewByName("Some Sheet", (short) 1); + + log.println("Adding SelectionSupplier and Shape to select for XModel"); + tEnv.addObjRelation("SELSUPP", sel); + tEnv.addObjRelation("TOSELECT", toSel); + + log.println("Adding cells for XCalculatable"); + tEnv.addObjRelation("XCalculatable.Cells", xCalculatableCells); + log.println("adding Controller as ObjRelation for XModel"); + tEnv.addObjRelation("CONT2", cont2); + + // create object relation for XPrintJobBroadcaster + String fileName = utils.getOfficeTempDirSys(Param.getMSF())+"printfile.prt" ; + File f = new File(fileName); + if (f.exists()) { + boolean bDeleteOk = f.delete(); + if (!bDeleteOk) { + System.out.println("delete failed"); + } + } + _XPrintJobBroadcaster.MyPrintJobListener listener = new _XPrintJobBroadcaster.MyPrintJobListener(oObj, fileName); + tEnv.addObjRelation("XPrintJobBroadcaster.XPrintJobListener", listener); + + return tEnv; + } + +} // finish class ScModelObj diff --git a/qadevOOo/tests/java/mod/_sc/ScShapeObj.java b/qadevOOo/tests/java/mod/_sc/ScShapeObj.java new file mode 100644 index 000000000..335f2f848 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScShapeObj.java @@ -0,0 +1,101 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.DrawTools; +import util.SOfficeFactory; + +import com.sun.star.drawing.XShape; +import com.sun.star.lang.XComponent; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +public class ScShapeObj extends TestCase { + + static XComponent xSheetDoc; + + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + log.println( "creating a sheetdoc" ); + xSheetDoc = UnoRuntime.queryInterface(XComponent.class, SOF.createCalcDoc(null)); + } + + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xSheetDoc " ); + util.DesktopTools.closeDoc(xSheetDoc); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Creates an instance of the service + * <code>com.sun.star.drawing.EllipseShape</code> as tested component + * and adds it to the document. + * Object relations created : + * <ul> + * <li> <code>'Style1', 'Style2'</code> for + * {@link ifc.drawing._Shape} : + * two values of 'Style' property. The first is taken + * from the shape tested, the second from another + * shape added to the draw page. </li> + * <li> <code>'XTEXTINFO'</code> for + * {@link ifc.text._XText} : + * creator which can create instances of + * <code>com.sun.star.text.TextField.URL</code> + * service. </li> + * </ul> + */ + @Override + protected TestEnvironment createTestEnvironment + (TestParameters tParam, PrintWriter log) { + + XInterface oObj = null; + XShape oShape = null; + + // creation of testobject here + // first we write what we are intend to do to log file + log.println( "creating a test environment" ); + + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF()); + oShape = SOF.createShape(xSheetDoc,5000, 3500, 7500, 5000,"Rectangle"); + DrawTools.getShapes(DrawTools.getDrawPage(xSheetDoc,0)).add(oShape); + oObj = oShape ; + + for (int i=0; i < 10; i++) { + DrawTools.getShapes(DrawTools.getDrawPage(xSheetDoc,0)).add( + SOF.createShape(xSheetDoc, + 5000, 3500, 7510 + 10 * i, 5010 + 10 * i, "Rectangle")); + } + + // create test environment here + TestEnvironment tEnv = new TestEnvironment( oShape ); + + log.println("Implementation name: "+util.utils.getImplName(oObj)); + tEnv.addObjRelation("DOCUMENT",xSheetDoc); + + return tEnv; + } // finish method getTestEnvironment + +} // finish class ScShapeObj diff --git a/qadevOOo/tests/java/mod/_sc/ScSheetLinkObj.java b/qadevOOo/tests/java/mod/_sc/ScSheetLinkObj.java new file mode 100644 index 000000000..5e30fa9e5 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScSheetLinkObj.java @@ -0,0 +1,143 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; +import util.utils; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XNameAccess; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XSheetLinkable; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Test for object which is represented by service +* <code>com.sun.star.sheet.SheetLink</code>. <p> +* Object implements the following interfaces : +* <ul> +* <li> <code>com::sun::star::container::XNamed</code></li> +* <li> <code>com::sun::star::util::XRefreshable</code></li> +* <li> <code>com::sun::star::sheet::SheetLink</code></li> +* <li> <code>com::sun::star::beans::XPropertySet</code></li> +* </ul> +* The following files used by this test : +* <ul> +* <li><b> ScSheetLinksObj.sdc </b> : for creating link </li> +* </ul> <p> +* @see com.sun.star.sheet.SheetLink +* @see com.sun.star.container.XNamed +* @see com.sun.star.util.XRefreshable +* @see com.sun.star.sheet.SheetLink +* @see com.sun.star.beans.XPropertySet +* @see ifc.container._XNamed +* @see ifc.util._XRefreshable +* @see ifc.sheet._SheetLink +* @see ifc.beans._XPropertySet +*/ +public class ScSheetLinkObj extends TestCase { + private XSpreadsheetDocument xSheetDoc = null; + + /** + * Creates Spreadsheet document. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + + log.println( "creating a Spreadsheet document" ); + xSheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes Spreadsheet document. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xSheetDoc " ); + XComponent oComp = UnoRuntime.queryInterface(XComponent.class, xSheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Retrieves a collection of spreadsheets from a document + * and takes one of them. Links the sheet to another sheet in another + * document using the interface <code>XSheetLinkable</code>. Obtains the + * value of the property <code>'SheetLinks'</code> that is the collection of + * sheet links. Retrieves from the collection one of the sheet link that + * is the instance of the service <code>com.sun.star.sheet.SheetLink</code>. + * @see com.sun.star.sheet.SheetLink + * @see com.sun.star.sheet.XSheetLinkable + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, PrintWriter log) throws Exception { + + XInterface oObj = null; + + // creation of testobject here + // first we write what we are intend to do to log file + log.println( "Creating a test environment" ); + XSpreadsheet oSheet = null; + + log.println("Getting test object ") ; + XSpreadsheets oSheets = xSheetDoc.getSheets() ; + XIndexAccess oIndexSheets = UnoRuntime.queryInterface(XIndexAccess.class, oSheets); + oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class),oIndexSheets.getByIndex(0)); + + XSheetLinkable SL = UnoRuntime.queryInterface(XSheetLinkable.class, oSheet); + + // creating link. Doesn't matter that it refers to unexistent object. + // this is for proper work of XAccess tests. + String sURL = utils.getFullTestDocName("ScSheetLinksObj.ods"); + SL.link(sURL, "Sheet1", "", "", com.sun.star.sheet.SheetLinkMode.VALUE); + + // Getting links. + XPropertySet docProps = UnoRuntime.queryInterface(XPropertySet.class, xSheetDoc); + Object oLinks = docProps.getPropertyValue("SheetLinks"); + + XNameAccess links = UnoRuntime.queryInterface(XNameAccess.class, oLinks); + + String[] names = links.getElementNames(); + + oObj = (XInterface)AnyConverter.toObject( + new Type(XInterface.class),links.getByName(names[0])); + + log.println("Creating object - " + + ((oObj == null) ? "FAILED" : "OK")); + + TestEnvironment tEnv = new TestEnvironment( oObj ); + + return tEnv; + } + +} diff --git a/qadevOOo/tests/java/mod/_sc/ScStyleObj.java b/qadevOOo/tests/java/mod/_sc/ScStyleObj.java new file mode 100644 index 000000000..8705c6d7d --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScStyleObj.java @@ -0,0 +1,193 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; +import java.util.ArrayList; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; + +import com.sun.star.beans.Property; +import com.sun.star.beans.PropertyAttribute; +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XNameAccess; +import com.sun.star.container.XNameContainer; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.style.XStyle; +import com.sun.star.style.XStyleFamiliesSupplier; +import com.sun.star.table.XCell; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Test for object which is represented by service +* <code>com.sun.star.style.Style</code>. <p> +* Object implements the following interfaces : +* <ul> +* <li> <code>com::sun::star::container::XNamed</code></li> +* <li> <code>com::sun::star::style::Style</code></li> +* <li> <code>com::sun::star::style::XStyle</code></li> +* </ul> +* @see com.sun.star.style.Style +* @see com.sun.star.container.XNamed +* @see com.sun.star.style.Style +* @see com.sun.star.style.XStyle +* @see ifc.container._XNamed +* @see ifc.style._Style +* @see ifc.style._XStyle +*/ +public class ScStyleObj extends TestCase { + private XSpreadsheetDocument xSpreadsheetDoc = null; + + /** + * Creates Spreadsheet document. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + log.println( "creating a Spreadsheet document" ); + xSpreadsheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes Spreadsheet document. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xSheetDoc " ); + XComponent oComp = UnoRuntime.queryInterface(XComponent.class, xSpreadsheetDoc); + util.DesktopTools.closeDoc(oComp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Retrieves the collection of style families from the document + * using the interface <code>XStyleFamiliesSupplier</code>. + * Obtains style family with index 0 from the collection and obtains + * style with index 0 from this style family. Creates the instance of the + * service <code>com.sun.star.style.CellStyle</code>. Inserts the created + * style to the obtained style family. Retrieves a collection of spreadsheets + * from the document and takes one of them. Gets a cell from the spreadsheet + * and sets the value of property <code>'CellStyle'</code> to the created + * style. The created style is the instance of the service + * <code>com.sun.star.style.Style</code> also. + * Object relations created : + * <ul> + * <li> <code>'PoolStyle'</code> for + * {@link ifc.style._XStyle}(the style with index 0 that was obtained + * from the collection)</li> + * </ul> + * @see com.sun.star.style.CellStyle + * @see com.sun.star.style.Style + * @see com.sun.star.style.XStyleFamiliesSupplier + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, PrintWriter log) throws Exception { + + + // creation of the testobject here + // first we write what we are intend to do to log file + + log.println("creating a test environment"); + + log.println("getting style"); + XStyleFamiliesSupplier oStyleFamiliesSupplier = UnoRuntime.queryInterface( + XStyleFamiliesSupplier.class, xSpreadsheetDoc); + XNameAccess oStyleFamilies = oStyleFamiliesSupplier.getStyleFamilies(); + XIndexAccess oStyleFamiliesIndexAccess = UnoRuntime.queryInterface(XIndexAccess.class, oStyleFamilies); + XNameAccess oStyleFamilyNameAccess = null; + XStyle oStyle = null; + oStyleFamilyNameAccess = (XNameAccess) AnyConverter.toObject( + new Type(XNameAccess.class), + oStyleFamiliesIndexAccess.getByIndex(0)); + + XIndexAccess oStyleFamilyIndexAccess = UnoRuntime.queryInterface(XIndexAccess.class, + oStyleFamilyNameAccess); + oStyle = (XStyle) AnyConverter.toObject( + new Type(XStyle.class),oStyleFamilyIndexAccess.getByIndex(0)); + + log.println("Creating a user-defined style"); + XMultiServiceFactory oMSF = UnoRuntime.queryInterface( + XMultiServiceFactory.class, xSpreadsheetDoc); + + XInterface oInt = (XInterface) + oMSF.createInstance("com.sun.star.style.CellStyle"); + XStyle oMyStyle = UnoRuntime.queryInterface(XStyle.class, oInt); + + XNameContainer oStyleFamilyNameContainer = UnoRuntime. + queryInterface(XNameContainer.class, oStyleFamilyNameAccess); + + if (oStyleFamilyNameContainer.hasByName("My Style")) { + oStyleFamilyNameContainer.removeByName("My Style"); + } + + oStyleFamilyNameContainer.insertByName("My Style", oMyStyle); + + + //using the style + log.println("Getting spreadsheet") ; + XSpreadsheets oSheets = xSpreadsheetDoc.getSheets() ; + XIndexAccess oIndexSheets = UnoRuntime.queryInterface(XIndexAccess.class, oSheets); + + XCell aCell = null; + XSpreadsheet oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class),oIndexSheets.getByIndex(0)); + log.println("Getting a cell from sheet") ; + aCell = oSheet.getCellByPosition(2,3) ; + + XPropertySet xProp = UnoRuntime.queryInterface(XPropertySet.class, aCell); + + xProp.setPropertyValue("CellStyle", oMyStyle.getName()); + + log.println("creating a new environment for object"); + TestEnvironment tEnv = new TestEnvironment(oMyStyle); + + tEnv.addObjRelation("PoolStyle", oStyle); + + tEnv.addObjRelation("PropertyNames", getPropertyNames + (UnoRuntime.queryInterface + (XPropertySet.class, oMyStyle))); + + return tEnv; + } + + public String[] getPropertyNames(XPropertySet props) { + Property[] the_props = props.getPropertySetInfo().getProperties(); + ArrayList<String> names = new ArrayList<String>() ; + + for (int i=0;i<the_props.length;i++) { + boolean isWritable = + ((the_props[i].Attributes & PropertyAttribute.READONLY) == 0); + if (isWritable) { + names.add(the_props[i].Name); + } + } + return names.toArray(new String[names.size()]) ; + } +} // finish class ScStyleObj diff --git a/qadevOOo/tests/java/mod/_sc/ScTabViewObj.java b/qadevOOo/tests/java/mod/_sc/ScTabViewObj.java new file mode 100644 index 000000000..a00b2724d --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScTabViewObj.java @@ -0,0 +1,233 @@ +/* + * 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 mod._sc; + +import com.sun.star.container.NoSuchElementException; +import com.sun.star.container.XNameContainer; +import com.sun.star.drawing.XDrawPage; +import com.sun.star.drawing.XDrawPages; +import com.sun.star.drawing.XDrawPagesSupplier; +import com.sun.star.drawing.XShape; +import com.sun.star.form.XForm; +import com.sun.star.lang.WrappedTargetException; + +import java.io.PrintWriter; +import java.util.Comparator; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.FormTools; +import util.SOfficeFactory; +import util.ValueComparer; + +import com.sun.star.container.XIndexAccess; +import com.sun.star.frame.XModel; +import com.sun.star.lang.XComponent; +import com.sun.star.sheet.XCellRangeAddressable; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.table.CellRangeAddress; +import com.sun.star.table.XCell; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** + * Test for object which is represented by service + * <code>com.sun.star.sheet.SpreadsheetView</code>. <p> + * Object implements the following interfaces : + * <ul> + * <li> <code>com::sun::star::sheet::XViewSplitable</code></li> + * <li> <code>com::sun::star::sheet::XViewFreezable</code></li> + * <li> <code>com::sun::star::sheet::SpreadsheetViewSettings</code></li> + * <li> <code>com::sun::star::beans::XPropertySet</code></li> + * <li> <code>com::sun::star::container::XIndexAccess</code></li> + * <li> <code>com::sun::star::container::XElementAccess</code></li> + * <li> <code>com::sun::star::sheet::XSpreadsheetView</code></li> + * <li> <code>com::sun::star::view::XSelectionSupplier</code></li> + * </ul> + * @see com.sun.star.sheet.XViewSplitable + * @see com.sun.star.sheet.XViewFreezable + * @see com.sun.star.sheet.SpreadsheetViewSettings + * @see com.sun.star.beans.XPropertySet + * @see com.sun.star.container.XIndexAccess + * @see com.sun.star.container.XElementAccess + * @see com.sun.star.sheet.XSpreadsheetView + * @see com.sun.star.view.XSelectionSupplier + * @see ifc.sheet._XViewSplitable + * @see ifc.sheet._XViewFreezable + * @see ifc.sheet._SpreadsheetViewSettings + * @see ifc.beans._XPropertySet + * @see ifc.container._XIndexAccess + * @see ifc.container._XElementAccess + * @see ifc.sheet._XSpreadsheetView + * @see ifc.view._XSelectionSupplier + */ +public class ScTabViewObj extends TestCase { + private XSpreadsheetDocument xSpreadsheetDoc; + private XSpreadsheetDocument xSpreadsheetDoc2; + + /** + * Creates Spreadsheet document. + */ + @Override + public void initialize( TestParameters Param, PrintWriter log ) throws Exception { + // get a soffice factory object + SOfficeFactory SOF = SOfficeFactory.getFactory( Param.getMSF()); + log.println("creating two spreadsheet documents"); + xSpreadsheetDoc = SOF.createCalcDoc(null); + util.utils.waitForEventIdle(Param.getMSF()); + xSpreadsheetDoc2 = SOF.createCalcDoc(null); + } + + /** + * Disposes Spreadsheet document. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xSheetDoc " ); + XComponent oComp = UnoRuntime.queryInterface(XComponent.class, xSpreadsheetDoc) ; + util.DesktopTools.closeDoc(oComp); + XComponent oComp2 = UnoRuntime.queryInterface(XComponent.class, xSpreadsheetDoc2) ; + util.DesktopTools.closeDoc(oComp2); + } + + /* + * Creating a TestEnvironment for the interfaces to be tested. + * Retrieves the current controller of the spreadsheet document using the + * interface <code>XModel</code>. The controller is the instance of the + * service <code>com.sun.star.sheet.SpreadsheetView</code>. Retrieves + * a collection of spreadsheets from the document and takes one of them. + * Fills two cells in the spreadsheet. + * Object relations created : + * <ul> + * <li> <code>'Sheet'</code> for + * {@link ifc.sheet._XSpreadsheetView}(the retrieved spreadsheet)</li> + * </ul> + * @see com.sun.star.frame.XModel + * @see com.sun.star.sheet.SpreadsheetView + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, PrintWriter log) throws Exception { + XDrawPage oDrawPage = null; + + XModel aModel = UnoRuntime.queryInterface(XModel.class, xSpreadsheetDoc); + + XModel aSecondModel = UnoRuntime.queryInterface(XModel.class, xSpreadsheetDoc2); + + XInterface oObj = aModel.getCurrentController(); + + log.println("getting sheets"); + XSpreadsheets xSpreadsheets = xSpreadsheetDoc.getSheets(); + + log.println("getting a sheet"); + XSpreadsheet oSheet = null; + XIndexAccess oIndexAccess = UnoRuntime.queryInterface(XIndexAccess.class, xSpreadsheets); + oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class), oIndexAccess.getByIndex(1)); + + TestEnvironment tEnv = new TestEnvironment(oObj); + + tEnv.addObjRelation("XDispatchProvider.URL", ".uno:Copy") ; + + log.println("adding 'Sheet' as ObjRelation"); + tEnv.addObjRelation("Sheet", oSheet); + tEnv.addObjRelation("Frame",aModel.getCurrentController().getFrame()); + tEnv.addObjRelation("SecondModel",aSecondModel); + tEnv.addObjRelation("FirstModel",aModel); + + //Relation for XControlAccess + tEnv.addObjRelation("DOCUMENT", UnoRuntime.queryInterface(XComponent.class,xSpreadsheetDoc)); + tEnv.addObjRelation("XControlAccess.isSheet", Boolean.TRUE); + //Relations for XSelectionSupplier + XCell cell_1 = null; + XCell cell_2 = null; + Object cellRange = null; + cellRange = oSheet.getCellRangeByPosition(0, 0, 3, 3); + cell_1 = oSheet.getCellByPosition(5,5); + cell_2 = oSheet.getCellByPosition(7,7); + cell_2.setValue(17.5); + cell_1.setValue(5.5); + + Object[] selections = {oSheet, cellRange, cell_1, cell_2}; + tEnv.addObjRelation("Selections", selections); + + tEnv.addObjRelation("Comparer", new Comparator<Object>() { + public int compare(Object o1, Object o2) { + XCellRangeAddressable adr1 = UnoRuntime.queryInterface(XCellRangeAddressable.class, o1); + XCellRangeAddressable adr2 = UnoRuntime.queryInterface(XCellRangeAddressable.class, o2); + if (adr1 == null || adr2 == null) return -1; + CellRangeAddress range1 = adr1.getRangeAddress(); + CellRangeAddress range2 = adr2.getRangeAddress(); + return ValueComparer.equalValue(range1, range2) ? 0 : 1 ; + }}); + + tEnv.addObjRelation("XUserInputInterception.XModel", aModel); + + // XForm for com.sun.star.view.XFormLayerAccess + + XForm myForm = null; + String kindOfControl="CommandButton"; + XShape aShape = null; + log.println("adding control shape '" + kindOfControl + "'"); + XComponent oComp = UnoRuntime.queryInterface(XComponent.class, xSpreadsheetDoc) ; + + aShape = FormTools.createControlShape(oComp, 3000, 4500, 15000, 10000, kindOfControl); + + log.println("adding relation for com.sun.star.view.XFormLayerAccess: XForm"); + try { + log.println( "getting Drawpages" ); + XDrawPagesSupplier oDPS = UnoRuntime.queryInterface(XDrawPagesSupplier.class,xSpreadsheetDoc); + XDrawPages oDP = oDPS.getDrawPages(); + oDP.insertNewByIndex(1); + oDP.insertNewByIndex(2); + oDrawPage = (XDrawPage) AnyConverter.toObject( + new Type(XDrawPage.class),oDP.getByIndex(0)); + if (oDrawPage == null) + log.println("ERROR: could not get DrawPage: null"); + + oDrawPage.add(aShape); + log.println("getting XForm"); + XNameContainer xForm = FormTools.getForms(oDrawPage); + try { + myForm = (XForm) AnyConverter.toObject(new Type(XForm.class),xForm.getByName("Standard")); + } catch (WrappedTargetException ex) { + log.println("ERROR: could not XForm 'Standard': " + ex.toString()); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: could not XForm 'Standard': " + ex.toString()); + } catch (NoSuchElementException ex) { + log.println("ERROR: could not XForm 'Standard': " + ex.toString()); + } + if (myForm == null) + log.println("ERROR: could not get XForm: null"); + tEnv.addObjRelation("XFormLayerAccess.XForm", myForm); + } catch (com.sun.star.lang.IndexOutOfBoundsException ex) { + log.println("ERROR: could not add ObjectRelation 'XFormLayerAccess.XForm': " + ex.toString()); + } catch (WrappedTargetException ex) { + log.println("ERROR: could not add ObjectRelation 'XFormLayerAccess.XForm': " + ex.toString()); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: could not add ObjectRelation 'XFormLayerAccess.XForm': " + ex.toString()); + } + return tEnv; + } + +} // finish class ScTabViewObj diff --git a/qadevOOo/tests/java/mod/_sc/ScTableSheetObj.java b/qadevOOo/tests/java/mod/_sc/ScTableSheetObj.java new file mode 100644 index 000000000..436901258 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/ScTableSheetObj.java @@ -0,0 +1,384 @@ +/* + * 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 mod._sc; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexAccess; +import com.sun.star.sheet.XScenariosSupplier; +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.table.XCell; +import com.sun.star.table.XCellRange; +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 ifc.sheet._XCellRangesQuery; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; + +import util.SOfficeFactory; +import util.ValueComparer; + + +/** +* Test for object which is represented by service +* <code>com.sun.star.sheet.Spreadsheet</code>. <p> +* Object implements the following interfaces : +* <ul> +* <li> <code>com::sun::star::style::ParagraphProperties</code></li> +* <li> <code>com::sun::star::table::XTableChartsSupplier</code></li> +* <li> <code>com::sun::star::sheet::XSpreadsheet</code></li> +* <li> <code>com::sun::star::table::CellProperties</code></li> +* <li> <code>com::sun::star::sheet::XSheetAnnotationsSupplier</code></li> +* <li> <code>com::sun::star::table::XCellRange</code></li> +* <li> <code>com::sun::star::sheet::XCellRangeAddressable</code></li> +* <li> <code>com::sun::star::sheet::XDataPilotTablesSupplier</code></li> +* <li> <code>com::sun::star::sheet::Spreadsheet</code></li> +* <li> <code>com::sun::star::sheet::XCellRangeMovement</code></li> +* <li> <code>com::sun::star::style::CharacterProperties</code></li> +* <li> <code>com::sun::star::sheet::XSheetOperation</code></li> +* <li> <code>com::sun::star::sheet::XScenariosSupplier</code></li> +* <li> <code>com::sun::star::sheet::XSheetPageBreak</code></li> +* <li> <code>com::sun::star::sheet::XArrayFormulaRange</code></li> +* <li> <code>com::sun::star::sheet::XSheetCellRange</code></li> +* <li> <code>com::sun::star::container::XNamed</code></li> +* <li> <code>com::sun::star::sheet::SheetCellRange</code></li> +* <li> <code>com::sun::star::chart::XChartData</code></li> +* <li> <code>com::sun::star::beans::XPropertySet</code></li> +* <li> <code>com::sun::star::util::XMergeable</code></li> +* <li> <code>com::sun::star::table::XColumnRowRange</code></li> +* </ul> +* @see com.sun.star.style.ParagraphProperties +* @see com.sun.star.table.XTableChartsSupplier +* @see com.sun.star.sheet.XSpreadsheet +* @see com.sun.star.table.CellProperties +* @see com.sun.star.sheet.XSheetAnnotationsSupplier +* @see com.sun.star.table.XCellRange +* @see com.sun.star.sheet.XCellRangeAddressable +* @see com.sun.star.sheet.XDataPilotTablesSupplier +* @see com.sun.star.sheet.Spreadsheet +* @see com.sun.star.sheet.XCellRangeMovement +* @see com.sun.star.style.CharacterProperties +* @see com.sun.star.sheet.XSheetOperation +* @see com.sun.star.sheet.XScenariosSupplier +* @see com.sun.star.sheet.XSheetPageBreak +* @see com.sun.star.sheet.XArrayFormulaRange +* @see com.sun.star.sheet.XSheetCellRange +* @see com.sun.star.container.XNamed +* @see com.sun.star.sheet.SheetCellRange +* @see com.sun.star.chart.XChartData +* @see com.sun.star.beans.XPropertySet +* @see com.sun.star.util.XMergeable +* @see com.sun.star.table.XColumnRowRange +* @see ifc.style._ParagraphProperties +* @see ifc.table._XTableChartsSupplier +* @see ifc.sheet._XSpreadsheet +* @see ifc.table._CellProperties +* @see ifc.sheet._XSheetAnnotationsSupplier +* @see ifc.table._XCellRange +* @see ifc.sheet._XCellRangeAddressable +* @see ifc.sheet._XDataPilotTablesSupplier +* @see ifc.sheet._Spreadsheet +* @see ifc.sheet._XCellRangeMovement +* @see ifc.style._CharacterProperties +* @see ifc.sheet._XSheetOperation +* @see ifc.sheet._XScenariosSupplier +* @see ifc.sheet._XSheetPageBreak +* @see ifc.sheet._XArrayFormulaRange +* @see ifc.sheet._XSheetCellRange +* @see ifc.container._XNamed +* @see ifc.sheet._SheetCellRange +* @see ifc.chart._XChartData +* @see ifc.beans._XPropertySet +* @see ifc.util._XMergeable +* @see ifc.table._XColumnRowRange +*/ +public class ScTableSheetObj extends TestCase { + private XSpreadsheetDocument xSheetDoc = null; + + /** + * Creates Spreadsheet document. + */ + @Override + protected void initialize(TestParameters tParam, PrintWriter log) throws Exception { + // get a soffice factory object + SOfficeFactory SOF = SOfficeFactory.getFactory( + tParam.getMSF()); + + log.println("creating a sheetdocument"); + xSheetDoc = SOF.createCalcDoc(null); + } + + /** + * Disposes Spreadsheet document. + */ + @Override + protected void cleanup(TestParameters tParam, PrintWriter log) { + log.println(" disposing xSheetDoc "); + + try { + XCloseable oCloser = UnoRuntime.queryInterface( + XCloseable.class, xSheetDoc); + oCloser.close(true); + } catch (com.sun.star.util.CloseVetoException e) { + log.println("Couldn't close document"); + } catch (com.sun.star.lang.DisposedException e) { + log.println("Document already disposed"); + } catch (NullPointerException e) { + log.println("Couldn't get XCloseable"); + } + + util.utils.pause(500); + + log.println("... Done"); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Retrieves a collection of spreadsheets from the document and takes one of + * them. Fills some cell in the spreadsheet. The retrieved spreadsheet is the + * instance of the service <code>com.sun.star.sheet.Spreadsheet</code>. + * Object relations created : + * <ul> + * <li> <code>'noArray'</code> for + * {@link ifc.sheet._XArrayFormulaRange}(to avoid the test of + * the interface <code>XArrayFormulaRange</code>)</li> + * </ul> + * @see com.sun.star.sheet.XArrayFormulaRange + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters Param, + PrintWriter log) throws Exception { + XInterface oObj = null; + + log.println("getting sheets"); + + XSpreadsheets xSpreadsheets = xSheetDoc.getSheets(); + + log.println("getting a sheet"); + + XSpreadsheet oSheet = null; + XIndexAccess oIndexAccess = UnoRuntime.queryInterface( + XIndexAccess.class, xSpreadsheets); + + oSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class), + oIndexAccess.getByIndex(0)); + + log.println("filling some cells"); + + oSheet.getCellByPosition(5, 5).setValue(15); + oSheet.getCellByPosition(1, 4).setValue(10); + oSheet.getCellByPosition(2, 0).setValue(-5.15); + oSheet.getCellByPosition(8, 8).setFormula("= B5 + C1"); + // fill cells for XSheetOtline::autooutline + oSheet.getCellByPosition(6, 6).setValue(3); + oSheet.getCellByPosition(7, 6).setValue(3); + oSheet.getCellByPosition(8, 6).setFormula("= SUM(G7:H7)"); + oSheet.getCellByPosition(9, 6).setFormula("= G7*I7"); + + oObj = UnoRuntime.queryInterface(XInterface.class, oSheet); + + log.println("creating a new environment for object"); + + TestEnvironment tEnv = new TestEnvironment(oObj); + + // set the address ranges of the cells (see values set above): for e.g. XSheetOutline test + tEnv.addObjRelation("CellRangeAddress", + new CellRangeAddress((short)0, 6, 6, 8, 8)); + tEnv.addObjRelation("CellRangeSubAddress", + new CellRangeAddress((short)0, 6, 6, 7, 8)); + // pick a cell with a formula for XSheetAuditing, a dependent cell and a precedent cell + tEnv.addObjRelation("XSheetAuditing.CellAddress", new CellAddress((short)0, 8, 6)); + tEnv.addObjRelation("XSheetAuditing.PrecedentCellAddress", new CellAddress((short)0, 7, 6)); + tEnv.addObjRelation("XSheetAuditing.DependentCellAddress", new CellAddress((short)0, 9, 6)); + + // add an existing sheet for linking + tEnv.addObjRelation("XSheetLinkable.LinkSheet", "ScSheetLinksObj.ods"); + + //adding Scenario and with that a ScenarioSheet-Relation for Scenario and XScenarioEnhanced + XScenariosSupplier scene = UnoRuntime.queryInterface( + XScenariosSupplier.class, + tEnv.getTestObject()); + scene.getScenarios() + .addNewByName("Scenario", + new CellRangeAddress[] { + new CellRangeAddress((short) 0, 0, 0, 10, 10) + }, "Comment"); + + XSpreadsheet sSheet = null; + + try { + sSheet = UnoRuntime.queryInterface( + XSpreadsheet.class, + xSpreadsheets.getByName("Scenario")); + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("Couldn't get Scenario"); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Couldn't get Scenario"); + } + + tEnv.addObjRelation("ScenarioSheet", sSheet); + + log.println("adding ObjRelation 'noArray' to avoid the test" + + " 'XArrayFormulaRange'"); + tEnv.addObjRelation("noArray", "ScTableSheetObj"); + + XPropertySet PropSet = UnoRuntime.queryInterface( + XPropertySet.class, oObj); + tEnv.addObjRelation("PropSet", PropSet); + tEnv.addObjRelation("SHEET", oSheet); + + // add expected results for the XCellRangesQuery interface test + String[] expectedResults = new String[7]; + expectedResults[_XCellRangesQuery.QUERYCOLUMNDIFFERENCES] = "Sheet1.B5;Sheet1.C1"; + expectedResults[_XCellRangesQuery.QUERYCONTENTCELLS] = "Sheet1.B5;Sheet1.C1;Sheet1.F6"; + expectedResults[_XCellRangesQuery.QUERYEMPTYCELLS] = "Sheet1.A1 ... Sheet1.B1 ... Sheet1.B6 ... Sheet1.C2 ... Sheet1.D1 ... Sheet1.F1 ... Sheet1.F7 ... Sheet1.G1"; + expectedResults[_XCellRangesQuery.QUERYFORMULACELLS] = "Sheet1.I7:J7;Sheet1.I9"; + expectedResults[_XCellRangesQuery.QUERYINTERSECTION] = "Sheet1.D4"; + expectedResults[_XCellRangesQuery.QUERYROWDIFFERENCES] = "Sheet1.A5;Sheet1.C1"; + expectedResults[_XCellRangesQuery.QUERYVISIBLECELLS] = "Sheet1.A2"; + tEnv.addObjRelation("XCellRangesQuery.EXPECTEDRESULTS", + expectedResults); + + // for XFormulaQuery interface test + try { + tEnv.addObjRelation("MAKEENTRYINCELL", + oSheet.getCellByPosition(15, 15)); + tEnv.addObjRelation("RANGEINDICES", new int[] { 0, 0 }); + tEnv.addObjRelation("EXPECTEDDEPENDENTVALUES", + new int[] { 0, 255, 0, 65535 }); + tEnv.addObjRelation("EXPECTEDPRECEDENTVALUES", + new int[] { 0, 255, 0, 65535 }); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println( + "Cannot add the necessary object relation for XFormulaQuery test."); + } + + // XSearchable interface test + try { + tEnv.addObjRelation("XSearchable.MAKEENTRYINCELL", + new XCell[] { + oSheet.getCellByPosition(15, 15), + oSheet.getCellByPosition(15, 16) + }); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + e.printStackTrace(log); + log.println( + "Cannot make required object relation 'XSearchable.MAKEENTRYINCELL'."); + } + + //Adding relation for util.XSortable + final PrintWriter finalLog = log; + final XCellRange oTable = oSheet; + tEnv.addObjRelation("SORTCHECKER", + new ifc.util._XSortable.XSortChecker() { + PrintWriter out = finalLog; + + public void setPrintWriter(PrintWriter log) { + out = log; + } + + public void prepareToSort() { + try { + oTable.getCellByPosition(0, 0).setValue(4); + oTable.getCellByPosition(0, 1).setFormula("b"); + oTable.getCellByPosition(0, 2).setValue(3); + oTable.getCellByPosition(0, 3).setValue(23); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + out.println("Exception while checking sort"); + } + } + + public boolean checkSort(boolean isSortNumbering, + boolean isSortAscending) { + out.println("Sort checking..."); + + boolean res = false; + String[] value = new String[4]; + + for (int i = 0; i < 4; i++) { + try { + XCell cell = oTable.getCellByPosition(0, i); + value[i] = cell.getFormula(); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + out.println("Exception while checking sort"); + } + } + + if (isSortNumbering) { + if (isSortAscending) { + out.println("Sorting ascending"); + + String[] rightVal = { "3", "4", "23", "b" }; + String[] vals = { value[0], value[1], value[2], value[3] }; + res = ValueComparer.equalValue(vals, rightVal); + out.println("Expected 3, 4, 23, b"); + out.println("getting: " + value[0] + ", " + + value[1] + ", " + value[2] + ", " + + value[3]); + } else { + String[] rightVal = { "b", "23", "4", "3" }; + String[] vals = { value[0], value[1], value[2], value[3] }; + res = ValueComparer.equalValue(vals, rightVal); + out.println("Expected b, 23, 4, 3"); + out.println("getting: " + value[0] + ", " + + value[1] + ", " + value[2] + ", " + + value[3]); + } + } else { + if (isSortAscending) { + String[] rightVal = { "3", "4", "23", "b" }; + res = ValueComparer.equalValue(value, rightVal); + out.println("Expected 3, 4, 23, b"); + out.println("getting: " + value[0] + ", " + + value[1] + ", " + value[2] + ", " + + value[3]); + } else { + String[] rightVal = { "b", "23", "4", "3" }; + res = ValueComparer.equalValue(value, rightVal); + out.println("Expected b, 23, 4, 3"); + out.println("getting: " + value[0] + ", " + + value[1] + ", " + value[2] + ", " + + value[3]); + } + } + + if (res) { + out.println("Sorted correctly"); + } else { + out.println("Sorted incorrectly"); + } + + return res; + } + }); + + return tEnv; + } +} diff --git a/qadevOOo/tests/java/mod/_sc/XMLContentExporter.java b/qadevOOo/tests/java/mod/_sc/XMLContentExporter.java new file mode 100644 index 000000000..098866ff0 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/XMLContentExporter.java @@ -0,0 +1,190 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; +import util.XMLTools; + +import com.sun.star.container.XIndexAccess; +import com.sun.star.document.XExporter; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.table.XCell; +import com.sun.star.uno.Any; +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.xml.sax.XDocumentHandler; + +/** + * Test for object which is represented by service + * <code>com.sun.star.comp.Calc.XMLContentExporter</code>. <p> + * Object implements the following interfaces : + * <ul> + * <li><code>com::sun::star::lang::XInitialization</code></li> + * <li><code>com::sun::star::document::ExportFilter</code></li> + * <li><code>com::sun::star::document::XFilter</code></li> + * <li><code>com::sun::star::document::XExporter</code></li> + * <li><code>com::sun::star::beans::XPropertySet</code></li> + * </ul> + * @see com.sun.star.lang.XInitialization + * @see com.sun.star.document.ExportFilter + * @see com.sun.star.document.XFilter + * @see com.sun.star.document.XExporter + * @see com.sun.star.beans.XPropertySet + * @see ifc.lang._XInitialization + * @see ifc.document._ExportFilter + * @see ifc.document._XFilter + * @see ifc.document._XExporter + * @see ifc.beans._XPropertySet + */ +public class XMLContentExporter extends TestCase { + + static XComponent xSheetDoc; + + /** + * New spreadsheet document created. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + log.println( "creating a calc document" ); + xSheetDoc = SOF.openDoc("scalc","_blank"); + } + + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xCalcDoc " ); + util.DesktopTools.closeDoc(xSheetDoc); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Creates an instance of the service + * <code>com.sun.star.comp.Calc.XMLContentExporter</code> with + * argument which is an implementation of <code>XDocumentHandler</code> + * and which can check if required tags and character data is + * exported. <p> + * The calc document is set as a source document for exporter + * created. A cell in the sheet is set to some value. This made + * for checking if this value is successfully exported within + * the document content. + * Object relations created : + * <ul> + * <li> <code>'MediaDescriptor'</code> for + * {@link ifc.document._XFilter} interface </li> + * <li> <code>'XFilter.Checker'</code> for + * {@link ifc.document._XFilter} interface </li> + * <li> <code>'SourceDocument'</code> for + * {@link ifc.document._XExporter} interface </li> + * </ul> + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters tParam, PrintWriter log) throws Exception { + + XMultiServiceFactory xMSF = tParam.getMSF() ; + XInterface oObj = null; + final String CELL_TEXT = "XMLContentExporter"; + + ContentFilterChecker Filter = new ContentFilterChecker(log); + + Any arg = new Any(new Type(XDocumentHandler.class), Filter); + oObj = (XInterface) xMSF.createInstanceWithArguments( + "com.sun.star.comp.Calc.XMLContentExporter", + new Object[] {arg} ); + XExporter xEx = UnoRuntime.queryInterface + (XExporter.class,oObj); + xEx.setSourceDocument(xSheetDoc); + + // Setting some string to a cell + XSpreadsheetDocument xSpreadsheetDoc = UnoRuntime.queryInterface(XSpreadsheetDocument.class, xSheetDoc); + XSpreadsheets xSpreadsheets = xSpreadsheetDoc.getSheets(); + XIndexAccess xSheetsIndexArray = UnoRuntime.queryInterface(XIndexAccess.class, xSpreadsheets); + XSpreadsheet xSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class),xSheetsIndexArray.getByIndex(0)); + XCell xCell = xSheet.getCellByPosition(0, 0); + xCell.setFormula(CELL_TEXT); + + log.println("fill sheet 1 with content..."); + util.CalcTools.fillCalcSheetWithContent(xSheetDoc, 1, 1, 1, 5, 5); + + // adding tags which must be contained in XML output + Filter.addTag("office:document-content"); + Filter.addTagEnclosed("office:body", "office:document-content"); + Filter.addTagEnclosed("office:script", "office:document-content"); + Filter.addTagEnclosed("table:table", "office:body"); + Filter.addTagEnclosed("table:table-column", "table:table"); + Filter.addTagEnclosed("table:table-row", "table:table"); + Filter.addTagEnclosed("table:table-cell", "table:table-row"); + Filter.addTagEnclosed("text:p", "table:table-cell"); + Filter.addCharactersEnclosed(CELL_TEXT, "text:p"); + + // create testobject here + log.println( "creating a new environment" ); + TestEnvironment tEnv = new TestEnvironment( oObj ); + + tEnv.addObjRelation("MediaDescriptor", XMLTools.createMediaDescriptor( + new String[] {"FilterName"}, + new Object[] {"scalc: StarOffice XML (Calc)"})); + tEnv.addObjRelation("SourceDocument",xSheetDoc); + tEnv.addObjRelation("XFilter.Checker", Filter); + return tEnv; + + } + + /** + * This class checks the XML for tags and data required and returns + * checking result to <code>XFilter</code> interface test. All + * the information about errors occurred in XML data is written + * to log specified. + * @see ifc.document._XFilter + */ + private class ContentFilterChecker extends XMLTools.XMLTagsChecker + implements ifc.document._XFilter.FilterChecker { + + /** + * Creates a class which will write information + * into log specified. + */ + private ContentFilterChecker(PrintWriter log) { + super(log) ; + } + + /** + * <code>_XFilter.FilterChecker</code> interface method + * which returns the result of XML checking. + * @return <code>true</code> if the XML data exported was + * valid (i.e. all necessary tags and character data exists), + * <code>false</code> if some errors occurred. + */ + public boolean checkFilter() { + return checkTags(); + } + } +} + diff --git a/qadevOOo/tests/java/mod/_sc/XMLContentImporter.java b/qadevOOo/tests/java/mod/_sc/XMLContentImporter.java new file mode 100644 index 000000000..5f3d65547 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/XMLContentImporter.java @@ -0,0 +1,180 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; + +import com.sun.star.document.XImporter; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** + * Test for object which is represented by service + * <code>com.sun.star.comp.Calc.XMLContentImporter</code>. <p> + * Object implements the following interfaces : + * <ul> + * <li><code>com::sun::star::lang::XInitialization</code></li> + * <li><code>com::sun::star::document::XImporter</code></li> + * <li><code>com::sun::star::document::XFilter</code></li> + * <li><code>com::sun::star::document::ImportFilter</code></li> + * <li><code>com::sun::star::beans::XPropertySet</code></li> + * <li><code>com::sun::star::xml::sax::XDocumentHandler</code></li> + + * </ul> + * @see com.sun.star.lang.XInitialization + * @see com.sun.star.document.XImporter + * @see com.sun.star.document.XFilter + * @see com.sun.star.document.ImportFilter + * @see com.sun.star.beans.XPropertySet + * @see com.sun.star.xml.sax.XDocumentHandler + * @see ifc.lang._XInitialization + * @see ifc.document._XImporter + * @see ifc.document._XFilter + * @see ifc.document._XExporter + * @see ifc.beans._XPropertySet + * @see ifc.xml.sax._XDocumentHandler + */ +public class XMLContentImporter extends TestCase { + private XSpreadsheetDocument xSheetDoc; + static XComponent comp ; + + /** + * New spreadsheet document created. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + + log.println( "creating a Spreadsheet document" ); + xSheetDoc = SOF.createCalcDoc( null ); + comp = UnoRuntime.queryInterface + (XComponent.class, xSheetDoc) ; + } + + /** + * Spreadsheet document destroyed. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing document " ); + util.DesktopTools.closeDoc(comp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Creates an instance of the service + * <code>com.sun.star.comp.Calc.XMLContentImporter</code><p> + * + * The calc document is set as a target document for importer. + * Imported XML-data contains only content tags including table + * with test table name. + * After import table name getting from + * target document is checked. + * Object relations created : + * <ul> + * <li> <code>'XDocumentHandler.XMLData'</code> for + * {@link ifc.xml.sax._XDocumentHandler} interface </li> + * <li> <code>'XDocumentHandler.ImportChecker'</code> for + * {@link ifc.xml.sax._XDocumentHandler} interface </li> + * <li> <code>'TargetDocument'</code> for + * {@link ifc.document._XImporter} interface </li> + * </ul> + */ + @Override + public TestEnvironment createTestEnvironment( TestParameters tParam, + PrintWriter log ) + throws Exception { + + XInterface oObj = null; + Object oInt = null ; + + // creation of testobject here + // first we write what we are intend to do to log file + log.println( "creating a test environment" ); + + XMultiServiceFactory xMSF = tParam.getMSF() ; + + oInt = xMSF.createInstance + ("com.sun.star.comp.Calc.XMLContentImporter") ; + XImporter imp = UnoRuntime.queryInterface + (XImporter.class, oInt) ; + imp.setTargetDocument(comp); + + oObj = (XInterface) oInt ; + + // create testobject here + log.println( "creating a new environment for Paragraph object" ); + TestEnvironment tEnv = new TestEnvironment( oObj ); + + // adding relations + tEnv.addObjRelation("TargetDocument", comp) ; + + final String impValue = "XMLContentImporter_test" ; + // adding relation for XDocumentHandler + String[][] xml = new String[][] { + {"start", "office:document-content", + "xmlns:office", "CDATA", "http://openoffice.org/2000/office", + "xmlns:text", "CDATA", "http://openoffice.org/2000/text", + "xmlns:table", "CDATA", "http://openoffice.org/2000/table", + "office:class", "CDATA", "spreadsheet" + }, + {"start", "office:body"}, + {"start", "table:table", + "table:name", "CDATA", impValue}, + {"end", "table:table"}, + {"end", "office:body"}, + {"end", "office:document-content"}} ; + + tEnv.addObjRelation("XDocumentHandler.XMLData", xml) ; + + //save to log content before import + final PrintWriter fLog = log; + final XSpreadsheets xSheets = xSheetDoc.getSheets(); + + log.println("Sheets before importing :") ; + String[] names = xSheets.getElementNames() ; + for (int i = 0; i < names.length; i++) { + log.println(" " + names[i]) ; + } + + tEnv.addObjRelation("XDocumentHandler.ImportChecker", + new ifc.xml.sax._XDocumentHandler.ImportChecker() { + public boolean checkImport() { + fLog.println("Sheet names :") ; + String[] snames = xSheets.getElementNames() ; + for (int i = 0; i < snames.length; i++) { + fLog.println(" " + snames[i]) ; + } + return xSheets.hasByName(impValue) ; + } + }) ; + + return tEnv; + } // finish method getTestEnvironment +} + diff --git a/qadevOOo/tests/java/mod/_sc/XMLExporter.java b/qadevOOo/tests/java/mod/_sc/XMLExporter.java new file mode 100644 index 000000000..c9edb37ab --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/XMLExporter.java @@ -0,0 +1,199 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; +import util.XMLTools; + +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XNamed; +import com.sun.star.document.XExporter; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.uno.Any; +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.xml.sax.XDocumentHandler; + +/** + * Test for object which is represented by service + * <code>com.sun.star.comp.Calc.XMLExporter</code>. <p> + * Object implements the following interfaces : + * <ul> + * <li><code>com::sun::star::lang::XInitialization</code></li> + * <li><code>com::sun::star::document::ExportFilter</code></li> + * <li><code>com::sun::star::document::XFilter</code></li> + * <li><code>com::sun::star::document::XExporter</code></li> + * <li><code>com::sun::star::beans::XPropertySet</code></li> + * </ul> + * @see com.sun.star.lang.XInitialization + * @see com.sun.star.document.ExportFilter + * @see com.sun.star.document.XFilter + * @see com.sun.star.document.XExporter + * @see com.sun.star.beans.XPropertySet + * @see ifc.lang._XInitialization + * @see ifc.document._ExportFilter + * @see ifc.document._XFilter + * @see ifc.document._XExporter + * @see ifc.beans._XPropertySet + */ +public class XMLExporter extends TestCase { + static XComponent xSheetDoc; + + /** + * New spreadsheet document created. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + log.println( "creating a calc document" ); + xSheetDoc = SOF.openDoc("scalc","_blank"); + } + + /** + * Spreadsheet document disposed + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xCalcDoc " ); + util.DesktopTools.closeDoc(xSheetDoc); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Creates an instance of the service + * <code>com.sun.star.comp.Calc.XMLExporter</code> with + * argument which is an implementation of <code>XDocumentHandler</code> + * and which can check if required tags and character data is + * exported. <p> + * The calc document is set as a source document for exporter + * created. Checking whether tags for table corresponding to some sheet + * is exported.<p> + * Object relations created : + * <ul> + * <li> <code>'MediaDescriptor'</code> for + * {@link ifc.document._XFilter} interface </li> + * <li> <code>'XFilter.Checker'</code> for + * {@link ifc.document._XFilter} interface </li> + * <li> <code>'SourceDocument'</code> for + * {@link ifc.document._XExporter} interface </li> + * </ul> + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters tParam, PrintWriter log) throws Exception { + + XMultiServiceFactory xMSF = tParam.getMSF() ; + XInterface oObj = null; + FilterChecker Filter = new FilterChecker(log); + Any arg = new Any(new Type(XDocumentHandler.class), Filter); + final String SHEET_NAME = "XMLExporter_SheetTestName"; + + oObj = (XInterface) xMSF.createInstanceWithArguments( + "com.sun.star.comp.Calc.XMLExporter", new Object[] {arg} ); + XExporter xEx = UnoRuntime.queryInterface + (XExporter.class,oObj); + xEx.setSourceDocument(xSheetDoc); + + //set name of sheet + XSpreadsheetDocument xSpreadsheetDoc = UnoRuntime.queryInterface(XSpreadsheetDocument.class, xSheetDoc); + XSpreadsheets xSpreadsheets = xSpreadsheetDoc.getSheets(); + XIndexAccess xSheetsIndexArray = UnoRuntime.queryInterface(XIndexAccess.class, xSpreadsheets); + XSpreadsheet xSheet = (XSpreadsheet) AnyConverter.toObject( + new Type(XSpreadsheet.class),xSheetsIndexArray.getByIndex(0)); + XNamed xSheetNamed = UnoRuntime.queryInterface(XNamed.class, xSheet); + xSheetNamed.setName(SHEET_NAME); + + log.println("fill sheet with content..."); + util.CalcTools.fillCalcSheetWithContent(xSheet, 3, 3, 50, 50); + + // adding tags which must be contained in XML output + Filter.addTag( new XMLTools.Tag("office:document") ); + Filter.addTagEnclosed( + new XMLTools.Tag("office:meta"), + new XMLTools.Tag("office:document") ); + Filter.addTagEnclosed( + new XMLTools.Tag("office:settings"), + new XMLTools.Tag("office:document") ); + Filter.addTagEnclosed( + new XMLTools.Tag("office:script"), + new XMLTools.Tag("office:document") ); + Filter.addTagEnclosed( + new XMLTools.Tag("office:styles"), + new XMLTools.Tag("office:document") ); + Filter.addTagEnclosed( + new XMLTools.Tag("office:body"), + new XMLTools.Tag("office:document") ); + Filter.addTagEnclosed( + new XMLTools.Tag("table:table"), + new XMLTools.Tag("office:body") ); + Filter.addTag( + new XMLTools.Tag("table:table", "table:name", SHEET_NAME) ); + + // create testobject here + log.println( "creating a new environment" ); + TestEnvironment tEnv = new TestEnvironment( oObj ); + + tEnv.addObjRelation("MediaDescriptor", XMLTools.createMediaDescriptor( + new String[] {"FilterName"}, + new Object[] {"scalc: StarOffice XML (Calc)"})); + tEnv.addObjRelation("SourceDocument",xSheetDoc); + tEnv.addObjRelation("XFilter.Checker", Filter) ; + return tEnv; + } + + /** + * This class checks the XML for tags and data required and returns + * checking result to <code>XFilter</code> interface test. All + * the information about errors occurred in XML data is written + * to log specified. + * @see ifc.document._XFilter + */ + private class FilterChecker extends XMLTools.XMLChecker + implements ifc.document._XFilter.FilterChecker { + + /** + * Creates a class which will write information + * into log specified. + */ + private FilterChecker(PrintWriter log) { + super(log, false) ; + } + /** + * <code>_XFilter.FilterChecker</code> interface method + * which returns the result of XML checking. + * @return <code>true</code> if the XML data exported was + * valid (i.e. all necessary tags and character data exists), + * <code>false</code> if some errors occurred. + */ + public boolean checkFilter() { + return check(); + } + } +} + diff --git a/qadevOOo/tests/java/mod/_sc/XMLImporter.java b/qadevOOo/tests/java/mod/_sc/XMLImporter.java new file mode 100644 index 000000000..ff5e94063 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/XMLImporter.java @@ -0,0 +1,176 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; + +import com.sun.star.document.XImporter; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.sheet.XSpreadsheets; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; +/** + * Test for object which is represented by service + * <code>com.sun.star.comp.Calc.XMLImporter</code>. <p> + * Object implements the following interfaces : + * <ul> + * <li><code>com::sun::star::lang::XInitialization</code></li> + * <li><code>com::sun::star::document::XImporter</code></li> + * <li><code>com::sun::star::document::XFilter</code></li> + * <li><code>com::sun::star::document::ImportFilter</code></li> + * <li><code>com::sun::star::beans::XPropertySet</code></li> + * <li><code>com::sun::star::xml::sax::XDocumentHandler</code></li> + + * </ul> + * @see com.sun.star.lang.XInitialization + * @see com.sun.star.document.XImporter + * @see com.sun.star.document.XFilter + * @see com.sun.star.document.ImportFilter + * @see com.sun.star.beans.XPropertySet + * @see com.sun.star.xml.sax.XDocumentHandler + * @see ifc.lang._XInitialization + * @see ifc.document._XImporter + * @see ifc.document._XFilter + * @see ifc.document._XExporter + * @see ifc.beans._XPropertySet + * @see ifc.xml.sax._XDocumentHandler + */ +public class XMLImporter extends TestCase { + + static XComponent xSheetDoc; + + /** + * New spreadsheet document created. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + + log.println( "creating a Spreadsheet document" ); + XSpreadsheetDocument xSpreadsheetDoc = SOF.createCalcDoc( null ); + xSheetDoc = UnoRuntime.queryInterface + (XComponent.class, xSpreadsheetDoc); + } + + /** + * Spreadsheet document destroyed. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing document " ); + util.DesktopTools.closeDoc(xSheetDoc); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Creates an instance of the service + * <code>com.sun.star.comp.Calc.XMLImporter</code><p> + * + * The calc document is set as a target document for importer. + * Imported tags contain new value for table name. + * After import table name getting from + * target document is checked. + * Object relations created : + * <ul> + * <li> <code>'XDocumentHandler.XMLData'</code> for + * {@link ifc.xml.sax._XDocumentHandler} interface </li> + * <li> <code>'XDocumentHandler.ImportChecker'</code> for + * {@link ifc.xml.sax._XDocumentHandler} interface </li> + * <li> <code>'TargetDocument'</code> for + * {@link ifc.document._XImporter} interface </li> + * </ul> + */ + @Override + public TestEnvironment createTestEnvironment( TestParameters tParam, + PrintWriter log ) + throws Exception { + + XInterface oObj = null; + Object oInt = null ; + final String impValue = "XMLImporter_test" ; + + // creation of testobject here + // first we write what we are intend to do to log file + log.println( "creating a test environment" ); + + XMultiServiceFactory xMSF = tParam.getMSF() ; + + oInt = xMSF.createInstance("com.sun.star.comp.Calc.XMLImporter") ; + XImporter imp = UnoRuntime.queryInterface + (XImporter.class, oInt) ; + imp.setTargetDocument(xSheetDoc); + + oObj = (XInterface) oInt ; + + // create testobject here + log.println( "creating a new environment for Paragraph object" ); + TestEnvironment tEnv = new TestEnvironment( oObj ); + + // adding relation + tEnv.addObjRelation("TargetDocument", xSheetDoc) ; + + // adding relation for XDocumentHandler + String[][] xml = new String[][] { + {"start", "office:document", + "xmlns:office", "CDATA", "http://openoffice.org/2000/office", + "xmlns:text", "CDATA", "http://openoffice.org/2000/text", + "xmlns:table", "CDATA", "http://openoffice.org/2000/table", + "office:class", "CDATA", "spreadsheet" + }, + {"start", "office:body"}, + {"start", "table:table", + "table:name", "CDATA", impValue}, + {"end", "table:table"}, + {"end", "office:body"}, + {"end", "office:document"}} ; + + tEnv.addObjRelation("XDocumentHandler.XMLData", xml) ; + + final PrintWriter fLog = log ; + XSpreadsheetDocument xSpreadsheetDoc = UnoRuntime.queryInterface(XSpreadsheetDocument.class, xSheetDoc); + final XSpreadsheets sheets = xSpreadsheetDoc.getSheets() ; + log.println("Sheets before importing :") ; + String[] names = sheets.getElementNames() ; + for (int i = 0; i < names.length; i++) { + log.println(" " + names[i]) ; + } + tEnv.addObjRelation("XDocumentHandler.ImportChecker", + new ifc.xml.sax._XDocumentHandler.ImportChecker() { + public boolean checkImport() { + fLog.println("Sheet names :") ; + String[] snames = sheets.getElementNames() ; + for (int i = 0; i < snames.length; i++) { + fLog.println(" " + snames[i]) ; + } + + return sheets.hasByName(impValue) ; + } + }) ; + + return tEnv; + } // finish method getTestEnvironment +} + diff --git a/qadevOOo/tests/java/mod/_sc/XMLMetaExporter.java b/qadevOOo/tests/java/mod/_sc/XMLMetaExporter.java new file mode 100644 index 000000000..0f49662c1 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/XMLMetaExporter.java @@ -0,0 +1,181 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; +import util.XMLTools; + +import com.sun.star.document.XDocumentPropertiesSupplier; +import com.sun.star.document.XDocumentProperties; +import com.sun.star.document.XExporter; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.uno.Any; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; +import com.sun.star.xml.sax.XDocumentHandler; + + +/** + * Test for object which is represented by service + * <code>com.sun.star.comp.Calc.XMLMetaExporter</code>. <p> + * Object implements the following interfaces : + * <ul> + * <li><code>com::sun::star::lang::XInitialization</code></li> + * <li><code>com::sun::star::document::ExportFilter</code></li> + * <li><code>com::sun::star::document::XFilter</code></li> + * <li><code>com::sun::star::document::XExporter</code></li> + * <li><code>com::sun::star::beans::XPropertySet</code></li> + * </ul> + * @see com.sun.star.lang.XInitialization + * @see com.sun.star.document.ExportFilter + * @see com.sun.star.document.XFilter + * @see com.sun.star.document.XExporter + * @see com.sun.star.beans.XPropertySet + * @see ifc.lang._XInitialization + * @see ifc.document._ExportFilter + * @see ifc.document._XFilter + * @see ifc.document._XExporter + * @see ifc.beans._XPropertySet + */ +public class XMLMetaExporter extends TestCase { + + static XComponent xSheetDoc; + + /** + * New spreadsheet document created. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + + log.println( "creating a calc document" ); + xSheetDoc = SOF.openDoc("scalc","_blank"); + } + + /** + * Spreadsheet document disposed + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xCalcDoc " ); + util.DesktopTools.closeDoc(xSheetDoc); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Creates an instance of the service + * <code>com.sun.star.comp.Calc.XMLMetaExporter</code> with + * argument which is an implementation of <code>XDocumentHandler</code> + * and which can check if required tags and character data is + * exported. <p> + * The calc document is set as a source document for exporter + * created. A meta property 'Title' is set to some value. This made + * for checking if this value is successfully exported within + * the document meta information. + * Object relations created : + * <ul> + * <li> <code>'MediaDescriptor'</code> for + * {@link ifc.document._XFilter} interface </li> + * <li> <code>'XFilter.Checker'</code> for + * {@link ifc.document._XFilter} interface </li> + * <li> <code>'SourceDocument'</code> for + * {@link ifc.document._XExporter} interface </li> + * </ul> + */ + @Override + public TestEnvironment createTestEnvironment( TestParameters tParam, + PrintWriter log ) + throws Exception { + + XMultiServiceFactory xMSF = tParam.getMSF() ; + XInterface oObj = null; + FilterChecker filter = new FilterChecker(log); + Any arg = new Any(new Type(XDocumentHandler.class),filter); + + // Checking tags existence and changed property value + filter.addTag(new XMLTools.Tag ("office:document-meta")); + filter.addTag(new XMLTools.Tag ("office:meta")); + filter.addCharactersEnclosed("TestDocument", + new XMLTools.Tag ("dc:title")); + + oObj = (XInterface) xMSF.createInstanceWithArguments( + "com.sun.star.comp.Calc.XMLMetaExporter", new Object[] {arg}); + XExporter xEx = UnoRuntime.queryInterface + (XExporter.class,oObj); + xEx.setSourceDocument(xSheetDoc); + + // Obtaining and changing property values + XDocumentPropertiesSupplier xPropSup = UnoRuntime.queryInterface + (XDocumentPropertiesSupplier.class, xSheetDoc); + final XDocumentProperties xDocProps = xPropSup.getDocumentProperties(); + xDocProps.setTitle("TestDocument"); + + log.println("fill sheet 1 with content..."); + util.CalcTools.fillCalcSheetWithContent(xSheetDoc,1, 3, 3, 50, 50); + + // create testobject here + log.println( "creating a new environment" ); + TestEnvironment tEnv = new TestEnvironment( oObj ); + + tEnv.addObjRelation("MediaDescriptor", XMLTools.createMediaDescriptor( + new String[] {"FilterName"}, + new Object[] {"scalc: StarOffice XML (Calc)"})); + tEnv.addObjRelation("SourceDocument",xSheetDoc); + tEnv.addObjRelation("XFilter.Checker", filter) ; + return tEnv; + + } + + /** + * This class checks the XML for tags and data required and returns + * checking result to <code>XFilter</code> interface test. All + * the information about errors occurred in XML data is written + * to log specified. + * @see ifc.document._XFilter + */ + private class FilterChecker extends XMLTools.XMLChecker + implements ifc.document._XFilter.FilterChecker { + + /** + * Creates a class which will write information + * into log specified. + */ + private FilterChecker(PrintWriter log) { + super(log,false) ; + } + /** + * <code>_XFilter.FilterChecker</code> interface method + * which returns the result of XML checking. + * @return <code>true</code> if the XML data exported was + * valid (i.e. all necessary tags and character data exists), + * <code>false</code> if some errors occurred. + */ + public boolean checkFilter() { + return check(); + } + } +} + diff --git a/qadevOOo/tests/java/mod/_sc/XMLMetaImporter.java b/qadevOOo/tests/java/mod/_sc/XMLMetaImporter.java new file mode 100644 index 000000000..b7e26d0bb --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/XMLMetaImporter.java @@ -0,0 +1,171 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; + +import com.sun.star.document.XDocumentPropertiesSupplier; +import com.sun.star.document.XDocumentProperties; +import com.sun.star.document.XImporter; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** + * Test for object which is represented by service + * <code>com.sun.star.comp.Calc.XMLMetaImporter</code>. <p> + * Object implements the following interfaces : + * <ul> + * <li><code>com::sun::star::lang::XInitialization</code></li> + * <li><code>com::sun::star::document::XImporter</code></li> + * <li><code>com::sun::star::document::XFilter</code></li> + * <li><code>com::sun::star::document::ImportFilter</code></li> + * <li><code>com::sun::star::beans::XPropertySet</code></li> + * <li><code>com::sun::star::xml::sax::XDocumentHandler</code></li> + + * </ul> + * @see com.sun.star.lang.XInitialization + * @see com.sun.star.document.XImporter + * @see com.sun.star.document.XFilter + * @see com.sun.star.document.ImportFilter + * @see com.sun.star.beans.XPropertySet + * @see com.sun.star.xml.sax.XDocumentHandler + * @see ifc.lang._XInitialization + * @see ifc.document._XImporter + * @see ifc.document._XFilter + * @see ifc.document._XExporter + * @see ifc.beans._XPropertySet + * @see ifc.xml.sax._XDocumentHandler + */ +public class XMLMetaImporter extends TestCase { + private XSpreadsheetDocument xSheetDoc; + static XComponent comp ; + + /** + * New spreadsheet document created. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + + log.println( "creating a Spreadsheet document" ); + xSheetDoc = SOF.createCalcDoc( null ); + comp = UnoRuntime.queryInterface + (XComponent.class, xSheetDoc) ; + } + + /** + * Spreadsheet document destroyed. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing document " ); + util.DesktopTools.closeDoc(comp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Creates an instance of the service + * <code>com.sun.star.comp.Calc.XMLMetaImporter</code><p> + * + * The calc document is set as a target document for importer. + * Imported XML-data contains only meta tags including title tag + * with test title name. + * After import title name getting from + * target document is checked. + * Object relations created : + * <ul> + * <li> <code>'XDocumentHandler.XMLData'</code> for + * {@link ifc.xml.sax._XDocumentHandler} interface </li> + * <li> <code>'XDocumentHandler.ImportChecker'</code> for + * {@link ifc.xml.sax._XDocumentHandler} interface </li> + * <li> <code>'TargetDocument'</code> for + * {@link ifc.document._XImporter} interface </li> + * </ul> + */ + @Override + public TestEnvironment createTestEnvironment( TestParameters tParam, + PrintWriter log ) + throws Exception { + + XInterface oObj = null; + Object oInt = null ; + final String impTitle = "XMLMetaImporter" ; + + // creation of testobject here + // first we write what we are intend to do to log file + log.println( "creating a test environment" ); + + XMultiServiceFactory xMSF = tParam.getMSF() ; + + oInt = xMSF.createInstance + ("com.sun.star.comp.Calc.XMLMetaImporter") ; + XImporter imp = UnoRuntime.queryInterface + (XImporter.class, oInt) ; + imp.setTargetDocument(comp) ; + + oObj = (XInterface) oInt ; + + // create testobject here + log.println( "creating a new environment for Paragraph object" ); + TestEnvironment tEnv = new TestEnvironment( oObj ); + + // adding relation + tEnv.addObjRelation("TargetDocument", comp) ; + + // adding relation for XDocumentHandler + String[][] xml = new String[][] { + {"start", "office:document-meta" , + "xmlns:office", "CDATA", "http://openoffice.org/2000/office", + "xmlns:meta", "CDATA", "http://openoffice.org/2000/meta", + "xmlns:dc", "CDATA", "http://purl.org/dc/elements/1.1/"}, + {"start", "office:meta"} , + {"start", "dc:title"}, + {"chars", impTitle}, + {"end", "dc:title"}, + {"end", "office:meta"}, + {"end", "office:document-meta"}} ; + + tEnv.addObjRelation("XDocumentHandler.XMLData", xml) ; + + XDocumentPropertiesSupplier xPropSup = UnoRuntime.queryInterface + (XDocumentPropertiesSupplier.class, xSheetDoc); + final XDocumentProperties xDocProps = xPropSup.getDocumentProperties(); + final PrintWriter logF = log ; + + tEnv.addObjRelation("XDocumentHandler.ImportChecker", + new ifc.xml.sax._XDocumentHandler.ImportChecker() { + public boolean checkImport() { + String title = xDocProps.getTitle(); + logF.println("Title returned = '" + title + "'") ; + return impTitle.equals(title) ; + } + }) ; + + return tEnv; + } // finish method getTestEnvironment +} + diff --git a/qadevOOo/tests/java/mod/_sc/XMLSettingsExporter.java b/qadevOOo/tests/java/mod/_sc/XMLSettingsExporter.java new file mode 100644 index 000000000..9386a233d --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/XMLSettingsExporter.java @@ -0,0 +1,182 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; +import util.XMLTools; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.document.XExporter; +import com.sun.star.frame.XController; +import com.sun.star.frame.XModel; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.uno.Any; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; +import com.sun.star.xml.sax.XDocumentHandler; + +/** + * Test for object which is represented by service + * <code>com.sun.star.comp.Calc.XMLSettingsExporter</code>. <p> + * Object implements the following interfaces : + * <ul> + * <li><code>com::sun::star::lang::XInitialization</code></li> + * <li><code>com::sun::star::document::ExportFilter</code></li> + * <li><code>com::sun::star::document::XFilter</code></li> + * <li><code>com::sun::star::document::XExporter</code></li> + * <li><code>com::sun::star::beans::XPropertySet</code></li> + * </ul> + * @see com.sun.star.lang.XInitialization + * @see com.sun.star.document.ExportFilter + * @see com.sun.star.document.XFilter + * @see com.sun.star.document.XExporter + * @see com.sun.star.beans.XPropertySet + * @see ifc.lang._XInitialization + * @see ifc.document._ExportFilter + * @see ifc.document._XFilter + * @see ifc.document._XExporter + * @see ifc.beans._XPropertySet + */ +public class XMLSettingsExporter extends TestCase { + + static XComponent xSheetDoc; + + /** + * New spreadsheet document created. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + + log.println( "creating a calc document" ); + xSheetDoc = SOF.openDoc("scalc","_blank"); + } + + /** + * Spreadsheet document disposed + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xCalcDoc " ); + util.DesktopTools.closeDoc(xSheetDoc); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Creates an instance of the service + * <code>com.sun.star.comp.Calc.XMLSettingsExporter</code> with + * argument which is an implementation of <code>XDocumentHandler</code> + * and which can check if required tags and character data is + * exported. <p> + * The calc document is set as a source document for exporter + * created. Sets settings' property 'ShowGrid' to 'false', then checks + * it in the exported xml document.<p> + * Object relations created : + * <ul> + * <li> <code>'MediaDescriptor'</code> for + * {@link ifc.document._XFilter} interface </li> + * <li> <code>'XFilter.Checker'</code> for + * {@link ifc.document._XFilter} interface </li> + * <li> <code>'SourceDocument'</code> for + * {@link ifc.document._XExporter} interface </li> + * </ul> + */ + @Override + public TestEnvironment createTestEnvironment( TestParameters tParam, + PrintWriter log ) + throws Exception { + + XMultiServiceFactory xMSF = tParam.getMSF() ; + XInterface oObj = null; + SettingsFilterChecker filter = new SettingsFilterChecker(log); + Any arg = new Any(new Type(XDocumentHandler.class), filter); + oObj = (XInterface) xMSF.createInstanceWithArguments( + "com.sun.star.comp.Calc.XMLSettingsExporter", + new Object[] {arg} ); + XExporter xEx = UnoRuntime.queryInterface + (XExporter.class,oObj); + xEx.setSourceDocument(xSheetDoc); + + //set some settings + XModel xSheetModel = UnoRuntime.queryInterface(XModel.class, xSheetDoc); + XController xController = xSheetModel.getCurrentController(); + XPropertySet xPropSet = UnoRuntime.queryInterface(XPropertySet.class, xController); + xPropSet.setPropertyValue("ShowGrid", "false"); + + util.CalcTools.fillCalcSheetWithContent(xSheetDoc, 0, 3, 3, 50, 50); + + //Create and prepare filter + // adding tags which must be contained in XML output + filter.addTag(new XMLTools.Tag("office:document-settings") ); + filter.addTagEnclosed( + new XMLTools.Tag("office:settings"), + new XMLTools.Tag("office:document-settings") ); + filter.addCharactersEnclosed( + "false", + new XMLTools.Tag("config:config-item", "config:name", "ShowGrid") ); + + // create testobject here + log.println( "creating a new environment" ); + TestEnvironment tEnv = new TestEnvironment( oObj ); + + tEnv.addObjRelation("MediaDescriptor", XMLTools.createMediaDescriptor( + new String[] {"FilterName"}, + new Object[] {"scalc: StarOffice XML (Calc)"})); + tEnv.addObjRelation("SourceDocument",xSheetDoc); + tEnv.addObjRelation("XFilter.Checker", filter) ; + return tEnv; + } + + /** + * This class checks the XML for tags and data required and returns + * checking result to <code>XFilter</code> interface test. All + * the information about errors occurred in XML data is written + * to log specified. + * @see ifc.document._XFilter + */ + private class SettingsFilterChecker extends XMLTools.XMLChecker + implements ifc.document._XFilter.FilterChecker { + + /** + * Creates a class which will write information + * into log specified. + */ + private SettingsFilterChecker(PrintWriter log) { + super(log, false) ; + } + /** + * <code>_XFilter.FilterChecker</code> interface method + * which returns the result of XML checking. + * @return <code>true</code> if the XML data exported was + * valid (i.e. all necessary tags and character data exists), + * <code>false</code> if some errors occurred. + */ + public boolean checkFilter() { + return check(); + } + } +} + diff --git a/qadevOOo/tests/java/mod/_sc/XMLSettingsImporter.java b/qadevOOo/tests/java/mod/_sc/XMLSettingsImporter.java new file mode 100644 index 000000000..fc83d3e3b --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/XMLSettingsImporter.java @@ -0,0 +1,199 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.document.XImporter; +import com.sun.star.frame.XController; +import com.sun.star.frame.XModel; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** + * Test for object which is represented by service + * <code>com.sun.star.comp.Calc.XMLSettingsImporter</code>. <p> + * Object implements the following interfaces : + * <ul> + * <li><code>com::sun::star::lang::XInitialization</code></li> + * <li><code>com::sun::star::document::XImporter</code></li> + * <li><code>com::sun::star::document::XFilter</code></li> + * <li><code>com::sun::star::document::ImportFilter</code></li> + * <li><code>com::sun::star::beans::XPropertySet</code></li> + * <li><code>com::sun::star::xml::sax::XDocumentHandler</code></li> + + * </ul> + * @see com.sun.star.lang.XInitialization + * @see com.sun.star.document.XImporter + * @see com.sun.star.document.XFilter + * @see com.sun.star.document.ImportFilter + * @see com.sun.star.beans.XPropertySet + * @see com.sun.star.xml.sax.XDocumentHandler + * @see ifc.lang._XInitialization + * @see ifc.document._XImporter + * @see ifc.document._XFilter + * @see ifc.document._XExporter + * @see ifc.beans._XPropertySet + * @see ifc.xml.sax._XDocumentHandler + */ +public class XMLSettingsImporter extends TestCase { + private XSpreadsheetDocument xSheetDoc; + static XComponent comp ; + + /** + * New spreadsheet document created. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + + log.println( "creating a Spreadsheet document" ); + xSheetDoc = SOF.createCalcDoc( null ); + comp = UnoRuntime.queryInterface + (XComponent.class, xSheetDoc) ; + } + + /** + * Spreadsheet document destroyed. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing document " ); + util.DesktopTools.closeDoc(comp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Creates an instance of the service + * <code>com.sun.star.comp.Calc.XMLSettingsImporter</code><p> + * + * The calc document is set as a target document for importer. + * Imported XML-data contains only settings tags including tag + * with new number of iteration steps. + * After import 'IterationCount' property getting from + * target document is checked. + * Object relations created : + * <ul> + * <li> <code>'XDocumentHandler.XMLData'</code> for + * {@link ifc.xml.sax._XDocumentHandler} interface </li> + * <li> <code>'XDocumentHandler.ImportChecker'</code> for + * {@link ifc.xml.sax._XDocumentHandler} interface </li> + * <li> <code>'TargetDocument'</code> for + * {@link ifc.document._XImporter} interface </li> + * </ul> + */ + @Override + public TestEnvironment createTestEnvironment( TestParameters tParam, + PrintWriter log ) + throws Exception { + + XInterface oObj = null; + Object oInt = null ; + + // creation of testobject here + // first we write what we are intend to do to log file + log.println( "creating a test environment" ); + + XMultiServiceFactory xMSF = tParam.getMSF() ; + final XPropertySet xPropSet ; + + oInt = xMSF.createInstance + ("com.sun.star.comp.Calc.XMLSettingsImporter") ; + XImporter imp = UnoRuntime.queryInterface + (XImporter.class, oInt) ; + imp.setTargetDocument(comp) ; + + XModel xSheetModel = UnoRuntime.queryInterface(XModel.class, xSheetDoc); + XController xController = xSheetModel.getCurrentController(); + xPropSet = UnoRuntime.queryInterface(XPropertySet.class, xController); + + oObj = (XInterface) oInt ; + + // create testobject here + log.println( "creating a new environment for Paragraph object" ); + TestEnvironment tEnv = new TestEnvironment( oObj ); + + // adding relation + tEnv.addObjRelation("TargetDocument", comp) ; + + // adding relation for XDocumentHandler + String[][] xml = new String[][] { + {"start", "office:document-settings", + "xmlns:office", "CDATA", "http://openoffice.org/2000/office", + "xmlns:xlink", "CDATA", "http://www.w3.org/1999/xlink", + "xmlns:config", "CDATA", "http://openoffice.org/2001/config"}, + {"start", "office:settings"}, + {"start", "config:config-item-set", + "config:name", "CDATA", "view-settings"}, + {"start", "config:config-item-map-indexed", + "config:name", "CDATA", "Views"}, + {"start", "config:config-item-map-entry"}, + {"start", "config:config-item", + "config:name", "CDATA", "ShowGrid", + "config:type", "CDATA", "boolean"}, + {"chars", "false"}, + {"end", "config:config-item"}, + {"start", "config:config-item", + "config:name", "CDATA", "ZoomType", + "config:type", "CDATA", "short"}, + {"chars", "0"}, + {"start", "config:config-item", + "config:name", "CDATA", "ZoomValue", + "config:type", "CDATA", "int"}, + {"chars", "124"}, + {"end", "config:config-item"}, + {"end", "config:config-item"}, + {"end", "config:config-item-map-entry"}, + {"end", "config:config-item-map-indexed"}, + {"end", "config:config-item-set"}, + {"end", "office:settings"}, + {"end", "office:document-settings"}} ; + + tEnv.addObjRelation("XDocumentHandler.XMLData", xml) ; + + final PrintWriter logF = log ; + + tEnv.addObjRelation("XDocumentHandler.ImportChecker", + new ifc.xml.sax._XDocumentHandler.ImportChecker() { + public boolean checkImport() { + try { + Object gVal = xPropSet.getPropertyValue("ShowGrid") ; + logF.println("ShowGrid = " + gVal ) ; + return "false".equals(gVal) ; + } catch (com.sun.star.uno.Exception e) { + logF.println("Exception occurred while checking filter :") ; + e.printStackTrace(logF) ; + return false ; + } + } + }) ; + + return tEnv; + } // finish method getTestEnvironment +} + diff --git a/qadevOOo/tests/java/mod/_sc/XMLStylesExporter.java b/qadevOOo/tests/java/mod/_sc/XMLStylesExporter.java new file mode 100644 index 000000000..36b1bc7e7 --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/XMLStylesExporter.java @@ -0,0 +1,185 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; +import util.XMLTools; + +import com.sun.star.container.XNameAccess; +import com.sun.star.container.XNameContainer; +import com.sun.star.document.XExporter; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.style.XStyle; +import com.sun.star.style.XStyleFamiliesSupplier; +import com.sun.star.uno.Any; +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.xml.sax.XDocumentHandler; + +/** + * Test for object which is represented by service + * <code>com.sun.star.comp.Calc.XMLStylesExporter</code>. <p> + * Object implements the following interfaces : + * <ul> + * <li><code>com::sun::star::lang::XInitialization</code></li> + * <li><code>com::sun::star::document::ExportFilter</code></li> + * <li><code>com::sun::star::document::XFilter</code></li> + * <li><code>com::sun::star::document::XExporter</code></li> + * <li><code>com::sun::star::beans::XPropertySet</code></li> + * </ul> + * @see com.sun.star.lang.XInitialization + * @see com.sun.star.document.ExportFilter + * @see com.sun.star.document.XFilter + * @see com.sun.star.document.XExporter + * @see com.sun.star.beans.XPropertySet + * @see ifc.lang._XInitialization + * @see ifc.document._ExportFilter + * @see ifc.document._XFilter + * @see ifc.document._XExporter + * @see ifc.beans._XPropertySet + */ +public class XMLStylesExporter extends TestCase { + static XComponent xSheetDoc; + protected int counter = 0; + + /** + * New spreadsheet document created. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + log.println( "creating a calc document" ); + xSheetDoc = SOF.openDoc("scalc","_blank"); + } + + /** + * Spreadsheet document disposed + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing xCalcDoc " ); + util.DesktopTools.closeDoc(xSheetDoc); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Creates an instance of the service + * <code>com.sun.star.comp.Calc.XMLStylesExporter</code> with + * argument which is an implementation of <code>XDocumentHandler</code> + * and which can check if required tags and character data is + * exported. <p> + * The calc document is set as a source document for exporter + * created. New style 'NewStyle' added to style family "Cell Styles". + * This made for checking if this style is successfully exported within + * the document styles information. + * Object relations created : + * <ul> + * <li> <code>'MediaDescriptor'</code> for + * {@link ifc.document._XFilter} interface </li> + * <li> <code>'XFilter.Checker'</code> for + * {@link ifc.document._XFilter} interface </li> + * <li> <code>'SourceDocument'</code> for + * {@link ifc.document._XExporter} interface </li> + * </ul> + */ + @Override + protected TestEnvironment createTestEnvironment(TestParameters tParam, PrintWriter log) throws Exception { + + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + XMultiServiceFactory xMSF = tParam.getMSF() ; + XInterface oObj = null; + FilterChecker filter = new FilterChecker(log); + Any arg = new Any(new Type(XDocumentHandler.class),filter); + + String newName = "NewStyle" + counter++; + // Adding tags for checking existence of head tag and property value + filter.addTag(new XMLTools.Tag("office:document-styles")); + filter.addTag(new XMLTools.Tag("style:style","style:name", newName)); + + oObj = (XInterface) xMSF.createInstanceWithArguments( + "com.sun.star.comp.Calc.XMLStylesExporter", new Object[] {arg}); + XExporter xEx = UnoRuntime.queryInterface(XExporter.class,oObj); + xEx.setSourceDocument(xSheetDoc); + + // Obtaining and changing property values + XStyleFamiliesSupplier styleSup = UnoRuntime.queryInterface( + XStyleFamiliesSupplier.class, xSheetDoc); + XNameAccess StyleFamilies = styleSup.getStyleFamilies(); + String[] styleFamiliesNames = StyleFamilies.getElementNames(); + XNameContainer StyleFamilyName = (XNameContainer) + AnyConverter.toObject(new Type(XNameContainer.class), + StyleFamilies.getByName(styleFamiliesNames[0])); + Object SC = SOF.createInstance( + xSheetDoc, "com.sun.star.style.CellStyle"); + XStyle StyleCell = UnoRuntime.queryInterface(XStyle.class,SC); + StyleFamilyName.insertByName(newName, StyleCell); + + log.println("fill sheet 1 with content..."); + util.CalcTools.fillCalcSheetWithContent(xSheetDoc, 0, 3, 3, 50, 100); + + // create testobject here + log.println( "creating a new environment" ); + TestEnvironment tEnv = new TestEnvironment( oObj ); + + tEnv.addObjRelation("MediaDescriptor", XMLTools.createMediaDescriptor( + new String[] {"FilterName"}, + new Object[] {"scalc: StarOffice XML (Calc)"})); + tEnv.addObjRelation("SourceDocument",xSheetDoc); + tEnv.addObjRelation("XFilter.Checker", filter) ; + return tEnv; + } + + /** + * This class checks the XML for tags and data required and returns + * checking result to <code>XFilter</code> interface test. All + * the information about errors occurred in XML data is written + * to log specified. + * @see ifc.document._XFilter + */ + private class FilterChecker extends XMLTools.XMLChecker + implements ifc.document._XFilter.FilterChecker { + + /** + * Creates a class which will write information + * into log specified. + */ + private FilterChecker(PrintWriter log) { + super(log,false) ; + } + /** + * <code>_XFilter.FilterChecker</code> interface method + * which returns the result of XML checking. + * @return <code>true</code> if the XML data exported was + * valid (i.e. all necessary tags and character data exists), + * <code>false</code> if some errors occurred. + */ + public boolean checkFilter() { + return check(); + } + } +} + diff --git a/qadevOOo/tests/java/mod/_sc/XMLStylesImporter.java b/qadevOOo/tests/java/mod/_sc/XMLStylesImporter.java new file mode 100644 index 000000000..49cb036de --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/XMLStylesImporter.java @@ -0,0 +1,196 @@ +/* + * 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 mod._sc; + +import java.io.PrintWriter; + +import lib.TestCase; +import lib.TestEnvironment; +import lib.TestParameters; +import util.SOfficeFactory; + +import com.sun.star.container.XNameAccess; +import com.sun.star.document.XImporter; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.sheet.XSpreadsheetDocument; +import com.sun.star.style.XStyleFamiliesSupplier; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** + * Test for object which is represented by service + * <code>com.sun.star.comp.Calc.XMLStylesImporter</code>. <p> + * Object implements the following interfaces : + * <ul> + * <li><code>com::sun::star::lang::XInitialization</code></li> + * <li><code>com::sun::star::document::XImporter</code></li> + * <li><code>com::sun::star::document::XFilter</code></li> + * <li><code>com::sun::star::document::ImportFilter</code></li> + * <li><code>com::sun::star::beans::XPropertySet</code></li> + * <li><code>com::sun::star::xml::sax::XDocumentHandler</code></li> + + * </ul> + * @see com.sun.star.lang.XInitialization + * @see com.sun.star.document.XImporter + * @see com.sun.star.document.XFilter + * @see com.sun.star.document.ImportFilter + * @see com.sun.star.beans.XPropertySet + * @see com.sun.star.xml.sax.XDocumentHandler + * @see ifc.lang._XInitialization + * @see ifc.document._XImporter + * @see ifc.document._XFilter + * @see ifc.document._XExporter + * @see ifc.beans._XPropertySet + * @see ifc.xml.sax._XDocumentHandler + */ +public class XMLStylesImporter extends TestCase { + private XSpreadsheetDocument xSheetDoc; + static XComponent comp ; + + /** + * New spreadsheet document created. + */ + @Override + protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + + log.println( "creating a Spreadsheet document" ); + xSheetDoc = SOF.createCalcDoc( null ); + comp = UnoRuntime.queryInterface + (XComponent.class, xSheetDoc) ; + } + + /** + * Spreadsheet document destroyed. + */ + @Override + protected void cleanup( TestParameters tParam, PrintWriter log ) { + log.println( " disposing document " ); + util.DesktopTools.closeDoc(comp); + } + + /** + * Creating a TestEnvironment for the interfaces to be tested. + * Creates an instance of the service + * <code>com.sun.star.comp.Calc.XMLStylesImporter</code><p> + * + * The calc document is set as a target document for importer. + * Imported XML-data contains only style tags including tag + * with new style name. + * After import style names getting from + * target document is checked. + * Object relations created : + * <ul> + * <li> <code>'XDocumentHandler.XMLData'</code> for + * {@link ifc.xml.sax._XDocumentHandler} interface </li> + * <li> <code>'XDocumentHandler.ImportChecker'</code> for + * {@link ifc.xml.sax._XDocumentHandler} interface </li> + * <li> <code>'TargetDocument'</code> for + * {@link ifc.document._XImporter} interface </li> + * </ul> + */ + @Override + public TestEnvironment createTestEnvironment( TestParameters tParam, + PrintWriter log ) + throws Exception { + + XInterface oObj = null; + Object oInt = null ; + + // creation of testobject here + // first we write what we are intend to do to log file + log.println( "creating a test environment" ); + + XMultiServiceFactory xMSF = tParam.getMSF() ; + + oInt = xMSF.createInstance + ("com.sun.star.comp.Calc.XMLStylesImporter") ; + XImporter imp = UnoRuntime.queryInterface + (XImporter.class, oInt) ; + imp.setTargetDocument(comp) ; + + oObj = (XInterface) oInt ; + + // create testobject here + log.println( "creating a new environment for Paragraph object" ); + TestEnvironment tEnv = new TestEnvironment( oObj ); + + // adding relation + tEnv.addObjRelation("TargetDocument", comp) ; + + final String impStyleName = "XMLStylesImporter" ; + + // adding relation for XDocumentHandler + String[][] xml = new String[][] { + {"start", "office:document-styles", + "xmlns:office", "CDATA", "http://openoffice.org/2000/office", + "xmlns:style", "CDATA", "http://openoffice.org/2000/style", + "xmlns:fo", "CDATA", "http://www.w3.org/1999/XSL/Format", + "xmlns:table", "CDATA", "http://openoffice.org/2000/table"}, + {"start", "office:styles"}, + {"start", "style:style", + "style:name", "CDATA", impStyleName, + "style:family", "CDATA", "table-cell", + "style:parent-style-name", "CDATA", "Default"}, + { "start", "style:properties", + "fo:width", "CDATA", "12cm", + "fo:background-color", "CDATA", "light-grey"}, + {"end", "style:properties"}, + {"end", "style:style"}, + {"end", "office:styles"}, + {"end", "office:document-styles"}} ; + + tEnv.addObjRelation("XDocumentHandler.XMLData", xml) ; + + XNameAccess styles = null ; + try { + XStyleFamiliesSupplier sup = UnoRuntime.queryInterface + (XStyleFamiliesSupplier.class, xSheetDoc); + XNameAccess oStyleFamilies = sup.getStyleFamilies(); + Object family = oStyleFamilies.getByName("CellStyles") ; + styles = UnoRuntime.queryInterface + (XNameAccess.class, family) ; + log.println("Styles before:") ; + String[] names = styles.getElementNames() ; + for (int i = 0; i < names.length; i++) { + log.println(" " + names[i]) ; + } + } catch (com.sun.star.uno.Exception e) { + e.printStackTrace(log) ; + } + final XNameAccess stylesF = styles ; + final PrintWriter logF = log ; + + tEnv.addObjRelation("XDocumentHandler.ImportChecker", + new ifc.xml.sax._XDocumentHandler.ImportChecker() { + public boolean checkImport() { + logF.println("Styles after:") ; + String[] names = stylesF.getElementNames() ; + for (int i = 0; i < names.length; i++) { + logF.println(" " + names[i]) ; + } + return stylesF.hasByName(impStyleName) ; + } + }) ; + + return tEnv ; + } +} + diff --git a/qadevOOo/tests/java/mod/_sc/package.html b/qadevOOo/tests/java/mod/_sc/package.html new file mode 100644 index 000000000..198d6b17d --- /dev/null +++ b/qadevOOo/tests/java/mod/_sc/package.html @@ -0,0 +1,23 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> +<!-- + * 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 . +--> +<HTML> +<BODY> +<P>Contains all test cases for the module 'sc'.</P> +</BODY> +</HTML> |