diff options
Diffstat (limited to 'qadevOOo/tests/java/ifc')
599 files changed, 80755 insertions, 0 deletions
diff --git a/qadevOOo/tests/java/ifc/accessibility/_XAccessible.java b/qadevOOo/tests/java/ifc/accessibility/_XAccessible.java new file mode 100644 index 0000000000..329ecc6ab1 --- /dev/null +++ b/qadevOOo/tests/java/ifc/accessibility/_XAccessible.java @@ -0,0 +1,48 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.accessibility; + +import lib.MultiMethodTest; + +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleContext; + +/** + * Testing <code>com.sun.star.accessibility.XAccessible</code> + * interface methods : + * <ul> + * <li><code> getAccessibleContext()</code></li> + * </ul> <p> + * @see com.sun.star.accessibility.XAccessible + */ +public class _XAccessible extends MultiMethodTest { + + + public XAccessible oObj = null; + + /** + * Just calls the method. <p> + * Has <b> OK </b> status if not null value returned. + */ + public void _getAccessibleContext() { + XAccessibleContext ac = oObj.getAccessibleContext(); + tRes.tested("getAccessibleContext()",ac != null); + } + +} diff --git a/qadevOOo/tests/java/ifc/accessibility/_XAccessibleAction.java b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleAction.java new file mode 100644 index 0000000000..d83b231ebe --- /dev/null +++ b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleAction.java @@ -0,0 +1,159 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.accessibility; + +import com.sun.star.accessibility.XAccessibleAction; + +public class _XAccessibleAction extends lib.MultiMethodTest { + + public XAccessibleAction oObj = null; + public int count = 0; + + /** + * calls the method and stores the result in the <br> + * variable count. It is OK if no exception occurs + */ + + public void _getAccessibleActionCount() { + count = oObj.getAccessibleActionCount(); + tRes.tested("getAccessibleActionCount()",count > 0); + } + + /** + * calls the method with invalid argument and check if the <br> + * expected Exception is thrown.<br> + * Calls the method afterwards the first valid parameter.<br> + * This is the last method called and the environment is disposed<br> + * afterwards. + */ + + public void _doAccessibleAction() { + requiredMethod("getAccessibleActionKeyBinding()"); + boolean res = true; + + log.println("Calling method with wrong argument"); + try { + oObj.doAccessibleAction(count); + log.println("Exception expected -- FAILED"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException ioe) { + log.println("Expected exception -- OK"); + res &= true; + } + + try { + boolean act = false; + for (int i = 0; i< count; i++) { + log.println("do Action "+ oObj.getAccessibleActionDescription(i)); + act = oObj.doAccessibleAction(i); + log.println("Worked: "+act); + } + log.println("Did action: "+act); + res &= act ; + } catch (com.sun.star.lang.IndexOutOfBoundsException ioe) { + log.println("Unexpected exception -- FAILED"); + res &= false; + } + + tRes.tested("doAccessibleAction()",res); + } + + /** + * calls the method with invalid argument and check if the <br> + * expected Exception is thrown.<br> + * Calls the method afterwards all valid parameters.<br> + * Is ok if the exception is thrown and the resulting value + * for the calls with valid parameters aren't null. + */ + + public void _getAccessibleActionDescription() { + requiredMethod("getAccessibleActionCount()"); + boolean res = true; + + log.println("Calling method with wrong argument"); + try { + oObj.getAccessibleActionDescription(count); + log.println("Exception expected -- FAILED"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException ioe) { + log.println("Expected exception -- OK"); + res &= true; + } + + for (int i=0;i<count;i++) { + try { + String desc = oObj.getAccessibleActionDescription(i); + log.println("Found action: "+desc); + res &= desc!=null ; + } catch (com.sun.star.lang.IndexOutOfBoundsException ioe) { + log.println("Unexpected exception -- FAILED"); + res &= false; + } + } + + tRes.tested("getAccessibleActionDescription()",res); + } + + /** + * calls the method with invalid argument and check if the <br> + * expected Exception is thrown.<br> + * Calls the method afterwards all valid parameters.<br> + * Is ok if the exception is thrown and the resulting value + * for the calls with valid parameters aren't null. + */ + + public void _getAccessibleActionKeyBinding() { + requiredMethod("getAccessibleActionDescription()"); + boolean res = true; + + log.println("Calling method with wrong argument"); + try { + oObj.getAccessibleActionKeyBinding(count); + log.println("Exception expected -- FAILED"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException ioe) { + log.println("Expected exception -- OK"); + res &= true; + } + + for (int i=0;i<count;i++) { + try { + Object key = oObj.getAccessibleActionKeyBinding(i); + if (key != null ) { + log.println("Found key: "+key.toString()); + } + res &= true; + } catch (com.sun.star.lang.IndexOutOfBoundsException ioe) { + log.println("Unexpected exception -- FAILED"); + res &= false; + } + } + + tRes.tested("getAccessibleActionKeyBinding()",res); + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + +} diff --git a/qadevOOo/tests/java/ifc/accessibility/_XAccessibleComponent.java b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleComponent.java new file mode 100644 index 0000000000..8faccfe447 --- /dev/null +++ b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleComponent.java @@ -0,0 +1,604 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.accessibility; + +import java.util.ArrayList; +import lib.MultiMethodTest; + +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleComponent; +import com.sun.star.accessibility.XAccessibleContext; +import com.sun.star.awt.Point; +import com.sun.star.awt.Rectangle; +import com.sun.star.awt.Size; +import com.sun.star.uno.UnoRuntime; + + +/** + * Testing <code>com.sun.star.accessibility.XAccessibleComponent</code> + * interface methods : + * <ul> + * <li><code> containsPoint()</code></li> + * <li><code> getAccessibleAtPoint()</code></li> + * <li><code> getBounds()</code></li> + * <li><code> getLocation()</code></li> + * <li><code> getLocationOnScreen()</code></li> + * <li><code> getSize()</code></li> + * <li><code> grabFocus()</code></li> + * <li><code> getAccessibleKeyBinding()</code></li> + * </ul> <p> + * + * @see com.sun.star.accessibility.XAccessibleComponent + */ +public class _XAccessibleComponent extends MultiMethodTest { + + public XAccessibleComponent oObj = null; + private final ArrayList<Rectangle> KnownBounds = new ArrayList<Rectangle>(); + + + /** + * First checks 4 inner bounds (upper, lower, left and right) + * of component bounding box to contain + * at least one point of the component. Second 4 outer bounds + * are checked to not contain any component points.<p> + * + * Has <b> OK </b> status if inner bounds contain component points + * and outer bounds don't contain any component points. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getBounds() </code> : to have size of a component.</li> + * </ul> + */ + public void _containsPoint() { + Rectangle bounds = oObj.getBounds(); + + boolean result = true; + + int curX = 0; + + while (!oObj.containsPoint(new Point(curX, 0)) && + (curX < bounds.Width)) { + curX++; + } + + if (curX < bounds.Width) { + log.println("Upper bound of box containsPoint point (" + curX + + ",0) - OK"); + } else { + log.println( + "Upper bound of box containsPoint no component points - FAILED"); + result = false; + } + + curX = 0; + + while (!oObj.containsPoint(new Point(curX, bounds.Height - 1)) && + (curX < bounds.Width)) { + log.println("containsPoint returns false for (" + curX + "," + + bounds.Height + ")"); + curX++; + } + + if (curX < bounds.Width) { + log.println("Lower bound of box containsPoint point (" + curX + + "," + (bounds.Height - 1) + ") - OK"); + } else { + log.println( + "Lower bound of box containsPoint no component points - FAILED"); + result = false; + } + + int curY = 0; + + while (!oObj.containsPoint(new Point(0, curY)) && + (curY < bounds.Height)) { + curY++; + } + + if (curY < bounds.Height) { + log.println("Left bound of box containsPoint point (0," + curY + + ") - OK"); + } else { + log.println( + "Left bound of box containsPoint no component points - FAILED"); + result = false; + } + + curY = 0; + + while (!oObj.containsPoint(new Point(bounds.Width - 1, curY)) && + (curY < bounds.Height)) { + curY++; + } + + if (curY < bounds.Height) { + log.println("Right bound of box containsPoint point (" + + (bounds.Width - 1) + "," + curY + ") - OK"); + } else { + log.println( + "Right bound of box containsPoint no component points - FAILED"); + result = false; + } + + boolean locRes = true; + + for (int x = -1; x <= bounds.Width; x++) { + if (oObj.containsPoint(new Point(x, -1))) { + log.println( + "Outer upper and lower bounds CONTAIN some component point" + + " (" + x + ", -1) - FAILED"); + locRes = false; + break; + } + if (oObj.containsPoint(new Point(x, bounds.Height + bounds.Y))) { + log.println( + "Outer upper and lower bounds CONTAIN some component point" + + " (" + x + ", " + (bounds.Height + bounds.Y) + + ") - FAILED"); + locRes = false; + break; + } + } + + if (locRes) { + log.println("Outer upper and lower bounds contain no component " + + "points - OK"); + } else { + result = false; + } + + locRes = true; + + for (int y = -1; y <= bounds.Height; y++) { + if (oObj.containsPoint(new Point(-1, y))) { + log.println( + "Outer left and right bounds CONTAIN some component point" + + " (-1, " + y + ") - FAILED"); + locRes = false; + break; + } + if (oObj.containsPoint(new Point(bounds.X + bounds.Width, y))) { + log.println( + "Outer left and right bounds CONTAIN some component point" + + " (" + (bounds.X + bounds.Width) + ", " + y + ") - FAILED"); + locRes = false; + break; + } + } + + if (locRes) { + log.println("Outer left and right bounds contain no component " + + "points - OK"); + } else { + result = false; + } + + tRes.tested("containsPoint()", result); + } + + /** + * Iterates through all children which implement + * <code>XAccessibleComponent</code> (if they exist) determines their + * boundaries and tries to get each child by <code>getAccessibleAtPoint</code> + * passing point which belongs to the child. + * Also the point is checked which doesn't belong to child boundary + * box. <p> + * + * Has <b> OK </b> status if in the first cases the right children + * are returned, and in the second <code>null</code> or + * another child is returned. + */ + public void _getAccessibleAtPoint() { + boolean result = true; + XAccessibleComponent[] children = getChildrenComponents(); + + if (children.length == 0) { + log.println("There are no children supporting XAccessibleComponent"); + tRes.tested("getAccessibleAtPoint()", result); + return; + } + + for (int i = 0; i < children.length; i++) { + Rectangle chBnd = children[i].getBounds(); + + if (chBnd.X == -1) { + continue; + } + + log.println("Checking child with bounds " + "(" + chBnd.X + + "," + chBnd.Y + "),(" + chBnd.Width + "," + + chBnd.Height + "): " + + util.AccessibilityTools.accessibleToString( + children[i])); + + XAccessibleContext xAc = UnoRuntime.queryInterface( + XAccessibleContext.class, + children[i]); + + boolean MightBeCovered = false; + boolean isShowing = (xAc.getAccessibleStateSet() & + com.sun.star.accessibility.AccessibleStateType.SHOWING) != 0; + log.println("\tStateType containsPoint SHOWING: " + + isShowing); + + if (!isShowing) { + log.println("Child is invisible - OK"); + continue; + } + + log.println("finding the point which lies on the component"); + + int curX = chBnd.Width / 2; + int curY = chBnd.Height / 2; + + while (!children[i].containsPoint(new Point(curX, curY)) && + (curX > 0) && (curY > 0)) { + curX--; + curY--; + } + + if (curX == chBnd.Width) { + log.println("Couldn't find a point with containsPoint"); + + continue; + } + + // trying the point laying on child + XAccessible xAcc = oObj.getAccessibleAtPoint( + new Point(chBnd.X + curX, + chBnd.Y + curY)); + + + Point p = new Point(chBnd.X + curX,chBnd.Y + curY); + + if (isCovered(p)) { + log.println( + "Child might be covered by another and can't be reached"); + MightBeCovered = true; + } + + KnownBounds.add(chBnd); + + if (xAcc == null) { + log.println("The child not found at point (" + + (chBnd.X + curX) + "," + (chBnd.Y + curY) + + ") - FAILED"); + + result = false; + } else { + XAccessible xAccCh = UnoRuntime.queryInterface( + XAccessible.class, + children[i]); + XAccessibleContext xAccC = UnoRuntime.queryInterface( + XAccessibleContext.class, + children[i]); + log.println("Child found at point (" + (chBnd.X + curX) + + "," + (chBnd.Y + curY) + ") - OK"); + + boolean res = false; + long expIndex; + String expName; + String expDesc; + + if (xAccCh != null) { + res = util.AccessibilityTools.equals(xAccCh, xAcc); + expIndex = xAccCh.getAccessibleContext() + .getAccessibleIndexInParent(); + expName = xAccCh.getAccessibleContext() + .getAccessibleName(); + expDesc = xAccCh.getAccessibleContext() + .getAccessibleDescription(); + } else { + res = xAccC.getAccessibleName() + .equals(xAcc.getAccessibleContext() + .getAccessibleName()); + expIndex = xAccC.getAccessibleIndexInParent(); + expName = xAccC.getAccessibleName(); + expDesc = xAccC.getAccessibleDescription(); + } + + if (!res) { + long gotIndex = xAcc.getAccessibleContext() + .getAccessibleIndexInParent(); + + if (expIndex < gotIndex) { + log.println("The children found is not the same"); + log.println("The expected child " + expName); + log.print("is hidden behind the found Child "); + log.println(xAcc.getAccessibleContext() + .getAccessibleName() + " - OK"); + } else { + log.println( + "The children found is not the same"); + log.println("Expected: " + expName); + log.println("Description: " + expDesc); + log.println("Found: " + + xAcc.getAccessibleContext() + .getAccessibleName()); + log.println("Description: " + + xAcc.getAccessibleContext() + .getAccessibleDescription()); + if (MightBeCovered) { + log.println("... Child is covered by another - OK"); + } else { + log.println( + "(xAccCh==null: " + (xAccCh == null) + "; expIndex: " + expIndex + + "; gotIndex: " + gotIndex + ")"); + log.println("... FAILED"); + result = false; + } + + } + } + } + + + // trying the point NOT laying on child + xAcc = oObj.getAccessibleAtPoint( + new Point(chBnd.X - 1, chBnd.Y - 1)); + + if (xAcc == null) { + log.println("No children found at point (" + + (chBnd.X - 1) + "," + (chBnd.Y - 1) + + ") - OK"); + result &= true; + } else { + XAccessible xAccCh = UnoRuntime.queryInterface( + XAccessible.class, + children[i]); + boolean res = util.AccessibilityTools.equals(xAccCh, xAcc); + + if (res) { + log.println("The same child found outside " + + "its bounds at (" + (chBnd.X - 1) + "," + + (chBnd.Y - 1) + ") - FAILED"); + result = false; + } + } + } + + tRes.tested("getAccessibleAtPoint()", result); + } + + /** + * Retrieves the component bounds and discards it. <p> + * + * Has <b> OK </b> status if boundary position (x,y) is not negative + * and size (Width, Height) is greater than 0. + */ + public void _getBounds() { + boolean result = true; + + Rectangle bounds = oObj.getBounds(); + result &= ((bounds != null) && (bounds.X >= 0) && (bounds.Y >= 0) && (bounds.Width > 0) && (bounds.Height > 0)); + + log.println("Bounds = " + + ((bounds != null) + ? ("(" + bounds.X + "," + bounds.Y + "),(" + + bounds.Width + "," + bounds.Height + ")") : "null")); + + tRes.tested("getBounds()", result); + } + + /** + * Gets the location. <p> + * + * Has <b> OK </b> status if the location is the same as location + * of boundary obtained by <code>getBounds()</code> method. + */ + public void _getLocation() { + Rectangle bounds = oObj.getBounds(); + Point loc = oObj.getLocation(); + boolean result = loc.X == bounds.X && loc.Y == bounds.Y; + log.println( + "loc.X=" + loc.X + " vs. bounds.X=" + bounds.X + ", loc.Y=" + + loc.Y + " vs. bounds.Y=" + bounds.Y); + tRes.tested("getLocation()", result); + } + + /** + * Get the screen location of the component and its parent + * (if it exists and supports <code>XAccessibleComponent</code>). <p> + * + * Has <b> OK </b> status if component screen location equals + * to screen location of its parent plus location of the component + * relative to the parent. <p> + */ + public void _getLocationOnScreen() { + XAccessibleComponent parent = getParentComponent(); + + boolean result = true; + Rectangle bounds = oObj.getBounds(); + Point loc = oObj.getLocationOnScreen(); + log.println("Location is (" + loc.X + "," + loc.Y + ")"); + + if (parent != null) { + Point parLoc = parent.getLocationOnScreen(); + log.println("Parent location is (" + parLoc.X + "," + parLoc.Y + + ")"); + + result &= ((parLoc.X + bounds.X) == loc.X); + result &= ((parLoc.Y + bounds.Y) == loc.Y); + } + + tRes.tested("getLocationOnScreen()", result); + } + + /** + * Obtains the size of the component. <p> + * + * Has <b> OK </b> status if the size is the same as in bounds. <p> + */ + public void _getSize() { + requiredMethod("getBounds()"); + + boolean result = true; + Rectangle bounds = oObj.getBounds(); + Size size = oObj.getSize(); + + result &= (size.Width == bounds.Width); + result &= (size.Height == bounds.Height); + + tRes.tested("getSize()", result); + } + + /** + * Just calls the method. <p> + * + * Has <b> OK </b> status if no runtime exceptions occurred. + */ + public void _grabFocus() { + boolean result = true; + oObj.grabFocus(); + + tRes.tested("grabFocus()", result); + } + + /** + * Retrieves all children (not more than 50) of the current + * component which support <code>XAccessibleComponent</code>. + * + * @return The array of children. Empty array returned if + * such children were not found or some error occurred. + */ + private XAccessibleComponent[] getChildrenComponents() { + XAccessible xAcc = UnoRuntime.queryInterface( + XAccessible.class, oObj); + + if (xAcc == null) { + log.println("Component doesn't support XAccessible."); + + return new XAccessibleComponent[0]; + } + + XAccessibleContext xAccCon = xAcc.getAccessibleContext(); + long cnt = xAccCon.getAccessibleChildCount(); + + // for cases when too many children exist checking only first 50 + if (cnt > 50) { + cnt = 50; + } + + ArrayList<XAccessibleComponent> childComp = new ArrayList<XAccessibleComponent>(); + + for (long i = 0; i < cnt; i++) { + try { + XAccessible child = xAccCon.getAccessibleChild(i); + XAccessibleContext xAccConCh = child.getAccessibleContext(); + XAccessibleComponent xChAccComp = UnoRuntime.queryInterface( + XAccessibleComponent.class, + xAccConCh); + + if (xChAccComp != null) { + childComp.add(xChAccComp); + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + } + } + + return childComp.toArray( + new XAccessibleComponent[childComp.size()]); + } + + /** + * Gets the parent of the current component which support + * <code>XAccessibleComponent</code>. + * + * @return The parent or <code>null</code> if the component + * has no parent or some errors occurred. + */ + private XAccessibleComponent getParentComponent() { + XAccessible xAcc = UnoRuntime.queryInterface( + XAccessible.class, oObj); + + if (xAcc == null) { + log.println("Component doesn't support XAccessible."); + + return null; + } + + XAccessibleContext xAccCon = xAcc.getAccessibleContext(); + XAccessible xAccPar = xAccCon.getAccessibleParent(); + + if (xAccPar == null) { + log.println("Component has no accessible parent."); + + return null; + } + + XAccessibleContext xAccConPar = xAccPar.getAccessibleContext(); + XAccessibleComponent parent = UnoRuntime.queryInterface( + XAccessibleComponent.class, + xAccConPar); + + if (parent == null) { + log.println( + "Accessible parent doesn't support XAccessibleComponent"); + + return null; + } + + return parent; + } + + /** + * Just calls the method. + */ + public void _getForeground() { + int forColor = oObj.getForeground(); + log.println("getForeground(): " + forColor); + tRes.tested("getForeground()", true); + } + + /** + * Just calls the method. + */ + public void _getBackground() { + int backColor = oObj.getBackground(); + log.println("getBackground(): " + backColor); + tRes.tested("getBackground()", true); + } + + /** + * Restores initial component text. + */ + @Override + protected void after() { + if (tEnv.getObjRelation("Destroy") != null) { + disposeEnvironment(); + } + } + + private boolean isCovered(Point p) { + int elements = KnownBounds.size(); + boolean Covered = false; + for (int k=0;k<elements;k++) { + Rectangle known = KnownBounds.get(k); + Covered = (known.X < p.X); + Covered &= (known.Y < p.Y); + Covered &= (p.Y < known.Y+known.Height); + Covered &= (p.X < known.X+known.Width); + + if (Covered) { + break; + } + } + return Covered; + } +} diff --git a/qadevOOo/tests/java/ifc/accessibility/_XAccessibleContext.java b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleContext.java new file mode 100644 index 0000000000..8ce5e16478 --- /dev/null +++ b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleContext.java @@ -0,0 +1,339 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.accessibility; + +import com.sun.star.accessibility.IllegalAccessibleComponentStateException; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleContext; +import com.sun.star.lang.Locale; + +import lib.MultiMethodTest; + +import util.AccessibilityTools; + + +/** + * Testing <code>com.sun.star.accessibility.XAccessibleContext</code> + * interface methods : + * <ul> + * <li><code> getAccessibleChildCount()</code></li> + * <li><code> getAccessibleChild()</code></li> + * <li><code> getAccessibleParent()</code></li> + * <li><code> getAccessibleIndexInParent()</code></li> + * <li><code> getAccessibleRole()</code></li> + * <li><code> getAccessibleDescription()</code></li> + * <li><code> getAccessibleName()</code></li> + * <li><code> getAccessibleRelationSet()</code></li> + * <li><code> getAccessibleStateSet()</code></li> + * <li><code> getLocale()</code></li> + * </ul> <p> + * + * @see com.sun.star.accessibility.XAccessibleContext + */ +public class _XAccessibleContext extends MultiMethodTest { + private static final String className = "com.sun.star.accessibility.XAccessibleContext"; + public XAccessibleContext oObj = null; + private long childCount = 0; + private XAccessible parent = null; + + // temporary while accessibility package is in com.sun.star + @Override + protected String getTestedClassName() { + return className; + } + + /** + * Calls the method and stores the number of children. <p> + * Has <b> OK </b> status if non-negative number rutrned. + */ + public void _getAccessibleChildCount() { + childCount = oObj.getAccessibleChildCount(); + log.println(childCount + " children found."); + tRes.tested("getAccessibleChildCount()", childCount > -1); + } + + /** + * Tries to get every child and checks its parent. <p> + * + * Has <b> OK </b> status if parent of every child + * and the tested component are the same objects. + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getAccessibleChildCount() </code> : to have a number of + * children </li> + * </ul> + */ + public void _getAccessibleChild() { + requiredMethod("getAccessibleChildCount()"); + + log.println("testing 'getAccessibleChild()'..."); + + boolean bOK = true; + long counter = childCount; + + if (childCount > 500) { + counter = 500; + } + + for (long i = 0; i < counter; i++) { + try { + XAccessible ch = oObj.getAccessibleChild(i); + XAccessibleContext chAC = ch.getAccessibleContext(); + + log.println("## Child " + i + ": " + + chAC.getAccessibleDescription()); + + if (!AccessibilityTools.equals(chAC.getAccessibleParent() + .getAccessibleContext(), + oObj)) { + log.println("The parent of child and component " + + "itself differ."); + log.println("\tRole:"); + log.println("Getting: " + + chAC.getAccessibleParent() + .getAccessibleContext() + .getAccessibleRole()); + log.println("Expected: " + oObj.getAccessibleRole()); + + log.println("\tImplementationName:"); + log.println("Getting: " + + util.utils.getImplName( + chAC.getAccessibleParent() + .getAccessibleContext())); + log.println("Expected: " + util.utils.getImplName(oObj)); + + log.println("\tAccessibleDescription:"); + log.println("Getting(Description): " + + chAC.getAccessibleParent() + .getAccessibleContext() + .getAccessibleDescription()); + log.println("Expected(Description): " + + oObj.getAccessibleDescription()); + + log.println("\tAccessibleName:"); + log.println("Getting(Name): " + + chAC.getAccessibleParent() + .getAccessibleContext() + .getAccessibleName()); + log.println("Expected(Name): " + + oObj.getAccessibleName()); + + log.println("\tChildCount:"); + log.println("Getting: " + + chAC.getAccessibleParent() + .getAccessibleContext() + .getAccessibleChildCount()); + log.println("Expected: " + + oObj.getAccessibleChildCount()); + + log.println("\tParentName:"); + log.println("Getting (Name): " + + chAC.getAccessibleParent() + .getAccessibleContext() + .getAccessibleParent() + .getAccessibleContext() + .getAccessibleName()); + log.println("Expected(Name): " + + oObj.getAccessibleParent() + .getAccessibleContext() + .getAccessibleName()); + + log.println("##"); + bOK = false; + } else { + log.println("Role: " + chAC.getAccessibleRole()); + log.println("Name: " + chAC.getAccessibleName()); + log.println("IndexInParent: " + + chAC.getAccessibleIndexInParent()); + log.println("ImplementationName: " + + util.utils.getImplName(chAC)); + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + e.printStackTrace(log); + bOK = false; + } + } + + tRes.tested("getAccessibleChild()", bOK); + } + + /** + * Just gets the parent. <p> + * + * Has <b> OK </b> status if parent is not null. + */ + public void _getAccessibleParent() { + // assume that the component is not ROOT + parent = oObj.getAccessibleParent(); + tRes.tested("getAccessibleParent()", parent != null); + } + + /** + * Retrieves the index of tested component in its parent. + * Then gets the parent's child by this index and compares + * it with tested component.<p> + * + * Has <b> OK </b> status if the parent's child and the tested + * component are the same objects. + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getAccessibleParent() </code> : to have a parent </li> + * </ul> + */ + public void _getAccessibleIndexInParent() { + requiredMethod("getAccessibleParent()"); + + boolean bOK = true; + long idx = oObj.getAccessibleIndexInParent(); + + XAccessibleContext parentAC = parent.getAccessibleContext(); + + try { + XAccessible child = parentAC.getAccessibleChild(idx); + XAccessibleContext childAC = null; + if (child == null) { + log.println("Parent has no child with this index"); + bOK &= false; + } else { + childAC = child.getAccessibleContext(); + bOK &= AccessibilityTools.equals(childAC, oObj); + } + + if (!bOK) { + log.println("Expected: " + util.utils.getImplName(oObj)); + + if (childAC != null) { + log.println("Getting: " + util.utils.getImplName(childAC)); + } + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + e.printStackTrace(log); + bOK = false; + } + + tRes.tested("getAccessibleIndexInParent()", bOK); + } + + /** + * Get the accessible role of component. <p> + * + * Has <b> OK </b> status if non-negative number rutrned. + */ + public void _getAccessibleRole() { + short role = oObj.getAccessibleRole(); + log.println("The role is " + role); + tRes.tested("getAccessibleRole()", role > -1); + } + + /** + * Get the accessible name of the component. <p> + * + * Has <b> OK </b> status if the name has non-zero length. + */ + public void _getAccessibleName() { + String name = oObj.getAccessibleName(); + log.println("The name is '" + name + "'"); + tRes.tested("getAccessibleName()", name != null); + } + + /** + * Get the accessible description of the component. <p> + * + * Has <b> OK </b> status if the description has non-zero length. + */ + public void _getAccessibleDescription() { + String descr = oObj.getAccessibleDescription(); + log.println("The description is '" + descr + "'"); + tRes.tested("getAccessibleDescription()", descr != null); + } + + /** + * Just gets the set. <p> + * + * Has <b> OK </b> status if the set is not null. + */ + public void _getAccessibleRelationSet() { + oObj.getAccessibleRelationSet(); + tRes.tested("getAccessibleRelationSet()", true); + } + + /** + * Just gets the set. <p> + * + * Has <b> OK </b> status if the set is not null. + */ + public void _getAccessibleStateSet() { + long set = oObj.getAccessibleStateSet(); + boolean res = true; + String[] expectedStateNames = (String[]) tEnv.getObjRelation( + "expectedStateNames"); + long[] expectedStates = (long[]) tEnv.getObjRelation( + "expectedStates"); + + if ((expectedStateNames != null) && (expectedStates != null)) { + res = checkStates(expectedStateNames, expectedStates, set); + } + + tRes.tested("getAccessibleStateSet()", res); + } + + /** + * Gets the locale. <p> + * + * Has <b> OK </b> status if <code>Country</code> and + * <code>Language</code> fields of locale structure + * are not empty. + */ + public void _getLocale() { + Locale loc = null; + + try { + loc = oObj.getLocale(); + log.println("The locale is " + loc.Language + "," + loc.Country); + } catch (IllegalAccessibleComponentStateException e) { + e.printStackTrace(log); + } + + tRes.tested("getLocale()", + (loc != null) && (loc.Language.length() > 0)); + } + + protected boolean checkStates(String[] expectedStateNames, + long[] expectedStates, + long set) { + boolean works = true; + + for (int k = 0; k < expectedStateNames.length; k++) { + boolean contains = (set & expectedStates[k]) != 0; + + if (contains) { + log.println("Set contains " + expectedStateNames[k] + + " ... OK"); + works &= true; + } else { + log.println("Set doesn't contain " + expectedStateNames[k] + + " ... FAILED"); + works &= false; + } + } + + return works; + } +} diff --git a/qadevOOo/tests/java/ifc/accessibility/_XAccessibleEditableText.java b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleEditableText.java new file mode 100644 index 0000000000..d8cb81adcb --- /dev/null +++ b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleEditableText.java @@ -0,0 +1,543 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.accessibility; + +import lib.MultiMethodTest; +import util.ValueComparer; + +import com.sun.star.accessibility.XAccessibleEditableText; +import com.sun.star.beans.PropertyValue; + +/** + * Testing <code>com.sun.star.accessibility.XAccessibleEditableText</code> + * interface methods : + * <ul> + * <li><code> cutText()</code></li> + * <li><code> pasteText()</code></li> + * <li><code> deleteText()</code></li> + * <li><code> insertText()</code></li> + * <li><code> replaceText()</code></li> + * <li><code> setAttributes()</code></li> + * <li><code> setText()</code></li> + * </ul> <p> + * + * This test needs the following object relations : + * <ul> + * <li> <code>'XAccessibleEditableText.hasAttr'</code> + * (of type <code>Boolean</code>): + * Indicates whether or not the text has changeable attributes. + * E.g. text within writer document have attributes which can + * be changed, while the text within edit field has fixed + * attributes. <p> + * If the relation is <code>false</code> then the component + * has fixed text attributes. </li> + * </ul> <p> + * + * @see com.sun.star.accessibility.XAccessibleEditableText + */ +public class _XAccessibleEditableText extends MultiMethodTest { + + public XAccessibleEditableText oObj = null; + + + String pasteText = null; + + String initialText = ""; + + /** + * Indicates whether or not the text has changeable attributes. + * E.g. text within writer document have attributes which can + * be changed, while the text within edit field has fixed + * attributes. + */ + private boolean changeableAttr = true; + + /** + * Retrieves object relation. Stores initial component text + * for restoring it in <code>after</code>. + */ + @Override + protected void before() { + Boolean b = (Boolean) + tEnv.getObjRelation("XAccessibleEditableText.hasAttr"); + if (b != null) { + changeableAttr = b.booleanValue(); + } + + initialText = oObj.getText(); + } + + /** + * Calls the method with the wrong indexes and with the correct indexes. + * Stores cutted text in the variable <code>pasteText</code>. + * Has OK status if exceptions were thrown for the wrong indexes, + * if exception wasn't thrown for the correct indexes. + */ + public void _cutText() { + boolean res = true; + boolean locRes = true; + String curText = null; + + String oldText = oObj.getText(); + log.println("Text: '" + oldText + "'"); + int length = oObj.getCharacterCount(); + log.println("Character count: " + length); + + try { + log.print("cutText(-1," + (length-1) + "): "); + locRes = oObj.cutText(-1, length - 1); + log.println(locRes); + log.println("exception was expected => FAILED"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception => OK"); + curText = oObj.getText(); + log.println("Current text: '" + curText + "'"); + res &= curText.equals(oldText); + } + + try { + log.print("cutText(0," + (length+1) + "): "); + locRes = oObj.cutText(0, length + 1); + log.println(locRes); + log.println("exception was expected => FAILED"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception => OK"); + curText = oObj.getText(); + log.println("Current text: '" + curText + "'"); + res &= curText.equals(oldText); + } + + try { + pasteText = oldText; + log.print("cutText(0," + length + "): "); + locRes = oObj.cutText(0, length); + log.println(locRes); + curText = oObj.getText(); + log.println("Current text: '" + curText + "'"); + res &= curText.length() == 0 && locRes; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("cutText()", res); + } + + /** + * Calls the method with the wrong indexes and with the correct indexes. + * Has OK status if exceptions were thrown for the wrong indexes, + * if exception wasn't thrown for the correct indexes and if cutted text was + * pasted. + * The following method tests are to be executed before: + * <ul> + * <li> <code>cutText()</code> </li> + * </ul> + */ + public void _pasteText() { + requiredMethod("cutText()"); + boolean res = true; + boolean locRes = true; + String curText = null; + + String text = oObj.getText(); + log.println("Text: '" + text + "'"); + int length = oObj.getCharacterCount(); + log.println("Character count: " + length); + + try { + log.print("pasteText(-1): "); + locRes = oObj.pasteText(-1); + log.println(locRes); + log.println("exception was expected => FAILED"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception => OK"); + curText = oObj.getText(); + log.println("Current text: '" + curText + "'"); + res &= curText.equals(text); + } + + try { + log.print("pasteText(" + (length+1) + "): "); + locRes = oObj.pasteText(length + 1); + log.println(locRes); + log.println("exception was expected => FAILED"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception => OK"); + curText = oObj.getText(); + log.println("Current text: '" + curText + "'"); + res &= curText.equals(text); + } + + try { + log.print("pasteText(" + (length) + "): "); + locRes = oObj.pasteText(length); + log.println(locRes); + curText = oObj.getText(); + log.println("Current text: '" + curText + "'"); + res &= curText.equals(text + pasteText) && locRes; + log.println("Expected text: '" + text + pasteText + "'"); + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("pasteText()", res); + } + + /** + * Calls the method with the wrong indexes and with the correct indexes, + * checks text after method call. + * Has OK status if exceptions were thrown for the wrong indexes, + * if exception wasn't thrown for the correct indexes and if deleted string + * was really deleted from the text. + * The following method tests are to be executed before: + * <ul> + * <li> <code>insertText()</code> </li> + * </ul> + */ + public void _deleteText() { + executeMethod("insertText()"); + boolean res = true; + boolean locRes = true; + String curText = null; + + String text = oObj.getText(); + log.println("Text: '" + text + "'"); + int length = oObj.getCharacterCount(); + log.println("Character count: " + length); + + try { + log.print("deleteText(-1," + length + "): "); + locRes = oObj.deleteText(-1, length); + log.println(locRes); + log.println("exception was expected => FAILED"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception => OK"); + curText = oObj.getText(); + log.println("Current text: '" + curText + "'"); + res &= curText.equals(text); + } + + try { + log.print("deleteText(0," + (length+1) + "): "); + locRes = oObj.deleteText(0, length + 1); + log.println(locRes); + log.println("exception was expected => FAILED"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception => OK"); + curText = oObj.getText(); + log.println("Current text: '" + curText + "'"); + res &= curText.equals(text); + } + + try { + if (length >= 1) { + log.print("deleteText(" + (length-1) + "," + (length) + "): "); + locRes = oObj.deleteText(length - 1, length); + log.println(locRes); + String expStr = text.substring(0, length - 1); + curText = oObj.getText(); + log.println("Current text: '" + curText + "'"); + res &= curText.equals(expStr); + log.println("Expected text: '" + expStr + "'"); + } + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("deleteText()", res); + } + + /** + * Calls the method with the wrong indexes and with the correct indexes, + * checks text after method call. + * Has OK status if exceptions were thrown for the wrong indexes, + * if exception wasn't thrown for the correct indexes and if inserted string + * was really inserted into the text. + * The following method tests are to be executed before: + * <ul> + * <li> <code>pasteText()</code> </li> + * </ul> + */ + public void _insertText() { + executeMethod("pasteText()"); + boolean res = true; + boolean locRes = true; + String curText = null; + + String text = oObj.getText(); + log.println("Text: '" + text + "'"); + int length = oObj.getCharacterCount(); + log.println("Character count: " + length); + + final String insStr = "Inserted string"; + + try { + log.print("insertText(insStr, -1): "); + locRes = oObj.insertText(insStr, -1); + log.println(locRes); + log.println("exception was expected=> FAILED"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception => OK"); + curText = oObj.getText(); + log.println("Current text: '" + curText + "'"); + res &= curText.equals(text); + } + + try { + log.print("insertText(insStr," + (length+1) + "): "); + locRes = oObj.insertText(insStr, length+1); + log.println(locRes); + log.println("exception was expected => FAILED"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception => OK"); + curText = oObj.getText(); + log.println("Current text: '" + curText + "'"); + res &= curText.equals(text); + } + + try { + log.print("insertText(insStr," + length + "): "); + locRes = oObj.insertText(insStr, length); + log.println(locRes); + curText = oObj.getText(); + res &= curText.equals(text + insStr); + log.println("Current text: '" + curText + "'"); + log.println("Expected text: '" + text + insStr + "'"); + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("unexpected exception => FAILED"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("insertText()", res); + } + + /** + * Calls the method with the wrong indexes and with the correct indexes, + * checks text after method call. + * Has OK status if exceptions were thrown for the wrong indexes, + * if exception wasn't thrown for the correct indexes and if part of text + * was really replaced by the specified replacement string. + * The following method tests are to be executed before: + * <ul> + * <li> <code>deleteText()</code> </li> + * </ul> + */ + public void _replaceText() { + executeMethod("deleteText()"); + boolean res = true; + boolean locRes = true; + String curText = null; + + final String sReplacement = "String for replace"; + String oldText = oObj.getText(); + int startIndx = oldText.length(); + oObj.setText(oldText + " part of string for replace"); + + String text = oObj.getText(); + log.println("Text: '" + text + "'"); + int length = oObj.getCharacterCount(); + log.println("Character count: " + length); + + try { + log.print("replaceText(-1," + length + "): "); + locRes = oObj.replaceText(-1, length, sReplacement); + log.println(locRes); + log.println("exception was expected => FAILED"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception => OK"); + curText = oObj.getText(); + log.println("Current text: '" + curText + "'"); + res &= curText.equals(text); + } + + try { + log.print("replaceText(0," + (length+1) + "): "); + locRes = oObj.replaceText(0, length + 1, sReplacement); + log.println(locRes); + log.println("exception was expected => FAILED"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception => OK"); + curText = oObj.getText(); + log.println("Current text: '" + curText + "'"); + res &= curText.equals(text); + } + + try { + log.print("replaceText(" + startIndx + "," + length + "): "); + locRes = oObj.replaceText(startIndx, length, sReplacement); + log.println(locRes); + curText = oObj.getText(); + log.println("Current text: '" + curText + "'"); + log.println("Expected text: '" + oldText + sReplacement + "'"); + res &= curText.equals(oldText + sReplacement); + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("replaceText()", res); + } + + /** + * Calls the method with the wrong indexes and with the correct indexes, + * checks attributes after method call. + * Has OK status if exceptions were thrown for the wrong indexes, + * if exception wasn't thrown for the correct indexes and if attributes + * of text was changed. + * The following method tests are to be executed before: + * <ul> + * <li> <code>replaceText()</code> </li> + * </ul> + */ + public void _setAttributes() { + executeMethod("replaceText()"); + boolean res = true; + boolean locRes = true; + + String text = oObj.getText(); + log.println("Text: '" + text + "'"); + int length = oObj.getCharacterCount(); + log.println("Length: " + length); + + PropertyValue[] attrs = null; + + try { + attrs = oObj.getCharacterAttributes(0, new String[]{""}); + log.print("setAttributes(-1," + (length - 1) + "):"); + locRes = oObj.setAttributes(-1, length - 1, attrs); + log.println(locRes); + log.println("exception was expected => FAILED"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception => OK"); + res &= true; + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("unexpected exception => FAILED"); + e.printStackTrace(log); + res &= false; + } + + try { + log.print("setAttributes(0," + (length+1) + "):"); + locRes = oObj.setAttributes(0, length + 1, attrs); + log.println(locRes); + log.println("exception was expected => FAILED"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception => OK"); + res &= true; + } + + //change old attributes set + for(int i = 0; i < attrs.length; i++) { + if (attrs[i].Name.equals("CharColor")) { + attrs[i].Value = Integer.valueOf(-2); + } + } + + try { + log.print("setAttributes(0," + length + "):"); + locRes = oObj.setAttributes(0, length, attrs); + log.println(locRes); + res &= (changeableAttr && locRes) + || (!changeableAttr && !locRes); + if (changeableAttr) { + log.print("checking that new attributes was set..."); + PropertyValue[] newAttrs = oObj.getCharacterAttributes(0, new String[]{""}); + locRes = ValueComparer.equalValue(attrs, newAttrs); + log.println(locRes); + res &= locRes; + } else { + log.println("Text attributes can't be changed."); + } + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("unexpected exception => FAILED"); + e.printStackTrace(log); + res &= false; + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("unexpected exception => FAILED"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("setAttributes()", res); + } + + /** + * Calls the method with different parameters and checks text. + */ + public void _setText() { + executeMethod("setAttributes()"); + boolean res = true; + boolean locRes = true; + + String oldText = oObj.getText(); + log.println("Current text: '" + oldText + "'"); + + String newText = "New text"; + log.print("setText('" + newText + "'): "); + locRes = oObj.setText(newText); + log.println(locRes); + String newCurText = oObj.getText(); + log.println("getText(): '" + newCurText + "'"); + res &= locRes && newCurText.equals(newText); + + newText = ""; + log.print("setText('" + newText + "'): "); + locRes = oObj.setText(newText); + log.println(locRes); + newCurText = oObj.getText(); + log.println("getText(): '" + newCurText + "'"); + res &= locRes && newCurText.equals(newText); + + log.print("setText('" + oldText + "'): "); + locRes = oObj.setText(oldText); + log.println(locRes); + newCurText = oObj.getText(); + log.println("getText(): '" + newCurText + "'"); + res &= locRes && newCurText.equals(oldText); + + tRes.tested("setText()", res); + } + + /** + * Restores initial component text. + */ + @Override + protected void after() { + oObj.setText(initialText); + } +} diff --git a/qadevOOo/tests/java/ifc/accessibility/_XAccessibleEventBroadcaster.java b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleEventBroadcaster.java new file mode 100644 index 0000000000..80c52803a6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleEventBroadcaster.java @@ -0,0 +1,208 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.accessibility; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.accessibility.AccessibleEventObject; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleContext; +import com.sun.star.accessibility.XAccessibleEventBroadcaster; +import com.sun.star.accessibility.XAccessibleEventListener; +import com.sun.star.lang.EventObject; +import com.sun.star.uno.UnoRuntime; + +/** + * Testing <code> + * com.sun.star.accessibility.XAccessibleEventBroadcaster</code> + * interface methods : + * <ul> + * <li><code> addAccessibleEventListener()</code></li> + * <li><code> removeAccessibleEventListener()</code></li> + * </ul> <p> + * + * This test needs the following object relations : + * <ul> + * <li> <code>'EventProducer'</code> (of type + * <code>ifc.accessibility._XAccessibleEventBroadcaster.EventProducer</code>): + * this must be an implementation of the interface which could perform + * some actions for generating any kind of <code>AccessibleEvent</code></li> + * <ul> <p> + * + * @see com.sun.star.accessibility.XAccessibleEventBroadcaster + */ +public class _XAccessibleEventBroadcaster extends MultiMethodTest { + + public interface EventProducer { + void fireEvent(); + } + + public XAccessibleEventBroadcaster oObj = null; + public String EventMsg = ""; + public boolean destroy = false; + + + /** + * Listener implementation which registers listener calls. + */ + private class EvListener implements XAccessibleEventListener { + public AccessibleEventObject notifiedEvent = null ; + public void notifyEvent(AccessibleEventObject ev) { + log.println("Listener, Event : " + ev.EventId); + System.out.println("EventID: " + ev.EventId); + Object old=ev.OldValue; + if (old instanceof com.sun.star.accessibility.XAccessible) { + System.out.println("Old: "+((XAccessible)old).getAccessibleContext().getAccessibleName()); + } + + Object nev=ev.NewValue; + if (nev instanceof com.sun.star.accessibility.XAccessible) { + System.out.println("New: "+((XAccessible)nev).getAccessibleContext().getAccessibleName()); + } + synchronized (this) { + notifiedEvent = ev; + } + } + + public void disposing(EventObject ev) {} + } + + /** + * Retrieves relation. + * @throws StatusException If the relation is not found. + */ + @Override + public void before() { + prod = (EventProducer) tEnv.getObjRelation("EventProducer") ; + if (prod == null) { + throw new StatusException(Status.failed("Relation missed.")); + } + EventMsg = (String) tEnv.getObjRelation("EventMsg"); + Object dp = tEnv.getObjRelation("Destroy"); + if (dp != null) { + destroy=true; + } + } + + EventProducer prod = null ; + EvListener list = new EvListener(); + + /** + * Adds two listeners and fires event by mean of object relation. <p> + * Has <b> OK </b> status if both listeners were called + */ + public void _addEventListener() { + log.println("adding listener"); + oObj.addAccessibleEventListener(list); + boolean isTransient = chkTransient(tEnv.getTestObject()); + log.println("fire event"); + prod.fireEvent() ; + + waitForEventIdle(); + + boolean works = true; + + AccessibleEventObject ne; + synchronized (list) { + ne = list.notifiedEvent; + } + if (ne == null) { + if (!isTransient) { + log.println("listener wasn't called"); + works = false; + } else { + log.println("Object is Transient, listener isn't expected to be called"); + } + oObj.removeAccessibleEventListener(list); + } + + if (EventMsg != null) { + log.println(EventMsg); + tRes.tested("addEventListener()", Status.skipped(true) ); + return; + } + + tRes.tested("addEventListener()", works ); + } + + /** + * Removes one of two listeners added before and fires event + * by mean of object relation.<p> + * + * Has <b> OK </b> status if the removed listener wasn't called.<p> + * + * The following method tests are to be completed successfully before: + * <ul> + * <li> <code>addEventListener()</code> : to have added listeners </li> + * </ul> + */ + public void _removeEventListener() throws Exception { + requiredMethod("addEventListener()"); + + log.println("remove listener"); + oObj.removeAccessibleEventListener(list); + + synchronized (list) { + list.notifiedEvent = null; + } + + log.println("fire event"); + prod.fireEvent() ; + + waitForEventIdle(); + + AccessibleEventObject ne; + synchronized (list) { + ne = list.notifiedEvent; + } + if (ne == null) { + log.println("listener wasn't called -- OK"); + } + + tRes.tested("removeEventListener()", list.notifiedEvent == null); + + } + + protected static boolean chkTransient(Object Testcase) { + boolean ret = false; + XAccessibleContext accCon = UnoRuntime.queryInterface(XAccessibleContext.class,Testcase); + if ((accCon.getAccessibleStateSet() & + com.sun.star.accessibility.AccessibleStateType.TRANSIENT) != 0){ + if ((accCon.getAccessibleParent().getAccessibleContext().getAccessibleStateSet() & + com.sun.star.accessibility.AccessibleStateType.MANAGES_DESCENDANTS) == 0) { + throw new lib.StatusException(lib.Status.failed("Parent doesn't manage descendents")); + } + ret=true; + } + return ret; + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + if (destroy) disposeEnvironment(); + } + + +} + diff --git a/qadevOOo/tests/java/ifc/accessibility/_XAccessibleExtendedComponent.java b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleExtendedComponent.java new file mode 100644 index 0000000000..2156c09a00 --- /dev/null +++ b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleExtendedComponent.java @@ -0,0 +1,91 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.accessibility; + +import lib.MultiMethodTest; + +import com.sun.star.accessibility.XAccessibleExtendedComponent; +import com.sun.star.awt.XFont; + +/** + * Testing <code>com.sun.star.accessibility.XAccessibleExtendedComponent</code> + * interface methods : + * <ul> + * <li><code> getForeground()</code></li> + * <li><code> getBackground()</code></li> + * <li><code> getFont()</code></li> + * <li><code> isEnabled()</code></li> + * <li><code> getTitledBorderText()</code></li> + * <li><code> getToolTipText()</code></li> + * </ul> <p> + * @see com.sun.star.accessibility.XAccessibleExtendedComponent + */ +public class _XAccessibleExtendedComponent extends MultiMethodTest { + + public XAccessibleExtendedComponent oObj = null; + + /** + * Just calls the method. + * deprecated from version srx644g 29.10.02 on + * + public void _getForeground() { + int forColor = oObj.getForeground(); + log.println("getForeground(): " + forColor); + tRes.tested("getForeground()", true); + } + + /** + * Just calls the method. + * deprecated from version srx644g 29.10.02 on + * + public void _getBackground() { + int backColor = oObj.getBackground(); + log.println("getBackground(): " + backColor); + tRes.tested("getBackground()", true); + } + + /** + * Just calls the method. + */ + public void _getFont() { + XFont font = oObj.getFont(); + log.println("getFont(): " + font); + tRes.tested("getFont()", true); + } + + /** + * Calls the method and checks returned value. + * Has OK status if returned value isn't null. + */ + public void _getTitledBorderText() { + String titleBorderText = oObj.getTitledBorderText(); + log.println("getTitledBorderText(): '" + titleBorderText + "'"); + tRes.tested("getTitledBorderText()", titleBorderText != null); + } + + /** + * Calls the method and checks returned value. + * Has OK status if returned value isn't null. + */ + public void _getToolTipText() { + String toolTipText = oObj.getToolTipText(); + log.println("getToolTipText(): '" + toolTipText + "'"); + tRes.tested("getToolTipText()", toolTipText != null); + } +} diff --git a/qadevOOo/tests/java/ifc/accessibility/_XAccessibleImage.java b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleImage.java new file mode 100644 index 0000000000..c19b06850f --- /dev/null +++ b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleImage.java @@ -0,0 +1,65 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.accessibility; + +import lib.MultiMethodTest; + +import com.sun.star.accessibility.XAccessibleImage; + +/** + * Testing <code>com.sun.star.accessibility.XAccessibleImage</code> + * interface methods : + * <ul> + * <li><code>getAccessibleImageDescription()</code></li> + * <li><code>getAccessibleImageHeight()</code></li> + * <li><code>getAccessibleImageWidth()</code></li> + * </ul> <p> + * @see com.sun.star.accessibility.XAccessibleImage + */ +public class _XAccessibleImage extends MultiMethodTest { + + public XAccessibleImage oObj = null; + + /** + * Just calls the method. + */ + public void _getAccessibleImageDescription() { + String descr = oObj.getAccessibleImageDescription(); + log.println("getAccessibleImageDescription(): '" + descr + "'"); + tRes.tested("getAccessibleImageDescription()", descr != null); + } + + /** + * Just calls the method. + */ + public void _getAccessibleImageHeight() { + int height = oObj.getAccessibleImageHeight(); + log.println("getAccessibleImageHeight(): " + height); + tRes.tested("getAccessibleImageHeight()", true); + } + + /** + * Just calls the method. + */ + public void _getAccessibleImageWidth() { + int width = oObj.getAccessibleImageWidth(); + log.println("getAccessibleImageWidth(): " + width); + tRes.tested("getAccessibleImageWidth()", true); + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/accessibility/_XAccessibleSelection.java b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleSelection.java new file mode 100644 index 0000000000..d6b5a3cfbf --- /dev/null +++ b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleSelection.java @@ -0,0 +1,586 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.accessibility; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleContext; +import com.sun.star.accessibility.XAccessibleSelection; +import com.sun.star.uno.UnoRuntime; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + + +/** + * Testing <code>com.sun.star.accessibility.XAccessibleSelection</code> + * interface methods : + * <ul> + * <li><code>selectAccessibleChild()</code></li> + * <li><code>isAccessibleChildSelected()</code></li> + * <li><code>clearAccessibleSelection()</code></li> + * <li><code>selectAllAccessibleChildren()</code></li> + * <li><code>getSelectedAccessibleChildCount()</code></li> + * <li><code>getSelectedAccessibleChild()</code></li> + * <li><code>deselectAccessibleChild()</code></li> + * </ul> <p> + * + * This test needs the following object relations : + * <ul> + * <li> <code>'XAccessibleSelection.multiSelection'</code> + * (of type <code>Boolean</code>) <b> optional </b>: + * Indicates whether or not multiply children could be selected. + * If the relation is <code>false</code> then more than 1 child + * couldn't be selected. </li> + * </ul> <p> + * + * @see com.sun.star.accessibility.XAccessibleSelection + */ +public class _XAccessibleSelection extends MultiMethodTest { + private static final String className = "com.sun.star.accessibility.XAccessibleSelection"; + public XAccessibleSelection oObj = null; + XAccessibleContext xAC = null; + long childCount; + protected boolean multiSelection = true; + protected boolean OneAlwaysSelected = false; + + // temporary while accessibility package is in com.sun.star + @Override + protected String getTestedClassName() { + return className; + } + + /** + * Retrieves the interface <code>XAccessibleContext</code> + * and object relation. + * @see com.sun.star.accessibility.XAccessibleContext + * @see ifc.accessibility._XAccessibleContext + */ + @Override + protected void before() { + xAC = UnoRuntime.queryInterface( + XAccessibleContext.class, oObj); + + if (xAC == null) { + throw new StatusException(Status.failed( + "Couldn't query XAccessibleContext. Test must be modified")); + } + + Boolean b = (Boolean) tEnv.getObjRelation( + "XAccessibleSelection.multiSelection"); + + if (b != null) { + multiSelection = b.booleanValue(); + } + + Boolean b2 = (Boolean) tEnv.getObjRelation( + "XAccessibleSelection.OneAlwaysSelected"); + + if (b2 != null) { + OneAlwaysSelected = b2.booleanValue(); + } + + childCount = xAC.getAccessibleChildCount(); + log.println("Child count: " + childCount); + } + + /** + * Selects accessible child with index some wrong indexes + * and with legal index. + * Has OK status if exception was thrown for wrong indexes + * and if exception wasn't thrown for correct index. + */ + public void _selectAccessibleChild() { + boolean res = true; + + try { + log.println("Try to select child with index " + childCount); + oObj.selectAccessibleChild(childCount); + log.println("Exception was expected"); + res = false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res = true; + } + + try { + log.println("Try to select child with index -1"); + oObj.selectAccessibleChild(-1); + log.println("Exception was expected"); + res = false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } + + log.println("ChildCount: " + childCount); + + long usedChildren = childCount; + + if (childCount > 500) { + log.println("Restricting to 500"); + usedChildren = 500; + } + + if (usedChildren > 0) { + try { + for (long i = 0; i < usedChildren; i++) { + log.print("Trying to select child with index " + i + ": "); + + if (isSelectable(tEnv.getTestObject(), i)) { + oObj.selectAccessibleChild(i); + log.println("OK"); + } else { + log.println("Child isn't selectable"); + } + } + + res &= true; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res = false; + } + } + + tRes.tested("selectAccessibleChild()", res); + } + + /** + * Calls the method with the wrong index and with the correct index. + * Has OK status if exception was thrown for wrong index and + * if exception wasn't thrown for the correct index. + */ + public void _isAccessibleChildSelected() throws Exception { + executeMethod("selectAccessibleChild()"); + + boolean res = true; + boolean isSelected = false; + + try { + log.print("isAccessibleChildSelected(-1)? "); + isSelected = oObj.isAccessibleChildSelected(-1); + log.println(res); + log.println("Exception was expected"); + res = false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res = true; + } + + try { + log.print("isAccessibleChildSelected(" + childCount + ")? "); + isSelected = oObj.isAccessibleChildSelected(childCount); + log.println(isSelected); + log.println("Exception was expected"); + res = false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } + + long SelectableChildCount = chkSelectable(tEnv.getTestObject()); + + if (SelectableChildCount > 500) { + SelectableChildCount = 500; + } + + log.println("SelectableChildCount: " + SelectableChildCount); + + if (SelectableChildCount > 0) { + try { + oObj.selectAllAccessibleChildren(); + + for (long k = 0; k < SelectableChildCount; k++) { + log.println("Trying to select child with index " + k); + + if (isSelectable(tEnv.getTestObject(), k)) { + oObj.selectAccessibleChild(k); + waitForEventIdle(); + isSelected = oObj.isAccessibleChildSelected(k); + log.println("isAccessibleChildSelected - " + + isSelected); + res &= isSelected; + } else { + log.println("Child isn't selectable"); + } + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res = false; + } + } + + tRes.tested("isAccessibleChildSelected()", res); + } + + /** + * Calls the method. + * Has OK status if the method <code>isAccessibleChildSelected()</code> + * returned <code>false</code>. + */ + public void _clearAccessibleSelection() throws Exception { + executeMethod("isAccessibleChildSelected()"); + + boolean res = true; + + log.println("clearAccessibleSelection"); + oObj.clearAccessibleSelection(); + + + // clearAccessibleSelection() call is oneway so we need + // some waiting + waitForEventIdle(); + + if ((childCount > 0) && !OneAlwaysSelected) { + try { + log.print("isAccessibleChildSelected(" + (childCount - 1) + + ")? "); + + boolean isSel = oObj.isAccessibleChildSelected(childCount - 1); + log.println(isSel); + res = !isSel; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res = false; + } + } else if (OneAlwaysSelected) { + log.println("Can't clear selection, one child is always selected"); + } + + tRes.tested("clearAccessibleSelection()", res); + } + + /** + * Calls the method. + * Has OK status if the method <code>isAccessibleChildSelected()</code> + * returns <code>true</code> for first and for last accessible child + * or if multiselection is not allowed. + */ + public void _selectAllAccessibleChildren() { + executeMethod("clearAccessibleSelection()"); + + log.println("selectAllAccessibleChildren..."); + oObj.selectAllAccessibleChildren(); + + + // selectAllAccessibleChildren() call is oneway so we need + // some waiting + waitForEventIdle(); + + boolean res = true; + boolean isSelected = true; + + long SelectableChildCount = chkSelectable(tEnv.getTestObject()); + + if ((SelectableChildCount > 0) && multiSelection) { + try { + log.print("isAccessibleChildSelected(1)? "); + isSelected = oObj.isAccessibleChildSelected(1); + log.println(isSelected); + res = isSelected; + + log.print("isAccessibleChildSelected(" + (childCount - 1) + + ")? "); + isSelected = oObj.isAccessibleChildSelected(childCount - 1); + log.println(isSelected); + res &= isSelected; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res = false; + } + } + + tRes.tested("selectAllAccessibleChildren()", res); + } + + /** + * Calls the method. Clears accessible selection and calls the method again. + * <p> + * Has OK status if the method returns number equal to number of accessible + * child count after first call if multiselection allowed, or + * 1 returned if multiselection not allowed. + * And if the method returns a zero after clearing selection. + */ + public void _getSelectedAccessibleChildCount() { + log.println("getSelectedAccessibleChildCount():"); + + if (multiSelection) { + oObj.selectAllAccessibleChildren(); + } else { + long usedChildren = childCount; + + if (childCount > 500) { + log.println("Restricting to 500"); + usedChildren = 500; + } + + if (usedChildren > 0) { + try { + for (long i = 0; i < usedChildren; i++) { + + if (isSelectable(tEnv.getTestObject(), i)) { + log.print("Trying to select child with index "+i+": "); + oObj.selectAccessibleChild(i); + long curtime = System.currentTimeMillis(); + long checktime = System.currentTimeMillis(); + + while (!oObj.isAccessibleChildSelected(i) && (checktime-curtime<5000)) { + checktime = System.currentTimeMillis(); + } + + log.println("OK"); + } + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + } + } + } + + long sCount = chkSelectable(tEnv.getTestObject()); + log.println("Found " + sCount + " selectable Children"); + + long selectedCount = oObj.getSelectedAccessibleChildCount(); + log.println("After selecting all accessible " + selectedCount + + " are selected"); + + boolean res = true; + + if (multiSelection) { + res &= (selectedCount == sCount); + } else { + res &= (selectedCount == 1); + } + + log.println("clearAccessibleSelection..."); + oObj.clearAccessibleSelection(); + log.print("getSelectedAccessibleChildCount: "); + selectedCount = oObj.getSelectedAccessibleChildCount(); + log.println(selectedCount); + + if (OneAlwaysSelected) { + res &= (selectedCount == 1); + } else { + res &= (selectedCount == 0); + } + + tRes.tested("getSelectedAccessibleChildCount()", res); + } + + /** + * Calls the method with wrong and correct indexes. + * Has OK status if exception was thrown for the wrong indexes, + * if exception wasn't thrown for the correct index and + * if the method have returned a not null for the correct index. + */ + public void _getSelectedAccessibleChild() throws Exception { + executeMethod("getSelectedAccessibleChildCount()"); + + boolean res = true; + long selectedCount = oObj.getSelectedAccessibleChildCount(); + log.println("getSelectedAccessibleChildCount: " + selectedCount); + + try { + log.println("getSelectedAccessibleChild(-1)"); + oObj.getSelectedAccessibleChild(-1); + log.println("Exception was expected"); + res = false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res = true; + } + + try { + log.println("getSelectedAccessibleChild(" + selectedCount + ")"); + oObj.getSelectedAccessibleChild(selectedCount); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } + + long SelectableChildCount = chkSelectable(tEnv.getTestObject()); + + if (SelectableChildCount > 500) { + SelectableChildCount = 500; + } + + if (SelectableChildCount > 0) { + long k = 0; + try { + for (k = 0; k < SelectableChildCount; k++) { + log.println("Trying to select child with index " + k); + + if (isSelectable(tEnv.getTestObject(), k)) { + oObj.selectAccessibleChild(k); + waitForEventIdle(); + log.println("selected child count: " + + oObj.getSelectedAccessibleChildCount()); + XAccessible selChild = oObj.getSelectedAccessibleChild(0); + res &= (selChild != null); + log.println("valid child - " + (selChild != null)); + } else { + log.println("Child isn't selectable"); + } + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception: Last relevant calls:\n " + + "\toObj.selectAccessibleChild("+k+")\n" + + "\toObj.getSelectedAccessibleChild(0)"); + e.printStackTrace(log); + res = false; + } + } + + tRes.tested("getSelectedAccessibleChild()", res); + } + + /** + * Calls the method with wrong and with correct indexes. + * Has OK status if exceptions were thrown for the calls with + * the wrong indexes, if exception wasn't thrown for the call + * with correct index and if number of selected child was + * decreased after the correct call. + */ + public void _deselectAccessibleChild() { + executeMethod("getSelectedAccessibleChild()"); + + boolean res = true; + long selCount = oObj.getSelectedAccessibleChildCount(); + log.println("getSelectedAccessibleChildCount():" + selCount); + + try { + log.println("deselectAccessibleChild(-1)"); + oObj.deselectAccessibleChild(-1); + log.println("Exception was expected"); + res = false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } + + try { + log.println("deselectAccessibleChild(" + (childCount + 1) + ")"); + oObj.deselectAccessibleChild(childCount + 1); + log.println("Exception was expected"); + res = false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } + + log.println("#################"); + log.println("Selecting all accessible"); + oObj.selectAllAccessibleChildren(); + selCount = oObj.getSelectedAccessibleChildCount(); + log.println("getSelectedAccessibleChildCount():" + selCount); + + if ((childCount > 0) && (selCount > 0)) { + try { + long maxCount = chkSelectable(tEnv.getTestObject()); + + if (childCount > 100) { + maxCount = 100; + } + + for (long k = 0; k < maxCount; k++) { + log.println("deselectAccessibleChild(" + k + ")"); + + if (oObj.isAccessibleChildSelected(k)) { + oObj.deselectAccessibleChild(k); + } + } + + long newSelCount = oObj.getSelectedAccessibleChildCount(); + log.println("getSelectedAccessibleChildCount():" + + newSelCount); + + if (OneAlwaysSelected && (selCount == 1)) { + log.println("One Child is always selected"); + res &= true; + } else { + res &= (selCount > newSelCount); + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res = false; + } + } + + tRes.tested("deselectAccessibleChild()", res); + } + + protected static long chkSelectable(Object Testcase) { + long ret = 0; + XAccessibleContext accCon = UnoRuntime.queryInterface( + XAccessibleContext.class, Testcase); + long cc = accCon.getAccessibleChildCount(); + + if (cc > 500) { + return cc; + } + + for (long i = 0; i < cc; i++) { + try { + if ((accCon.getAccessibleChild(i).getAccessibleContext() + .getAccessibleStateSet() + & com.sun.star.accessibility.AccessibleStateType.SELECTABLE) != 0) { + ret = ret + 1; + System.out.println("Child " + i + " is selectable"); + } + } catch (com.sun.star.lang.IndexOutOfBoundsException iab) { + } + } + + return ret; + } + + protected static boolean isSelectable(Object Testcase, long index) { + XAccessibleContext accCon = UnoRuntime.queryInterface( + XAccessibleContext.class, Testcase); + boolean res = false; + + try { + if ((accCon.getAccessibleChild(index).getAccessibleContext() + .getAccessibleStateSet() + & com.sun.star.accessibility.AccessibleStateType.SELECTABLE) != 0) { + res = true; + } + + //selecting menuitems or the separator will lead to closing the menu + if ((accCon.getAccessibleChild(index).getAccessibleContext() + .getAccessibleRole() == AccessibleRole.MENU_ITEM) || + (accCon.getAccessibleChild(index).getAccessibleContext() + .getAccessibleRole() == AccessibleRole.SEPARATOR)) { + res = false; + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + System.out.println("Exception while checking for selectability"); + } + + return res; + } +} diff --git a/qadevOOo/tests/java/ifc/accessibility/_XAccessibleTable.java b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleTable.java new file mode 100644 index 0000000000..2e66b43068 --- /dev/null +++ b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleTable.java @@ -0,0 +1,999 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.accessibility; + +import lib.MultiMethodTest; + +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleContext; +import com.sun.star.accessibility.XAccessibleSelection; +import com.sun.star.accessibility.XAccessibleTable; +import com.sun.star.uno.UnoRuntime; + +/** + * Testing <code>com.sun.star.accessibility.XAccessibleTable</code> + * interface methods : + * <ul> + * <li><code>getAccessibleRowCount()</code></li> + * <li><code>getAccessibleColumnCount()</code></li> + * <li><code>getAccessibleRowDescription()</code></li> + * <li><code>getAccessibleColumnDescription()</code></li> + * <li><code>getAccessibleRowExtentAt()</code></li> + * <li><code>getAccessibleColumnExtentAt()</code></li> + * <li><code>getAccessibleRowHeaders()</code></li> + * <li><code>getAccessibleColumnHeaders()</code></li> + * <li><code>getSelectedAccessibleRows()</code></li> + * <li><code>getSelectedAccessibleColumns()</code></li> + * <li><code>isAccessibleRowSelected()</code></li> + * <li><code>isAccessibleColumnSelected()</code></li> + * <li><code>getAccessibleCellAt()</code></li> + * <li><code>getAccessibleCaption()</code></li> + * <li><code>getAccessibleSummary()</code></li> + * <li><code>isAccessibleSelected()</code></li> + * <li><code>getAccessibleIndex()</code></li> + * <li><code>getAccessibleRow()</code></li> + * <li><code>getAccessibleColumn()</code></li> + * </ul> <p> + * @see com.sun.star.accessibility.XAccessibleTable + */ +public class _XAccessibleTable extends MultiMethodTest { + + public XAccessibleTable oObj = null; + XAccessibleSelection xASel = null; + XAccessibleContext xACont = null; + + @Override + protected void before() { + xASel = UnoRuntime.queryInterface(XAccessibleSelection.class, oObj); + if (xASel == null) { + log.println("The component doesn't implement the interface " + + "XAccessibleSelection."); + log.println("This interface is required for more detailed tests."); + } + + xACont = UnoRuntime.queryInterface(XAccessibleContext.class, oObj); + } + + int rowCount = 0; + + /** + * Calls the method and stores the returned value to the variable + * <code>rowCount</code>. + */ + public void _getAccessibleRowCount() { + rowCount = oObj.getAccessibleRowCount(); + log.println("Accessible row count: " + rowCount); + tRes.tested("getAccessibleRowCount()", true); + } + + int colCount = 0; + + /** + * Calls the method and stores the returned value to the variable + * <code>colCount</code>. + */ + public void _getAccessibleColumnCount() { + colCount = oObj.getAccessibleColumnCount(); + log.println("Accessible column count: " + colCount); + tRes.tested("getAccessibleColumnCount()", true); + } + + /** + * Calls the method with the wrong indexes and with the correct index, + * checks a returned value. + * Has OK status if exceptions were thrown for the wrong indexes, + * if exception wasn't thrown for the correct index and + * if returned value isn't <code>null</code>. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getAccessibleRowCount()</code> </li> + * </ul> + */ + public void _getAccessibleRowDescription() { + requiredMethod("getAccessibleRowCount()"); + boolean res = true; + + try { + log.print("getAccessibleRowDescription(-1): "); + String descr = oObj.getAccessibleRowDescription(-1); + log.println("'" + descr + "'"); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleRowDescription(" + rowCount + "): "); + String descr = oObj.getAccessibleRowDescription(rowCount); + log.println("'" + descr + "'"); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleRowDescription(" + (rowCount - 1) + "): "); + String descr = + oObj.getAccessibleRowDescription(rowCount - 1); + res &= descr != null; + log.println("'" + descr + "'"); + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getAccessibleRowDescription()", res); + } + + /** + * Calls the method with the wrong indexes and with the correct index, + * checks a returned value. + * Has OK status if exceptions were thrown for the wrong indexes, + * if exception wasn't thrown for the correct index and + * if returned value isn't <code>null</code>. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getAccessibleColumnCount()</code> </li> + * </ul> + */ + public void _getAccessibleColumnDescription() { + requiredMethod("getAccessibleColumnCount()"); + boolean res = true; + + try { + log.print("getAccessibleColumnDescription(-1): "); + String descr = oObj.getAccessibleColumnDescription(-1); + log.println("'" + descr + "'"); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleColumnDescription(" + colCount + "): "); + String descr = oObj.getAccessibleColumnDescription(colCount); + log.println("'" + descr + "'"); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleColumnDescription(" + (colCount - 1) + "): "); + String descr = + oObj.getAccessibleColumnDescription(colCount - 1); + res &= descr != null; + log.println("'" + descr + "'"); + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getAccessibleColumnDescription()", res); + } + + + /** + * Calls the method with the wrong parameters and with the correct + * parameters, checks a returned value. + * Has OK status if exceptions were thrown for the wrong indexes, + * if exception wasn't thrown for the correct index and + * if returned value is greater than or is equal to 1. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getAccessibleColumnCount()</code> </li> + * <li> <code>getAccessibleRowCount()</code> </li> + * </ul> + */ + public void _getAccessibleRowExtentAt() { + requiredMethod("getAccessibleRowCount()"); + requiredMethod("getAccessibleColumnCount()"); + boolean res = true; + + try { + log.print("getAccessibleRowExtentAt(-1," + (colCount-1) + "):"); + int ext = oObj.getAccessibleRowExtentAt(-1, colCount - 1); + log.println(ext); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleRowExtentAt(" + (rowCount-1) + ",-1):"); + int ext = oObj.getAccessibleRowExtentAt(rowCount - 1, -1); + log.println(ext); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleRowExtentAt(0," + colCount + "):"); + int ext = oObj.getAccessibleRowExtentAt(0, colCount); + log.println(ext); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleRowExtentAt(" + rowCount + ",0):"); + int ext = oObj.getAccessibleRowExtentAt(rowCount, 0); + log.println(ext); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleRowExtentAt(" + + (rowCount-1) + "," + (colCount-1) + "):"); + int ext = oObj.getAccessibleRowExtentAt(rowCount-1, colCount - 1); + log.println(ext); + res &= ext >= 1; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getAccessibleRowExtentAt()", res); + } + + /** + * Calls the method with the wrong parameters and with the correct + * parameters, checks a returned value. + * Has OK status if exceptions were thrown for the wrong indexes, + * if exception wasn't thrown for the correct index and + * if returned value is greater than or is equal to 1. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getAccessibleColumnCount()</code> </li> + * <li> <code>getAccessibleRowCount()</code> </li> + * </ul> + */ + public void _getAccessibleColumnExtentAt() { + requiredMethod("getAccessibleRowCount()"); + requiredMethod("getAccessibleColumnCount()"); + boolean res = true; + + try { + log.print("getAccessibleColumnExtentAt(-1," + (colCount-1) + "):"); + int ext = oObj.getAccessibleColumnExtentAt(-1, colCount - 1); + log.println(ext); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleColumnExtentAt(" + (rowCount-1) + ",-1):"); + int ext = oObj.getAccessibleColumnExtentAt(rowCount - 1, -1); + log.println(ext); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleColumnExtentAt(0," + colCount + "):"); + int ext = oObj.getAccessibleColumnExtentAt(0, colCount); + log.println(ext); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleColumnExtentAt(" + rowCount + ",0):"); + int ext = oObj.getAccessibleColumnExtentAt(rowCount, 0); + log.println(ext); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleColumnExtentAt(" + + (rowCount-1) + "," + (colCount-1) + "):"); + int ext = oObj.getAccessibleColumnExtentAt(rowCount-1,colCount - 1); + log.println(ext); + res &= ext >= 1; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getAccessibleColumnExtentAt()", res); + } + + /** + * Calls the method and checks a returned value. + * Has OK status if returned value isn't <code>null</code>. + */ + public void _getAccessibleRowHeaders() { + XAccessibleTable rowHeaders = oObj.getAccessibleRowHeaders(); + log.println("getAccessibleRowHeaders(): " + rowHeaders); + tRes.tested("getAccessibleRowHeaders()", true); + } + + /** + * Calls the method and checks a returned value. + * Has OK status if returned value isn't <code>null</code>. + */ + public void _getAccessibleColumnHeaders() { + XAccessibleTable colHeaders = oObj.getAccessibleColumnHeaders(); + log.println("getAccessibleColumnHeaders(): " + colHeaders); + tRes.tested("getAccessibleColumnHeaders()", true); + } + + /** + * If the interface <code>XAccessibleSelection</code> is supported by + * the component than selects all accessible children. + * Calls the method and checks a returned sequence. + * Has OK status if a returned sequince is in ascending order. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getAccessibleRowCount()</code> </li> + * </ul> + */ + public void _getSelectedAccessibleRows() { + requiredMethod("getAccessibleRowCount()"); + boolean res = true; + boolean locRes = true; + int selRows[] = null; + + if (xASel != null) { + log.println("XAccessibleSelection.selectAllAccessibleChildren()"); + xASel.selectAllAccessibleChildren(); + } + + log.println("getSelectedAccessibleRows()"); + selRows = oObj.getSelectedAccessibleRows(); + log.println("Length of the returned sequince: " + selRows.length); + if (xASel != null) { + res &= selRows.length == rowCount; + } else { + res &= selRows.length == 0; + } + + if (selRows.length > 0) { + log.println("Checking that returned sequence is" + + " in ascending order"); + } + + for(int i = 1; i < selRows.length; i++) { + locRes &= selRows[i] >= selRows[i - 1]; + res &= locRes; + if (!locRes) { + log.println("Element #" + i + ":" + selRows[i] + + " is less than element #" + (i-1) + ": " + + selRows[i-1]); + break; + } + } + + tRes.tested("getSelectedAccessibleRows()", res); + } + + /** + * If the interface <code>XAccessibleSelection</code> is supported by + * the component than selects all accessible children. + * Calls the method and checks a returned sequence. + * Has OK status if a returned sequince is in ascending order. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getAccessibleColumnCount()</code> </li> + * </ul> + */ + public void _getSelectedAccessibleColumns() { + requiredMethod("getAccessibleColumnCount()"); + boolean res = true; + boolean locRes = true; + int selCols[] = null; + + if (xASel != null) { + log.println("XAccessibleSelection.selectAllAccessibleChildren()"); + xASel.selectAllAccessibleChildren(); + } + + log.println("getSelectedAccessibleColumns()"); + selCols = oObj.getSelectedAccessibleColumns(); + log.println("Length of the returned sequince: " + selCols.length); + + if (xASel != null) { + res &= selCols.length == colCount; + } else { + res &= selCols.length == 0; + } + + if (selCols.length > 0) { + log.println("Checking that returned sequence is" + + " in ascending order"); + } + + for(int i = 1; i < selCols.length; i++) { + locRes &= selCols[i] >= selCols[i - 1]; + res &= locRes; + if (!locRes) { + log.println("Element #" + i + ":" + selCols[i] + + " is less than element #" + (i-1) + ": " + + selCols[i-1]); + break; + } + } + + tRes.tested("getSelectedAccessibleColumns()", res); + } + + /** + * Calls the method with invalid indexes. + * If the interface <code>XAccessibleSelection</code> is supported by + * the component than selects all accessible children. + * Calls the method for every row and checks returned values. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getAccessibleRowCount()</code> </li> + * </ul> + */ + public void _isAccessibleRowSelected() { + requiredMethod("getAccessibleRowCount()"); + boolean res = true; + boolean locRes = true; + + try { + log.print("isAccessibleRowSelected(-1): "); + locRes = oObj.isAccessibleRowSelected(-1); + log.println(locRes); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("isAccessibleRowSelected(" + rowCount + "): "); + locRes = oObj.isAccessibleRowSelected(rowCount); + log.println(locRes); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + if (xASel != null) { + log.println("XAccessibleSelection.selectAllAccessibleChildren()"); + xASel.selectAllAccessibleChildren(); + } + + try { + log.println("Checking of every row selection..."); + for(int i = 0; i < rowCount; i++) { + boolean isSel = oObj.isAccessibleRowSelected(i); + locRes = (xASel == null) ? !isSel : isSel; + res &= locRes; + if (!locRes) { + log.println("isAccessibleRowSelected(" + i + "): " + isSel); + break; + } + } + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("isAccessibleRowSelected()", res); + } + + /** + * Calls the method with invalid indexes. + * If the interface <code>XAccessibleSelection</code> is supported by + * the component than selects all accessible children. + * Calls the method for every column and checks returned values. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getAccessibleRowCount()</code> </li> + * </ul> + */ + public void _isAccessibleColumnSelected() { + requiredMethod("getAccessibleColumnCount()"); + boolean res = true; + boolean locRes = true; + + try { + log.print("isAccessibleColumnSelected(-1): "); + locRes = oObj.isAccessibleColumnSelected(-1); + log.println(locRes); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("isAccessibleColumnSelected(" + colCount + "): "); + locRes = oObj.isAccessibleColumnSelected(colCount); + log.println(locRes); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + if (xASel != null) { + log.println("XAccessibleSelection.selectAllAccessibleChildren()"); + xASel.selectAllAccessibleChildren(); + } + + try { + log.println("Checking of every column selection..."); + for(int i = 0; i < colCount; i++) { + boolean isSel = oObj.isAccessibleColumnSelected(i); + locRes = (xASel == null) ? !isSel : isSel; + res &= locRes; + if (!locRes) { + log.println("isAccessibleColumnSelected(" + i + "): " + isSel); + break; + } + } + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("isAccessibleColumnSelected()", res); + } + + XAccessible xCellAc = null; + + /** + * Calls the method with the wrong parameters and with the correct + * parameter, checks a returned value and stores it to the variable + * <code>xCellAc</code>. + * Has OK status if exceptions were thrown for the wrong indexes, + * if exception wasn't thrown for the correct index and + * if returned value isn't null. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getAccessibleColumnCount()</code> </li> + * <li> <code>getAccessibleRowCount()</code> </li> + * </ul> + */ + public void _getAccessibleCellAt() { + requiredMethod("getAccessibleRowCount()"); + requiredMethod("getAccessibleColumnCount()"); + boolean res = true; + + try { + log.print("getAccessibleCellAt(-1," + (colCount-1) + "):"); + xCellAc = oObj.getAccessibleCellAt(-1, colCount - 1); + log.println(xCellAc); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleCellAt(" + (rowCount-1) + ",-1):"); + xCellAc = oObj.getAccessibleCellAt(rowCount - 1, -1); + log.println(xCellAc); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleCellAt(0, " + colCount + "):"); + xCellAc = oObj.getAccessibleCellAt(0, colCount); + log.println(xCellAc); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleCellAt(" + rowCount + ",0):"); + XAccessible xCellAc = oObj.getAccessibleCellAt(rowCount, 0); + log.println(xCellAc); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleCellAt(" + (rowCount-1) + "," + + (colCount-1) + "): "); + xCellAc = oObj.getAccessibleCellAt( + rowCount - 1, colCount - 1); + log.println(xCellAc); + res &= xCellAc != null; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getAccessibleCellAt()", res); + } + + /** + * Just calls the method. + */ + public void _getAccessibleCaption() { + XAccessible caption = oObj.getAccessibleCaption(); + log.println("getAccessibleCaption(): " + caption); + tRes.tested("getAccessibleCaption()", true); + } + + /** + * Just calls the method. + */ + public void _getAccessibleSummary() { + XAccessible summary = oObj.getAccessibleSummary(); + log.println("getAccessibleSummary(): " + summary); + tRes.tested("getAccessibleSummary()", true); + } + + /** + * Calls the method with the wrong parameters and with the correct + * parameter, checks a returned value. + * Has OK status if exceptions were thrown for the wrong indexes, + * if exception wasn't thrown for the correct index. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getAccessibleColumnCount()</code> </li> + * <li> <code>getAccessibleRowCount()</code> </li> + * </ul> + */ + public void _isAccessibleSelected() { + requiredMethod("getAccessibleRowCount()"); + requiredMethod("getAccessibleColumnCount()"); + boolean res = true; + boolean locRes = true; + + try { + log.print("isAccessibleSelected(-1," + (colCount-1) + "):"); + locRes = oObj.isAccessibleSelected(-1, colCount - 1); + log.println(locRes); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("isAccessibleSelected(" + (rowCount-1) + ",-1):"); + locRes = oObj.isAccessibleSelected(rowCount - 1, -1); + log.println(locRes); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("isAccessibleSelected(0, " + colCount + "):"); + locRes = oObj.isAccessibleSelected(0, colCount); + log.println(locRes); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("isAccessibleSelected(" + rowCount + ",0):"); + locRes = oObj.isAccessibleSelected(rowCount, 0); + log.println(locRes); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + if (xASel != null) { + log.println("XAccessibleSelection.selectAllAccessibleChildren()"); + xASel.selectAllAccessibleChildren(); + } + + try { + log.print("isAccessibleSelected(" + (rowCount-1) + "," + + (colCount-1) + "): "); + boolean isSel = oObj.isAccessibleSelected( + rowCount - 1, colCount - 1); + log.println(isSel); + locRes = (xASel == null) ? !isSel : isSel ; + res &= locRes; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("isAccessibleSelected()", res); + } + + /** + * Calls the method with the wrong parameters and with the correct + * parameter, checks a returned value. + * Has OK status if exceptions were thrown for the wrong indexes, + * if exception wasn't thrown for the correct index and + * if returned value is equal to value returned by calling + * <code>XAccessibleContext::getAccessibleIndexInParent</code> for the cell. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getAccessibleCellAt()</code> </li> + * </ul> + */ + public void _getAccessibleIndex() { + executeMethod("getAccessibleCellAt()"); + boolean res = true; + + try { + log.print("getAccessibleIndex(-1," + (colCount-1) + "):"); + long indx = oObj.getAccessibleIndex(-1, colCount - 1); + log.println(indx); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleIndex(" + (rowCount-1) + ",-1):"); + long indx = oObj.getAccessibleIndex(rowCount - 1, -1); + log.println(indx); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleIndex(0," + colCount + "):"); + long indx = oObj.getAccessibleIndex(0, colCount); + log.println(indx); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleIndex(" + rowCount + ",0):"); + long indx = oObj.getAccessibleIndex(rowCount, 0); + log.println(indx); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleIndex(" + (rowCount-1) + "," + + (colCount-1) + "): "); + long indx = oObj.getAccessibleIndex(rowCount - 1, colCount - 1); + log.println(indx); + if (xCellAc != null) { + XAccessibleContext xAC = xCellAc.getAccessibleContext(); + long expIndx = xAC.getAccessibleIndexInParent(); + log.println("Expected index: " + expIndx); + res &= expIndx == indx; + } else { + res &= true; + } + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getAccessibleIndex()", res); + } + + /** + * Receives an accessible child count using the interface + * <code>XAccessibleContext</code>. + * Calls the method with the wrong parameters and with the correct + * parameter, checks a returned value. + * Has OK status if exceptions were thrown for the wrong indexes, + * if exception wasn't thrown for the correct index and + * if returned value is greater than zero and is less than + * accessible row count. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getAccessibleRowCount()</code> </li> + * </ul> + */ + public void _getAccessibleRow() { + requiredMethod("getAccessibleRowCount()"); + boolean res = true; + + if (xACont != null) { + long childCount = xACont.getAccessibleChildCount(); + log.println("accessible child count: " + childCount); + + try { + log.print("getAccessibleRow(" + childCount + "): "); + int rowIndx = oObj.getAccessibleRow(childCount); + log.println(rowIndx); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleRow(" + (childCount-1) + "): "); + int rowIndx = oObj.getAccessibleRow(childCount - 1); + log.println(rowIndx); + res &= (rowIndx >= 0 && rowIndx <= rowCount); + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + } + + try { + log.print("getAccessibleRow(-1): "); + int rowIndx = oObj.getAccessibleRow(-1); + log.println(rowIndx); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleRow(0): "); + int rowIndx = oObj.getAccessibleRow(0); + log.println(rowIndx); + res &= (rowIndx >= 0 && rowIndx <= rowCount); + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getAccessibleRow()", res); + } + + /** + * Receives an accessible child count using the interface + * <code>XAccessibleContext</code>. + * Calls the method with the wrong parameters and with the correct + * parameter, checks a returned value. + * Has OK status if exceptions were thrown for the wrong indexes, + * if exception wasn't thrown for the correct index and + * if returned value is greater than zero and is less than + * accessible column count. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getAccessibleColumnCount()</code> </li> + * </ul> + */ + public void _getAccessibleColumn() { + requiredMethod("getAccessibleColumnCount()"); + boolean res = true; + + if (xACont != null) { + long childCount = xACont.getAccessibleChildCount(); + log.println("accessible child count: " + childCount); + + try { + log.print("getAccessibleColumn(" + childCount + "): "); + int colIndx = oObj.getAccessibleColumn(childCount); + log.println(colIndx); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleColumn(" + (childCount-1) + "): "); + int colIndx = oObj.getAccessibleColumn(childCount - 1); + log.println(colIndx); + res &= (colIndx >= 0 && colIndx <= colCount); + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + } + + try { + log.print("getAccessibleColumn(-1): "); + int colIndx = oObj.getAccessibleColumn(-1); + log.println(colIndx); + log.println("Exception was expected"); + res &= false; + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("getAccessibleColumn(0): "); + int colIndx = oObj.getAccessibleColumn(0); + log.println(colIndx); + res &= (colIndx >= 0 && colIndx <= rowCount); + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getAccessibleColumn()", res); + } +} diff --git a/qadevOOo/tests/java/ifc/accessibility/_XAccessibleText.java b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleText.java new file mode 100644 index 0000000000..b4dd7d6745 --- /dev/null +++ b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleText.java @@ -0,0 +1,1208 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.accessibility; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.accessibility.AccessibleTextType; +import com.sun.star.accessibility.TextSegment; +import com.sun.star.accessibility.XAccessibleComponent; +import com.sun.star.accessibility.XAccessibleText; +import com.sun.star.awt.Point; +import com.sun.star.awt.Rectangle; +import com.sun.star.beans.PropertyValue; +import com.sun.star.uno.UnoRuntime; + + +/** + * Testing <code>com.sun.star.accessibility.XAccessibleText</code> + * interface methods : + * <ul> + * <li><code> getCaretPosition()</code></li> + * <li><code> setCaretPosition()</code></li> + * <li><code> getCharacter()</code></li> + * <li><code> getCharacterAttributes()</code></li> + * <li><code> getCharacterBounds()</code></li> + * <li><code> getCharacterCount()</code></li> + * <li><code> getIndexAtPoint()</code></li> + * <li><code> getSelectedText()</code></li> + * <li><code> getSelectionStart()</code></li> + * <li><code> getSelectionEnd()</code></li> + * <li><code> setSelection()</code></li> + * <li><code> getText()</code></li> + * <li><code> getTextRange()</code></li> + * <li><code> getTextAtIndex()</code></li> + * <li><code> getTextBeforeIndex()</code></li> + * <li><code> getTextBehindIndex()</code></li> + * <li><code> copyText()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'XAccessibleText.Text'</code> (of type <code>String</code>) + * <b> optional </b> : + * the string presentation of component's text. If the relation + * is not specified, then text from method <code>getText()</code> + * is used. + * </li> + * </ul> <p> + * @see com.sun.star.accessibility.XAccessibleText + */ +public class _XAccessibleText extends MultiMethodTest { + + public XAccessibleText oObj = null; + protected com.sun.star.awt.Rectangle bounds = null; + String text = null; + String editOnly = null; + Object LimitedBounds = null; + Rectangle chBounds = null; + int chCount = 0; + + + /** + * Retrieves a string representation of the component's text. + * The length of retrieved string must be greater than zero. + */ + @Override + protected void before() { + Object xat = tEnv.getObjRelation("XAccessibleText"); + + XAccessibleComponent component = null; + + if (xat != null) { + oObj = UnoRuntime.queryInterface( + XAccessibleText.class, xat); + component = UnoRuntime.queryInterface( + XAccessibleComponent.class, xat); + } + + text = (String) tEnv.getObjRelation("XAccessibleText.Text"); + + if (text == null) { + text = oObj.getText(); + } + + if (text.length() == 0) { + throw new StatusException(Status.failed( + "The length of text must be greater than zero")); + } + + editOnly = (String) tEnv.getObjRelation("EditOnly"); + LimitedBounds = tEnv.getObjRelation("LimitedBounds"); + + if (component == null) { + component = UnoRuntime.queryInterface( + XAccessibleComponent.class, + tEnv.getTestObject()); + } + + bounds = component.getBounds(); + + log.println("Text is '" + text + "'"); + System.out.println("############################"); + } + + /** + * Calls the method and checks returned value. + * Has OK status if returned value is equal to <code>chCount - 1</code>. + * The following method tests are to be executed before: + * <ul> + * <li> <code>setCaretPosition()</code> </li> + * </ul> + */ + public void _getCaretPosition() { + requiredMethod("getCharacterCount()"); + + if (editOnly != null) { + log.println(editOnly); + throw new StatusException(Status.skipped(true)); + } + + boolean res = true; + boolean sc = true; + + try { + oObj.setCaretPosition(chCount - 1); + } catch (com.sun.star.lang.IndexOutOfBoundsException ie) { + } + + int carPos = oObj.getCaretPosition(); + log.println("getCaretPosition: " + carPos); + + if (sc) { + res = carPos == (chCount - 1); + } else { + log.println( + "Object is read only and Caret position couldn't be set"); + res = carPos == -1; + } + + tRes.tested("getCaretPosition()", res); + } + + /** + * Calls the method with the wrong index and with the correct index + * <code>chCount - 1</code>. + * Has OK status if exception was thrown for wrong index and + * if exception wasn't thrown for the correct index. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getCharacterCount()</code> </li> + * </ul> + */ + public void _setCaretPosition() { + requiredMethod("getCharacterCount()"); + + boolean res = true; + + try { + log.print("setCaretPosition(-1):"); + oObj.setCaretPosition(-1); + res &= false; + log.println("exception was expected ... FAILED"); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.print("setCaretPosition(chCount+1):"); + oObj.setCaretPosition(chCount + 1); + res &= false; + log.println("exception was expected ... FAILED"); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("expected exception"); + res &= true; + } + + try { + log.println("setCaretPosition(chCount - 1)"); + oObj.setCaretPosition(chCount - 1); + res &= true; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("unexpected exception ... FAILED"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("setCaretPosition()", res); + } + + /** + * Calls the method with the wrong index and with the correct indexes. + * Checks every character in the text. + * Has OK status if exception was thrown for wrong index, + * if exception wasn't thrown for the correct index and + * if every character is equal to corresponding character in the text. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getCharacterCount()</code> </li> + * </ul> + */ + public void _getCharacter() { + requiredMethod("getCharacterCount()"); + + boolean res = true; + + try { + log.println("getCharacter(-1)"); + oObj.getCharacter(-1); + log.println("Exception was expected"); + res = false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res = true; + } + + try { + log.println("getCharacter(chCount)"); + oObj.getCharacter(chCount); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } + + try { + log.println("Checking of every character in the text..."); + + boolean isEqCh = true; + + for (int i = 0; i < chCount; i++) { + char ch = oObj.getCharacter(i); + isEqCh = ch == text.charAt(i); + res &= isEqCh; + + if (!isEqCh) { + log.println("At the position " + i + + "was expected character: " + text.charAt(i)); + log.println("but was returned: " + ch); + + break; + } + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getCharacter()", res); + } + + /** + * Calls the method with the wrong indexes and with the correct index, + * checks a returned value. + * Has OK status if exception was thrown for the wrong indexes, + * if exception wasn't thrown for the correct index and + * if returned value isn't <code>null</code>. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getCharacterCount()</code> </li> + * </ul> + */ + public void _getCharacterAttributes() { + requiredMethod("getCharacterCount()"); + + boolean res = true; + String[] attr = new String[] { "" }; + + try { + log.println("getCharacterAttributes(-1)"); + oObj.getCharacterAttributes(-1, attr); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("unexpected exception => FAILED"); + e.printStackTrace(log); + res &= false; + } + + try { + log.println("getCharacterAttributes(chCount = " + chCount + ")"); + oObj.getCharacterAttributes(chCount, attr); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("unexpected exception => FAILED"); + e.printStackTrace(log); + res &= false; + } + + try { + log.println( + "getCharacterAttributes(chCount-1 = " + (chCount - 1) + ")"); + + PropertyValue[] props = oObj.getCharacterAttributes(chCount - 1, + attr); + res &= (props != null); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("unexpected exception => FAILED"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getCharacterAttributes()", res); + } + + /** + * Calls the method with the wrong indexes and with the correct index. + * checks and stores a returned value. + * Has OK status if exception was thrown for the wrong indexes, + * if exception wasn't thrown for the correct index and + * if returned value isn't <code>null</code>. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getCharacterCount()</code> </li> + * </ul> + */ + public void _getCharacterBounds() { + requiredMethod("getCharacterCount()"); + + boolean res = true; + + int lastIndex = chCount; + + if (LimitedBounds != null) { + if (LimitedBounds instanceof Integer) { + lastIndex = ((Integer) LimitedBounds).intValue(); + } else { + lastIndex = chCount - 1; + } + + log.println(LimitedBounds); + } + + try { + log.println("getCharacterBounds(-1)"); + oObj.getCharacterBounds(-1); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } + + try { + log.println("getCharacterBounds(" + (lastIndex + 1) + ")"); + oObj.getCharacterBounds(lastIndex + 1); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } + + try { + for (int i = 0; i < lastIndex; i++) { + log.println("getCharacterBounds(" + i + ")"); + chBounds = oObj.getCharacterBounds(i); + + boolean localres = true; + localres = chBounds.X >= 0; + localres &= (chBounds.Y >= 0); + localres &= ((chBounds.X + chBounds.Width) <= bounds.Width); + localres &= ((chBounds.X + chBounds.Width) >= 0); + localres &= ((chBounds.Y + chBounds.Height) <= bounds.Height); + localres &= ((chBounds.Y + chBounds.Height) >= 0); + + if (!localres) { + log.println("Text at this place: "+oObj.getCharacter(i)); + log.println("Character bounds outside component"); + log.println("Character rect: " + chBounds.X + ", " + + chBounds.Y + ", " + chBounds.Width + ", " + + chBounds.Height); + log.println("Component rect: " + bounds.X + ", " + + bounds.Y + ", " + bounds.Width + ", " + + bounds.Height); + } + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getCharacterBounds()", res); + } + + /** + * Calls the method and stores a returned value to the variable + * <code>chCount</code>. + * Has OK status if a returned value is equal to the text length. + */ + public void _getCharacterCount() { + chCount = oObj.getCharacterCount(); + log.println("Character count:" + chCount); + + boolean res = chCount == text.length(); + tRes.tested("getCharacterCount()", res); + } + + /** + * Calls the method for an invalid point and for the point of rectangle + * returned by the method <code>getCharacterBounds()</code>. + * Has OK status if returned value is equal to <code>-1</code> for an + * invalid point and if returned value is equal to <code>chCount-1</code> + * for a valid point. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getCharacterBounds()</code> </li> + * </ul> + */ + public void _getIndexAtPoint() { + //requiredMethod("getCharacterBounds()"); + boolean res = true; + log.print("getIndexAtPoint(-1, -1):"); + + Point pt = new Point(-1, -1); + int index = oObj.getIndexAtPoint(pt); + log.println(index); + res &= (index == -1); + + int lastIndex = chCount; + + if (LimitedBounds != null) { + if (LimitedBounds instanceof Integer) { + lastIndex = ((Integer) LimitedBounds).intValue(); + } else { + lastIndex = chCount - 1; + } + + log.println(LimitedBounds); + } + + for (int i = 0; i < lastIndex; i++) { + Rectangle aRect = null; + String text = "empty"; + + try { + aRect = oObj.getCharacterBounds(i); + text = oObj.getTextAtIndex(i, (short) 1).SegmentText; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + } catch (com.sun.star.lang.IllegalArgumentException e) { + } + + if (aRect == null) { + res = false; + log.print("aRect unexpected null"); + break; + } + + int x = aRect.X + (aRect.Width / 2); + int y = aRect.Y + (aRect.Height / 2); + + Point aPoint = new Point(x, y); + int nIndex = oObj.getIndexAtPoint(aPoint); + + x = aRect.X; + y = aRect.Y + (aRect.Height / 2); + aPoint = new Point(x, y); + int left = oObj.getIndexAtPoint(aPoint); + + + + int[] previous = (int[]) tEnv.getObjRelation("PreviousUsed"); + + if (previous != null) { + for (int k = 0; k < previous.length; k++) { + if (i == previous[k]) { + nIndex++; + } + } + } + + if (nIndex != i) { + // for some letters the center of the rectangle isn't recognised + // in this case we are happy if the left border of the rectangle + // returns the correct value. + if (left !=i) { + log.println("## Method didn't work for Point (" + x + "," + y + + ")"); + log.println("Expected Index " + i); + log.println("Gained Index: " + nIndex); + log.println("Left Border: "+left); + log.println("CharacterAtIndex: " + text); + res &= false; + } + } + } + + tRes.tested("getIndexAtPoint()", res); + } + + /** + * Checks a returned values after different calls of the method + * <code>setSelection()</code>. + * The following method tests are to be executed before: + * <ul> + * <li> <code>setSelection()</code> </li> + * </ul> + */ + public void _getSelectedText() { + if (editOnly != null) { + log.println(editOnly); + throw new StatusException(Status.skipped(true)); + } + + requiredMethod("setSelection()"); + + boolean res = true; + + try { + log.println("setSelection(0, 0)"); + oObj.setSelection(0, 0); + log.print("getSelectedText():"); + + String txt = oObj.getSelectedText(); + log.println("'" + txt + "'"); + res &= (txt.length() == 0); + + log.println("setSelection(0, chCount)"); + oObj.setSelection(0, chCount); + log.print("getSelectedText():"); + txt = oObj.getSelectedText(); + log.println("'" + txt + "'"); + res &= txt.equals(text); + + if (chCount > 2) { + log.println("setSelection(1, chCount-1)"); + oObj.setSelection(1, chCount - 1); + log.print("getSelectedText():"); + txt = oObj.getSelectedText(); + log.println("'" + txt + "'"); + res &= txt.equals(text.substring(1, chCount - 1)); + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getSelectedText()", res); + } + + /** + * Checks a returned values after different calls of the method + * <code>setSelection()</code>. + * The following method tests are to be executed before: + * <ul> + * <li> <code>setSelection()</code> </li> + * </ul> + */ + public void _getSelectionStart() { + if (editOnly != null) { + log.println(editOnly); + throw new StatusException(Status.skipped(true)); + } + + requiredMethod("setSelection()"); + + boolean res = true; + + try { + log.println("setSelection(0, chCount)"); + oObj.setSelection(0, chCount); + + int start = oObj.getSelectionStart(); + log.println("getSelectionStart():" + start); + res &= (start == 0); + + if (chCount > 2) { + log.println("setSelection(1, chCount-1)"); + oObj.setSelection(1, chCount - 1); + start = oObj.getSelectionStart(); + log.println("getSelectionStart():" + start); + res &= (start == 1); + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getSelectionStart()", res); + } + + /** + * Checks a returned values after different calls of the method + * <code>setSelection()</code>. + * The following method tests are to be executed before: + * <ul> + * <li> <code>setSelection()</code> </li> + * </ul> + */ + public void _getSelectionEnd() { + if (editOnly != null) { + log.println(editOnly); + throw new StatusException(Status.skipped(true)); + } + + requiredMethod("setSelection()"); + + boolean res = true; + + try { + log.println("setSelection(0, chCount)"); + oObj.setSelection(0, chCount); + + int end = oObj.getSelectionEnd(); + log.println("getSelectionEnd():" + end); + res &= (end == chCount); + + if (chCount > 2) { + log.println("setSelection(1, chCount-1)"); + oObj.setSelection(1, chCount - 1); + end = oObj.getSelectionEnd(); + log.println("getSelectionEnd():" + end); + res &= (end == (chCount - 1)); + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getSelectionEnd()", res); + } + + /** + * Calls the method with invalid parameters and with valid parameters. + * Has OK status if exception was thrown for invalid parameters, + * if exception wasn't thrown for valid parameters. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getCharacterCount()</code> </li> + * </ul> + */ + public void _setSelection() { + requiredMethod("getCharacterCount()"); + + boolean res = true; + boolean locRes = true; + + if (editOnly != null) { + log.println(editOnly); + throw new StatusException(Status.skipped(true)); + } + + try { + log.print("setSelection(-1, chCount-1):"); + locRes = oObj.setSelection(-1, chCount - 1); + log.println(locRes + " exception was expected"); + res &= !locRes; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } + + try { + log.print("setSelection(0, chCount+1):"); + locRes = oObj.setSelection(0, chCount + 1); + log.println(locRes + " exception was expected"); + res &= !locRes; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } + + try { + if (chCount > 2) { + log.print("setSelection(1, chCount-1):"); + locRes = oObj.setSelection(1, chCount - 1); + log.println(locRes); + res &= locRes; + + log.print("setSelection(chCount-1, 1):"); + locRes = oObj.setSelection(chCount - 1, 1); + log.println(locRes); + res &= locRes; + } + + log.print("setSelection(0, chCount-1):"); + locRes = oObj.setSelection(0, chCount - 1); + log.println(locRes); + res &= locRes; + + log.print("setSelection(chCount-1, 0):"); + locRes = oObj.setSelection(chCount - 1, 0); + log.println(locRes); + res &= locRes; + + log.print("setSelection(0, 0):"); + locRes = oObj.setSelection(0, 0); + log.println(locRes); + res &= locRes; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("setSelection()", res); + } + + /** + * Calls the method and checks returned value. + * Has OK status if returned string is equal to string + * received from relation. + */ + public void _getText() { + String txt = oObj.getText(); + log.println("getText: " + txt); + + boolean res = txt.equals(text); + tRes.tested("getText()", res); + } + + /** + * Calls the method with invalid parameters and with valid parameters, + * checks returned values. + * Has OK status if exception was thrown for invalid parameters, + * if exception wasn't thrown for valid parameters and if returned values + * are equal to corresponding substrings of the text received by relation. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getCharacterCount()</code> </li> + * </ul> + */ + public void _getTextRange() { + requiredMethod("getCharacterCount()"); + + boolean res = true; + boolean locRes = true; + + String txtRange = ""; + + try { + if (chCount > 3) { + log.print("getTextRange(1, chCount - 2): "); + + txtRange = oObj.getTextRange(1, chCount - 2); + log.println(txtRange); + locRes = txtRange.equals(text.substring(1, chCount - 2)); + res &= locRes; + + if (!locRes) { + log.println("Was expected: " + + text.substring(1, chCount - 2)); + } + } + + log.print("getTextRange(0, chCount-1): "); + + txtRange = oObj.getTextRange(0, chCount - 1); + log.println(txtRange); + locRes = txtRange.equals(text.substring(0, chCount - 1)); + res &= locRes; + + if (!locRes) { + log.println("Was expected: " + + text.substring(0, chCount - 1)); + } + + log.print("getTextRange(chCount, 0): "); + txtRange = oObj.getTextRange(chCount, 0); + log.println(txtRange); + res &= txtRange.equals(text); + + log.print("getTextRange(0, 0): "); + txtRange = oObj.getTextRange(0, 0); + log.println(txtRange); + locRes = txtRange.equals(""); + res &= locRes; + + if (!locRes) { + log.println("Empty string was expected"); + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + try { + log.print("getTextRange(-1, chCount - 1): "); + + txtRange = oObj.getTextRange(-1, chCount - 1); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } + + try { + log.print("getTextRange(0, chCount + 1): "); + + txtRange = oObj.getTextRange(0, chCount + 1); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } + + try { + log.print("getTextRange(chCount+1, -1): "); + + txtRange = oObj.getTextRange(chCount + 1, -1); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } + + tRes.tested("getTextRange()", res); + } + + /** + * Calls the method with invalid parameters and with valid parameters, + * checks returned values. + * Has OK status if exception was thrown for invalid parameters, + * if exception wasn't thrown for valid parameters and if returned values + * are equal to corresponding substrings of the text received by relation. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getCharacterCount()</code> </li> + * </ul> + */ + public void _getTextAtIndex() { + requiredMethod("getCharacterCount()"); + TextSegment txt = null; + boolean res = true; + + try { + log.print("getTextAtIndex(-1, AccessibleTextType.PARAGRAPH):"); + + txt = oObj.getTextAtIndex(-1, + AccessibleTextType.PARAGRAPH); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("UnExpected exception"); + res &= false; + } + + try { + log.print("getTextAtIndex(chCount+1," + + " AccessibleTextType.PARAGRAPH):"); + + txt = oObj.getTextAtIndex(chCount + 1, + AccessibleTextType.PARAGRAPH); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("UnExpected exception"); + res &= false; + } + + try { + log.print("getTextAtIndex(chCount," + + " AccessibleTextType.WORD):"); + + txt = oObj.getTextAtIndex(chCount, AccessibleTextType.WORD); + log.println("'" + txt.SegmentText + "'"); + res &= compareLength(0,txt.SegmentText); + if (!tEnv.getTestCase().getObjectName().equals("SmGraphicAccessible")) { + log.print("getTextAtIndex(1," + + " AccessibleTextType.PARAGRAPH):"); + txt = oObj.getTextAtIndex(1, AccessibleTextType.PARAGRAPH); + log.println("'" + txt.SegmentText + "'"); + res &= compareStrings(text,txt.SegmentText); + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getTextAtIndex()", res); + } + + /** + * Calls the method with invalid parameters and with valid parameters, + * checks returned values. + * Has OK status if exception was thrown for invalid parameters, + * if exception wasn't thrown for valid parameters and if returned values + * are equal to corresponding substrings of the text received by relation. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getCharacterCount()</code> </li> + * </ul> + */ + public void _getTextBeforeIndex() { + requiredMethod("getCharacterCount()"); + TextSegment txt = null; + boolean res = true; + + try { + log.print("getTextBeforeIndex(-1, AccessibleTextType.PARAGRAPH):"); + + txt = oObj.getTextBeforeIndex(-1, + AccessibleTextType.PARAGRAPH); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("UnExpected exception"); + res &= false; + } + + try { + log.print("getTextBeforeIndex(chCount+1, " + + "AccessibleTextType.PARAGRAPH):"); + + txt = oObj.getTextBeforeIndex(chCount + 1, + AccessibleTextType.PARAGRAPH); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("UnExpected exception"); + res &= true; + } + + try { + if (!tEnv.getTestCase().getObjectName().equals("SmGraphicAccessible") + // next one fails because the control actually contains 2 words + && !tEnv.getTestCase().getObjectName().equals("AccessibleStatusBarItem")) + { + log.print("getTextBeforeIndex(chCount," + + " AccessibleTextType.WORD):"); + + txt = oObj.getTextBeforeIndex(chCount, + AccessibleTextType.WORD); + log.println("'" + txt.SegmentText + "'"); + res &= compareLength(chCount, txt.SegmentText); + } + + log.print("getTextBeforeIndex(1," + + " AccessibleTextType.PARAGRAPH):"); + txt = oObj.getTextBeforeIndex(1, AccessibleTextType.PARAGRAPH); + log.println("'" + txt.SegmentText + "'"); + res &= compareLength(0, txt.SegmentText); + + log.print("getTextBeforeIndex(chCount-1," + + " AccessibleTextType.CHARACTER):"); + txt = oObj.getTextBeforeIndex(chCount - 1, + AccessibleTextType.CHARACTER); + log.println("'" + txt.SegmentText + "'"); + res &= compareStrings(text.substring(chCount - 2, chCount - 1), + txt.SegmentText); + + if (chCount > 2) { + log.print("getTextBeforeIndex(2," + + " AccessibleTextType.CHARACTER):"); + txt = oObj.getTextBeforeIndex(2, AccessibleTextType.CHARACTER); + log.println("'" + txt.SegmentText + "'"); + res &= compareStrings(text.substring(1, 2), txt.SegmentText); + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getTextBeforeIndex()", res); + } + + /** + * Calls the method with invalid parameters and with valid parameters, + * checks returned values. + * Has OK status if exception was thrown for invalid parameters, + * if exception wasn't thrown for valid parameters and if returned values + * are equal to corresponding substrings of the text received by relation. + * The following method tests are to be executed before: + * <ul> + * <li> <code>getCharacterCount()</code> </li> + * </ul> + */ + public void _getTextBehindIndex() { + requiredMethod("getCharacterCount()"); + TextSegment txt = null; + boolean res = true; + + try { + log.print("getTextBehindIndex(-1, AccessibleTextType.PARAGRAPH):"); + + txt = oObj.getTextBehindIndex(-1, + AccessibleTextType.PARAGRAPH); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("UnExpected exception"); + res &= true; + } + + try { + log.print("getTextBehindIndex(chCount+1, " + + "AccessibleTextType.PARAGRAPH):"); + + txt = oObj.getTextBehindIndex(chCount + 1, + AccessibleTextType.PARAGRAPH); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("UnExpected exception"); + res &= true; + } + + try { + log.print("getTextBehindIndex(chCount," + + " AccessibleTextType.PARAGRAPH):"); + + txt = oObj.getTextBehindIndex(chCount, + AccessibleTextType.PARAGRAPH); + log.println("'" + txt.SegmentText + "'"); + res &= (txt.SegmentText.length() == 0); + + log.print("getTextBehindIndex(chCount-1," + + " AccessibleTextType.PARAGRAPH):"); + txt = oObj.getTextBehindIndex(chCount - 1, + AccessibleTextType.PARAGRAPH); + log.println("'" + txt.SegmentText + "'"); + res &= (txt.SegmentText.length() == 0); + + log.print("getTextBehindIndex(1," + + " AccessibleTextType.CHARACTER):"); + txt = oObj.getTextBehindIndex(1, AccessibleTextType.CHARACTER); + log.println("'" + txt.SegmentText + "'"); + res &= txt.SegmentText.equals(text.substring(2, 3)); + + if (chCount > 2) { + log.print("getTextBehindIndex(chCount-2," + + " AccessibleTextType.CHARACTER):"); + txt = oObj.getTextBehindIndex(chCount - 2, + AccessibleTextType.CHARACTER); + log.println("'" + txt.SegmentText + "'"); + res &= txt.SegmentText.equals(text.substring(chCount - 1, chCount)); + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("getTextBehindIndex()", res); + } + + /** + * Calls the method with invalid parameters and with valid parameter, + * checks returned values. + * Has OK status if exception was thrown for invalid parameters, + * if exception wasn't thrown for valid parameter and if returned value for + * valid parameter is equal to <code>true</code>. + */ + public void _copyText() { + boolean res = true; + boolean locRes = true; + + if (editOnly != null) { + log.println(editOnly); + throw new StatusException(Status.skipped(true)); + } + + try { + log.print("copyText(-1,chCount):"); + oObj.copyText(-1, chCount); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } + + try { + log.print("copyText(0,chCount+1):"); + oObj.copyText(0, chCount + 1); + log.println("Exception was expected"); + res &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Expected exception"); + res &= true; + } + + try { + log.print("copyText(0,chCount):"); + locRes = oObj.copyText(0, chCount); + log.println(locRes); + res &= locRes; + + String cbText = null; + + try { + cbText = util.SysUtils.getSysClipboardText(tParam.getMSF()); + } catch (com.sun.star.uno.Exception e) { + log.println("Couldn't access system clipboard :"); + e.printStackTrace(log); + } + + log.println("Clipboard: '" + cbText + "'"); + res &= text.equals(cbText); + + if (chCount > 2) { + log.print("copyText(1,chCount-1):"); + locRes = oObj.copyText(1, chCount - 1); + log.println(locRes); + res &= locRes; + + try { + cbText = util.SysUtils.getSysClipboardText(tParam.getMSF()); + } catch (com.sun.star.uno.Exception e) { + log.println("Couldn't access system clipboard :"); + e.printStackTrace(log); + } + + log.println("Clipboard: '" + cbText + "'"); + res &= text.substring(1, chCount - 1).equals(cbText); + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res &= false; + } + + tRes.tested("copyText()", res); + } + + public boolean compareStrings(String expected, String getting) { + boolean res = expected.equals(getting); + + if (!res) { + log.println("## The result isn't the expected:"); + log.println("\tGetting: " + getting); + log.println("\tExpected: " + expected); + } + + return res; + } + + public boolean compareLength(int expected, String getting) { + boolean res = (expected == getting.length()); + + if (!res) { + log.println("## The result isn't the expected:"); + log.println("\tGetting: " + getting.length()); + log.println("\tExpected: " + expected); + } + + return res; + } +} diff --git a/qadevOOo/tests/java/ifc/accessibility/_XAccessibleValue.java b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleValue.java new file mode 100644 index 0000000000..865e8884d5 --- /dev/null +++ b/qadevOOo/tests/java/ifc/accessibility/_XAccessibleValue.java @@ -0,0 +1,344 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.accessibility; + + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.accessibility.XAccessibleValue; + +/** + * Testing <code>com.sun.star.accessibility.XAccessibleValue</code> + * interface methods : + * <ul> + * <li><code> getCurrentValue()</code></li> + * <li><code> setCurrentValue()</code></li> + * <li><code> getMaximumValue()</code></li> + * <li><code> getMinimumValue()</code></li> + * </ul> <p> + * + * This test needs the following object relations : + * <ul> + * <li> <code>'XAccessibleValue.anotherFromGroup'</code> + * (of type <code>XAccessibleValue</code>) <b> optional </b>: + * another component from the group(e.g. radio button group)</li> + * </ul><p> + * @see com.sun.star.accessibility.XAccessibleValue + */ +public class _XAccessibleValue extends MultiMethodTest { + + public XAccessibleValue oObj = null; + + private double minVal = 0; + private double maxVal = 0; + private static final double curVal = 0; + private Object val = null; + XAccessibleValue anotherFromGroup = null; + + @Override + protected void before() { + anotherFromGroup = (XAccessibleValue)tEnv.getObjRelation( + "XAccessibleValue.anotherFromGroup"); + } + + /** + * Gets current value and stores it as double. <p> + * + * Has <b> OK </b> status if the current value is between Min and Max + * values. <p> + * + * The following method tests are to be executed before : + * <ul> + * <li> <code> getMaximumValue </code> </li> + * <li> <code> getMinimumValue </code> </li> + * </ul> + */ + public void _getCurrentValue() { + executeMethod("getMaximumValue()"); + executeMethod("getMinimumValue()"); + + boolean result = true; + + double curVal ; + val = oObj.getCurrentValue() ; + if (util.utils.isVoid(val)) { + val = Integer.valueOf(0); + curVal = 0; + } else { + curVal = getDoubleValue(val); + } + + if (curVal < minVal || maxVal < curVal) { + log.println((curVal - minVal) + "," + (maxVal - curVal)); + log.println("Current value " + curVal + " is not in range [" + + minVal + "," + maxVal + "]"); + result = false; + } + + tRes.tested("getCurrentValue()", result) ; + } + + /** + * Performs testing for following cases : + * <ul> + * <li> Creates new value in valid range and sets it. </li> + * <li> Sets maximum and minimum values. </li> + * <li> Sets Min - 1, and Max + 1 values </li> + * </ul> <p> + * + * Has <b> OK </b> status if for the first case the value returned + * is the same as was set and the method <code>setCurrentValue</code> + * returns <code>true</code>. + * + * In the second if Max and Min values are set and method + * <code>setCurrentValue</code> returns <code>true</code>. + * + * In the third case invalid values are truncated to Min and Max + * values accordingly. <p> + * + * The following method tests are to be executed before : + * <ul> + * <li> <code> getCurrentValue() </code> </li> + * </ul> + */ + public void _setCurrentValue() { + executeMethod("getCurrentValue()"); + + boolean result = true ; + boolean partResult=true; + String noMax = "com.sun.star.comp.toolkit.AccessibleScrollBar"; + String implName = util.utils.getImplName(oObj); + + if (tEnv.getObjRelation("ValueNotPersistent")!=null) { + log.println("Excluded since it works like AccessibleAction"); + tRes.tested("setCurrentValue()",Status.skipped(true)); + return; + } + + if (anotherFromGroup == null) { + double newVal = curVal + 1; + if (newVal > maxVal) newVal -= 2; + if (newVal < minVal) newVal += 1; + + log.println("New value is " + newVal); + + Object setVal = getObjectValue(newVal, val.getClass()); + + result &= oObj.setCurrentValue(setVal); + + if (!result) { + log.println("The value can't be set"); + throw new StatusException(Status.skipped(true)); + } + + double resVal = getDoubleValue(oObj.getCurrentValue()); + log.println("Res value is " + resVal); + + result &= Math.abs(newVal - resVal) < 0.00001; + + log.println("Checking min/max values"); + result &= oObj.setCurrentValue(getObjectValue(minVal, val.getClass())); + log.println("Setting to "+ getObjectValue(minVal, val.getClass())); + resVal = getDoubleValue(oObj.getCurrentValue()); + log.println("Result min value is " + resVal); + result &= Math.abs(minVal - resVal) < 0.00001; + log.println("\t works: "+(Math.abs(minVal - resVal) < 0.00001)); + + result &= oObj.setCurrentValue(getObjectValue(maxVal, val.getClass())); + log.println("Setting to "+ getObjectValue(maxVal, val.getClass())); + resVal = getDoubleValue(oObj.getCurrentValue()); + log.println("Result max value is " + resVal); + partResult = Math.abs(maxVal - resVal) < 0.00001; + + if (implName.equals(noMax)) { + log.println("If one sets the maximum value of a scroll bar with XScrollBar::setMaximum(),"+ + "then XScrollBar::getValue() returns the maximum value minus the visible size of"+ + "the thumb"); + //using arbitrary Value, since we can't determine the resulting value + partResult = resVal > 10; + } + + result &=partResult; + log.println("\t works: "+partResult); + + log.println("Checking truncating of min/max values"); + oObj.setCurrentValue(getObjectValue(minVal - 1, val.getClass())); + log.println("Setting to "+ getObjectValue(minVal -1 , val.getClass())); + resVal = getDoubleValue(oObj.getCurrentValue()); + log.println("Result min value is " + resVal); + result &= Math.abs(minVal - resVal) < 0.00001; + log.println("\t works: "+(Math.abs(minVal - resVal) < 0.00001)); + + oObj.setCurrentValue(getObjectValue(maxVal + 1, val.getClass())); + log.println("Setting to "+ getObjectValue(maxVal +1 , val.getClass())); + resVal = getDoubleValue(oObj.getCurrentValue()); + log.println("Result max value is " + resVal); + partResult = Math.abs(maxVal - resVal) < 0.00001; + if (implName.equals(noMax)) { + log.println("If one sets the maximum value of a scroll bar with XScrollBar::setMaximum(),"+ + "then XScrollBar::getValue() returns the maximum value minus the visible size of"+ + "the thumb"); + //using arbitrary Value, since we can't determine the resulting value + partResult = resVal > 10; + } + + result &=partResult; + log.println("\t works: "+partResult); + } else { + int curValBase = getIntegerValue(val); + Object valAnotherFromGroup = anotherFromGroup.getCurrentValue(); + int curValAnother = getIntegerValue(valAnotherFromGroup); + log.println("Current value of base component: " + curValBase); + log.println("Current value of another component from group: " + + curValAnother); + log.println("Set value of base component to " + curValAnother); + if (tEnv.getTestCase().getObjectName().equals("AccessibleRadioButton")) { + anotherFromGroup.setCurrentValue(Integer.valueOf(curValBase)); + } else { + oObj.setCurrentValue(valAnotherFromGroup); + } + log.println("Checking of values..."); + int newValBase = getIntegerValue(oObj.getCurrentValue()); + int newValAnother = getIntegerValue( + anotherFromGroup.getCurrentValue()); + log.println("New value of base component: " + newValBase); + log.println("Expected value of base component: " + curValAnother); + log.println("New value of another component from group: " + + newValAnother); + log.println("Expected value of another component from group: " + + curValBase); + + result = (newValBase == curValAnother) && + (newValAnother == curValBase); + } + + tRes.tested("setCurrentValue()", result); + } + + /** + * Gets and stores maximal value. <p> + * + * Has <b> OK </b> status if non empty value returned and + * Max value is greater than Min value. + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getMinimumValue() </code> : to compare with </li> + * </ul> + */ + public void _getMaximumValue() { + requiredMethod("getMinimumValue()"); + + boolean result = true ; + + Object val = oObj.getMaximumValue(); + if (util.utils.isVoid(val)) { + maxVal = Double.MAX_VALUE ; + result = false; + } else { + maxVal = getDoubleValue(val); + } + log.println("Max is " + val.getClass()+ " = " + maxVal); + + result &= maxVal >= minVal; + + tRes.tested("getMaximumValue()", result) ; + } + + /** + * Gets and stores minimal value. <p> + * + * Has <b> OK </b> status if non empty value returned. <p> + * + */ + public void _getMinimumValue() { + boolean result = true ; + + Object val = oObj.getMinimumValue() ; + if (util.utils.isVoid(val)) { + minVal = - Double.MAX_VALUE ; + result = false; + } else { + minVal = getDoubleValue(val); + } + log.println("Min is " + val.getClass()+ " = " + minVal); + + tRes.tested("getMinimumValue()", result) ; + } + + private int getIntegerValue(Object val) { + if (val instanceof Integer) { + return ((Integer) val).intValue(); + } else { + throw new StatusException + (Status.failed("Unexpected value type: " + val.getClass())); + } + } + + private double getDoubleValue(Object val) { + if (val instanceof Integer) { + return ((Integer) val).doubleValue(); + } + else if (val instanceof Short) { + return ((Short) val).doubleValue(); + } + else if (val instanceof Float) { + return ((Float) val).doubleValue(); + } + else if (val instanceof Double) { + return ((Double) val).doubleValue(); + } + else if (util.utils.isVoid(val)) { + return Double.NaN; + } + else { + throw new StatusException + (Status.failed("Undetected value type: " + val.getClass())); + } + } + + private Object getObjectValue(double val, Class<?> clazz) { + if (clazz.equals(Integer.class)) { + return Integer.valueOf((int)val); + } + else if (clazz.equals(Short.class)) { + return Short.valueOf((short)val); + } + else if (clazz.equals(Float.class)) { + return Float.valueOf((float)val); + } + else if (clazz.equals(Double.class)) { + return Double.valueOf(val); + } + else { + throw new StatusException + (Status.failed("Unexpected class: " + clazz)); + } + } + + /** + * Disposes test environment. + */ + @Override + protected void after() { + disposeEnvironment(); + } +} diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlButtonModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlButtonModel.java new file mode 100644 index 0000000000..93d2063d5e --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlButtonModel.java @@ -0,0 +1,115 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; + +/* +* Testing <code>com.sun.star.awt.UnoControlButtonModel</code> +* service properties : +* <ul> +* <li><code> BackgroundColor</code></li> +* <li><code> DefaultButton</code></li> +* <li><code> DefaultControl</code></li> +* <li><code> Enabled</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> Label</code></li> +* <li><code> Printable</code></li> +* <li><code> Tabstop</code></li> +* <li><code> TextColor</code></li> +* </ul> +* @see com.sun.star.awt.UnoControlButtonModel +*/ +public class _UnoControlButtonModel extends MultiPropertyTest { + + /** + * Redefined method returns value, that differs from property value. + */ + protected PropertyTester ColorTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (util.ValueComparer.equalValue(oldValue, Integer.valueOf(17))) + return Integer.valueOf(25); + else + return Integer.valueOf(17); + } + }; + + /** + * Redefined method returns value, that differs from property value. + */ + protected PropertyTester BoolTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (util.ValueComparer.equalValue(oldValue, Boolean.TRUE)) + return Boolean.FALSE; + else + return Boolean.TRUE; + } + }; + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _BackgroundColor() { + log.println("Testing with custom Property tester") ; + testProperty("BackgroundColor", ColorTester) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextLineColor() { + log.println("Testing with custom Property tester") ; + testProperty("TextLineColor", ColorTester) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextColor() { + log.println("Testing with custom Property tester") ; + testProperty("TextColor", ColorTester) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _Tabstop() { + log.println("Testing with custom Property tester") ; + testProperty("Tabstop", BoolTester) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _PushButtonType() { + log.println("Testing with custom Property tester") ; + testProperty("PushButtonType", + Short.valueOf((short)0), Short.valueOf((short)1)); + } + + +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlCheckBoxModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlCheckBoxModel.java new file mode 100644 index 0000000000..74906e8bf0 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlCheckBoxModel.java @@ -0,0 +1,104 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.UnoControlCheckBoxModel</code> +* service properties : +* <ul> +* <li><code> DefaultControl</code></li> +* <li><code> Enabled</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> Label</code></li> +* <li><code> Printable</code></li> +* <li><code> State</code></li> +* <li><code> Tabstop</code></li> +* <li><code> TextColor</code></li> +* <li><code> TriState</code></li> +* </ul> +* @see com.sun.star.awt.UnoControlCheckBoxModel +*/ +public class _UnoControlCheckBoxModel extends MultiPropertyTest { + + /** + * Redefined method returns value, that differs from property value. + */ + protected PropertyTester ColorTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (util.ValueComparer.equalValue(oldValue, Integer.valueOf(17))) + return Integer.valueOf(25); + else + return Integer.valueOf(17); + } + }; + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _Tabstop() { + testProperty("Tabstop", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + if (utils.isVoid(old)) return Boolean.TRUE ; + else return null ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + if (utils.isVoid(old)) return Integer.valueOf(12345) ; + else return null ; + } + }) ; + } + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextLineColor() { + log.println("Testing with custom Property tester") ; + testProperty("TextLineColor", ColorTester) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlComboBoxModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlComboBoxModel.java new file mode 100644 index 0000000000..7e3202eba1 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlComboBoxModel.java @@ -0,0 +1,134 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/* +* Testing <code>com.sun.star.awt.UnoControlComboBoxModel</code> +* service properties : +* <ul> +* <li><code> Autocomplete</code></li> +* <li><code> BackgroundColor</code></li> +* <li><code> Border</code></li> +* <li><code> DefaultControl</code></li> +* <li><code> Dropdown</code></li> +* <li><code> Enabled</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> LineCount</code></li> +* <li><code> MaxTextLen</code></li> +* <li><code> Printable</code></li> +* <li><code> ReadOnly</code></li> +* <li><code> StringItemList</code></li> +* <li><code> Tabstop</code></li> +* <li><code> Text</code></li> +* <li><code> TextColor</code></li> +* </ul> +* @see com.sun.star.awt.UnoControlComboBoxModel +*/ +public class _UnoControlComboBoxModel extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BorderColor() { + testProperty("BorderColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _Tabstop() { + testProperty("Tabstop", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Boolean.TRUE : null ; + } + }) ; + } + + public void _Text() { + try { + oObj.setPropertyValue("MaxTextLen",Short.valueOf((short)0)); + } catch (com.sun.star.beans.UnknownPropertyException ue) { + } catch (com.sun.star.beans.PropertyVetoException pe) { + } catch (com.sun.star.lang.IllegalArgumentException ie) { + } catch (com.sun.star.lang.WrappedTargetException we) { + } + testProperty("Text"); + } + + /** + * Redefined method returns value, that differs from property value. + */ + protected PropertyTester ColorTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (util.ValueComparer.equalValue(oldValue, Integer.valueOf(17))) + return Integer.valueOf(25); + else + return Integer.valueOf(17); + } + }; + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextLineColor() { + log.println("Testing with custom Property tester") ; + testProperty("TextLineColor", ColorTester) ; + } + +} //EOF UnoControlComboBoxModel + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlContainerModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlContainerModel.java new file mode 100644 index 0000000000..a57e92986e --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlContainerModel.java @@ -0,0 +1,64 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; + +/* +* Testing <code>com.sun.star.awt.UnoControlButtonModel</code> +* service properties : +* <ul> +* <li><code> BackgroundColor</code></li> +* <li><code> Enabled</code></li> +* <li><code> Border</code></li> +* <li><code> DefaultControl</code></li> +* <li><code> Printable</code></li> +* <li><code> Text</code></li> +* <li><code> HelpText</code></li> +* <li><code> HelpURL</code></li> +* </ul> +* After test completion object environment has to be recreated. +* @see com.sun.star.awt.UnoControlContainerModel +*/ +public class _UnoControlContainerModel extends MultiPropertyTest { + + /** + * Redefined method returns value, that differs from property value. + */ + protected PropertyTester ColorTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (util.ValueComparer.equalValue(oldValue, Integer.valueOf(17))) + return Integer.valueOf(25); + else + return Integer.valueOf(17); + } + }; + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _BackgroundColor() { + log.println("Testing with custom Property tester") ; + testProperty("BackgroundColor", ColorTester) ; + } + +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlCurrencyFieldModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlCurrencyFieldModel.java new file mode 100644 index 0000000000..5698cab3f3 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlCurrencyFieldModel.java @@ -0,0 +1,130 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.UnoControlCurrencyFieldModel</code> +* service properties : +* <ul> +* <li><code> BackgroundColor</code></li> +* <li><code> Border</code></li> +* <li><code> CurrencySymbol</code></li> +* <li><code> DecimalAccuracy</code></li> +* <li><code> DefaultControl</code></li> +* <li><code> Enabled</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> ShowThousandsSeparator</code></li> +* <li><code> Printable</code></li> +* <li><code> ReadOnly</code></li> +* <li><code> Spin</code></li> +* <li><code> StrictFormat</code></li> +* <li><code> Tabstop</code></li> +* <li><code> TextColor</code></li> +* <li><code> Value</code></li> +* <li><code> ValueMax</code></li> +* <li><code> ValueMin</code></li> +* <li><code> ValueStep</code></li> +* </ul> +* @see com.sun.star.awt.UnoControlCurrencyFieldModel +*/ +public class _UnoControlCurrencyFieldModel extends MultiPropertyTest { + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return utils.isVoid(old) ? Integer.valueOf(6543) : null ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _Tabstop() { + testProperty("Tabstop", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return utils.isVoid(old) ? Boolean.TRUE : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BorderColor() { + testProperty("BorderColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return utils.isVoid(old) ? Integer.valueOf(123) : null ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextLineColor() { + testProperty("TextLineColor", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return utils.isVoid(old) ? Integer.valueOf(123) : null ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _Value() { + testProperty("Value", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return utils.isVoid(old) ? Double.valueOf(777) : + super.getNewValue(prop, old) ; + } + }) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlDateFieldModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlDateFieldModel.java new file mode 100644 index 0000000000..e0918f9e94 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlDateFieldModel.java @@ -0,0 +1,170 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/* +* Testing <code>com.sun.star.awt.UnoControlDateFieldModel</code> +* service properties : +* <ul> +* <li><code> BackgroundColor</code></li> +* <li><code> Border</code></li> +* <li><code> Date</code></li> +* <li><code> DateMax</code></li> +* <li><code> DateMin</code></li> +* <li><code> DefaultControl</code></li> +* <li><code> Enabled</code></li> +* <li><code> DateFormat</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> Printable</code></li> +* <li><code> ReadOnly</code></li> +* <li><code> Spin</code></li> +* <li><code> StrictFormat</code></li> +* <li><code> Tabstop</code></li> +* <li><code> TextColor</code></li> +* </ul> +* Almost all properties testing is automated by +* <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.awt.UnoControlDateFieldModel +*/ +public class _UnoControlDateFieldModel extends MultiPropertyTest { + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return utils.isVoid(old) ? Integer.valueOf(6543) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BorderColor() { + testProperty("BorderColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _Date() { + testProperty("Date", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return utils.isVoid(old) ? Integer.valueOf(6543) : + super.getNewValue(prop, old) ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _Tabstop() { + testProperty("Tabstop", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return utils.isVoid(old) ? Boolean.TRUE : null ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return utils.isVoid(old) ? Integer.valueOf(123) : null ; + } + }) ; + } + + /** + * Redefined method returns value, that differs from property value. + */ + protected PropertyTester ColorTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (util.ValueComparer.equalValue(oldValue, Integer.valueOf(17))) + return Integer.valueOf(25); + else + return Integer.valueOf(17); + } + }; + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextLineColor() { + log.println("Testing with custom Property tester") ; + testProperty("TextLineColor", ColorTester) ; + } + + public void _DateShowCentury() { + boolean res = false; + try { + util.dbg.printPropertyInfo(oObj,"DateShowCentury",log); + Object oDsc = oObj.getPropertyValue("DateShowCentury"); + Boolean dsc = null; + if (util.utils.isVoid(oDsc)) { + log.println("Property is void, set it to true"); + dsc = Boolean.TRUE; + } else { + dsc = (Boolean) oDsc; + dsc = Boolean.valueOf(!dsc.booleanValue()); + log.println("Setting property to "+dsc); + } + oObj.setPropertyValue("DateShowCentury",dsc); + Boolean getdsc = (Boolean) oObj.getPropertyValue("DateShowCentury"); + log.println("Getting value "+getdsc); + res = dsc.equals(getdsc); + } catch (com.sun.star.beans.UnknownPropertyException upe) { + log.println("Don't know the Property 'DateShowCentury'"); + } catch (com.sun.star.lang.WrappedTargetException wte) { + log.println("WrappedTargetException while getting Property 'DateShowCentury'"); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + log.println("IllegalArgumentException while getting Property 'DateShowCentury'"); + } catch (com.sun.star.beans.PropertyVetoException pve) { + log.println("PropertyVetoException while getting Property 'DateShowCentury'"); + } + tRes.tested("DateShowCentury",res); + + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlDialogElement.java b/qadevOOo/tests/java/ifc/awt/_UnoControlDialogElement.java new file mode 100644 index 0000000000..b374321386 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlDialogElement.java @@ -0,0 +1,26 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; + +public class _UnoControlDialogElement extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlDialogModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlDialogModel.java new file mode 100644 index 0000000000..e3fbbed11a --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlDialogModel.java @@ -0,0 +1,81 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.UnoControlDialogModel</code> +* service properties : +* <ul> +* <li><code> BackgroundColor</code></li> +* <li><code> Border</code></li> +* <li><code> DefaultControl</code></li> +* <li><code> Enabled</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> Title</code></li> +* <li><code> TextColor</code></li> +* <li><code> Sizeable</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.awt.UnoControlDialogModel +*/ +public class _UnoControlDialogModel extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextLineColor() { + testProperty("TextLineColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlEditModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlEditModel.java new file mode 100644 index 0000000000..6d2617ccb7 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlEditModel.java @@ -0,0 +1,126 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.UnoControlEditModel</code> +* service properties : +* <ul> +* <li><code> Align</code></li> +* <li><code> BackgroundColor</code></li> +* <li><code> Border</code></li> +* <li><code> DefaultControl</code></li> +* <li><code> EchoChar</code></li> +* <li><code> Enabled</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> HardLineBreaks</code></li> +* <li><code> HScroll</code></li> +* <li><code> MaxTextLen</code></li> +* <li><code> MultiLine</code></li> +* <li><code> Printable</code></li> +* <li><code> ReadOnly</code></li> +* <li><code> Tabstop</code></li> +* <li><code> Text</code></li> +* <li><code> TextColor</code></li> +* <li><code> VScroll</code></li> +* </ul> +* Almost all properties testing is automated by +* <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.awt.UnoControlEditModel +*/ +public class _UnoControlEditModel extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BorderColor() { + testProperty("BorderColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _Tabstop() { + testProperty("Tabstop", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Boolean.TRUE : null ; + } + }) ; + } + + /** + * Redefined method returns value, that differs from property value. + */ + protected PropertyTester ColorTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (util.ValueComparer.equalValue(oldValue, Integer.valueOf(17))) + return Integer.valueOf(25); + else + return Integer.valueOf(17); + } + }; + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextLineColor() { + log.println("Testing with custom Property tester") ; + testProperty("TextLineColor", ColorTester) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlFileControlModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlFileControlModel.java new file mode 100644 index 0000000000..3226f392a8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlFileControlModel.java @@ -0,0 +1,113 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.UnoControlFileControlModel</code> +* service properties : +* <ul> +* <li><code> BackgroundColor</code></li> +* <li><code> Border</code></li> +* <li><code> HelpText</code></li> +* <li><code> HelpURL</code></li> +* <li><code> FontEmphasisMark</code></li> +* <li><code> FontRelief</code></li> +* <li><code> Enabled</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> Printable</code></li> +* <li><code> Tabstop</code></li> +* <li><code> Text</code></li> +* <li><code> TextColor</code></li> +* <li><code> TextLineColor</code></li> +* </ul> +* Almost all properties testing is automated by +* <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.awt.UnoControlFileControlModel +*/ +public class _UnoControlFileControlModel extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BorderColor() { + testProperty("BorderColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextLineColor() { + testProperty("TextLineColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _Tabstop() { + testProperty("Tabstop", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Boolean.TRUE : null ; + } + }) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlFixedLineModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlFixedLineModel.java new file mode 100644 index 0000000000..bea4e906f8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlFixedLineModel.java @@ -0,0 +1,69 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.UnoControlFixedLineModel</code> +* service properties : +* <ul> +* <li><code> DefaultControl</code></li> +* <li><code> Enabled</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> HelpText</code></li> +* <li><code> HelpURL</code></li> +* <li><code> Label</code></li> +* <li><code> Orientation</code></li> +* <li><code> Printable</code></li> +* <li><code> TextColor</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.awt.UnoControlFixedLineModel +*/ +public class _UnoControlFixedLineModel extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextLineColor() { + testProperty("TextLineColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlFixedTextModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlFixedTextModel.java new file mode 100644 index 0000000000..3b2ed525f8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlFixedTextModel.java @@ -0,0 +1,106 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.UnoControlFixedTextModel</code> +* service properties : +* <ul> +* <li><code> Align</code></li> +* <li><code> BackgroundColor</code></li> +* <li><code> Border</code></li> +* <li><code> DefaultControl</code></li> +* <li><code> Enabled</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> Label</code></li> +* <li><code> MultiLine</code></li> +* <li><code> Printable</code></li> +* <li><code> TextColor</code></li> +* </ul> +* Almost all properties testing is automated by +* <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.awt.UnoControlFixedTextModel +*/ +public class _UnoControlFixedTextModel extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BorderColor() { + testProperty("BorderColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * Redefined method returns value, that differs from property value. + */ + protected PropertyTester ColorTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (util.ValueComparer.equalValue(oldValue, Integer.valueOf(17))) + return Integer.valueOf(25); + else + return Integer.valueOf(17); + } + }; + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextLineColor() { + log.println("Testing with custom Property tester") ; + testProperty("TextLineColor", ColorTester) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlFormattedFieldModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlFormattedFieldModel.java new file mode 100644 index 0000000000..4ab1a03bdf --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlFormattedFieldModel.java @@ -0,0 +1,254 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.UnoControlFormattedFieldModel</code> +* service properties : +* <ul> +* <li><code> Align</code></li> +* <li><code> BackgroundColor</code></li> +* <li><code> Border</code></li> +* <li><code> DefaultControl</code></li> +* <li><code> EffectiveDefault</code></li> +* <li><code> EffectiveMax</code></li> +* <li><code> EffectiveMin</code></li> +* <li><code> EffectiveValue</code></li> +* <li><code> Enabled</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> FormatKey</code></li> +* <li><code> FormatsSupplier</code></li> +* <li><code> MaxTextLen</code></li> +* <li><code> Printable</code></li> +* <li><code> ReadOnly</code></li> +* <li><code> Spin</code></li> +* <li><code> StrictFormat</code></li> +* <li><code> Tabstop</code></li> +* <li><code> Text</code></li> +* <li><code> TextColor</code></li> +* <li><code> HelpText</code></li> +* <li><code> HelpURL</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.awt.UnoControlFormattedFieldModel +*/ +public class _UnoControlFormattedFieldModel extends MultiPropertyTest { + + /** + * Redefined method must return a valid service name, that differs from + * name exists. + * + */ + protected PropertyTester ControlTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (util.ValueComparer.equalValue(oldValue, + "com.sun.star.form.control.FormattedField")) + return "com.sun.star.awt.UnoControlFormattedField"; + else + return "com.sun.star.form.control.FormattedField"; + } + }; + + /** + * This property must contain a valid service name. + */ + public void _DefaultControl() { + log.println("Testing with custom Property tester") ; + testProperty("DefaultControl", ControlTester) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BorderColor() { + testProperty("BorderColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object v) { + return utils.isVoid(v) ? Integer.valueOf(123) : + super.getNewValue(p,v) ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextLineColor() { + testProperty("TextLineColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object v) { + return utils.isVoid(v) ? Integer.valueOf(123) : + super.getNewValue(p,v) ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object v) { + return utils.isVoid(v) ? Integer.valueOf(123) : + super.getNewValue(p,v) ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _EffectiveDefault() { + testProperty("EffectiveDefault", Double.valueOf(5.8),Double.valueOf(2.3)) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _EffectiveValue() { + testProperty("EffectiveValue", Double.valueOf(5.8),Double.valueOf(2.3)) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _EffectiveMax() { + testProperty("EffectiveMax", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object v) { + return utils.isVoid(v) ? Double.valueOf(123.8) : + super.getNewValue(p,v) ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _FormatsSupplier() { + testProperty("FormatsSupplier", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object v) { + Object newValue = null; + try { + newValue = tParam.getMSF().createInstance( + "com.sun.star.util.NumberFormatsSupplier"); + } catch (com.sun.star.uno.Exception e) { + System.out.println("caught exception: " + e); + } + return newValue; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _EffectiveMin() { + testProperty("EffectiveMin", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object v) { + return utils.isVoid(v) ? Double.valueOf(0.1) : + super.getNewValue(p,v) ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _FormatKey() { + testProperty("FormatKey", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object v) { + return utils.isVoid(v) ? Integer.valueOf(0) : + super.getNewValue(p,v) ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _StrictFromat() { + testProperty("StrictFromat", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object v) { + return utils.isVoid(v) ? Boolean.TRUE : + super.getNewValue(p,v) ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _Tabstop() { + testProperty("Tabstop", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object v) { + return utils.isVoid(v) ? Boolean.TRUE : + null ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _Text() { + testProperty("Text", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object v) { + return utils.isVoid(v) ? "UnoControlFormattedFieldModel" : + super.getNewValue(p,v) ; + } + }) ; + } +} diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlGroupBoxModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlGroupBoxModel.java new file mode 100644 index 0000000000..0b4899d8bb --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlGroupBoxModel.java @@ -0,0 +1,78 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.UnoControlGroupBoxModel</code> +* service properties : +* <ul> +* <li><code> DefaultControl</code></li> +* <li><code> Enabled</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> Label</code></li> +* <li><code> Printable</code></li> +* <li><code> TextColor</code></li> +* </ul> +* Almost all properties testing is automated by +* <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.awt.UnoControlGroupBoxModel +*/ +public class _UnoControlGroupBoxModel extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : + super.getNewValue(p, old) ; + } + }) ; + } + + /** + * Redefined method returns value, that differs from property value. + */ + protected PropertyTester ColorTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (util.ValueComparer.equalValue(oldValue, Integer.valueOf(17))) + return Integer.valueOf(25); + else + return Integer.valueOf(17); + } + }; + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextLineColor() { + log.println("Testing with custom Property tester") ; + testProperty("TextLineColor", ColorTester) ; + } + +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlImageControlModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlImageControlModel.java new file mode 100644 index 0000000000..8b58c6284f --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlImageControlModel.java @@ -0,0 +1,104 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.UnoControlImageControlModel</code> +* service properties : +* <ul> +* <li><code> BackgroundColor </code></li> +* <li><code> Border </code></li> +* <li><code> DefaultControl </code></li> +* <li><code> Enabled </code></li> +* <li><code> ImageURL </code></li> +* <li><code> Printable </code></li> +* </ul> +* Almost all properties testing is automated by +* <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.awt.UnoControlImageControlModel +*/ +public class _UnoControlImageControlModel extends MultiPropertyTest { + + /** + * Custom <code>PropertyTester</code> used in <code>ImageURL</code> test. + */ + protected PropertyTester URLTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + if (oldValue.equals(util.utils.getFullTestURL("space-metal.jpg"))) + return util.utils.getFullTestURL("crazy-blue.jpg"); + else + return util.utils.getFullTestURL("space-metal.jpg"); + } + } ; + + /** + * Test changes one image URL onto another. + */ + public void _ImageURL() { + testProperty("ImageURL", URLTester) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + return utils.isVoid(oldValue) ? Integer.valueOf(8945) : + super.getNewValue(propName, oldValue) ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BorderColor() { + testProperty("BorderColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _Tabstop() { + testProperty("Tabstop", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object v) { + return utils.isVoid(v) ? Boolean.TRUE : + null ; + } + }) ; + } + +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlListBoxModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlListBoxModel.java new file mode 100644 index 0000000000..4c9b682f1d --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlListBoxModel.java @@ -0,0 +1,122 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.UnoControlListBoxModel</code> +* service properties : +* <ul> +* <li><code> BackgroundColor</code></li> +* <li><code> Border</code></li> +* <li><code> DefaultControl</code></li> +* <li><code> Dropdown</code></li> +* <li><code> Enabled</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> LineCount</code></li> +* <li><code> MultiSelection</code></li> +* <li><code> Printable</code></li> +* <li><code> SelectedItems</code></li> +* <li><code> StringItemList</code></li> +* <li><code> Tabstop</code></li> +* <li><code> TextColor</code></li> +* </ul> +* Almost all properties testing is automated by +* <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.awt.UnoControlListBoxModel +*/ +public class _UnoControlListBoxModel extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BorderColor() { + testProperty("BorderColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _Tabstop() { + testProperty("Tabstop", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Boolean.TRUE : null ; + } + }) ; + } + + /** + * Redefined method returns value, that differs from property value. + */ + protected PropertyTester ColorTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (util.ValueComparer.equalValue(oldValue, Integer.valueOf(17))) + return Integer.valueOf(25); + else + return Integer.valueOf(17); + } + }; + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextLineColor() { + log.println("Testing with custom Property tester") ; + testProperty("TextLineColor", ColorTester) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlModel.java new file mode 100644 index 0000000000..3ce601dd4b --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlModel.java @@ -0,0 +1,26 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; + +public class _UnoControlModel extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlNumericFieldModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlNumericFieldModel.java new file mode 100644 index 0000000000..f305c5823e --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlNumericFieldModel.java @@ -0,0 +1,130 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.UnoControlNumericFieldModel</code> +* service properties : +* <ul> +* <li><code> BackgroundColor</code></li> +* <li><code> Border</code></li> +* <li><code> DecimalAccuracy</code></li> +* <li><code> DefaultControl</code></li> +* <li><code> Enabled</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> ShowThousandsSeparator</code></li> +* <li><code> Printable</code></li> +* <li><code> ReadOnly</code></li> +* <li><code> Spin</code></li> +* <li><code> StrictFormat</code></li> +* <li><code> Tabstop</code></li> +* <li><code> TextColor</code></li> +* <li><code> Value</code></li> +* <li><code> ValueMax</code></li> +* <li><code> ValueMin</code></li> +* <li><code> ValueStep</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.awt.UnoControlNumericFieldModel +*/ +public class _UnoControlNumericFieldModel extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BorderColor() { + testProperty("BorderColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextLineColor() { + testProperty("TextLineColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _Tabstop() { + testProperty("Tabstop", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Boolean.TRUE : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _Value() { + testProperty("Value", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Double.valueOf(234.89) : + super.getNewValue(p, old) ; + } + }) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlPatternFieldModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlPatternFieldModel.java new file mode 100644 index 0000000000..cd1814f30d --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlPatternFieldModel.java @@ -0,0 +1,112 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.UnoControlPatternFieldModel</code> +* service properties : +* <ul> +* <li><code> BackgroundColor</code></li> +* <li><code> Border</code></li> +* <li><code> DefaultControl</code></li> +* <li><code> EditMask</code></li> +* <li><code> Enabled</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> LiteralMask</code></li> +* <li><code> Printable</code></li> +* <li><code> ReadOnly</code></li> +* <li><code> StrictFormat</code></li> +* <li><code> Tabstop</code></li> +* <li><code> Text</code></li> +* <li><code> TextColor</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.awt.UnoControlPatternFieldModel +*/ +public class _UnoControlPatternFieldModel extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BorderColor() { + testProperty("BorderColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextLineColor() { + testProperty("TextLineColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _Tabstop() { + testProperty("Tabstop", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Boolean.TRUE : null ; + } + }) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlProgressBarModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlProgressBarModel.java new file mode 100644 index 0000000000..9e998c8547 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlProgressBarModel.java @@ -0,0 +1,84 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.UnoControlProgressBarModel</code> +* service properties : +* <ul> +* <li><code> BackgroundColor</code></li> +* <li><code> Border</code></li> +* <li><code> DefaultControl</code></li> +* <li><code> Enabled</code></li> +* <li><code> FillColor</code></li> +* <li><code> HelpText</code></li> +* <li><code> HelpURL</code></li> +* <li><code> Printable</code></li> +* <li><code> ProgressValue</code></li> +* <li><code> ProgressValueMax</code></li> +* <li><code> ProgressValueMin</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.awt.UnoControlProgressBarModel +*/ +public class _UnoControlProgressBarModel extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _FillColor() { + testProperty("FillColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _ProgressValue() { + testProperty("ProgressValue", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(10) : null ; + } + }) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlRadioButtonModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlRadioButtonModel.java new file mode 100644 index 0000000000..373c2f603e --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlRadioButtonModel.java @@ -0,0 +1,103 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.UnoControlRadioButtonModel</code> +* service properties : +* <ul> +* <li><code> DefaultControl</code></li> +* <li><code> Enabled</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> Label</code></li> +* <li><code> Printable</code></li> +* <li><code> State</code></li> +* <li><code> Tabstop</code></li> +* <li><code> TextColor</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.awt.UnoControlRadioButtonModel +*/ +public class _UnoControlRadioButtonModel extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _Tabstop() { + testProperty("Tabstop", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Boolean.TRUE : null ; + } + }) ; + } + + /** + * Redefined method returns value, that differs from property value. + */ + protected PropertyTester ColorTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (util.ValueComparer.equalValue(oldValue, Integer.valueOf(17))) + return Integer.valueOf(25); + else + return Integer.valueOf(17); + } + }; + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextLineColor() { + log.println("Testing with custom Property tester") ; + testProperty("TextLineColor", ColorTester) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlScrollBarModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlScrollBarModel.java new file mode 100644 index 0000000000..cc083692fa --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlScrollBarModel.java @@ -0,0 +1,111 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.UnoControlScrollBarModel</code> +* service properties : +* <ul> +* <li><code> BlockIncrement</code></li> +* <li><code> Border</code></li> +* <li><code> DefaultControl</code></li> +* <li><code> Enabled</code></li> +* <li><code> HelpText</code></li> +* <li><code> HelpURL</code></li> +* <li><code> LineIncrement</code></li> +* <li><code> Orientation</code></li> +* <li><code> Printable</code></li> +* <li><code> ScrollValue</code></li> +* <li><code> ScrollValueMax</code></li> +* <li><code> VisibleSize</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.awt.UnoControlScrollBarModel +*/ +public class _UnoControlScrollBarModel extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(32768) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BorderColor() { + testProperty("BorderColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _SymbolColor() { + testProperty("SymbolColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(65324) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _ScrollValue() { + testProperty("ScrollValue", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(10) : Integer.valueOf(15) ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _VisibleSize() { + testProperty("VisibleSize", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(10) : null ; + } + }) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlSpinButtonModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlSpinButtonModel.java new file mode 100644 index 0000000000..2aa70a45c9 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlSpinButtonModel.java @@ -0,0 +1,65 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + +public class _UnoControlSpinButtonModel extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(32768) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BorderColor() { + testProperty("BorderColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _SymbolColor() { + testProperty("SymbolColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(65324) : null ; + } + }) ; + } + +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/awt/_UnoControlTimeFieldModel.java b/qadevOOo/tests/java/ifc/awt/_UnoControlTimeFieldModel.java new file mode 100644 index 0000000000..fcc6b7246c --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_UnoControlTimeFieldModel.java @@ -0,0 +1,134 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiPropertyTest; +import util.utils; + + +/** +* Testing <code>com.sun.star.awt.UnoControlTimeFieldModel</code> +* service properties : +* <ul> +* <li><code> BackgroundColor</code></li> +* <li><code> Border</code></li> +* <li><code> HelpText</code></li> +* <li><code> HelpURL</code></li> +* <li><code> FontEmphasisMark</code></li> +* <li><code> FontRelief</code></li> +* <li><code> Enabled</code></li> +* <li><code> TimeFormat</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> Printable</code></li> +* <li><code> ReadOnly</code></li> +* <li><code> Spin</code></li> +* <li><code> StrictFormat</code></li> +* <li><code> Tabstop</code></li> +* <li><code> TextColor</code></li> +* <li><code> TextLineColor</code></li> +* <li><code> Time</code></li> +* <li><code> TimeFormat</code></li> +* <li><code> TimeMax</code></li> +* <li><code> TimeMin</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.awt.UnoControlTimeFieldModel +*/ +public class _UnoControlTimeFieldModel extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BackgroundColor() { + testProperty("BackgroundColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _BorderColor() { + testProperty("BorderColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(1234) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _TextLineColor() { + testProperty("TextLineColor", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : null ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _Time() { + testProperty("Time", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : + super.getNewValue(p, old) ; + } + }) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _Tabstop() { + testProperty("Tabstop", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Boolean.TRUE : null ; + } + }) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_XButton.java b/qadevOOo/tests/java/ifc/awt/_XButton.java new file mode 100644 index 0000000000..4cd4364814 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XButton.java @@ -0,0 +1,103 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + + +import lib.MultiMethodTest; + +import com.sun.star.awt.XButton; + +/** +* Testing <code>com.sun.star.awt.XButton</code> +* interface methods : +* <ul> +* <li><code> addActionListener()</code></li> +* <li><code> removeActionListener()</code></li> +* <li><code> setLabel()</code></li> +* <li><code> setActionCommand()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XButton +*/ +public class _XButton extends MultiMethodTest { + + public XButton oObj = null; + + /** + * Listener implementation which sets flags on appropriate method calls + */ + protected static class TestActionListener implements com.sun.star.awt.XActionListener { + + public void disposing(com.sun.star.lang.EventObject e) { + } + + public void actionPerformed(com.sun.star.awt.ActionEvent e) {} + } + + TestActionListener listener = new TestActionListener() ; + + /** + * !!! Can be checked only interactively !!! + */ + public void _addActionListener() { + + boolean result = true ; + oObj.addActionListener(listener) ; + + tRes.tested("addActionListener()", result) ; + } + + /** + * !!! Can be checked only interactively !!! + */ + public void _removeActionListener() { + + boolean result = true ; + oObj.removeActionListener(listener) ; + + tRes.tested("removeActionListener()", result) ; + } + + /** + * Just sets some text for label. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _setLabel() { + + boolean result = true ; + oObj.setLabel("XButton Label") ; + + tRes.tested("setLabel()", result) ; + } + + /** + * Just sets some command for button. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _setActionCommand() { + + boolean result = true ; + oObj.setActionCommand("XButtonCommand") ; + + tRes.tested("setActionCommand()", result) ; + } + +} + + diff --git a/qadevOOo/tests/java/ifc/awt/_XCheckBox.java b/qadevOOo/tests/java/ifc/awt/_XCheckBox.java new file mode 100644 index 0000000000..06073680e8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XCheckBox.java @@ -0,0 +1,135 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + + +import lib.MultiMethodTest; + +import com.sun.star.awt.XCheckBox; + +/** +* Testing <code>com.sun.star.awt.XCheckBox</code> +* interface methods : +* <ul> +* <li><code> addItemListener()</code></li> +* <li><code> removeItemListener()</code></li> +* <li><code> getState()</code></li> +* <li><code> setState()</code></li> +* <li><code> setLabel()</code></li> +* <li><code> enableTriState()</code></li> +* </ul> <p> +* +* @see com.sun.star.awt.XCheckBox +*/ +public class _XCheckBox extends MultiMethodTest { + + public XCheckBox oObj = null; + + /** + * Listener implementation which sets flags on appropriate method calls + */ + protected static class TestItemListener implements com.sun.star.awt.XItemListener { + + public void disposing(com.sun.star.lang.EventObject e) { + } + + public void itemStateChanged(com.sun.star.awt.ItemEvent e) {} + } + TestItemListener listener = new TestItemListener() ; + short state = -1 ; + + /** + * !!! Can be checked only interactively !!! + */ + public void _addItemListener() { + + boolean result = true ; + oObj.addItemListener(listener) ; + tRes.tested("addItemListener()", result) ; + } + + /** + * !!! Can be checked only interactively !!! + */ + public void _removeItemListener() { + + boolean result = true ; + oObj.removeItemListener(listener) ; + + tRes.tested("removeItemListener()", result) ; + } + + /** + * Just retrieves current state and stores it. <p> + * Has <b>OK</b> status if no runtime exceptions occurs. + */ + public void _getState() { + + boolean result = true ; + state = oObj.getState() ; + + tRes.tested("getState()", result) ; + } + + /** + * Sets a new value and then checks get value. <p> + * Has <b>OK</b> status if set and get values are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getState </code> </li> + * </ul> + */ + public void _setState() { + requiredMethod("getState()") ; + + boolean result = true ; + short newState = state == 0 ? (short)1 : (short)0 ; + oObj.setState(newState) ; + result = newState == oObj.getState() ; + + tRes.tested("setState()", result) ; + } + + /** + * Just sets some text for label. <p> + * Has <b>OK</b> status if no runtime exceptions occurs. + */ + public void _setLabel() { + + boolean result = true ; + oObj.setLabel("XCheckBox test") ; + + tRes.tested("setLabel()", result) ; + } + + /** + * Just enables tristate. <p> + * Has <b>OK</b> status if no runtime exceptions occurs. + */ + public void _enableTriState() { + + boolean result = true ; + oObj.enableTriState(true) ; + + tRes.tested("enableTriState()", result) ; + } + +} + + diff --git a/qadevOOo/tests/java/ifc/awt/_XComboBox.java b/qadevOOo/tests/java/ifc/awt/_XComboBox.java new file mode 100644 index 0000000000..37bf4e3242 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XComboBox.java @@ -0,0 +1,262 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiMethodTest; +import lib.Status; + +import com.sun.star.awt.XComboBox; + +/** +* Testing <code>com.sun.star.awt.XComboBox</code> +* interface methods : +* <ul> +* <li><code> addItemListener()</code></li> +* <li><code> removeItemListener()</code></li> +* <li><code> addActionListener()</code></li> +* <li><code> removeActionListener()</code></li> +* <li><code> addItem()</code></li> +* <li><code> addItems()</code></li> +* <li><code> removeItems()</code></li> +* <li><code> getItemCount()</code></li> +* <li><code> getItem()</code></li> +* <li><code> getItems()</code></li> +* <li><code> getDropDownLineCount()</code></li> +* <li><code> setDropDownLineCount()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XComboBox +*/ +public class _XComboBox extends MultiMethodTest { + + public XComboBox oObj = null; + + /** + * Listener implementation which sets flags on appropriate method calls + */ + protected static class TestActionListener + implements com.sun.star.awt.XActionListener { + + public void disposing(com.sun.star.lang.EventObject e) {} + + public void actionPerformed(com.sun.star.awt.ActionEvent e) {} + } + + /** + * Listener implementation which sets flags on appropriate method calls + */ + protected static class TestItemListener + implements com.sun.star.awt.XItemListener { + + public void disposing(com.sun.star.lang.EventObject e) {} + + public void itemStateChanged(com.sun.star.awt.ItemEvent e) {} + } + private final TestActionListener actionListener = new TestActionListener(); + private final TestItemListener itemListener = new TestItemListener(); + short lineCount = 0; + short itemCount = 0; + + /** + * !!! Can be checked only interactively !!! + */ + public void _addItemListener() { + + oObj.addItemListener(itemListener); + + tRes.tested("addItemListener()", Status.skipped(true)); + } + + /** + * !!! Can be checked only interactively !!! + */ + public void _removeItemListener() { + requiredMethod("addItemListener()"); + + oObj.removeItemListener(itemListener); + + tRes.tested("removeItemListener()", Status.skipped(true)); + } + + /** + * !!! Can be checked only interactively !!! + */ + public void _addActionListener() { + + oObj.addActionListener(actionListener); + + tRes.tested("addActionListener()", Status.skipped(true)); + } + + /** + * !!! Can be checked only interactively !!! + */ + public void _removeActionListener() { + requiredMethod("addActionListener()"); + + oObj.removeActionListener(actionListener); + + tRes.tested("removeActionListener()", Status.skipped(true)); + } + + /** + * Adds one item to the last position and check the number of + * items after addition. <p> + * Has <b>OK</b> status if the number of items increased by 1.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getItemCount </code> </li> + * </ul> + */ + public void _addItem() { + requiredMethod("getItemCount()"); + + boolean result = true; + oObj.addItem("Item1", itemCount); + result = oObj.getItemCount() == itemCount + 1; + + tRes.tested("addItem()", result); + } + + /** + * Adds one two items to the last position and check the number of + * items after addition. <p> + * Has <b>OK</b> status if the number of items increased by 2.<p> + * The following method tests are to be executed before : + * <ul> + * <li> <code> addItem </code> </li> + * </ul> + */ + public void _addItems() { + executeMethod("addItem()"); + + boolean result = true; + short oldCnt = oObj.getItemCount(); + oObj.addItems(new String[] { "Item2", "Item3" }, oldCnt); + result = oObj.getItemCount() == oldCnt + 2; + + tRes.tested("addItems()", result); + } + + /** + * Gets the current number of items and tries to remove them all + * then checks number of items. <p> + * Has <b>OK</b> status if no items remains. <p> + * The following method tests are to be executed before : + * <ul> + * <li> <code> getItems </code> </li> + * <li> <code> getItem </code> </li> + * </ul> + */ + public void _removeItems() { + executeMethod("getItems()"); + executeMethod("getItem()"); + + boolean result = true; + short oldCnt = oObj.getItemCount(); + oObj.removeItems((short) 0, oldCnt); + result = oObj.getItemCount() == 0; + + tRes.tested("removeItems()", result); + } + + /** + * Just retrieves current number of items and stores it. <p> + * Has <b>OK</b> status if the count is not less than 0. + */ + public void _getItemCount() { + + itemCount = oObj.getItemCount(); + + tRes.tested("getItemCount()", itemCount >= 0); + } + + /** + * After <code>addItem</code> and <code>addItems</code> methods + * test the following items must exist {..., "Item1", "Item2", "Item3"} + * Retrieves the item from the position which was ititially the last.<p> + * Has <b>OK</b> status if the "Item1" was retrieved. <p> + * The following method tests are to be executed before : + * <ul> + * <li> <code> addItems </code> </li> + * </ul> + */ + public void _getItem() { + requiredMethod("addItems()"); + + boolean result = true; + String item = oObj.getItem(itemCount); + result = "Item1".equals(item); + + tRes.tested("getItem()", result); + } + + /** + * After <code>addItem</code> and <code>addItems</code> methods + * test the following items must exist {..., "Item1", "Item2", "Item3"} + * Retrieves all items. <p> + * Has <b>OK</b> status if the last three items retrieved are + * "Item1", "Item2" and "Item3". <p> + * The following method tests are to be executed before : + * <ul> + * <li> <code> addItems </code> </li> + * </ul> + */ + public void _getItems() { + requiredMethod("addItems()"); + + boolean result = true; + String[] items = oObj.getItems(); + for (int i = itemCount; i < (itemCount + 3); i++) { + result &= ("Item" + (i + 1)).equals(items[i]); + } + + tRes.tested("getItems()", result); + } + + /** + * Gets line count and stores it. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getDropDownLineCount() { + + boolean result = true; + lineCount = oObj.getDropDownLineCount(); + + tRes.tested("getDropDownLineCount()", result); + } + + /** + * Sets a new value and then checks get value. <p> + * Has <b>OK</b> status if set and get values are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getDropDownLineCount </code> </li> + * </ul> + */ + public void _setDropDownLineCount() { + requiredMethod("getDropDownLineCount()"); + + boolean result = true; + oObj.setDropDownLineCount((short) (lineCount + 1)); + result = oObj.getDropDownLineCount() == lineCount + 1; + + tRes.tested("setDropDownLineCount()", result); + } +} diff --git a/qadevOOo/tests/java/ifc/awt/_XControl.java b/qadevOOo/tests/java/ifc/awt/_XControl.java new file mode 100644 index 0000000000..ffb9bcbaa2 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XControl.java @@ -0,0 +1,213 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiMethodTest; + +import com.sun.star.awt.XControl; +import com.sun.star.awt.XControlModel; +import com.sun.star.awt.XToolkit; +import com.sun.star.awt.XView; +import com.sun.star.awt.XWindowPeer; +import com.sun.star.uno.XInterface; + +/** +* Testing <code>com.sun.star.awt.XControl</code> +* interface methods: +* <ul> +* <li><code> setContext() </code></li> +* <li><code> getContext() </code></li> +* <li><code> createPeer() </code></li> +* <li><code> getPeer() </code></li> +* <li><code> setModel() </code></li> +* <li><code> getModel() </code></li> +* <li><code> setDesignMode() </code></li> +* <li><code> isDesignMode() </code></li> +* <li><code> isTransparent() </code></li> +* <li><code> getView() </code></li> +* </ul><p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CONTEXT'</code> (of type <code>XInterface</code>): +* used as a parameter to setContext() and for testing getContext().</li> +* <li> <code>'WINPEER'</code> (of type <code>XWindowPeer</code>): +* used as a parameter to createPeer() and for testing getPeer()</li> +* <li> <code>'TOOLKIT'</code> (of type <code>XToolkit</code>): +* used as a parameter to createPeer()</li> +* <li> <code>'MODEL'</code> (of type <code>XControlModel</code>): +* used as a parameter to setModel() and for testing getModel()</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XControl +*/ +public class _XControl extends MultiMethodTest { + public XControl oObj = null; + public XControlModel aModel = null; + public boolean desMode; + + /** + * After test calls the method, the Context is set to a corresponding + * object relation.<p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _setContext() { + XInterface cont = (XInterface) tEnv.getObjRelation("CONTEXT"); + oObj.setContext(cont); + tRes.tested("setContext()",true); + } + + /** + * After test calls the method, the Context is gotten and compared + * with object relation 'CONTEXT'.<p> + * Has <b> OK </b> status if get value is equals to value set before.<p> + * The following method tests are to be completed successfully before: + * <ul> + * <li> <code> setContext() </code> : set Context to a corresponding + * object relation</li> + * </ul> + */ + public void _getContext() { + requiredMethod("setContext()"); + XInterface cont = (XInterface) tEnv.getObjRelation("CONTEXT"); + Object get = oObj.getContext(); + boolean res = get.equals(cont); + if (!res) { + log.println("!!! Error: getting: "+get.toString()); + log.println("!!! expected: "+cont.toString()); + } + tRes.tested("getContext()",res); + } + + + /** + * The objects needed to create peer are obtained + * from corresponding object relations, then the peer is created. + * <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _createPeer() { + XWindowPeer the_win = (XWindowPeer) tEnv.getObjRelation("WINPEER"); + XToolkit the_kit = (XToolkit) tEnv.getObjRelation("TOOLKIT"); + oObj.createPeer(the_kit,the_win); + tRes.tested("createPeer()",true); + } + + /* + * Test calls the method. Then the object relation 'WINPEER' is + * obtained, and compared with the peer, gotten from (XControl) oObj + * variable.<p> + * Has <b> OK </b> status if peer gotten isn't null + * The following method tests are to be completed successfully before: + */ + public void _getPeer() { + requiredMethod("createPeer()"); + boolean res = false; + XWindowPeer get = oObj.getPeer(); + if (get == null) { + log.println("The method 'getPeer' returns NULL"); + } else { + res = true; + } + tRes.tested("getPeer()",res); + } + + + /** + * At first current model is obtained and saved to variable aModel. + * Then object relation 'MODEL' is gotten and test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _setModel() { + aModel = oObj.getModel(); + XControlModel the_model = (XControlModel) tEnv.getObjRelation("MODEL"); + oObj.setModel(the_model); + tRes.tested("setModel()",true); + } + + /** + * Test calls the method, then object relation 'MODEL' is gotten and + * compared with object returned by the method. Then previously saved + * value of model (aModel) restored to (XControl) oObj<p> + * Has <b> OK </b> status if models set and get are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setModel() </code> : setting model from corresponding + * object relation </li> + * </ul> + */ + public void _getModel() { + requiredMethod("setModel()"); + XControlModel the_model = (XControlModel) tEnv.getObjRelation("MODEL"); + XControlModel get = oObj.getModel(); + boolean res = get.equals(the_model); + if (!res) { + log.println("getting: "+get.toString()); + log.println("expected: "+the_model.toString()); + } + if (aModel != null) { + oObj.setModel(aModel); + } + tRes.tested("getModel()",res); + } + + /** + * Test calls the method. Then mode is checked using isDesignMode().<p> + * Has <b> OK </b> status if mode is switched. + */ + public void _setDesignMode() { + desMode = oObj.isDesignMode(); + oObj.setDesignMode(!desMode); + tRes.tested("setDesignMode()",oObj.isDesignMode() == !desMode); + } + + /** + * The mode is changed and result is checked.<p> + * Has <b> OK </b> status if the mode changed successfully. + */ + public void _isDesignMode() { + requiredMethod("setDesignMode()"); + oObj.setDesignMode(desMode); + tRes.tested("isDesignMode()", oObj.isDesignMode() == desMode); + } + + /** + * Test calls the method.<p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _isTransparent() { + oObj.isTransparent(); + tRes.tested("isTransparent()",true ); + } + + /** + * Test calls the method.<p> + * Has <b> OK </b> status if the method returns not null. <p> + */ + public void _getView() { + XView the_view = oObj.getView(); + tRes.tested("getView()", the_view != null); + } + +} + + diff --git a/qadevOOo/tests/java/ifc/awt/_XControlContainer.java b/qadevOOo/tests/java/ifc/awt/_XControlContainer.java new file mode 100644 index 0000000000..0c7e636209 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XControlContainer.java @@ -0,0 +1,133 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiMethodTest; + +import com.sun.star.awt.XControl; +import com.sun.star.awt.XControlContainer; + +/** +* Testing <code>com.sun.star.awt.XControlContainer</code> +* interface methods: +* <ul> +* <li><code> setStatusText() </code></li> +* <li><code> addControl() </code></li> +* <li><code> removeControl() </code></li> +* <li><code> getControl() </code></li> +* <li><code> getControls() </code></li> +* </ul><p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CONTROL1'</code> (of type <code>XControl</code>): +* used as a parameter to addControl(), getControl() and removeControl()</li> +* <li> <code>'CONTROL2'</code> (of type <code>XControl</code>): +* used as a parameter to addControl(), getControl() and removeControl()</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XControlContainer +*/ +public class _XControlContainer extends MultiMethodTest { + public XControlContainer oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _setStatusText() { + oObj.setStatusText("testing XControlContainer::setStatusText(String)"); + tRes.tested("setStatusText()",true); + } + + /** + * Test calls the method twice - two controls gotten from object relations + * 'CONTROL1' and 'CONTROL2' added to container.<p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _addControl() { + oObj.addControl("CONTROL1", (XControl)tEnv.getObjRelation("CONTROL1")); + oObj.addControl("CONTROL2", (XControl)tEnv.getObjRelation("CONTROL2")); + tRes.tested("addControl()",true); + } + + /** + * Test calls the method with object relation 'CONTROL1' as a + * parameter. Then control gotten from container is checked, and if returned + * value is null then another control 'CONTROL2' is removed from container, + * otherwise returned value of method test is 'false'.<p> + * Has <b> OK </b> status if control is removed successfully.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addControl() </code> : adds control to a container </li> + * <li> <code> getControl() </code> : gets control from container </li> + * <li> <code> getControls() </code> : gets controls from container</li> + * </ul> + */ + public void _removeControl() { + boolean result = true; + + requiredMethod("addControl()"); + requiredMethod("getControl()"); + requiredMethod("getControls()"); + oObj.removeControl( (XControl) tEnv.getObjRelation("CONTROL1") ); + XControl ctrl = oObj.getControl("CONTROL1"); + if (ctrl != null) { + result = false; + log.println("'removeControl()' fails; Control still exists"); + } else { + oObj.removeControl( (XControl) tEnv.getObjRelation("CONTROL2") ); + } + tRes.tested("removeControl()", result); + } + + /** + * Test calls the method with 'CONTROL1' as a parameter, then we just + * compare returned object and object relation 'CONTROL1'.<p> + * Has <b> OK </b> status if value returned by the method is equal to + * a corresponding object relation.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addControl() </code> : adds control to a container </li> + * </ul> + */ + public void _getControl() { + requiredMethod("addControl()"); + XControl xCtrlComp = oObj.getControl("CONTROL1"); + XControl xCl = (XControl) tEnv.getObjRelation("CONTROL1"); + tRes.tested("getControl()", xCtrlComp.equals(xCl)); + } + + /** + * Test calls the method, then returned value is checked.<p> + * Has <b> OK </b> status if returned array consists of at least two + * elements.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addControl() </code> : adds control to a container </li> + * </ul> + */ + public void _getControls() { + requiredMethod("addControl()"); + XControl[] xCtrls = oObj.getControls(); + tRes.tested("getControls()",xCtrls.length >= 2); + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_XCurrencyField.java b/qadevOOo/tests/java/ifc/awt/_XCurrencyField.java new file mode 100644 index 0000000000..beb74889d4 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XCurrencyField.java @@ -0,0 +1,307 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiMethodTest; + +import com.sun.star.awt.XCurrencyField; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.XCurrencyField</code> +* interface methods : +* <ul> +* <li><code> setValue()</code></li> +* <li><code> getValue()</code></li> +* <li><code> setMin()</code></li> +* <li><code> getMin()</code></li> +* <li><code> setMax()</code></li> +* <li><code> getMax()</code></li> +* <li><code> setFirst()</code></li> +* <li><code> getFirst()</code></li> +* <li><code> setLast()</code></li> +* <li><code> getLast()</code></li> +* <li><code> setSpinSize()</code></li> +* <li><code> getSpinSize()</code></li> +* <li><code> setDecimalDigits()</code></li> +* <li><code> getDecimalDigits()</code></li> +* <li><code> setStrictFormat()</code></li> +* <li><code> isStrictFormat()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XCurrencyField +*/ +public class _XCurrencyField extends MultiMethodTest { + + public XCurrencyField oObj = null; + private double val = 0; + private double min = 0; + private double max = 0; + private double first = 0; + private double last = 0; + private double spin = 0; + private short digits = 0; + private boolean strict = true; + + /** + * Sets value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getValue </code> </li> + * </ul> + */ + public void _setValue() { + requiredMethod("getValue()"); + + double value = val + 1.1; + oObj.setValue(value); + double ret = oObj.getValue(); + boolean result = utils.approxEqual(ret, value); + + tRes.tested("setValue()", result); + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getValue() { + val = oObj.getValue(); + + tRes.tested("getValue()", true); + } + + /** + * Sets minimal value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getMin </code> </li> + * </ul> + */ + public void _setMin() { + requiredMethod("getMin()"); + + double value = min + 1.1; + oObj.setMin(value); + double ret = oObj.getMin(); + boolean result = utils.approxEqual(ret, value); + + tRes.tested("setMin()", result); + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getMin() { + + boolean result = true; + min = oObj.getMin(); + + tRes.tested("getMin()", result); + } + + /** + * Sets maximal value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getMax </code> </li> + * </ul> + */ + public void _setMax() { + requiredMethod("getMax()"); + + double value = max + 1.1; + oObj.setMax(value); + double ret = oObj.getMax(); + boolean result = utils.approxEqual(ret, value); + + tRes.tested("setMax()", result); + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getMax() { + + boolean result = true; + max = oObj.getMax(); + + tRes.tested("getMax()", result); + } + + /** + * Sets value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getFirst </code> </li> + * </ul> + */ + public void _setFirst() { + requiredMethod("getFirst()"); + + double value = first + 1.1; + oObj.setFirst(value); + double ret = oObj.getFirst(); + boolean result = utils.approxEqual(ret, value); + + tRes.tested("setFirst()", result); + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getFirst() { + + boolean result = true; + first = oObj.getFirst(); + + tRes.tested("getFirst()", result); + } + + /** + * Sets value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getLast </code> </li> + * </ul> + */ + public void _setLast() { + requiredMethod("getLast()"); + + double value = last + 1.1; + oObj.setLast(value); + double ret = oObj.getLast(); + boolean result = utils.approxEqual(ret, value); + + tRes.tested("setLast()", result); + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getLast() { + + boolean result = true; + last = oObj.getLast(); + + tRes.tested("getLast()", result); + } + + /** + * Sets value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getSpinSize </code> </li> + * </ul> + */ + public void _setSpinSize() { + requiredMethod("getSpinSize()"); + + double value = spin + 1.1; + oObj.setSpinSize(value); + double ret = oObj.getSpinSize(); + boolean result = utils.approxEqual(ret, value); + + tRes.tested("setSpinSize()", result); + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getSpinSize() { + + boolean result = true; + spin = oObj.getSpinSize(); + + tRes.tested("getSpinSize()", result); + } + + /** + * Sets value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getDecimalDigits </code> </li> + * </ul> + */ + public void _setDecimalDigits() { + requiredMethod("getDecimalDigits()"); + + boolean result = true; + oObj.setDecimalDigits((short) (digits + 1)); + + short res = oObj.getDecimalDigits(); + result = res == (digits + 1); + + tRes.tested("setDecimalDigits()", result); + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getDecimalDigits() { + + boolean result = true; + digits = oObj.getDecimalDigits(); + + tRes.tested("getDecimalDigits()", result); + } + + /** + * Sets value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> isStrictFormat </code> </li> + * </ul> + */ + public void _setStrictFormat() { + requiredMethod("isStrictFormat()"); + + boolean result = true; + oObj.setStrictFormat(!strict); + result = oObj.isStrictFormat() == !strict; + + tRes.tested("setStrictFormat()", result); + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _isStrictFormat() { + + boolean result = true; + strict = oObj.isStrictFormat(); + + tRes.tested("isStrictFormat()", result); + } +} diff --git a/qadevOOo/tests/java/ifc/awt/_XDataTransferProviderAccess.java b/qadevOOo/tests/java/ifc/awt/_XDataTransferProviderAccess.java new file mode 100644 index 0000000000..54c273a708 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XDataTransferProviderAccess.java @@ -0,0 +1,127 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.awt.XDataTransferProviderAccess; +import com.sun.star.awt.XWindow; +import com.sun.star.datatransfer.clipboard.XClipboard; +import com.sun.star.datatransfer.dnd.XDragGestureRecognizer; +import com.sun.star.datatransfer.dnd.XDragSource; +import com.sun.star.datatransfer.dnd.XDropTarget; + +/** +* Testing <code>com.sun.star.awt.XDataTransferProviderAccess</code> +* interface methods : +* <ul> +* <li><code> getDragGestureRecognizer()</code></li> +* <li><code> getDragSource()</code></li> +* <li><code> getDropTarget()</code></li> +* <li><code> getClipboard()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XDataTransferProviderAccess.XWindow'</code> +* (of type <code>com.sun.star.awt.XWindow</code>): +* this window must created by the Toolkit tested. </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XDataTransferProviderAccess +*/ +public class _XDataTransferProviderAccess extends MultiMethodTest { + + public XDataTransferProviderAccess oObj = null; + protected XWindow win = null ; + + /** + * Retrieves object relations. + * @throws StatusException If one of relations not found. + */ + @Override + public void before() { + win = (XWindow) tEnv.getObjRelation + ("XDataTransferProviderAccess.XWindow") ; + if (win == null) throw new StatusException(Status.failed + ("Relation not found")) ; + } + + /** + * Tries to get gesture recognizer for the window passed as + * relation. <p> + * Has <b> OK </b> status if not <code>null</code> value returned + */ + public void _getDragGestureRecognizer() { + + boolean result = true ; + XDragGestureRecognizer rec = oObj.getDragGestureRecognizer(win) ; + + result = rec != null ; + + tRes.tested("getDragGestureRecognizer()", result) ; + } + + /** + * Tries to get drag source for the window passed as + * relation. <p> + * Has <b> OK </b> status if not <code>null</code> value returned + */ + public void _getDragSource() { + + boolean result = true ; + XDragSource src = oObj.getDragSource(win) ; + + result = src != null ; + + tRes.tested("getDragSource()", result) ; + } + + /** + * Tries to get drop target for the window passed as + * relation. <p> + * Has <b> OK </b> status if not <code>null</code> value returned + */ + public void _getDropTarget() { + + boolean result = true ; + XDropTarget targ = oObj.getDropTarget(win) ; + + result = targ != null ; + + tRes.tested("getDropTarget()", result) ; + } + + /** + * Tries to obtain default clipboard.<p> + * Has <b> OK </b> status if not <code>null</code> value returned. + */ + public void _getClipboard() { + + boolean result = true ; + XClipboard cb = oObj.getClipboard("") ; + + result = cb != null ; + + tRes.tested("getClipboard()", result) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_XDateField.java b/qadevOOo/tests/java/ifc/awt/_XDateField.java new file mode 100644 index 0000000000..c70d34ab16 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XDateField.java @@ -0,0 +1,332 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + + +import lib.MultiMethodTest; + +import com.sun.star.awt.XDateField; +import com.sun.star.util.Date; + +/** +* Testing <code>com.sun.star.awt.XDateField</code> +* interface methods : +* <ul> +* <li><code> setDate()</code></li> +* <li><code> getDate()</code></li> +* <li><code> setMin()</code></li> +* <li><code> getMin()</code></li> +* <li><code> setMax()</code></li> +* <li><code> getMax()</code></li> +* <li><code> setFirst()</code></li> +* <li><code> getFirst()</code></li> +* <li><code> setLast()</code></li> +* <li><code> getLast()</code></li> +* <li><code> setLongFormat()</code></li> +* <li><code> isLongFormat()</code></li> +* <li><code> setEmpty()</code></li> +* <li><code> isEmpty()</code></li> +* <li><code> setStrictFormat()</code></li> +* <li><code> isStrictFormat()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XDateField +*/ +public class _XDateField extends MultiMethodTest { + + public XDateField oObj = null; + + private boolean strict = false ; + private boolean longFormat = false ; + + /** + * Sets a new value and checks if it was correctly set. <p> + * Has <b> OK </b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getTime </code> </li> + * </ul> + */ + public void _setDate() { + requiredMethod("getDate()") ; + + boolean result = true ; + oObj.setDate(new Date((short)1, (short)1, (short)1900)) ; + Date date = oObj.getDate(); + result = date.Day == 1 && date.Month == 1 && date.Year == 1900; + + if (! result ) { + System.out.println("getDate: " + oObj.getDate() + " , expected 1900-01-01"); + } + + tRes.tested("setDate()", result) ; + } + + /** + * Gets the current value. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _getDate() { + + boolean result = true ; + oObj.getDate() ; + + tRes.tested("getDate()", result) ; + } + + /** + * Sets a new value and checks if it was correctly set. <p> + * Has <b> OK </b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getMin </code> </li> + * </ul> + */ + public void _setMin() { + + boolean result = true ; + oObj.setMin(new Date((short)5, (short)2, (short)1963)); + Date date = oObj.getMin(); + result = date.Day == 5 && date.Month == 2 && date.Year == 1963; + + tRes.tested("setMin()", result) ; + } + + /** + * Gets the current value. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _getMin() { + + boolean result = true ; + oObj.getMin() ; + + tRes.tested("getMin()", result) ; + } + + /** + * Sets a new value and checks if it was correctly set. <p> + * Has <b> OK </b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getMax </code> </li> + * </ul> + */ + public void _setMax() { + + boolean result = true ; + oObj.setMax(new Date((short)18, (short)9, (short)2117)) ; + Date date = oObj.getMax(); + result = date.Day == 18 && date.Month == 9 && date.Year == 2117; + + tRes.tested("setMax()", result) ; + } + + /** + * Gets the current value. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _getMax() { + + boolean result = true ; + oObj.getMax() ; + + tRes.tested("getMax()", result) ; + } + + /** + * Sets a new value and checks if it was correctly set. <p> + * Has <b> OK </b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getFirst </code> </li> + * </ul> + */ + public void _setFirst() { + + boolean result = true ; + oObj.setFirst(new Date((short)7, (short)12, (short)1972)) ; + Date date = oObj.getFirst(); + result = date.Day == 7 && date.Month == 12 && date.Year == 1972; + + if (!result) { + log.println("Set to " + 5118 + " but returned " + oObj.getFirst()) ; + } + + tRes.tested("setFirst()", result) ; + } + + /** + * Gets the current value. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _getFirst() { + + boolean result = true ; + com.sun.star.util.Date val = oObj.getFirst() ; + + log.println("getFirst() = " + val) ; + + tRes.tested("getFirst()", result) ; + } + + /** + * Sets a new value and checks if it was correctly set. <p> + * Has <b> OK </b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getLast </code> </li> + * </ul> + */ + public void _setLast() { + + boolean result = true ; + oObj.setLast(new Date((short)23, (short)8, (short)2053)) ; + Date date = oObj.getLast(); + result = date.Day == 23 && date.Month == 8 && date.Year == 2053; + + if (!result) { + log.println("Set to 2053-08-23 but returned " + oObj.getLast()) ; + } + + tRes.tested("setLast()", result) ; + } + + /** + * Gets the current value. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _getLast() { + + boolean result = true ; + com.sun.star.util.Date val = oObj.getLast() ; + + log.println("getLast() = " + val) ; + + tRes.tested("getLast()", result) ; + } + + /** + * Sets the value to empty. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setTime </code> : value must be not empty </li> + * </ul> + */ + public void _setEmpty() { + requiredMethod("setDate()") ; + + boolean result = true ; + oObj.setEmpty() ; + + tRes.tested("setEmpty()", result) ; + } + + /** + * Checks if the field is empty. <p> + * Has <b> OK </b> status if the value is empty.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setEmpty() </code> </li> + * </ul> + */ + public void _isEmpty() { + requiredMethod("setEmpty()") ; + + boolean result = true ; + result = oObj.isEmpty() ; + + tRes.tested("isEmpty()", result) ; + } + + /** + * Checks strict state. <p> + * Has <b> OK </b> status if strict format is properly set. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> isStrictFormat </code> </li> + * </ul> + */ + public void _setStrictFormat() { + requiredMethod("isStrictFormat()") ; + + boolean result = true ; + oObj.setStrictFormat(!strict) ; + + result = oObj.isStrictFormat() == !strict ; + + if (!result) { + log.println("Was '" + strict + "', set to '" + !strict + + "' but returned '" + oObj.isStrictFormat() + "'") ; + } + + tRes.tested("setStrictFormat()", result) ; + } + + /** + * Gets strict state and stores it. <p> + * Has <b> OK </b> status if no runtime exceptions occurred. + */ + public void _isStrictFormat() { + + boolean result = true ; + strict = oObj.isStrictFormat() ; + + tRes.tested("isStrictFormat()", result) ; + } + + + /** + * Checks long format state. <p> + * Has <b> OK </b> status if long format is properly set. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> isLongFormat </code> </li> + * </ul> + */ + public void _setLongFormat() { + + boolean result = true ; + oObj.setLongFormat(!longFormat) ; + + result = oObj.isLongFormat() == !longFormat ; + + if (!result) { + log.println("Was '" + longFormat + "', set to '" + !longFormat + + "' but returned '" + oObj.isLongFormat() + "'") ; + } + + tRes.tested("setLongFormat()", result) ; + } + + /** + * Gets long format state and stores it. <p> + * Has <b> OK </b> status if no runtime exceptions occurred. + */ + public void _isLongFormat() { + + boolean result = true ; + longFormat = oObj.isLongFormat() ; + + tRes.tested("isLongFormat()", result) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/awt/_XDialog.java b/qadevOOo/tests/java/ifc/awt/_XDialog.java new file mode 100644 index 0000000000..65b4f47ae2 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XDialog.java @@ -0,0 +1,150 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiMethodTest; + +import com.sun.star.awt.XDialog; + +/** +* Testing <code>com.sun.star.awt.XDialog</code> +* interface methods : +* <ul> +* <li><code> setTitle()</code></li> +* <li><code> getTitle()</code></li> +* <li><code> execute()</code></li> +* <li><code> endExecute()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* After test completion object environment has to be recreated. +* @see com.sun.star.awt.XDialog +*/ +public class _XDialog extends MultiMethodTest { + + public XDialog oObj = null; + + /** + * As <code>execute()</code> method is a blocking call, + * then it must be executed in a separate thread. This + * thread class just call <code>execute</code> method + * of tested object. + */ + protected Thread execThread = new Thread( + new Runnable() { + public void run() { + oObj.execute() ; + } + }) ; + + /** + * Sets the title to some string. <p> + * Has <b>OK</b> status if no runtime exceptions occurs. + */ + public void _setTitle() { + + oObj.setTitle("XDialog test") ; + + tRes.tested("setTitle()", true) ; + } + + /** + * Gets the title and compares it to the value set in + * <code>setTitle</code> method test. <p> + * Has <b>OK</b> status is set/get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setTitle </code> </li> + * </ul> + */ + public void _getTitle() { + requiredMethod("setTitle()") ; + + tRes.tested("getTitle()", + "XDialog test".equals(oObj.getTitle())) ; + } + + /** + * Starts the execution of dialog in a separate thread. + * As this call is blocking then the thread execution + * must not be finished. <p> + * Has <b>OK</b> status if thread wasn't finished and + * no exceptions occurred. + */ + public void _execute() { + boolean result = true ; + + log.println("Starting execute() thread ...") ; + execThread.start() ; + + try { + execThread.join(200) ; + } catch (InterruptedException e) { + log.println("execute() thread was interrupted") ; + result = false ; + } + result &= execThread.isAlive() ; + + tRes.tested("execute()", result) ; + } + + /** + * Calls the method and checks if the execution thread + * where <code>execute()</code> method is running was + * finished. If <code>execute</code> method didn't return + * and still running then thread interrupted. <p> + * Has <b>OK</b> status if <code>execute</code> method + * call successfully returned. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> execute </code> </li> + * </ul> + */ + public void _endExecute() { + requiredMethod("execute()") ; + + boolean result = true ; + + oObj.endExecute() ; + + try { + execThread.join(200) ; + } catch (InterruptedException e) { + log.println("execute() thread was interrupted") ; + result = false ; + } + + if (execThread.isAlive()) { + execThread.interrupt() ; + } + + result &= !execThread.isAlive() ; + + tRes.tested("endExecute()", result) ; + } + + /** + * Disposes object environment. + */ + @Override + public void after() { + disposeEnvironment() ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/awt/_XFixedText.java b/qadevOOo/tests/java/ifc/awt/_XFixedText.java new file mode 100644 index 0000000000..9ea5527c71 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XFixedText.java @@ -0,0 +1,111 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + + +import lib.MultiMethodTest; + +import com.sun.star.awt.TextAlign; +import com.sun.star.awt.XFixedText; + +/** +* Testing <code>com.sun.star.awt.XFixedText</code> +* interface methods : +* <ul> +* <li><code> setText()</code></li> +* <li><code> getText()</code></li> +* <li><code> setAlignment()</code></li> +* <li><code> getAlignment()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XFixedText +*/ +public class _XFixedText extends MultiMethodTest { + + public XFixedText oObj = null; + private String text = null ; + private int align = -1 ; + + /** + * Sets value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getText </code> </li> + * </ul> + */ + public void _setText() { + requiredMethod("getText()") ; + + boolean result = true ; + oObj.setText(text + "_") ; + result = (text+"_").equals(oObj.getText()) ; + + tRes.tested("setText()", result) ; + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getText() { + + boolean result = true ; + text = oObj.getText() ; + if (util.utils.isVoid(text)) text = "XFixedText"; + + tRes.tested("getText()", result) ; + } + + /** + * Sets value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getAlignment </code> </li> + * </ul> + */ + public void _setAlignment() { + requiredMethod("getAlignment()") ; + + boolean result = true ; + int newAlign = align == + TextAlign.CENTER ? TextAlign.LEFT : TextAlign.CENTER ; + oObj.setAlignment((short)newAlign) ; + short getAlign = oObj.getAlignment() ; + result = newAlign == getAlign ; + + tRes.tested("setAlignment()", result) ; + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getAlignment() { + + boolean result = true ; + align = oObj.getAlignment() ; + + tRes.tested("getAlignment()", result) ; + } + +} + + diff --git a/qadevOOo/tests/java/ifc/awt/_XImageConsumer.java b/qadevOOo/tests/java/ifc/awt/_XImageConsumer.java new file mode 100644 index 0000000000..7c170fb256 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XImageConsumer.java @@ -0,0 +1,135 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + + +import lib.MultiMethodTest; + +import com.sun.star.awt.XImageConsumer; + +/** +* Testing <code>com.sun.star.awt.XImageConsumer</code> +* interface methods : +* <ul> +* <li><code> init()</code></li> +* <li><code> setColorModel()</code></li> +* <li><code> setPixelsByBytes()</code></li> +* <li><code> setPixelsByLongs()</code></li> +* <li><code> complete()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XImageConsumer +*/ + +public class _XImageConsumer extends MultiMethodTest { + + public XImageConsumer oObj = null; + + /** + * Initialize the consumer with size 2x2. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _init() { + + boolean result = true ; + oObj.init(2, 2) ; + + tRes.tested("init()", result) ; + } + + /** + * Sets color model. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> init </code> </li> + * </ul> + */ + public void _setColorModel() { + requiredMethod("init()") ; + + boolean result = true ; + int[] pal = new int[256] ; + for (int i = 0; i < 256; i++) pal[i] = i ; + oObj.setColorModel((short)8, pal, 100, 100, 100, 100) ; + + tRes.tested("setColorModel()", result) ; + } + + /** + * Fill the picture with for pixels. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + * The following method tests are to be executed before : + * <ul> + * <li> <code> setColorModel </code> </li> + * </ul> + */ + public void _setPixelsByBytes() { + executeMethod("setColorModel()") ; + + boolean result = true ; + oObj.setPixelsByBytes(0, 0, 2, 2, + new byte[] {(byte)0, (byte)255, (byte)255, (byte)0}, 0, 2) ; + + tRes.tested("setPixelsByBytes()", result) ; + } + + /** + * Fill the picture with for pixels. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + * The following method tests are to be executed before : + * <ul> + * <li> <code> setColorModel </code> </li> + * </ul> + */ + public void _setPixelsByLongs() { + executeMethod("setColorModel()") ; + + boolean result = true ; + oObj.setPixelsByLongs(0, 0, 2, 2, new int[] {0, 255, 255, 0}, 0, 2) ; + + tRes.tested("setPixelsByLongs()", result) ; + } + + /** + * Just calls the method. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> init </code> </li> + * </ul> <p> + * The following method tests are to be executed before : + * <ul> + * <li> <code> setPixelsByBytes </code> </li> + * <li> <code> setPixelsByBytes </code> </li> + * </ul> + */ + public void _complete() { + requiredMethod("init()") ; + executeMethod("setPixelsByBytes()") ; + executeMethod("setPixelsByBytes()") ; + + boolean result = true ; + oObj.complete(0, null) ; + + tRes.tested("complete()", result) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/awt/_XImageProducer.java b/qadevOOo/tests/java/ifc/awt/_XImageProducer.java new file mode 100644 index 0000000000..140c6ff3de --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XImageProducer.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 ifc.awt; + + +import java.io.PrintWriter; + +import lib.MultiMethodTest; + +import com.sun.star.awt.XImageConsumer; +import com.sun.star.awt.XImageProducer; + +/** +* Testing <code>com.sun.star.awt.XImageProducer</code> +* interface methods : +* <ul> +* <li><code> addConsumer()</code></li> +* <li><code> removeConsumer()</code></li> +* <li><code> startProduction()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XImageProducer +*/ +public class _XImageProducer extends MultiMethodTest { + + public XImageProducer oObj = null; + + /** + * Consumer implementation which sets flags on appropriate + * method calls. + */ + protected static class TestImageConsumer implements XImageConsumer { + PrintWriter log = null ; + public boolean initCalled = false ; + + TestImageConsumer(PrintWriter log) { + log.println("### Consumer initialized" ) ; + this.log = log ; + } + + public void init(int width, int height) { + log.println("### init() called") ; + initCalled = true ; + } + + public void setColorModel(short bitCount, int[] RGBAPal, + int redMask, int greenMask, int blueMask, int alphaMask) { + log.println("### setColorModel() called") ; + } + + public void setPixelsByBytes(int x, int y, int width, int height, + byte[] data, int offset, int scanSize) { + log.println("### setPixelByBytes() called") ; + } + + public void setPixelsByLongs(int x, int y, int width, int height, + int[] data, int offset, int scanSize) { + log.println("### setPixelByLongs() called") ; + } + + public void complete(int status, XImageProducer prod) { + log.println("### complete() called") ; + } + } + + TestImageConsumer consumer = null ; + + /** + * Creates a new XImageConsumer implementation. + */ + @Override + public void before() { + consumer = new TestImageConsumer(log) ; + } + + /** + * Adds a new consumer to producer. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _addConsumer() { + + boolean result = true ; + oObj.addConsumer(consumer) ; + + tRes.tested("addConsumer()", result) ; + } + + /** + * Removes the consumer added before. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + * The following method tests are to be executed before : + * <ul> + * <li> <code> startProduction </code> </li> + * </ul> + */ + public void _removeConsumer() { + executeMethod("startProduction()") ; + + boolean result = true ; + oObj.removeConsumer(consumer) ; + + tRes.tested("removeConsumer()", result) ; + } + + /** + * Starts the production and after short waiting checks what + * consumer's methods were called. <p> + * Has <b> OK </b> status if at least <code>init</code> consumer + * methods was called. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addConsumer </code> </li> + * </ul> + */ + public void _startProduction() { + requiredMethod("addConsumer()") ; + + oObj.startProduction() ; + + waitForEventIdle(); + + tRes.tested("startProduction()", consumer.initCalled) ; + } + +} + + diff --git a/qadevOOo/tests/java/ifc/awt/_XItemListener.java b/qadevOOo/tests/java/ifc/awt/_XItemListener.java new file mode 100644 index 0000000000..f15022142a --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XItemListener.java @@ -0,0 +1,109 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.awt.ItemEvent; +import com.sun.star.awt.XItemListener; + +/** +* Testing <code>com.sun.star.awt.XItemListener</code> +* interface methods : +* <ul> +* <li><code> itemStateChanged()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'TestItemListener'</code> +* (of type <code>ifc.awt._XItemListener.TestItemListener</code>): +* this <code>XItemListener</code> implementation must be +* added to the object tested for checking +* <code> itemStateChanged()</code> method call. </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XItemListener +*/ +public class _XItemListener extends MultiMethodTest { + + public XItemListener oObj = null; + + /** + * Listener implementation which sets flags on appropriate method calls + * and stores event passed. + */ + public static class TestItemListener implements com.sun.star.awt.XItemListener { + public boolean itemStateChangedCalled = false ; + public ItemEvent event = null ; + + public void itemStateChanged(com.sun.star.awt.ItemEvent e) { + itemStateChangedCalled = true ; + event = e ; + } + + public void disposing(com.sun.star.lang.EventObject e) {} + + } + + TestItemListener itemListener = null ; + + /** + * Retrieves object relation. + * @throws StatusException If the relation not found. + */ + @Override + public void before() { + itemListener = (TestItemListener) tEnv.getObjRelation("TestItemListener") ; + if (itemListener == null) + throw new StatusException(Status.failed("Relation not found")) ; + } + + /** + * First a <code>ItemEvent</code> object created and + * it is passed to <code>itemStateChanged</code> method + * call. Then a short wait follows for listener already + * registered at the object to be called. <p> + * Has <b> OK </b> status if the listener was called with + * the same <code>ItemEvent</code> object as was created + * before. + */ + public void _itemStateChanged() { + + boolean result = true ; + + ItemEvent event = new ItemEvent() ; + event.Selected = 1 ; + event.Highlighted = 2 ; + oObj.itemStateChanged(event) ; + + waitForEventIdle(); + + result = itemListener.itemStateChangedCalled && + itemListener.event.Selected == 1 && + itemListener.event.Highlighted == 2 ; + + tRes.tested("itemStateChanged()", result) ; + } + +} + + diff --git a/qadevOOo/tests/java/ifc/awt/_XLayoutConstrains.java b/qadevOOo/tests/java/ifc/awt/_XLayoutConstrains.java new file mode 100644 index 0000000000..5e1b4cb9fd --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XLayoutConstrains.java @@ -0,0 +1,68 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiMethodTest; + +import com.sun.star.awt.Size; +import com.sun.star.awt.XLayoutConstrains; + +/** +* Testing <code>com.sun.star.awt.XLayoutConstrains</code> +* interface methods: +* <ul> +* <li><code> getMinimumSize() </code></li> +* <li><code> getPreferredSize() </code></li> +* <li><code> calcAdjustedSize() </code></li> +* </ul><p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XLayoutConstrains +*/ +public class _XLayoutConstrains extends MultiMethodTest { + public XLayoutConstrains oObj = null; + + /** + * Test calls the method, then check if returned value is not null.<p> + * Has <b> OK </b> status if the method returns not null. + */ + public void _getMinimumSize() { + Size aSize = oObj.getMinimumSize(); + tRes.tested("getMinimumSize()", aSize != null); + } + + /** + * Test calls the method, then check if returned value is not null.<p> + * Has <b> OK </b> status if the method returns not null. + */ + public void _getPreferredSize() { + Size aSize = oObj.getPreferredSize(); + tRes.tested("getPreferredSize()", aSize != null); + } + + /** + * Test calls the method with the new size as a parameter.<p> + * Has <b> OK </b> status if the method returns not null. + */ + public void _calcAdjustedSize() { + Size aSize = oObj.calcAdjustedSize(new Size(50,50)); + tRes.tested("calcAdjustedSize()", aSize != null); + } + +} + diff --git a/qadevOOo/tests/java/ifc/awt/_XListBox.java b/qadevOOo/tests/java/ifc/awt/_XListBox.java new file mode 100644 index 0000000000..6c6ddd6b24 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XListBox.java @@ -0,0 +1,491 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + + +import lib.MultiMethodTest; +import lib.Status; + +import com.sun.star.awt.XListBox; + +/** +* Testing <code>com.sun.star.awt.XListBox</code> +* interface methods : +* <ul> +* <li><code> addItemListener()</code></li> +* <li><code> removeItemListener()</code></li> +* <li><code> addActionListener()</code></li> +* <li><code> removeActionListener()</code></li> +* <li><code> addItem()</code></li> +* <li><code> addItems()</code></li> +* <li><code> removeItems()</code></li> +* <li><code> getItemCount()</code></li> +* <li><code> getItem()</code></li> +* <li><code> getItems()</code></li> +* <li><code> getSelectedItemPos()</code></li> +* <li><code> getSelectedItemsPos()</code></li> +* <li><code> getSelectedItem()</code></li> +* <li><code> getSelectedItems()</code></li> +* <li><code> selectItemPos()</code></li> +* <li><code> selectItemsPos()</code></li> +* <li><code> selectItem()</code></li> +* <li><code> isMutipleMode()</code></li> +* <li><code> setMultipleMode()</code></li> +* <li><code> getDropDownLineCount()</code></li> +* <li><code> setDropDownLineCount()</code></li> +* <li><code> makeVisible()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XListBox +*/ +public class _XListBox extends MultiMethodTest { + + public XListBox oObj = null; + + /** + * Listener implementation which sets flags on appropriate method calls + */ + protected static class TestActionListener implements com.sun.star.awt.XActionListener { + + public void disposing(com.sun.star.lang.EventObject e) {} + + public void actionPerformed(com.sun.star.awt.ActionEvent e) {} + + } + + TestActionListener actionListener = new TestActionListener() ; + + /** + * Listener implementation which sets flags on appropriate method calls + */ + protected static class TestItemListener implements com.sun.star.awt.XItemListener { + + public void disposing(com.sun.star.lang.EventObject e) {} + + public void itemStateChanged(com.sun.star.awt.ItemEvent e) {} + } + + TestItemListener itemListener = new TestItemListener() ; + + short lineCount = 0 ; + short itemCount = 0 ; + + /** + * Retrieves object relations. + */ + @Override + public void before() { + itemCount = oObj.getItemCount(); + } + + /** + * !!! Can be checked only interactively !!! + */ + public void _addItemListener() { + + oObj.addItemListener(itemListener) ; + + tRes.tested("addItemListener()", Status.skipped(true)) ; + } + + /** + * !!! Can be checked only interactively !!! + */ + public void _removeItemListener() { + requiredMethod("addItemListener()") ; + + oObj.removeItemListener(itemListener) ; + + tRes.tested("removeItemListener()", Status.skipped(true)) ; + } + + /** + * !!! Can be checked only interactively !!! + */ + public void _addActionListener() { + + oObj.addActionListener(actionListener) ; + + tRes.tested("addActionListener()", Status.skipped(true)) ; + } + + /** + * !!! Can be checked only interactively !!! + */ + public void _removeActionListener() { + requiredMethod("addActionListener()") ; + + oObj.removeActionListener(actionListener) ; + + tRes.tested("removeActionListener()", Status.skipped(true)) ; + } + + /** + * Adds one item to the last position and check the number of + * items after addition. <p> + * Has <b>OK</b> status if the number of items increased by 1.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getItemCount </code> </li> + * </ul> + */ + public void _addItem() { + requiredMethod("getItemCount()") ; + + boolean result = true ; + oObj.addItem("Item1", itemCount) ; + result = oObj.getItemCount() == itemCount + 1 ; + + tRes.tested("addItem()", result) ; + } + + /** + * Adds one two items to the last position and check the number of + * items after addition. <p> + * Has <b>OK</b> status if the number of items increased by 2.<p> + * The following method tests are to be executed before : + * <ul> + * <li> <code> addItem </code> </li> + * </ul> + */ + public void _addItems() { + executeMethod("addItem()") ; + + boolean result = true ; + short oldCnt = oObj.getItemCount() ; + oObj.addItems(new String[] {"Item2", "Item3"}, oldCnt) ; + result = oObj.getItemCount() == oldCnt + 2 ; + + tRes.tested("addItems()", result) ; + } + + /** + * Gets the current number of items and tries to remove them all + * then checks number of items. <p> + * Has <b>OK</b> status if no items remains. <p> + * The following method tests are to be executed before : + * <ul> + * <li> <code> getItems </code> </li> + * <li> <code> getItem </code> </li> + * </ul> + */ + public void _removeItems() { + executeMethod("getItems()") ; + executeMethod("getItem()") ; + executeMethod("getSelectedItemPos()") ; + executeMethod("getSelectedItemsPos()") ; + executeMethod("getSelectedItem()") ; + executeMethod("getSelectedItems()") ; + + boolean result = true ; + short oldCnt = oObj.getItemCount() ; + oObj.removeItems((short)0, oldCnt) ; + result = oObj.getItemCount() == 0 ; + + tRes.tested("removeItems()", result) ; + } + + /** + * Just retrieves current number of items and stores it. <p> + * Has <b>OK</b> status if the count is not less than 0. + */ + public void _getItemCount() { + + itemCount = oObj.getItemCount() ; + + tRes.tested("getItemCount()", itemCount >= 0) ; + } + + /** + * After <code>addItem</code> and <code>addItems</code> methods + * test the following items must exist {..., "Item1", "Item2", "Item3"} + * Retrieves the item from the position which was ititially the last.<p> + * Has <b>OK</b> status if the "Item1" was retrieved. <p> + * The following method tests are to be executed before : + * <ul> + * <li> <code> addItems </code> </li> + * </ul> + */ + public void _getItem() { + requiredMethod("addItems()") ; + + boolean result = true ; + String item = oObj.getItem(itemCount) ; + result = "Item1".equals(item) ; + + tRes.tested("getItem()", result) ; + } + + /** + * After <code>addItem</code> and <code>addItems</code> methods + * test the following items must exist {..., "Item1", "Item2", "Item3"} + * Retrieves all items. <p> + * Has <b>OK</b> status if the last three items retrieved are + * "Item1", "Item2" and "Item3". <p> + * The following method tests are to be executed before : + * <ul> + * <li> <code> addItems </code> </li> + * </ul> + */ + public void _getItems() { + requiredMethod("addItems()") ; + + boolean result = true ; + String[] items = oObj.getItems() ; + for (int i = itemCount; i < (itemCount + 3); i++) { + result &= ("Item" + (i+1 - itemCount)).equals(items[i]) ; + } + + tRes.tested("getItems()", result) ; + } + + /** + * Gets line count and stores it. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getDropDownLineCount() { + + boolean result = true ; + lineCount = oObj.getDropDownLineCount() ; + + tRes.tested("getDropDownLineCount()", result) ; + } + + /** + * Sets a new value and then checks get value. <p> + * Has <b>OK</b> status if set and get values are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getDropDownLineCount </code> </li> + * </ul> + */ + public void _setDropDownLineCount() { + requiredMethod("getDropDownLineCount()") ; + + boolean result = true ; + oObj.setDropDownLineCount((short)(lineCount + 1)) ; + result = oObj.getDropDownLineCount() == lineCount + 1 ; + + tRes.tested("setDropDownLineCount()", result) ; + } + + /** + * Selects some item and gets selected item position. <p> + * Has <b> OK </b> status if position is equal to position set. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addItems </code> : to have some items </li> + * </ul> + */ + public void _getSelectedItemPos() { + requiredMethod("addItems()") ; + + boolean result = true ; + oObj.selectItemPos((short)1, true) ; + short pos = oObj.getSelectedItemPos() ; + + result = pos == 1 ; + + tRes.tested("getSelectedItemPos()", result) ; + } + + /** + * Clears all selections, then selects some items and gets selected + * item positions. <p> + * Has <b> OK </b> status if positions get are the same as were set.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> selectItemsPos </code> </li> + * </ul> + */ + public void _getSelectedItemsPos() { + requiredMethod("selectItemsPos()") ; + + boolean result = true ; + short cnt = oObj.getItemCount() ; + for (short i = 0; i < cnt; i++) { + oObj.selectItemPos(i, false) ; + } + oObj.selectItemsPos(new short[] {0, 2}, true) ; + + short[] items = oObj.getSelectedItemsPos() ; + + result = items != null && items.length == 2 && + items[0] == 0 && items[1] == 2 ; + + tRes.tested("getSelectedItemsPos()", result) ; + } + + /** + * Unselects all items, selects some item and then gets selected item. <p> + * Has <b> OK </b> status if items selected and get are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addItems </code> : to have some items </li> + * </ul> + */ + public void _getSelectedItem() { + requiredMethod("addItems()") ; + + boolean result = true ; + short cnt = oObj.getItemCount() ; + for (short i = 0; i < cnt; i++) { + oObj.selectItemPos(i, false) ; + } + oObj.selectItem("Item3", true) ; + String item = oObj.getSelectedItem() ; + + result = "Item3".equals(item) ; + + tRes.tested("getSelectedItem()", result) ; + } + + /** + * Clears all selections, then selects some items positions and gets + * selected items. <p> + * Has <b> OK </b> status if items get are the same as items on + * positions which were set.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> selectItemsPos </code> </li> + * <li> <code> getItem </code>: this method is used here for checking. + * </li> + * </ul> + */ + public void _getSelectedItems() { + requiredMethod("selectItemsPos()") ; + requiredMethod("getItem()") ; + + boolean result = true ; + short cnt = oObj.getItemCount() ; + for (short i = 0; i < cnt; i++) { + oObj.selectItemPos(i, false) ; + } + oObj.selectItemsPos(new short[] {0, 2}, true) ; + + String[] items = oObj.getSelectedItems() ; + result = items != null && items.length == 2 && + oObj.getItem((short)0).equals(items[0]) && + oObj.getItem((short)2).equals(items[1]) ; + + tRes.tested("getSelectedItems()", result) ; + } + + /** + * Unselects all items, then selects a single item. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addItems </code> : to have some items </li> + * </ul> + */ + public void _selectItemPos() { + requiredMethod("addItems()") ; + + boolean result = true ; + short cnt = oObj.getItemCount() ; + for (short i = 0; i < cnt; i++) { + oObj.selectItemPos(i, false) ; + } + oObj.selectItemPos((short)1, true) ; + + tRes.tested("selectItemPos()", result) ; + } + + /** + * Just selects some items. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addItems </code> : to have some items </li> + * </ul> + */ + public void _selectItemsPos() { + requiredMethod("addItems()") ; + requiredMethod("setMultipleMode()") ; + + boolean result = true ; + oObj.selectItemsPos(new short[] {0, 2}, true) ; + + tRes.tested("selectItemsPos()", result) ; + } + + /** + * Just selects an item. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addItems </code> : to have some items </li> + * </ul> + */ + public void _selectItem() { + requiredMethod("addItems()") ; + + boolean result = true ; + oObj.selectItem("Item3", true) ; + + tRes.tested("selectItem()", result) ; + } + + /** + * Checks if multiple mode is set. <p> + * Has <b> OK </b> status if multiple mode is set. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setMultipleMode </code> </li> + * </ul> + */ + public void _isMutipleMode() { + requiredMethod("setMultipleMode()") ; + + boolean result = true ; + result = oObj.isMutipleMode() ; + + tRes.tested("isMutipleMode()", result) ; + } + + /** + * Sets multiple mode. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _setMultipleMode() { + + boolean result = true ; + oObj.setMultipleMode(true) ; + + tRes.tested("setMultipleMode()", result) ; + } + + /** + * Just calls the method to make visible third item. <p> + * Has <b> OK </b> status if no runtime exceptions occurred.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addItems </code> </li> + * </ul> + */ + public void _makeVisible() { + requiredMethod("addItems()") ; + + boolean result = true ; + oObj.makeVisible((short)2) ; + + tRes.tested("makeVisible()", result) ; + } +} diff --git a/qadevOOo/tests/java/ifc/awt/_XMessageBoxFactory.java b/qadevOOo/tests/java/ifc/awt/_XMessageBoxFactory.java new file mode 100644 index 0000000000..04f8808287 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XMessageBoxFactory.java @@ -0,0 +1,98 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import com.sun.star.awt.AsyncCallback; +import com.sun.star.awt.XCallback; +import com.sun.star.awt.XMessageBox; +import com.sun.star.awt.XMessageBoxFactory; +import com.sun.star.awt.XRequestCallback; +import com.sun.star.awt.XWindow; +import com.sun.star.awt.XWindowPeer; +import com.sun.star.uno.Any; +import com.sun.star.uno.UnoRuntime; +import lib.MultiMethodTest; +import util.UITools; + +/** + * Testing <code>com.sun.star.awt.XMessageBoxFactory</code> + * interface methods : + * <ul> + * <li><code> </code>createMessageBox()</li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.awt.XMessageBoxFactory + */ +public class _XMessageBoxFactory extends MultiMethodTest { + public XMessageBoxFactory oObj = null; + + public void _createMessageBox() { + final XMessageBox mb = oObj.createMessageBox( + (XWindowPeer) tEnv.getObjRelation("WINPEER"), + com.sun.star.awt.MessageBoxType.ERRORBOX, 1, "The Title", + "The Message"); + final UITools tools = new UITools( + UnoRuntime.queryInterface(XWindow.class, mb)); + final boolean[] done = new boolean[] { false }; + final boolean[] good = new boolean[] { false }; + XRequestCallback async = AsyncCallback.create( + tParam.getComponentContext()); + async.addCallback( + new XCallback() { + public void notify(Object aData) { + mb.execute(); + synchronized (done) { + done[0] = true; + done.notifyAll(); + } + } + }, + Any.VOID); + async.addCallback( + new XCallback() { + public void notify(Object aData) { + try { + tools.clickButton("OK"); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new RuntimeException(e); + } + synchronized (good) { + good[0] = true; + } + } + }, + Any.VOID); + synchronized (done) { + while (!done[0]) { + try { + done.wait(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + } + boolean ok; + synchronized (good) { + ok = good[0]; + } + tRes.tested("createMessageBox()", ok); + } +} diff --git a/qadevOOo/tests/java/ifc/awt/_XNumericField.java b/qadevOOo/tests/java/ifc/awt/_XNumericField.java new file mode 100644 index 0000000000..a194fe332c --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XNumericField.java @@ -0,0 +1,308 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + + +import lib.MultiMethodTest; + +import com.sun.star.awt.XNumericField; +import util.utils; + +/** +* Testing <code>com.sun.star.awt.XNumericField</code> +* interface methods : +* <ul> +* <li><code> setValue()</code></li> +* <li><code> getValue()</code></li> +* <li><code> setMin()</code></li> +* <li><code> getMin()</code></li> +* <li><code> setMax()</code></li> +* <li><code> getMax()</code></li> +* <li><code> setFirst()</code></li> +* <li><code> getFirst()</code></li> +* <li><code> setLast()</code></li> +* <li><code> getLast()</code></li> +* <li><code> setSpinSize()</code></li> +* <li><code> getSpinSize()</code></li> +* <li><code> setDecimalDigits()</code></li> +* <li><code> getDecimalDigits()</code></li> +* <li><code> setStrictFormat()</code></li> +* <li><code> isStrictFormat()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XNumericField +*/ +public class _XNumericField extends MultiMethodTest { + + public XNumericField oObj = null; + private double val = 0 ; + private double min = 0 ; + private double max = 0 ; + private double first = 0 ; + private double last = 0 ; + private double spin = 0 ; + private short digits = 0 ; + private boolean strict = true ; + + /** + * Sets value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getValue </code> </li> + * </ul> + */ + public void _setValue() { + requiredMethod("getValue()"); + + double value = val + 1.1; + oObj.setValue(value) ; + + tRes.tested("setValue()", utils.approxEqual(oObj.getValue(), value)); + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getValue() { + val = oObj.getValue() ; + + tRes.tested("getValue()", true) ; + } + + /** + * Sets minimal value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getMin </code> </li> + * </ul> + */ + public void _setMin() { + requiredMethod("getMin()") ; + + double value = min + 1.1; + oObj.setMin(value); + double ret = oObj.getMin(); + boolean result = utils.approxEqual(ret, value); + + tRes.tested("setMin()", result); + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getMin() { + + boolean result = true ; + min = oObj.getMin() ; + + tRes.tested("getMin()", result) ; + } + + /** + * Sets maximal value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getMax </code> </li> + * </ul> + */ + public void _setMax() { + requiredMethod("getMax()") ; + + double value = max + 1.1; + oObj.setMax(value); + double ret = oObj.getMax(); + boolean result = utils.approxEqual(ret, value); + + tRes.tested("setMax()", result) ; + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getMax() { + + boolean result = true ; + max = oObj.getMax() ; + + tRes.tested("getMax()", result) ; + } + + /** + * Sets value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getFirst </code> </li> + * </ul> + */ + public void _setFirst() { + requiredMethod("getFirst()") ; + + double value = first + 1.1; + oObj.setFirst(value); + double ret = oObj.getFirst(); + boolean result = utils.approxEqual(ret, value); + + tRes.tested("setFirst()", result) ; + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getFirst() { + + boolean result = true ; + first = oObj.getFirst() ; + + tRes.tested("getFirst()", result) ; + } + + /** + * Sets value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getLast </code> </li> + * </ul> + */ + public void _setLast() { + requiredMethod("getLast()") ; + + double value = last + 1.1; + oObj.setLast(value); + double ret = oObj.getLast(); + boolean result = utils.approxEqual(ret, value); + + tRes.tested("setLast()", result) ; + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getLast() { + + boolean result = true ; + last = oObj.getLast() ; + + tRes.tested("getLast()", result) ; + } + + /** + * Sets value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getSpinSize </code> </li> + * </ul> + */ + public void _setSpinSize() { + requiredMethod("getSpinSize()") ; + + boolean result = true ; + double value = spin + 1.1; + oObj.setSpinSize(value) ; + result = utils.approxEqual(oObj.getSpinSize(), value); + + tRes.tested("setSpinSize()", result) ; + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getSpinSize() { + + boolean result = true ; + spin = oObj.getSpinSize() ; + + tRes.tested("getSpinSize()", result) ; + } + + /** + * Sets value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getDecimalDigits </code> </li> + * </ul> + */ + public void _setDecimalDigits() { + requiredMethod("getDecimalDigits()") ; + + boolean result = true ; + oObj.setDecimalDigits((short)(digits + 1)) ; + + short res = oObj.getDecimalDigits() ; + result = res == (digits + 1) ; + + tRes.tested("setDecimalDigits()", result) ; + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getDecimalDigits() { + + boolean result = true ; + digits = oObj.getDecimalDigits() ; + + tRes.tested("getDecimalDigits()", result) ; + } + + /** + * Sets value changed and then compares it to get value. <p> + * Has <b>OK</b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> isStrictFormat </code> </li> + * </ul> + */ + public void _setStrictFormat() { + requiredMethod("isStrictFormat()") ; + + boolean result = true ; + oObj.setStrictFormat(!strict) ; + result = oObj.isStrictFormat() == !strict ; + + tRes.tested("setStrictFormat()", result) ; + } + + /** + * Just calls the method and stores value returned. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _isStrictFormat() { + + boolean result = true ; + strict = oObj.isStrictFormat() ; + + tRes.tested("isStrictFormat()", result) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/awt/_XPatternField.java b/qadevOOo/tests/java/ifc/awt/_XPatternField.java new file mode 100644 index 0000000000..1613be4a0c --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XPatternField.java @@ -0,0 +1,167 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + + +import lib.MultiMethodTest; + +import com.sun.star.awt.XPatternField; + +/** +* Testing <code>com.sun.star.awt.XPatternField</code> +* interface methods : +* <ul> +* <li><code> setMasks()</code></li> +* <li><code> getMasks()</code></li> +* <li><code> setString()</code></li> +* <li><code> getString()</code></li> +* <li><code> setStrictFormat()</code></li> +* <li><code> isStrictFormat()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XPatternField +*/ +public class _XPatternField extends MultiMethodTest { + + public XPatternField oObj = null ; + private String editMask = null ; + private String literalMask = null ; + private String string = null ; + private boolean strict = false ; + + /** + * Sets masks to new values then gets them and compare. <p> + * Has <b> OK </b> status if set and get masks are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getMasks </code> </li> + * </ul> + */ + public void _setMasks() { + requiredMethod("getMasks()") ; + + boolean result = true ; + String newEdit = editMask == null ? "ccc" : editMask + "ccc" ; + String newLiteral = literalMask == null ? " " : literalMask + " " ; + oObj.setMasks(newEdit, newLiteral) ; + + String[] edit = new String[1] ; + String[] literal = new String[1] ; + oObj.getMasks(edit, literal) ; + + result &= newEdit.equals(edit[0]) ; + result &= newLiteral.equals(literal[0]) ; + + tRes.tested("setMasks()", result) ; + } + + /** + * Gets masks and stores them. <p> + * Has <b> OK </b> status if no runtime exceptions occurred. + */ + public void _getMasks() { + + boolean result = true ; + String[] edit = new String[1] ; + String[] literal = new String[1] ; + oObj.getMasks(edit, literal) ; + + log.println("Edit mask = '" + edit[0] + "', literal = '" + + literal[0] + "'") ; + + editMask = edit[0] ; + literalMask = literal[0] ; + + tRes.tested("getMasks()", result) ; + } + + /** + * Sets new string and then get it for verification. <p> + * Has <b> OK </b> status if get and set strings are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getString </code> </li> + * <li> <code> setMasks </code> : mask must be set for new string + * would be valid. </li> + * </ul> + */ + public void _setString() { + requiredMethod("setMasks()") ; + requiredMethod("getString()") ; + + boolean result = true ; + String newString = string = "abc" ; + oObj.setString(newString) ; + String getString = oObj.getString() ; + + result = newString.equals(getString) ; + + if (!result) { + log.println("Was '" + string + "', Set '" + newString + + "', Get '" + getString + "'") ; + } + + tRes.tested("setString()", result) ; + } + + /** + * Gets current string and stores it. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _getString() { + + boolean result = true ; + string = oObj.getString() ; + + tRes.tested("getString()", result) ; + } + + /** + * Sets new strict state then checks it. <p> + * Has <b> OK </b> status if the state was changed. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> isStrictFormat </code> </li> + * </ul> + */ + public void _setStrictFormat() { + requiredMethod("isStrictFormat()") ; + + boolean result = true ; + oObj.setStrictFormat(!strict) ; + + result = oObj.isStrictFormat() == !strict ; + + tRes.tested("setStrictFormat()", result) ; + } + + /** + * Gets the current strict state and stores it. <p> + * Has <b> OK </b> status if no runtime exceptions occurred. + */ + public void _isStrictFormat() { + + boolean result = true ; + strict = oObj.isStrictFormat() ; + + tRes.tested("isStrictFormat()", result) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/awt/_XRadioButton.java b/qadevOOo/tests/java/ifc/awt/_XRadioButton.java new file mode 100644 index 0000000000..a8757cd1c8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XRadioButton.java @@ -0,0 +1,136 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + + +import lib.MultiMethodTest; +import lib.Status; + +import com.sun.star.awt.XRadioButton; + +/** +* Testing <code>com.sun.star.awt.XRadioButton</code> +* interface methods : +* <ul> +* <li><code> addItemListener()</code></li> +* <li><code> removeItemListener()</code></li> +* <li><code> getState()</code></li> +* <li><code> setState()</code></li> +* <li><code> setLabel()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XRadioButton +*/ +public class _XRadioButton extends MultiMethodTest { + + public XRadioButton oObj = null; + private boolean state = false ; + + /** + * Listener implementation which sets flags on appropriate method calls + */ + protected static class TestItemListener implements com.sun.star.awt.XItemListener { + private final java.io.PrintWriter log; + + public TestItemListener(java.io.PrintWriter log) { + this.log = log ; + } + + public void disposing(com.sun.star.lang.EventObject e) { + log.println(" disposing was called.") ; + } + + public void itemStateChanged(com.sun.star.awt.ItemEvent e) { + log.println(" itemStateChanged was called.") ; + } + + } + + TestItemListener itemListener = null ; + + /** + * !!! Can be checked only interactively !!! + */ + public void _addItemListener() { + + itemListener = new TestItemListener(log) ; + + oObj.addItemListener(itemListener) ; + + tRes.tested("addItemListener()", Status.skipped(true)) ; + } + + /** + * !!! Can be checked only interactively !!! + */ + public void _removeItemListener() { + requiredMethod("addItemListener()") ; + + oObj.removeItemListener(itemListener) ; + + tRes.tested("removeItemListener()", Status.skipped(true)) ; + } + + /** + * Gets state and stores it. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _getState() { + + boolean result = true ; + state = oObj.getState() ; + + tRes.tested("getState()", result) ; + } + + /** + * Sets a new state and the gets it for checking. <p> + * Has <b> OK </b> status if set and get states are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getState </code> </li> + * </ul> + */ + public void _setState() { + requiredMethod("getState()") ; + + boolean result = true ; + oObj.setState(!state) ; + + waitForEventIdle(); + + result = oObj.getState() == !state ; + + tRes.tested("setState()", result) ; + } + + /** + * Just sets a new label. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _setLabel() { + + boolean result = true ; + oObj.setLabel("XRadioButton") ; + + tRes.tested("setLabel()", result) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/awt/_XScrollBar.java b/qadevOOo/tests/java/ifc/awt/_XScrollBar.java new file mode 100644 index 0000000000..a298ed0829 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XScrollBar.java @@ -0,0 +1,203 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.awt; + +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleComponent; +import com.sun.star.awt.Point; +import com.sun.star.awt.ScrollBarOrientation; +import com.sun.star.awt.XScrollBar; +import com.sun.star.text.XTextDocument; +import com.sun.star.uno.UnoRuntime; + +import java.awt.Robot; +import java.awt.event.InputEvent; + +import lib.MultiMethodTest; + + +public class _XScrollBar extends MultiMethodTest { + public XScrollBar oObj; + public boolean adjusted = false; + com.sun.star.awt.XAdjustmentListener listener = new AdjustmentListener(); + + public void _addAdjustmentListener() throws Exception { + util.FormTools.switchDesignOf(tParam.getMSF(), + (XTextDocument) tEnv.getObjRelation("Document")); + oObj.addAdjustmentListener(listener); + adjustScrollBar(); + + boolean res = adjusted; + oObj.removeAdjustmentListener(listener); + adjusted = false; + adjustScrollBar(); + res &= !adjusted; + tRes.tested("addAdjustmentListener()", res); + } + + public void _removeAdjustmentListener() { + //this method is checked in addAdjustmentListener + //so that method is required here and if it works + //this method is given OK too + requiredMethod("addAdjustmentListener()"); + tRes.tested("removeAdjustmentListener()", true); + } + + public void _setBlockIncrement() { + oObj.setBlockIncrement(15); + oObj.setBlockIncrement(5); + int bi = oObj.getBlockIncrement(); + tRes.tested("setBlockIncrement()",bi==5); + } + + public void _getBlockIncrement() { + //this method is checked in the corresponding set method + //so that method is required here and if it works + //this method is given OK too + requiredMethod("setBlockIncrement()"); + tRes.tested("getBlockIncrement()", true); + } + + public void _setLineIncrement() { + oObj.setLineIncrement(12); + oObj.setLineIncrement(2); + int li = oObj.getLineIncrement(); + tRes.tested("setLineIncrement()",li==2); + } + + public void _getLineIncrement() { + //this method is checked in the corresponding set method + //so that method is required here and if it works + //this method is given OK too + requiredMethod("setLineIncrement()"); + tRes.tested("getLineIncrement()", true); + } + + public void _setMaximum() { + oObj.setMaximum(490); + oObj.setMaximum(480); + int max = oObj.getMaximum(); + tRes.tested("setMaximum()",max==480); + } + + public void _getMaximum() { + //this method is checked in the corresponding set method + //so that method is required here and if it works + //this method is given OK too + requiredMethod("setMaximum()"); + tRes.tested("getMaximum()", true); + } + + public void _setOrientation() { + oObj.setOrientation(ScrollBarOrientation.HORIZONTAL); + oObj.setOrientation(ScrollBarOrientation.VERTICAL); + int ori = oObj.getOrientation(); + tRes.tested("setOrientation()",ori==ScrollBarOrientation.VERTICAL); + } + + public void _getOrientation() { + //this method is checked in the corresponding set method + //so that method is required here and if it works + //this method is given OK too + requiredMethod("setOrientation()"); + tRes.tested("getOrientation()", true); + } + + public void _setValue() { + oObj.setMaximum(600); + oObj.setValue(480); + oObj.setValue(520); + int val = oObj.getValue(); + tRes.tested("setValue()",val==520); + } + + public void _getValue() { + //this method is checked in the corresponding set method + //so that method is required here and if it works + //this method is given OK too + requiredMethod("setValue()"); + tRes.tested("getValue()", true); + } + + public void _setVisibleSize() { + oObj.setVisibleSize(700); + oObj.setVisibleSize(500); + int vs = oObj.getVisibleSize(); + tRes.tested("setVisibleSize()",vs==500); + } + + public void _getVisibleSize() { + //this method is checked in the corresponding set method + //so that method is required here and if it works + //this method is given OK too + requiredMethod("setVisibleSize()"); + tRes.tested("getVisibleSize()", true); + } + + public void _setValues() { + oObj.setValues(80, 200, 300); + oObj.setValues(70, 210, 500); + int val = oObj.getValue(); + int vs = oObj.getVisibleSize(); + int max = oObj.getMaximum(); + tRes.tested("setValues()",((val==70) && (vs==210) && (max==500))); + } + + private void adjustScrollBar() { + + + XScrollBar sc = UnoRuntime.queryInterface( + XScrollBar.class, tEnv.getTestObject()); + + sc.setValue(500); + + waitForEventIdle(); + + XAccessible acc = UnoRuntime.queryInterface( + XAccessible.class, tEnv.getTestObject()); + + XAccessibleComponent aCom = UnoRuntime.queryInterface( + XAccessibleComponent.class, + acc.getAccessibleContext()); + + Point location = aCom.getLocationOnScreen(); + try { + Robot rob = new Robot(); + rob.mouseMove(location.X + 50, location.Y + 75); + rob.mousePress(InputEvent.BUTTON1_MASK); + rob.mouseRelease(InputEvent.BUTTON1_MASK); + } catch (java.awt.AWTException e) { + System.out.println("couldn't adjust scrollbar"); + } + + waitForEventIdle(); + } + + public class AdjustmentListener + implements com.sun.star.awt.XAdjustmentListener { + public void adjustmentValueChanged(com.sun.star.awt.AdjustmentEvent adjustmentEvent) { + System.out.println("Adjustment Value changed"); + System.out.println("AdjustmentEvent: " + adjustmentEvent.Value); + adjusted = true; + } + + public void disposing(com.sun.star.lang.EventObject eventObject) { + System.out.println("Listener disposed"); + } + } +} diff --git a/qadevOOo/tests/java/ifc/awt/_XSpinField.java b/qadevOOo/tests/java/ifc/awt/_XSpinField.java new file mode 100644 index 0000000000..d7044a3c30 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XSpinField.java @@ -0,0 +1,195 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiMethodTest; + +import com.sun.star.awt.SpinEvent; +import com.sun.star.awt.XSpinField; +import com.sun.star.awt.XSpinListener; +import com.sun.star.lang.EventObject; + +/** +* Testing <code>com.sun.star.awt.XSpinField</code> +* interface methods : +* <ul> +* <li><code> addSpinListener()</code></li> +* <li><code> removeSpinListener()</code></li> +* <li><code> up()</code></li> +* <li><code> down()</code></li> +* <li><code> first()</code></li> +* <li><code> last()</code></li> +* <li><code> enableRepeat()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XSpinField +*/ +public class _XSpinField extends MultiMethodTest { + + public XSpinField oObj = null; + + /** + * Listener implementation which set flags on appropriate + * listener methods calls. + */ + protected static class TestListener implements XSpinListener { + public boolean upFl = false ; + public boolean downFl = false ; + public boolean firstFl = false ; + public boolean lastFl = false ; + + public void up(SpinEvent e) { + upFl = true ; + } + public void down(SpinEvent e) { + downFl = true ; + } + public void first(SpinEvent e) { + firstFl = true ; + } + public void last(SpinEvent e) { + lastFl = true ; + } + public void disposing(EventObject e) {} + } + + private final TestListener listener = new TestListener() ; + + /** + * Just adds a listener. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _addSpinListener() { + oObj.addSpinListener(listener) ; + + tRes.tested("addSpinListener()", true) ; + } + + /** + * Calls the method. <p> + * Has <b>OK</b> status if the appropriate listener method + * was called. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addSpinListener </code> </li> + * </ul> + */ + public void _up() { + requiredMethod("addSpinListener()") ; + + oObj.up() ; + waitForEventIdle(); + + tRes.tested("up()", listener.upFl) ; + } + + /** + * Calls the method. <p> + * Has <b>OK</b> status if the appropriate listener method + * was called. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addSpinListener </code> </li> + * </ul> + */ + public void _down() throws Exception { + requiredMethod("addSpinListener()") ; + + oObj.down() ; + waitForEventIdle(); + + tRes.tested("down()", listener.downFl) ; + } + + /** + * Calls the method. <p> + * Has <b>OK</b> status if the appropriate listener method + * was called.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addSpinListener </code> </li> + * </ul> + */ + public void _first() throws Exception { + requiredMethod("addSpinListener()") ; + + oObj.first(); + waitForEventIdle(); + + tRes.tested("first()", listener.firstFl) ; + } + + /** + * Calls the method. <p> + * Has <b>OK</b> status if the appropriate listener method + * was called.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addSpinListener </code> </li> + * </ul> + */ + public void _last() throws Exception { + requiredMethod("addSpinListener()") ; + + oObj.last(); + waitForEventIdle(); + + tRes.tested("last()", listener.lastFl) ; + } + + /** + * Removes the listener, then calls <code>up</code> method and + * checks if the listener wasn't called. <p> + * Has <b>OK</b> status if listener wasn't called. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addSpinListener </code> </li> + * <li> <code> up </code> </li> + * <li> <code> down </code> </li> + * <li> <code> first </code> </li> + * <li> <code> last </code> </li> + * </ul> + */ + public void _removeSpinListener() { + requiredMethod("addSpinListener()") ; + executeMethod("up()") ; + executeMethod("down()") ; + executeMethod("first()") ; + executeMethod("last()") ; + + listener.upFl = false ; + + oObj.removeSpinListener(listener) ; + + oObj.up() ; + + tRes.tested("removeSpinListener()", !listener.upFl) ; + } + + /** + * Enables then disables repeating. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _enableRepeat() { + oObj.enableRepeat(true) ; + oObj.enableRepeat(false) ; + + tRes.tested("enableRepeat()", true) ; + } +} diff --git a/qadevOOo/tests/java/ifc/awt/_XSpinValue.java b/qadevOOo/tests/java/ifc/awt/_XSpinValue.java new file mode 100644 index 0000000000..a8a65e2db3 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XSpinValue.java @@ -0,0 +1,195 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleComponent; +import com.sun.star.awt.Point; +import com.sun.star.awt.ScrollBarOrientation; +import com.sun.star.awt.XSpinValue; +import com.sun.star.text.XTextDocument; +import com.sun.star.uno.UnoRuntime; +import java.awt.Robot; +import java.awt.event.InputEvent; +import lib.MultiMethodTest; + +public class _XSpinValue extends MultiMethodTest { + + public XSpinValue oObj; + public boolean adjusted = false; + com.sun.star.awt.XAdjustmentListener listener = new AdjustmentListener(); + + public void _addAdjustmentListener() throws Exception { + util.FormTools.switchDesignOf(tParam.getMSF(), + (XTextDocument) tEnv.getObjRelation("Document")); + oObj.addAdjustmentListener(listener); + adjustScrollBar(); + + boolean res = adjusted; + oObj.removeAdjustmentListener(listener); + adjusted = false; + adjustScrollBar(); + res &= !adjusted; + tRes.tested("addAdjustmentListener()", res); + } + + public void _removeAdjustmentListener() { + //this method is checked in addAdjustmentListener + //so that method is required here and if it works + //this method is given OK too + requiredMethod("addAdjustmentListener()"); + tRes.tested("removeAdjustmentListener()", true); + } + + public void _setSpinIncrement() { + oObj.setSpinIncrement(15); + oObj.setSpinIncrement(5); + int bi = oObj.getSpinIncrement(); + tRes.tested("setSpinIncrement()",bi==5); + } + + public void _getSpinIncrement() { + //this method is checked in the corresponding set method + //so that method is required here and if it works + //this method is given OK too + requiredMethod("setSpinIncrement()"); + tRes.tested("getSpinIncrement()", true); + } + + + public void _setMaximum() { + oObj.setMaximum(490); + oObj.setMaximum(480); + int max = oObj.getMaximum(); + tRes.tested("setMaximum()",max==480); + } + + public void _getMaximum() { + //this method is checked in the corresponding set method + //so that method is required here and if it works + //this method is given OK too + requiredMethod("setMaximum()"); + tRes.tested("getMaximum()", true); + } + + public void _setMinimum() { + oObj.setMinimum(90); + oObj.setMinimum(80); + int max = oObj.getMinimum(); + tRes.tested("setMinimum()",max==80); + } + + public void _getMinimum() { + //this method is checked in the corresponding set method + //so that method is required here and if it works + //this method is given OK too + requiredMethod("setMinimum()"); + tRes.tested("getMinimum()", true); + } + + public void _setOrientation() { + boolean res = true; + try { + oObj.setOrientation(ScrollBarOrientation.HORIZONTAL); + oObj.setOrientation(ScrollBarOrientation.VERTICAL); + } catch (com.sun.star.lang.NoSupportException e) { + log.println("Couldn't set Orientation"); + } + int ori = oObj.getOrientation(); + res &= (ori==ScrollBarOrientation.VERTICAL); + tRes.tested("setOrientation()",res ); + } + + public void _getOrientation() { + //this method is checked in the corresponding set method + //so that method is required here and if it works + //this method is given OK too + requiredMethod("setOrientation()"); + tRes.tested("getOrientation()", true); + } + + public void _setValue() { + oObj.setMaximum(600); + oObj.setValue(480); + oObj.setValue(520); + int val = oObj.getValue(); + tRes.tested("setValue()",val==520); + } + + public void _getValue() { + //this method is checked in the corresponding set method + //so that method is required here and if it works + //this method is given OK too + requiredMethod("setValue()"); + tRes.tested("getValue()", true); + } + + public void _setValues() { + oObj.setValues(80, 200, 180); + oObj.setValues(70, 210, 200); + int val = oObj.getValue(); + int min = oObj.getMinimum(); + int max = oObj.getMaximum(); + tRes.tested("setValues()",((min==70) && (max==210) && (val==200))); + } + + private void adjustScrollBar() { + + + XSpinValue sv = UnoRuntime.queryInterface( + XSpinValue.class, tEnv.getTestObject()); + + sv.setValue(500); + + waitForEventIdle(); + + XAccessible acc = UnoRuntime.queryInterface( + XAccessible.class, tEnv.getTestObject()); + + XAccessibleComponent aCom = UnoRuntime.queryInterface( + XAccessibleComponent.class, + acc.getAccessibleContext()); + + Point location = aCom.getLocationOnScreen(); + try { + Robot rob = new Robot(); + rob.mouseMove(location.X + 20, location.Y + 10); + rob.mousePress(InputEvent.BUTTON1_MASK); + rob.mouseRelease(InputEvent.BUTTON1_MASK); + } catch (java.awt.AWTException e) { + System.out.println("couldn't adjust scrollbar"); + } + + waitForEventIdle(); + } + + public class AdjustmentListener + implements com.sun.star.awt.XAdjustmentListener { + public void adjustmentValueChanged(com.sun.star.awt.AdjustmentEvent adjustmentEvent) { + System.out.println("Adjustment Value changed"); + System.out.println("AdjustmentEvent: " + adjustmentEvent.Value); + adjusted = true; + } + + public void disposing(com.sun.star.lang.EventObject eventObject) { + System.out.println("Listener disposed"); + } + } + +} diff --git a/qadevOOo/tests/java/ifc/awt/_XSystemChildFactory.java b/qadevOOo/tests/java/ifc/awt/_XSystemChildFactory.java new file mode 100644 index 0000000000..5955e9a0b6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XSystemChildFactory.java @@ -0,0 +1,31 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import com.sun.star.awt.XSystemChildFactory; +import lib.MultiMethodTest; + +public final class _XSystemChildFactory extends MultiMethodTest { + public XSystemChildFactory oObj; + + public void _createSystemChild() { + //TODO + tRes.tested("createSystemChild()", true); + } +} diff --git a/qadevOOo/tests/java/ifc/awt/_XTabController.java b/qadevOOo/tests/java/ifc/awt/_XTabController.java new file mode 100644 index 0000000000..8fa384497c --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XTabController.java @@ -0,0 +1,156 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiMethodTest; +import lib.Status; + +import com.sun.star.awt.XControlContainer; +import com.sun.star.awt.XTabController; +import com.sun.star.awt.XTabControllerModel; + +/** +* This interface is DEPRECATED !!! +* All test results are SKIPPED.OK now. +* Testing <code>com.sun.star.awt.XTabController</code> +* interface methods : +* <ul> +* <li><code> activateFirst()</code></li> +* <li><code> activateLast()</code></li> +* <li><code> activateTabOrder()</code></li> +* <li><code> autoTabOrder()</code></li> +* <li><code> getContainer()</code></li> +* <li><code> getControls()</code></li> +* <li><code> getModel()</code></li> +* <li><code> setContainer()</code></li> +* <li><code> setModel()</code></li> +* </ul><p> +* This test needs the following object relations : +* <ul> +* <li> <code>'MODEL'</code> : <code>XTabControllerModel</code> a model for +* the object</li> +* <li> <code>'CONTAINER'</code> : <code>XControlContainer</code> a container +* for the object</li> +* <ul> <p> +* @see com.sun.star.awt.XTabController +*/ +public class _XTabController extends MultiMethodTest { + public XTabController oObj = null; + + /** + * Test calls the method with object relation 'MODEL' as a parameter.<p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _setModel() { + oObj.setModel( (XTabControllerModel) tEnv.getObjRelation("MODEL")); + tRes.tested("setModel()", Status.skipped(true) ); + } + + /** + * Test calls the method, then checks returned value.<p> + * Has <b> OK </b> status if method returns a value that equals to + * corresponding object relation.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setModel() </code> : sets model for the object </li> + * </ul> + */ + public void _getModel() { + requiredMethod("setModel()"); + oObj.getModel(); + tRes.tested("getModel()", Status.skipped(true)); + } + + /** + * Test calls the method with object relation 'CONTAINER' as a parameter.<p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _setContainer() { + oObj.setContainer( (XControlContainer) + tEnv.getObjRelation("CONTAINER")); + tRes.tested("setContainer()", Status.skipped(true)); + } + + /** + * Test calls the method, then checks returned value.<p> + * Has <b> OK </b> status if method returns a value that equals to + * corresponding object relation.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setContainer() </code> : sets container for the object</li> + * </ul> + */ + public void _getContainer() { + requiredMethod( "setContainer()"); + oObj.getContainer(); + tRes.tested("getContainer()", Status.skipped(true) ); + } + + /** + * Test calls the method, then checks returned sequence.<p> + * Has <b> OK </b> status if returned sequence is not null.<p> + */ + public void _getControls() { + oObj.getControls(); + tRes.tested("getControls()", Status.skipped(true) ); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _autoTabOrder() { + oObj.autoTabOrder(); + tRes.tested("autoTabOrder()", Status.skipped(true)); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _activateTabOrder() { + oObj.activateTabOrder(); + tRes.tested("activateTabOrder()", Status.skipped(true)); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _activateFirst() { + oObj.activateFirst(); + tRes.tested("activateFirst()", Status.skipped(true)); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _activateLast() { + oObj.activateLast(); + tRes.tested("activateLast()", Status.skipped(true)); + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_XTabControllerModel.java b/qadevOOo/tests/java/ifc/awt/_XTabControllerModel.java new file mode 100644 index 0000000000..4b20701680 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XTabControllerModel.java @@ -0,0 +1,157 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiMethodTest; +import lib.Status; + +import com.sun.star.awt.XTabControllerModel; + +/** +* Testing <code>com.sun.star.awt.XTabControllerModel</code> +* interface methods : +* <ul> +* <li><code> getGroupControl()</code></li> +* <li><code> setGroupControl()</code></li> +* <li><code> setControlModels()</code></li> +* <li><code> getControlModels()</code></li> +* <li><code> setGroup()</code></li> +* <li><code> getGroupCount()</code></li> +* <li><code> getGroup()</code></li> +* <li><code> getGroupByName()</code></li> +* </ul> <p> +* +* Since the interface is <b>DEPRECATED</b> all methods have +* status SKIPPED.OK <p> +* +* This test needs the following object relations : +* <ul> +* <li> <code>'Model1'</code> : <code>XControlModel</code> relation +* , any control model belonging to the object tested.</li> +* <li> <code>'Model2'</code> : <code>XControlModel</code> relation +* , any control model belonging to the object tested.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XTabControllerModel +*/ +public class _XTabControllerModel extends MultiMethodTest { + + public XTabControllerModel oObj = null; + + + /** + * Sets group control to <code>true</code> then calls + * <code>getGroupControl()</code> method and checks the value. <p> + * Has <b> OK </b> status if the method returns <code>true</code> + * <p> + */ + public void _getGroupControl() { + log.println("Always SKIPPED.OK since deprecated."); + tRes.tested("getGroupControl()", Status.skipped(true)); + } + + /** + * Sets group control to <code>false</code> then calls + * <code>getGroupControl()</code> method and checks the value. <p> + * Has <b> OK </b> status if the method returns <code>false</code> + * <p> + */ + public void _setGroupControl() { + log.println("Always SKIPPED.OK since deprecated."); + tRes.tested("setGroupControl()", Status.skipped(true)); + } + + /** + * Test calls the method and sets control models to a single + * model from 'Model1' relation. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + */ + public void _setControlModels() { + log.println("Always SKIPPED.OK since deprecated."); + tRes.tested("setControlModels()", Status.skipped(true)); + } + + /** + * Calls method and checks if models were properly set in + * <code>setControlModels</code> method test. <p> + * Has <b>OK</b> status if the model sequence set is equal + * to the sequence get. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setControlModels </code> : to set sequence of models.</li> + * </ul> + */ + public void _getControlModels() { + log.println("Always SKIPPED.OK since deprecated."); + tRes.tested("getControlModels()", Status.skipped(true)); + } + + /** + * Sets the group named 'XTabControlModel' to sequence with a single + * element from 'Model2' relation. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + */ + public void _setGroup() { + log.println("Always SKIPPED.OK since deprecated."); + tRes.tested("setGroup()", Status.skipped(true)); + } + + /** + * Calls method and checks if the group was properly set in + * <code>setGroup</code> method test. <p> + * Has <b>OK</b> status if the sequence set is equal + * to the sequence get. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setGroup </code> : to set the sequence.</li> + * </ul> + */ + public void _getGroup() { + log.println("Always SKIPPED.OK since deprecated."); + tRes.tested("getGroup()", Status.skipped(true)); + } + + /** + * Retrieves group named 'XTabControllerModel' added in <code> + * setGroup</code> method test, and checks it. <p> + * Has <b> OK </b> status if sequence get is equal to sequence set. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setGroup </code> : to set the sequence.</li> + * </ul> + */ + public void _getGroupByName() { + log.println("Always SKIPPED.OK since deprecated."); + tRes.tested("getGroupByName()", Status.skipped(true)); + } + + /** + * Gets number of groups. + * Has <b> OK </b> status if the number is greater than 0. + * <ul> + * <li> <code> setGroup </code> : to has at least one group.</li> + * </ul> + */ + public void _getGroupCount() { + log.println("Always SKIPPED.OK since deprecated."); + tRes.tested("getGroupCount()", Status.skipped(true)); + } + +} + diff --git a/qadevOOo/tests/java/ifc/awt/_XTextComponent.java b/qadevOOo/tests/java/ifc/awt/_XTextComponent.java new file mode 100644 index 0000000000..b22cdbdb2b --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XTextComponent.java @@ -0,0 +1,255 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiMethodTest; +import util.ValueComparer; + +import com.sun.star.awt.Selection; +import com.sun.star.awt.TextEvent; +import com.sun.star.awt.XTextComponent; +import com.sun.star.awt.XTextListener; +import com.sun.star.lang.EventObject; + +/** +* Testing <code>com.sun.star.awt.XTextComponent</code> +* interface methods: +* <ul> +* <li><code> addTextListener() </code></li> +* <li><code> removeTextListener() </code></li> +* <li><code> setText() </code></li> +* <li><code> getText() </code></li> +* <li><code> insertText() </code></li> +* <li><code> getSelectedText() </code></li> +* <li><code> setSelection() </code></li> +* <li><code> getSelection() </code></li> +* <li><code> setEditable() </code></li> +* <li><code> isEditable() </code></li> +* <li><code> setMaxTextLen() </code></li> +* <li><code> getMaxTextLen() </code></li> +* </ul><p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XTextComponent.onlyNumbers'</code> (of type <code>Object</code>): +* needed for checking if component can contain only numeric values </li> +* </ul><p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XTextComponent +*/ +public class _XTextComponent extends MultiMethodTest { + public XTextComponent oObj = null; + public boolean textChanged = false; + // indicates that component can contain only numeric values + private boolean num = false ; + + /** + * Listener implementation which just set flag when listener + * method is called. + */ + protected class MyChangeListener implements XTextListener { + public void disposing ( EventObject oEvent ) {} + public void textChanged(TextEvent ev) { + textChanged = true; + } + } + + XTextListener listener = new MyChangeListener(); + + /** + * Retrieves object relation, then sets flag 'num' to 'true' + * if relation is not null. + */ + @Override + public void before() { + if (tEnv.getObjRelation("XTextComponent.onlyNumbers") != null) + num = true; + } + + /** + * After test calls the method, a new text is set to the object. Then + * we check if listener was called, and set a new text value + * to the object.<p> + * Has <b> OK </b> status if listener was called. + */ + public void _addTextListener() throws Exception { + oObj.addTextListener(listener); + oObj.setText("Listen"); + waitForEventIdle(); + if (!textChanged) { + log.println("Listener wasn't called after changing Text"); + } + + tRes.tested("addTextListener()",textChanged); + } + + /** + * After setting flag 'textChanged' to false, test calls the method. + * Then a new text value is set to the object. <p> + * Has <b> OK </b> status if listener was not called. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li><code> addTextListener() </code>: adds listener to the object.</li> + * </ul> + */ + public void _removeTextListener() { + requiredMethod("addTextListener()"); + textChanged = false; + oObj.removeTextListener(listener); + oObj.setText("Do not listen"); + tRes.tested("removeTextListener()",!textChanged); + } + + /** + * At first we're setting some string variable 'newText' depending of a kind + * of object we are working with. Then test calls the method. <p> + * Has <b> OK </b> status if set value is equal to a value obtained after. + */ + public void _setText() { + String newText = num ? "823" : "setText" ; + if (tEnv.getTestCase().getObjectName().equals("OTimeControl")) { + newText = "8:15"; + } + log.println("Setting text to : '" + newText + "'") ; + oObj.setText(newText); + log.println("Getting text : '" + oObj.getText() + "'") ; + tRes.tested("setText()",oObj.getText().equals(newText)); + } + + /** + * At first we're setting some string variable 'newText' depending of a kind + * of object we are working with. Then we set text to the object and call + * the method. <p> + * Has <b> OK </b> status if set value is equal to a value obtained using + * getText() method. + */ + public void _getText() { + String newText = num ? "823" : "setText" ; + if (tEnv.getTestCase().getObjectName().equals("OTimeControl")) { + newText = "8:15"; + } + oObj.setText(newText); + tRes.tested("getText()",oObj.getText().equals(newText)); + } + + /** + * At first we're setting string variables 'text' and 'itext' depending + * of a kind of object we are working with. Next, value from 'text' variable + * is set to an object using setText(), then the method insertText() is called. + * <p> + * Has <b> OK </b> status if text is inserted to the object. + */ + public void _insertText() { + String text = num ? "753" : "iText" ; + String itext = num ? "6" : "insert" ; + log.println("Setting text to : '" + text + "'") ; + oObj.setText(text); + log.println("Inserting text to (0,1) : '" + itext + "'") ; + oObj.insertText(new Selection(0,1), itext); + log.println("getText() returns: " + oObj.getText()); + tRes.tested("insertText()", oObj.getText().equals + (num ? "653" : "insertText")); + } + + /** + * After text is set to the object, test calls the method.<p> + * Has <b> OK </b> status if selected text is equal to first three symbols + * of text added before. + */ + public void _getSelectedText() { + String text = num ? "753" : "txt" ; + oObj.setText(text); + oObj.setSelection(new Selection(0,3)); + boolean result = oObj.getSelectedText().equals(text); + + if (! result) { + System.out.println("Getting '"+oObj.getSelectedText()+"'"); + System.out.println("Expected '"+text+"'"); + } + + tRes.tested("getSelectedText()",result); + } + + /** + * After setting new text to an object, and defining selection variable, + * test calls the method. <p> + * Has <b> OK </b> status if selection set before is equal to a selection we + * got using getSelection(). + */ + public void _setSelection() { + oObj.setText("setSelection"); + Selection sel = new Selection(0,3); + oObj.setSelection(sel); + tRes.tested("setSelection()", ValueComparer.equalValue + (oObj.getSelection(), sel)); + } + + /** + * After setting new text to an object, and defining selection variable, + * test calls the method. <p> + * Has <b> OK </b> status if selection set before is equal to a selection we + * got using getSelection(). + */ + public void _getSelection() { + oObj.setText("getSelection"); + Selection sel = new Selection(2,3); + oObj.setSelection(sel); + tRes.tested("getSelection()", ValueComparer.equalValue + (oObj.getSelection(), sel)); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if method has changed a property 'Editable'. + */ + public void _setEditable(){ + oObj.setEditable(true); + tRes.tested("setEditable()", oObj.isEditable()); + } + + /** + * First we set 'Editable' variable to false. Then test calls the method.<p> + * Has <b> OK </b> status if method returns value we set before. + */ + public void _isEditable(){ + oObj.setEditable(false); + tRes.tested("isEditable()", ! oObj.isEditable()); + } + + /** + * Test calls the method. Then new text value is set to the object. <p> + * Has <b> OK </b> status if text, returned by getText() is a string of + * length we set before. + */ + public void _setMaxTextLen() { + oObj.setMaxTextLen((short)10); + tRes.tested("setMaxTextLen()",oObj.getMaxTextLen()==10); + } + + /** + * At first we set MaxTextLen, then test calls the method. <p> + * Has <b> OK </b> status if method returns a value we set before. + */ + public void _getMaxTextLen() { + oObj.setMaxTextLen((short)15); + log.println("getMaxTextLen() returns: "+oObj.getMaxTextLen()); + tRes.tested("getMaxTextLen()",oObj.getMaxTextLen()==15); + } + +} + diff --git a/qadevOOo/tests/java/ifc/awt/_XTextLayoutConstrains.java b/qadevOOo/tests/java/ifc/awt/_XTextLayoutConstrains.java new file mode 100644 index 0000000000..c15b5d0936 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XTextLayoutConstrains.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 ifc.awt; + +import lib.MultiMethodTest; + +import com.sun.star.awt.Size; +import com.sun.star.awt.XTextLayoutConstrains; + +/** +* Testing <code>com.sun.star.awt.XTextLayoutConstrains</code> +* interface methods: +* <ul> +* <li><code> getMinimumSize() </code></li> +* <li><code> getColumnsAndLines() </code></li> +* </ul><p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XTextLayoutConstrains +*/ +public class _XTextLayoutConstrains extends MultiMethodTest { + public XTextLayoutConstrains oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if both returned size fields are not equal to zero. + */ + public void _getMinimumSize() { + short nCols = 0; + short nLines = 0; + Size mSize = oObj.getMinimumSize(nCols,nLines); + boolean res = ( (mSize.Height != 0) && (mSize.Width != 0) ); + if (!res) { + log.println("mSize.height: " + mSize.Height); + log.println("mSize.width: " + mSize.Width); + } + tRes.tested("getMinimumSize()", res); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if both returned values are not equal to zero. + */ + public void _getColumnsAndLines() { + short[] nCols = new short[1]; + short[] nLines = new short[1]; + oObj.getColumnsAndLines(nCols,nLines); + boolean res = ( (nCols[0] != 0) && (nLines[0] != 0) ); + if (!res) { + log.println("nCols: " + nCols[0]); + log.println("nLines: " + nLines[0]); + } + tRes.tested("getColumnsAndLines()",res); + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_XTextListener.java b/qadevOOo/tests/java/ifc/awt/_XTextListener.java new file mode 100644 index 0000000000..2d57e349ca --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XTextListener.java @@ -0,0 +1,119 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.awt.TextEvent; +import com.sun.star.awt.XTextListener; + +/** +* Testing <code>com.sun.star.awt.XTextListener</code> +* interface methods: +* <ul> +* <li><code> textChanged() </code></li> +* </ul><p> +* +* This test needs the following object relations : +* <ul> +* <li> <code>'TestTextListener'</code> +* (of type <code>ifc.awt._XTextListener.TestTextListener</code>): +* this listener implementation must be registered for object tested for +* checking +* <code>textChanged()</code> method call. The listener must be registered +* in object environment creation because it's not a fact that tested +* component supports <code>XTextComponent</code> interface and the listener +* can be registered in another object.</li> +* <ul> <p> +* +* @see com.sun.star.awt.XTextListener +*/ +public class _XTextListener extends MultiMethodTest { + public XTextListener oObj = null; + + /** + * Listener implementation which sets flags on appropriate method calls + * and stores event passed. + */ + public static class TestTextListener implements + com.sun.star.awt.XTextListener { + public boolean textChangedCalled = false ; + public TextEvent event = null ; + + public void textChanged(TextEvent e) { + textChangedCalled = true ; + event = e ; + } + + public void disposing(com.sun.star.lang.EventObject e) {} + + } + + TestTextListener textListener = null; + /** + * Retrieves object relation. + * @throws StatusException If the relation not found. + */ + @Override + public void before() { + textListener = (TestTextListener) + tEnv.getObjRelation("TestTextListener"); + if (textListener == null) { + throw new StatusException(Status.failed("Relation not found")); + } + } + + /** + * First a <code>TextEvent</code> object created and + * it is passed to <code>textChanged</code> method + * call. Then a short wait follows for listener already + * registered at the object to be called. <p> + * Has <b> OK </b> status if the listener was called with + * the same <code>TextEvent</code> object as was created + * before. + */ + public void _textChanged() { + + boolean result = true ; + + TextEvent event = new TextEvent() ; + event.dummy1 = 2; + oObj.textChanged(event); + + waitForEventIdle(); + + result = textListener.textChangedCalled && + textListener.event.dummy1 == 2; + + tRes.tested("textChanged()", result) ; + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + + +} + diff --git a/qadevOOo/tests/java/ifc/awt/_XTimeField.java b/qadevOOo/tests/java/ifc/awt/_XTimeField.java new file mode 100644 index 0000000000..cee4e51d6c --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XTimeField.java @@ -0,0 +1,287 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + + +import lib.MultiMethodTest; + +import com.sun.star.awt.XTimeField; +import com.sun.star.util.Time; + +/** +* Testing <code>com.sun.star.awt.XTimeField</code> +* interface methods : +* <ul> +* <li><code> setTime()</code></li> +* <li><code> getTime()</code></li> +* <li><code> setMin()</code></li> +* <li><code> getMin()</code></li> +* <li><code> setMax()</code></li> +* <li><code> getMax()</code></li> +* <li><code> setFirst()</code></li> +* <li><code> getFirst()</code></li> +* <li><code> setLast()</code></li> +* <li><code> getLast()</code></li> +* <li><code> setEmpty()</code></li> +* <li><code> isEmpty()</code></li> +* <li><code> setStrictFormat()</code></li> +* <li><code> isStrictFormat()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XTimeField +*/ +public class _XTimeField extends MultiMethodTest { + + public XTimeField oObj = null; + private boolean strict = false ; + + /** + * Sets a new value and checks if it was correctly set. <p> + * Has <b> OK </b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getTime </code> </li> + * </ul> + */ + public void _setTime() { + requiredMethod("getTime()") ; + + boolean result = true ; + oObj.setTime(new Time(0, (short)0, (short)15, (short)11, false)); + Time time = oObj.getTime(); + result = time.NanoSeconds == 0 && time.Seconds == 0 && time.Minutes == 15 && time.Hours == 11 && !time.IsUTC; + + if (! result ) { + System.out.println("Getting " + oObj.getTime() + " expected 11:15"); + } + + tRes.tested("setTime()", result) ; + } + + /** + * Gets the current value. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _getTime() { + + boolean result = true ; + oObj.getTime() ; + + tRes.tested("getTime()", result) ; + } + + /** + * Sets a new value and checks if it was correctly set. <p> + * Has <b> OK </b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getMin </code> </li> + * </ul> + */ + public void _setMin() { + + boolean result = true ; + oObj.setMin(new Time(0, (short)14, (short)18, (short)6, false)); + Time time = oObj.getMin(); + result = time.NanoSeconds == 0 && time.Seconds == 14 && time.Minutes == 18 && time.Hours == 6 && !time.IsUTC; + + tRes.tested("setMin()", result) ; + } + + /** + * Gets the current value. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _getMin() { + + boolean result = true ; + oObj.getMin() ; + + tRes.tested("getMin()", result) ; + } + + /** + * Sets a new value and checks if it was correctly set. <p> + * Has <b> OK </b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getMax </code> </li> + * </ul> + */ + public void _setMax() { + + boolean result = true ; + oObj.setMax(new Time(855447, (short)31, (short)23, (short)22, false)) ; + Time time = oObj.getMax(); + result = time.NanoSeconds == 855447 && time.Seconds == 31 && time.Minutes == 23 && time.Hours == 22 && !time.IsUTC; + + tRes.tested("setMax()", result) ; + } + + /** + * Gets the current value. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _getMax() { + + boolean result = true ; + oObj.getMax() ; + + tRes.tested("getMax()", result) ; + } + + /** + * Sets a new value and checks if it was correctly set. <p> + * Has <b> OK </b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getFirst </code> </li> + * </ul> + */ + public void _setFirst() { + + boolean result = true ; + oObj.setFirst(new Time(0, (short)0, (short)30, (short)7, false)) ; + Time time = oObj.getFirst(); + result = time.NanoSeconds == 0 && time.Seconds == 0 && time.Minutes == 30 && time.Hours == 7 && !time.IsUTC; + + if (!result) { + log.println("Set to 07:30 but returned " + oObj.getFirst()) ; + } + + tRes.tested("setFirst()", result) ; + } + + /** + * Gets the current value. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _getFirst() { + + boolean result = true ; + com.sun.star.util.Time val = oObj.getFirst() ; + + log.println("getFirst() = " + val) ; + + tRes.tested("getFirst()", result) ; + } + + /** + * Sets a new value and checks if it was correctly set. <p> + * Has <b> OK </b> status if set and get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getLast </code> </li> + * </ul> + */ + public void _setLast() { + + boolean result = true ; + oObj.setLast(new Time(500000, (short)31, (short)30, (short)18, false)) ; + Time time = oObj.getLast(); + result = time.NanoSeconds == 500000 && time.Seconds == 31 && time.Minutes == 30 && time.Hours == 18 && !time.IsUTC; + + if (!result) { + log.println("Set to 18:30:31.5 but returned " + oObj.getLast()) ; + } + + tRes.tested("setLast()", result) ; + } + + /** + * Gets the current value. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _getLast() { + + boolean result = true ; + com.sun.star.util.Time val = oObj.getLast() ; + + log.println("getLast() = " + val) ; + + tRes.tested("getLast()", result) ; + } + + /** + * Sets the value to empty. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setTime </code> : value must be not empty </li> + * </ul> + */ + public void _setEmpty() { + requiredMethod("setTime()") ; + + boolean result = true ; + oObj.setEmpty() ; + + tRes.tested("setEmpty()", result) ; + } + + /** + * Checks if the field is empty. <p> + * Has <b> OK </b> status if the value is empty.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setEmpty() </code> </li> + * </ul> + */ + public void _isEmpty() { + requiredMethod("setEmpty()") ; + + boolean result = true ; + result = oObj.isEmpty() ; + + tRes.tested("isEmpty()", result) ; + } + + /** + * Checks strict state. <p> + * Has <b> OK </b> status if strict format is set. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> isStrictFormat </code> </li> + * </ul> + */ + public void _setStrictFormat() { + requiredMethod("isStrictFormat()") ; + + boolean result = true ; + oObj.setStrictFormat(!strict) ; + + result = oObj.isStrictFormat() == !strict ; + + tRes.tested("setStrictFormat()", result) ; + } + + /** + * Gets strict state and stores it. <p> + * Has <b> OK </b> status if no runtime exceptions occurred. + */ + public void _isStrictFormat() { + + boolean result = true ; + strict = oObj.isStrictFormat() ; + + tRes.tested("isStrictFormat()", result) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/awt/_XToolkit.java b/qadevOOo/tests/java/ifc/awt/_XToolkit.java new file mode 100644 index 0000000000..5cac8c74ad --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XToolkit.java @@ -0,0 +1,147 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiMethodTest; + +import com.sun.star.awt.Rectangle; +import com.sun.star.awt.WindowDescriptor; +import com.sun.star.awt.XDevice; +import com.sun.star.awt.XRegion; +import com.sun.star.awt.XToolkit; +import com.sun.star.awt.XWindowPeer; +import com.sun.star.lang.XComponent; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.awt.XToolkit</code> +* interface methods: +* <ul> +* <li><code> getDesktopWindow() </code></li> +* <li><code> getWorkArea() </code></li> +* <li><code> createWindow() </code></li> +* <li><code> createWindows() </code></li> +* <li><code> createScreenCompatibleDevice() </code></li> +* <li><code> createRegion() </code></li> +* </ul><p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XToolkit +*/ +public class _XToolkit extends MultiMethodTest { + public XToolkit oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status always, because Desktop component + * currently is not supported as visible. + */ + public void _getDesktopWindow() { + XWindowPeer win = oObj.getDesktopWindow(); + if (win == null) { + log.println("getDesktopWindow() returns NULL"); + } + tRes.tested("getDesktopWindow()", true); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method does not return null. + */ + public void _getWorkArea() { + Rectangle area = oObj.getWorkArea(); + tRes.tested("getWorkArea()", area != null); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method does not return null. + */ + public void _createWindow() { + boolean res = false; + try { + XWindowPeer cWin = oObj.createWindow( + createDesc(new Rectangle(0,0,100,100))); + if (cWin == null) { + log.println("createWindow() create a NULL Object"); + } else { + UnoRuntime.queryInterface(XComponent.class, cWin).dispose(); + res = true; + } + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception occurred while checking 'createWindow':"); + ex.printStackTrace(log); + } + tRes.tested("createWindow()", res); + } + + /** + * After defining of WindowDescriptor array, test calls the method. <p> + * Has <b> OK </b> status if all elements of the returned array are + * not null. + */ + public void _createWindows() { + boolean res = false; + try { + WindowDescriptor[] descs = new WindowDescriptor[2]; + descs[0] = createDesc(new Rectangle(0,0,100,100)); + descs[1] = createDesc(new Rectangle(100,100,200,200)); + XWindowPeer[] cWins = oObj.createWindows(descs); + if ( (cWins[0] == null) || (cWins[1] == null) ) { + log.println("createWindows() creates NULL Windows"); + } else { + UnoRuntime.queryInterface(XComponent.class, cWins[0]).dispose(); + UnoRuntime.queryInterface(XComponent.class, cWins[1]).dispose(); + res = true; + } + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception occurred while checking 'createWindows':"); + ex.printStackTrace(log); + } + tRes.tested("createWindows()", res); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method does not return null. + */ + public void _createScreenCompatibleDevice() { + XDevice dev = oObj.createScreenCompatibleDevice(100, 100); + tRes.tested("createScreenCompatibleDevice()", dev != null); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method does not return null. + */ + public void _createRegion() { + XRegion reg = oObj.createRegion(); + tRes.tested("createRegion()", reg != null); + } + + /** + * Just creates the WindowDescriptor as an argument for createWindow(). + */ + public WindowDescriptor createDesc(Rectangle rect) { + XWindowPeer win = (XWindowPeer) tEnv.getObjRelation("WINPEER"); + return new WindowDescriptor(com.sun.star.awt.WindowClass.TOP, + "", win, (short) -1, rect, com.sun.star.awt.WindowAttribute.SHOW); + } + +} + diff --git a/qadevOOo/tests/java/ifc/awt/_XTopWindow.java b/qadevOOo/tests/java/ifc/awt/_XTopWindow.java new file mode 100644 index 0000000000..91d4d3c367 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XTopWindow.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 ifc.awt; + +import java.io.PrintWriter; + +import lib.MultiMethodTest; + +import com.sun.star.awt.XMenuBar; +import com.sun.star.awt.XTopWindow; +import com.sun.star.awt.XTopWindowListener; +import com.sun.star.lang.EventObject; +import com.sun.star.text.XTextDocument; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.awt.XTopWindow</code> +* interface methods : +* <ul> +* <li><code> addTopWindowListener()</code></li> +* <li><code> removeTopWindowListener()</code></li> +* <li><code> toFront()</code></li> +* <li><code> toBack()</code></li> +* <li><code> setMenuBar()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XTopWindow +*/ +public class _XTopWindow extends MultiMethodTest { + + public XTopWindow oObj = null; + + /** + * Listener implementation which sets flags on different + * method calls. + */ + protected static class TestListener implements XTopWindowListener { + private final PrintWriter log; + public boolean activated = false ; + public boolean deactivated = false ; + + public TestListener(PrintWriter log) { + this.log = log ; + } + + public void initListener() { + activated = false; + deactivated = false; + } + + public void windowOpened(EventObject e) { + log.println("windowOpened() called") ; + } + public void windowClosing(EventObject e) { + log.println("windowClosing() called") ; + } + public void windowClosed(EventObject e) { + log.println("windowClosed() called") ; + } + public void windowMinimized(EventObject e) { + log.println("windowMinimized() called") ; + } + public void windowNormalized(EventObject e) { + log.println("windowNormalized() called") ; + } + public void windowActivated(EventObject e) { + activated = true; + log.println("windowActivated() called") ; + } + public void windowDeactivated(EventObject e) { + deactivated = true; + log.println("windowDeactivated() called") ; + } + public void disposing(EventObject e) {} + } + + protected TestListener listener = null ; + + XTextDocument aTextDoc = null; + + + @Override + protected void before() { + aTextDoc = util.WriterTools.createTextDoc(tParam.getMSF()); + } + + /** + * Adds a listener . <p> + * + * Has <b>OK</b> status always (listener calls are checked in + * other methods. <p> + */ + public void _addTopWindowListener() { + listener = new TestListener(log) ; + + oObj.addTopWindowListener(listener) ; + + tRes.tested("addTopWindowListener()", true); + } + + /** + * Removes a listener added before. <p> + * Has <b>OK</b> status always. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> toBack </code> : to have a definite method execution + * order.</li> + * </ul> + */ + public void _removeTopWindowListener() { + executeMethod("toBack()"); + + oObj.removeTopWindowListener(listener); + + tRes.tested("removeTopWindowListener()", true); + } + + /** + * Moves the window to front and check the listener calls. <p> + * Has <b>OK</b> status if listener <code>activated</code> method + * was called. + */ + public void _toFront() { + requiredMethod("addTopWindowListener()"); + listener.initListener(); + oObj.toFront(); + waitForEventIdle(); + + tRes.tested("toFront()", listener.activated && !listener.deactivated); + } + + /** + * This method doesn't do anything the Office implementation. <p> + * So it has always <b>OK</b> status + */ + public void _toBack() { + oObj.toBack(); + tRes.tested("toBack()", true); + } + + /** + * Creates a simple menu bar and adds to the window. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _setMenuBar() { + XMenuBar menu = null ; + boolean result = true ; + + try { + menu = UnoRuntime.queryInterface(XMenuBar.class, + tParam.getMSF(). + createInstance("com.sun.star.awt.MenuBar")) ; + + menu.insertItem((short)1, "MenuItem", + com.sun.star.awt.MenuItemStyle.CHECKABLE, (short)1) ; + + oObj.setMenuBar(menu) ; + } catch (com.sun.star.uno.Exception e) { + log.println("Can't instantiate MenuBar service") ; + result = false ; + } + + tRes.tested("setMenuBar()", result) ; + } + + /** + * Disposes the document created in <code>before</code> method. + */ + @Override + protected void after() { + aTextDoc.dispose(); + } +} + diff --git a/qadevOOo/tests/java/ifc/awt/_XUnoControlContainer.java b/qadevOOo/tests/java/ifc/awt/_XUnoControlContainer.java new file mode 100644 index 0000000000..de59741d4b --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XUnoControlContainer.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 ifc.awt; + +import com.sun.star.awt.XTabController; +import com.sun.star.awt.XUnoControlContainer; +import lib.MultiMethodTest; + +/** + * Testing <code>com.sun.star.awt.XUnoControlContainer</code> + * interface methods : + * <ul> + * <li><code> addTabController()</code></li> + * <li><code> removeTabController()</code></li> + * <li><code> getTabControllers()</code></li> + * <li><code> setTabControllers()</code></li> + * </ul> <p> + * +* This test needs the following object relations : +* <ul> +* <li> <code>'TABCONTROL1'</code> (of type <code>XTabController</code>)</li> +* <li> <code>'TABCONTROL2'</code> (of type <code>XTabController</code>)</li> + *</ul> + * + * Test is <b> NOT </b> multithread compliant. <p> + */ + +public class _XUnoControlContainer extends MultiMethodTest { + public XUnoControlContainer oObj = null; + private XTabController[] TabControllers = new XTabController[2]; + private XTabController tabControl1 = null; + private XTabController tabControl2 = null; + + /** + * This method gets the object relations. + * + */ + @Override + protected void before() { + + tabControl1 = (XTabController) tEnv.getObjRelation("TABCONTROL1"); + tabControl2 = (XTabController) tEnv.getObjRelation("TABCONTROL2"); + if ((tabControl1 == null) || (tabControl2 == null)){ + log.println("ERROR: Needed object relations 'TABCONTROL1' and " + + "'TABCONTROL2' are not found."); + } + TabControllers[0] = tabControl1; + TabControllers[1] = tabControl2; + + } + + + + /** + * This tests removes the object relations <code>TABCONTROL1</code> and + * <code>TABCONTROL1</code>. + * Has <b> OK </b> status if the sequence of <code>XTabController[]</code> + * get before calling method is smaller then sequence of + * <code>XTabController[]</code> get after calling method.<p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getTabControllers() </code> </li> + * <li> <code> removeTabController() </code> </li> + * </ul> + */ + public void _setTabControllers() { + requiredMethod( "getTabControllers()"); + requiredMethod( "removeTabController()"); + + log.println("removing TABCONTROL1 and TABCONTROL2"); + oObj.removeTabController(tabControl1); + oObj.removeTabController(tabControl2); + + log.println("get current controllers"); + XTabController[] myTabControllers = oObj.getTabControllers(); + + log.println("set new controllers"); + oObj.setTabControllers( TabControllers ); + + log.println("get new current controllers"); + XTabController[] myNewTabControllers = oObj.getTabControllers(); + + tRes.tested("setTabControllers()", + (myTabControllers.length < myNewTabControllers.length )); + + } + + /** + * Test calls the method, then checks returned value.<p> + * Has <b> OK </b> status if method returns a value that greater than zero.<p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addTabController() </code></li> + * </ul> + */ + public void _getTabControllers() { + requiredMethod( "addTabController()"); + XTabController[] myTabControllers = oObj.getTabControllers(); + tRes.tested("getTabControllers()", ( myTabControllers.length > 0)); + } + + /** + * Test calls the method with object relation 'TABCONTROL1' as a parameter.<p> + * Has <b> OK </b> status if the sequence of <code>XTabController[]</code> + * get before calling method is smaller then sequence of + * <code>XTabController[]</code> get after calling method.<p> + */ + public void _addTabController() { + log.println("get current controllers"); + XTabController[] myTabControllers = oObj.getTabControllers(); + + log.println("add TABCONTROL1"); + oObj.addTabController( tabControl1 ); + + log.println("get new current controllers"); + XTabController[] myNewTabControllers = oObj.getTabControllers(); + + tRes.tested("addTabController()", + (myTabControllers.length < myNewTabControllers.length )); + } + + /** + * Test calls the method with object relation 'TABCONTROL2' as a parameter.<p> + * Has <b> OK </b> status if the sequence of <code>XTabController[]</code> + * get before calling method is smaller then sequence of + * <code>XTabController[]</code> get after calling method.<p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getTabControllers() </code></li> + * <li> <code> addTabController() </code></li> + * </ul> + */ + public void _removeTabController() { + requiredMethod( "getTabControllers()"); + requiredMethod( "addTabController()"); + + log.println("add TABCONTROL2"); + oObj.addTabController( tabControl2 ); + + log.println("get current controllers"); + XTabController[] myTabControllers = oObj.getTabControllers(); + + log.println("remove TABCONTROL2"); + oObj.removeTabController(tabControl2); + + log.println("get new current controllers"); + XTabController[] myNewTabControllers = oObj.getTabControllers(); + + tRes.tested("removeTabController()", + (myTabControllers.length > myNewTabControllers.length )); + } + +} + diff --git a/qadevOOo/tests/java/ifc/awt/_XView.java b/qadevOOo/tests/java/ifc/awt/_XView.java new file mode 100644 index 0000000000..a7858d037d --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XView.java @@ -0,0 +1,135 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import lib.MultiMethodTest; + +import com.sun.star.awt.Size; +import com.sun.star.awt.XGraphics; +import com.sun.star.awt.XView; + +/** +* Testing <code>com.sun.star.awt.XView</code> +* interface methods: +* <ul> +* <li><code> setGraphics() </code></li> +* <li><code> getGraphics() </code></li> +* <li><code> getSize() </code></li> +* <li><code> draw() </code></li> +* <li><code> setZoom() </code></li> +* </ul><p> +* This test needs the following object relations : +* <ul> +* <li> <code>'GRAPHICS'</code> (of type <code>XGraphics</code>): +* used as a parameter to setGraphics() </li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XView +*/ +public class _XView extends MultiMethodTest { + public XView oObj = null; + + /** + * After obtaining object relation 'GRAPHICS', test calls the method. <p> + * Has <b> OK </b> status if the method returns true. + */ + public void _setGraphics() { + XGraphics graph = (XGraphics) tEnv.getObjRelation("GRAPHICS"); + boolean isSet = oObj.setGraphics(graph); + if ( !isSet ) { + log.println("setGraphics() returns false"); + } + tRes.tested("setGraphics()", isSet); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method does not return null. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setGraphics() </code> : sets the output device </li> + * </ul> + */ + public void _getGraphics() { + requiredMethod("setGraphics()"); + XGraphics graph = oObj.getGraphics(); + if (graph == null) { + log.println("getGraphics() returns NULL"); + } + tRes.tested("getGraphics()", graph != null); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns structure with fields that + * are not equal to zero. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setGraphics() </code> : sets the output device </li> + * </ul> + */ + public void _getSize() { + requiredMethod("setGraphics()"); + Size aSize = oObj.getSize(); + boolean res = (aSize.Height != 0) && (aSize.Width != 0); + if ( !res ) { + log.println("Height: " + aSize.Height); + log.println("Width: " + aSize.Width); + } + tRes.tested("getSize()", res); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setGraphics() </code> : sets the output device </li> + * </ul> + */ + public void _draw() { + requiredMethod("setGraphics()"); + oObj.draw(20, 20); + tRes.tested("draw()", true); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setGraphics() </code> : sets the output device </li> + * </ul> + */ + public void _setZoom() { + requiredMethod("setGraphics()"); + oObj.setZoom(2,2); + tRes.tested("setZoom()", true); + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + +} + diff --git a/qadevOOo/tests/java/ifc/awt/_XWindow.java b/qadevOOo/tests/java/ifc/awt/_XWindow.java new file mode 100644 index 0000000000..089118ae73 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/_XWindow.java @@ -0,0 +1,581 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt; + +import com.sun.star.awt.FocusEvent; +import com.sun.star.awt.KeyEvent; +import com.sun.star.awt.MouseEvent; +import com.sun.star.awt.PaintEvent; +import com.sun.star.awt.Point; +import com.sun.star.awt.PosSize; +import com.sun.star.awt.Rectangle; +import com.sun.star.awt.Size; +import com.sun.star.awt.WindowEvent; +import com.sun.star.awt.XFocusListener; +import com.sun.star.awt.XKeyListener; +import com.sun.star.awt.XMouseListener; +import com.sun.star.awt.XMouseMotionListener; +import com.sun.star.awt.XPaintListener; +import com.sun.star.awt.XWindow; +import com.sun.star.awt.XWindowListener; +import com.sun.star.drawing.XControlShape; +import com.sun.star.lang.EventObject; +import lib.MultiMethodTest; +import util.ValueComparer; + +/** +* Testing <code>com.sun.star.awt.XWindow</code> +* interface methods : +* <ul> +* <li><code> setPosSize()</code></li> +* <li><code> getPosSize()</code></li> +* <li><code> setVisible()</code></li> +* <li><code> setEnable()</code></li> +* <li><code> setFocus()</code></li> +* <li><code> addWindowListener()</code></li> +* <li><code> removeWindowListener()</code></li> +* <li><code> addFocusListener()</code></li> +* <li><code> removeFocusListener()</code></li> +* <li><code> addKeyListener()</code></li> +* <li><code> removeKeyListener()</code></li> +* <li><code> addMouseListener()</code></li> +* <li><code> removeMouseListener()</code></li> +* <li><code> addMouseMotionListener()</code></li> +* <li><code> removeMouseMotionListener()</code></li> +* <li><code> addPaintListener()</code></li> +* <li><code> removePaintListener()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XWindow.AnotherWindow'</code> (of type <code>XWindow</code>): +* Some another window which can gain focus so the tested one +* must lost it. </li> +* <li> <code>'XWindow.ControlShape'</code> <b>optional</b> +* (of type <code>XControlShape</code>): +* Some shapes can't change their size within fixed ControlShape +* and their size could be changed only if size of container +* ControlShape is changed. For such shapes this relation should +* be passed for proper <code>addWindowListener</code> test. </li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.awt.XWindow +*/ +public class _XWindow extends MultiMethodTest { + public XWindow oObj = null; + private Rectangle posSize = null ; + private XWindow win = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method does not return null. + */ + public void _getPosSize() { + posSize = oObj.getPosSize() ; + tRes.tested("getPosSize()", posSize != null) ; + } + + /** + * After defining Rectangle structure to be set, test calls the method. <p> + * Has <b> OK </b> status if structure obtained using getPosSize() is + * equal to structure previously set using setPosSize(). <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getPosSize() </code> : returns the outer bounds of + * the window </li> + * </ul> + */ + public void _setPosSize() { + Rectangle newRec = new Rectangle(); + + requiredMethod("getPosSize()"); + newRec.X = posSize.X + 1; + newRec.Y = posSize.Y + 1; + newRec.Width = posSize.Width - 3; + newRec.Height = posSize.Height - 3; + oObj.setPosSize(newRec.X, newRec.Y, newRec.Width, newRec.Height, + PosSize.POSSIZE); + Rectangle gPS = oObj.getPosSize(); + log.println("Was : (" + posSize.X + ", " + posSize.Y + ", " + + posSize.Width + ", " + posSize.Height + "), "); + log.println("Set : (" + newRec.X + ", " + newRec.Y + ", " + + newRec.Width + ", " + newRec.Height + "), "); + log.println("Get : (" + gPS.X + ", " + gPS.Y + ", " + + gPS.Width + ", " + gPS.Height + "). "); + tRes.tested("setPosSize()", ValueComparer.equalValue(newRec, gPS) ); + } + + /** + * At first object relation 'XWindow.AnotherWindow' is obtained. + * Then test calls the methods of two 'XWindow' objects several times to be + * sure that the focus has changed. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _setFocus() { + win = (XWindow) tEnv.getObjRelation("XWindow.AnotherWindow"); + oObj.setFocus(); + win.setFocus(); + oObj.setFocus(); + tRes.tested("setFocus()", true); + } + + /** + * Test calls the method twice with two parameters: 'true' and 'false'. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _setVisible() { + oObj.setVisible(false); + oObj.setVisible(true); + tRes.tested("setVisible()", true); + } + + /** + * Test calls the method twice with two parameters: 'true' and 'false'. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _setEnable() { + oObj.setEnable(false); + oObj.setEnable(true); + tRes.tested("setEnable()", true); + } + + + /** + * A class we use to test addWindowListener() and + * removeWindowListener() + */ + public static class TestWindowListener implements XWindowListener { + public boolean resized = false ; + public boolean moved = false ; + public boolean hidden = false ; + public boolean shown = false ; + + public void init() { + resized = false ; + moved = false ; + hidden = false ; + shown = false ; + } + + public void windowResized(WindowEvent e) { + resized = true ; + } + public void windowMoved(WindowEvent e) { + moved = true ; + } + public void windowHidden(EventObject e) { + hidden = true ; + } + public void windowShown(EventObject e) { + shown = true ; + } + public void disposing(EventObject e) {} + + } + + private final TestWindowListener wListener = new TestWindowListener() ; + + + /** + * Test calls the method. Then we check if listener's methods were called + * when we move, resize, hide and show the window. The resizing is + * performed depending on 'XWindow.ControlShape' existence. If this + * relation exists then the size and position of container control + * shape is changed, else the position and size of window itself is + * changed<p> + * + * Has <b> OK </b> status if methods of wListener were called when + * corresponding events occurred. <p> + * + * The following method tests are to be executed before : + * <ul> + * <li> <code> setPosSize() </code>: sets the outer bounds of the + * window</li> + * <li> <code> setVisible() </code>: shows or hides the window + * depending on the parameter</li> + * </ul> + */ + public void _addWindowListener() { + executeMethod("setPosSize()"); + executeMethod("setVisible()"); + boolean result = true ; + + oObj.addWindowListener(wListener); + + // testing wListener.windowMoved() + XControlShape ctrlShape = (XControlShape) + tEnv.getObjRelation("XWindow.ControlShape"); + log.println("change object position and size..."); + + if (ctrlShape != null) { + try { + Size sz = ctrlShape.getSize(); + sz.Height += 100; + ctrlShape.setSize(sz); + Point pos = ctrlShape.getPosition(); + pos.X += 100 ; + ctrlShape.setPosition(pos); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("Couldn't change size or position: "); + e.printStackTrace(log); + } + } else { + oObj.setPosSize(posSize.X + 2, 0, 0, 0, PosSize.X); + oObj.setPosSize(0, 0, 100, 100, PosSize.WIDTH); + } + + waitForEventIdle(); + boolean res = wListener.resized && wListener.moved && + !wListener.hidden && !wListener.shown; + result &= res; + if (!res) { + log.println("\twindowHidden() wasn't called: " + !wListener.hidden); + log.println("\twindowShown() wasn't called: " + !wListener.shown); + log.println("\twindowResized() was called: " + wListener.resized); + log.println("\twindowMoved() was called: " + wListener.moved); + } else { + log.println("windowMoved() and windowResized() was called"); + } + + // testing wListener.windowHidden() + wListener.init(); + waitForEventIdle(); + log.println("set object invisible..."); + oObj.setVisible(false); + waitForEventIdle(); + res = wListener.hidden && !wListener.resized + && !wListener.moved && !wListener.shown; + result &= res; + if (!res) { + log.println("\twindowHidden() was called: " + wListener.hidden); + log.println("\twindowShown() wasn't called: " + !wListener.shown); + log.println("\twindowResized() wasn't called: " + !wListener.resized); + log.println("\twindowMoved() wasn't called: " + !wListener.moved); + } else { + log.println("windowHidden() was called"); + } + + // testing wListener.windowShown() + wListener.init() ; + waitForEventIdle(); + log.println("set object visible..."); + oObj.setVisible(true) ; + waitForEventIdle(); + res = wListener.shown && !wListener.resized && + !wListener.hidden && !wListener.moved; + result &= res; + if (!res) { + log.println("\twindowHidden() wasn't called: " + !wListener.hidden); + log.println("\twindowShown() was called: " + wListener.shown); + log.println("\twindowResized() wasn't called: " + !wListener.resized); + log.println("\twindowMoved() wasn't called: " + !wListener.moved); + } else { + log.println("windowShown() was called"); + } + + tRes.tested("addWindowListener()", result) ; + } + + + /** + * Test calls the method. Then we change window and check that listener's + * methods were not called. <p> + * Has <b> OK </b> status if listener does not react on window events.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addWindowListener() </code>: adds window listener to the + * object </li> + * </ul> + */ + public void _removeWindowListener() { + requiredMethod("addWindowListener()"); + oObj.removeWindowListener(wListener); + wListener.init(); + oObj.setPosSize(posSize.X, posSize.Y, + posSize.Width , posSize.Height, PosSize.POSSIZE); + oObj.setVisible(false); + oObj.setVisible(true); + boolean res = !(wListener.resized || wListener.moved + || wListener.hidden || wListener.shown); + + tRes.tested("removeWindowListener()", res); + } + + /** + * A class we use to test addFocusListener() and + * removeFocusListener() + */ + public static class TestFocusListener implements XFocusListener { + public boolean gained = false ; + public boolean lost = false ; + + public void focusGained(FocusEvent e) { + gained = true ; + } + public void focusLost(FocusEvent e) { + lost = true ; + } + public void init() { + gained = false; + lost = false; + } + public void disposing(EventObject e) {} + + } + + private final TestFocusListener fListener = new TestFocusListener(); + + /** + * Test calls the method. Then we change focus and check that listener's + * methods were called. <p> + * Has <b> OK </b> status if methods of fListener were called when + * corresponding events occurred. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setFocus() </code>: sets the focus to the window </li> + * </ul> + */ + public void _addFocusListener() { + boolean result = true ; + + requiredMethod("setFocus()"); + oObj.addFocusListener(fListener) ; + + // testing fListener.lost() + oObj.setFocus(); + waitForEventIdle(); + win.setFocus(); + waitForEventIdle(); + result &= fListener.lost; + if (!fListener.lost) { + log.println("Lost focus was not notified about") ; + } + + // testing fListener.gained() + oObj.setFocus() ; + waitForEventIdle(); + result &= fListener.gained; + if (!fListener.gained) { + log.println("Gained focus was not notified about") ; + } + + tRes.tested("addFocusListener()", result) ; + } + + /** + * Test calls the method. Then we change focus and check that listener's + * methods were not called. <p> + * Has <b> OK </b> status if listener does not react on focus changing. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addFocusListener() </code> : adds focus listener to + * the object </li> + * </ul> + */ + public void _removeFocusListener() { + requiredMethod("addFocusListener()"); + oObj.removeFocusListener(fListener); + fListener.init(); + oObj.setFocus(); + win.setFocus(); + oObj.setFocus(); + boolean res = !(fListener.gained || fListener.lost); + tRes.tested("removeFocusListener()", res); + } + + /** + * A class we use to test addKeyListener() and + * removeKeyListener() + */ + public static class TestKeyListener implements XKeyListener { + public void keyPressed(KeyEvent e) {} + public void keyReleased(KeyEvent e) {} + public void disposing(EventObject e) {} + public void init() {} + } + + private final TestKeyListener kListener = new TestKeyListener(); + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + */ + public void _addKeyListener() { + oObj.addKeyListener(kListener); + tRes.tested("addKeyListener()", true); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addKeyListener() </code> : adds key listener to + * the object </li> + * </ul> + */ + public void _removeKeyListener() { + requiredMethod("addKeyListener()"); + oObj.removeKeyListener(kListener); + tRes.tested("removeKeyListener()", true); + } + + /** + * A class we use to test addMouseListener() and + * removeMouseListener() + */ + public static class TestMouseListener implements XMouseListener { + + public void mousePressed(MouseEvent e) { + } + + public void mouseReleased(MouseEvent e) { + } + + public void mouseEntered(MouseEvent e) { + } + + public void mouseExited(MouseEvent e) { + } + + public void disposing(EventObject e) {} + + public void init() { + } + + } + + private final TestMouseListener mListener = new TestMouseListener(); + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + */ + public void _addMouseListener() { + oObj.addMouseListener(mListener); + tRes.tested("addMouseListener()", true); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addMouseListener() </code> : adds mouse listener to + * the object</li> + * </ul> + */ + public void _removeMouseListener() { + requiredMethod("addMouseListener()"); + oObj.removeMouseListener(mListener); + tRes.tested("removeMouseListener()", true); + } + + /** + * A class we use to test addMouseMotionListener() and + * removeMouseMotionListener() + */ + public static class TestMouseMotionListener implements XMouseMotionListener { + + public void mouseDragged(MouseEvent e) { + } + + public void mouseMoved(MouseEvent e) { + } + + public void disposing(EventObject e) { + } + + public void init() { + } + + } + + private final TestMouseMotionListener mmListener = new TestMouseMotionListener(); + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + */ + public void _addMouseMotionListener() { + oObj.addMouseMotionListener(mmListener); + tRes.tested("addMouseMotionListener()", true); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addMouseMotionListener() </code> : adds mouse motion + * listener to the object</li> + * </ul> + */ + public void _removeMouseMotionListener() { + requiredMethod("addMouseMotionListener()"); + oObj.removeMouseMotionListener(mmListener); + tRes.tested("removeMouseMotionListener()", true); + } + + /** + * A class we use to test addPaintListener() and + * removePaintListener() + */ + public static class TestPaintListener implements XPaintListener { + + public void windowPaint(PaintEvent e) { + } + + public void disposing(EventObject e) {} + + public void init() { + } + + } + + private final TestPaintListener pListener = new TestPaintListener(); + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + */ + public void _addPaintListener() { + oObj.addPaintListener(pListener); + tRes.tested("addPaintListener()", true); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addPaintListener() </code> : adds paint listener to + * the object </li> + * </ul> + */ + public void _removePaintListener() { + requiredMethod("addPaintListener()"); + oObj.removePaintListener(pListener); + tRes.tested("removePaintListener()", true); + } + +} + diff --git a/qadevOOo/tests/java/ifc/awt/tree/_TreeControlModel.java b/qadevOOo/tests/java/ifc/awt/tree/_TreeControlModel.java new file mode 100644 index 0000000000..2cf028c079 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/tree/_TreeControlModel.java @@ -0,0 +1,28 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt.tree; + +import lib.MultiPropertyTest; + +/* +* Testing <code>com.sun.star.awt.tree.TreeControlModel</code> +* service properties </br> +* @see com.sun.star.awt.tree.TreeControlModel +*/ +public class _TreeControlModel extends MultiPropertyTest { } diff --git a/qadevOOo/tests/java/ifc/awt/tree/_XMutableTreeDataModel.java b/qadevOOo/tests/java/ifc/awt/tree/_XMutableTreeDataModel.java new file mode 100644 index 0000000000..5b5976055a --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/tree/_XMutableTreeDataModel.java @@ -0,0 +1,90 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt.tree; + +import com.sun.star.awt.tree.XMutableTreeDataModel; +import com.sun.star.awt.tree.XMutableTreeNode; +import lib.MultiMethodTest; + +/** +* Testing <code>com.sun.star.awt.tree.XMutableTreeDataModel</code> +* interface methods : +* <ul> +* <li><code> createNode()</code></li> +* <li><code> setRoot()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> + +* @see com.sun.star.awt.tree.XMutableTreeDataModel +*/ +public class _XMutableTreeDataModel extends MultiMethodTest { + + public XMutableTreeDataModel oObj = null; + + private XMutableTreeNode mNewNode = null; + + /** + * Sets the title to some string. <p> + * Has <b>OK</b> status if no runtime exceptions occurs. + */ + public void _createNode() { + + mNewNode = oObj.createNode("Hallo Welt", true); + + tRes.tested("createNode()", true) ; + } + + /** + * Gets the title and compares it to the value set in + * <code>setTitle</code> method test. <p> + * Has <b>OK</b> status is set/get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setTitle </code> </li> + * </ul> + */ + public void _setRoot() { + requiredMethod("createNode()") ; + + boolean bOK = true; + try { + + oObj.setRoot(mNewNode); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: while trying to set a new root an IllegalArgumentException was thrown:\n" + ex.toString()); + } + + try { + + oObj.setRoot(null); + bOK = false; + log.println("ERROR: while trying to set a null object as root expected IllegalArgumentException was not thrown."); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("expected IllegalArgumentException was thrown => ok"); + + } + + tRes.tested("setRoot()", bOK); + + } + +} + + diff --git a/qadevOOo/tests/java/ifc/awt/tree/_XMutableTreeNode.java b/qadevOOo/tests/java/ifc/awt/tree/_XMutableTreeNode.java new file mode 100644 index 0000000000..76c7e6cac8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/tree/_XMutableTreeNode.java @@ -0,0 +1,285 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt.tree; + +import com.sun.star.awt.tree.XMutableTreeNode; +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +/** + * Testing <code>com.sun.star.awt.tree.XTreeDataModel</code> + * interface methods : + * <ul> + * <li><code> appendChild()</code></li> + * <li><code> insertChildByIndex()</code></li> + * <li><code> removeChildByIndex()</code></li> + * <li><code> setHasChildrenOnDemand()</code></li> + * <li><code> setDisplayValue()</code></li> + * <li><code> setNodeGraphicURL()</code></li> + * <li><code> setExpandedGraphicURL()</code></li> + * <li><code> setCollapsedGraphicURL()</code></li> + * <li><code> DataValue()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * + * @see com.sun.star.awt.tree.XTreeDataModel + */ +public class _XMutableTreeNode extends MultiMethodTest { + + public XMutableTreeNode oObj = null; + + private XMutableTreeNodeCreator nodeCreator = null; + + public interface XMutableTreeNodeCreator{ + XMutableTreeNode createNode(String name); + } + + @Override + public void before(){ + nodeCreator = (XMutableTreeNodeCreator) tEnv.getObjRelation("XMutableTreeNodeCreator"); + if (nodeCreator == null){ + throw new StatusException(Status.failed( + "Couldn't get relation 'XMutableTreeNodeCreator'")); + } + + } + + public void _appendChild(){ + boolean bOK = true; + + log.println("try to append a valid node..."); + + XMutableTreeNode myNode = nodeCreator.createNode("myNodeToAppend"); + + try { + oObj.appendChild(myNode); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: could not append a valid node: " + ex.toString()); + bOK = false; + } + + log.println("try to append the node a second time..."); + try { + + oObj.appendChild(myNode); + log.println("ERROR: expected IllegalArgumentException was not thrown => FAILED"); + bOK = false; + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("expected IllegalArgumentException was thrown => OK"); + } + + log.println("try to append the object itself..."); + try { + + oObj.appendChild(oObj); + log.println("ERROR: expected IllegalArgumentException was not thrown => FAILED"); + bOK = false; + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("expected IllegalArgumentException was thrown => OK"); + } + + tRes.tested("appendChild()", bOK); + } + + public void _insertChildByIndex(){ + boolean bOK = true; + + XMutableTreeNode myNode = nodeCreator.createNode("myNodeToInsert"); + + try { + log.println("try to insert a valid node..."); + oObj.insertChildByIndex(0, myNode); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: could not insert a valid node: " + ex.toString()); + bOK = false; + } catch (com.sun.star.lang.IndexOutOfBoundsException ex) { + log.println("ERROR: could not insert a valid node on index '0': " + ex.toString()); + bOK = false; + } + + try { + log.println("try to insert a valid node a second time..."); + oObj.insertChildByIndex(0, myNode); + log.println("ERROR: expected IllegalArgumentException was not thrown => FAILED"); + bOK = false; + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("expected IllegalArgumentException wa thrown => OK"); + } catch (com.sun.star.lang.IndexOutOfBoundsException ex) { + log.println("ERROR: wrong IndexOutOfBoundsException was thrown. Expected is IllegalArgumentException => FAILED"); + bOK = false; + } + + XMutableTreeNode myNode2 = nodeCreator.createNode("myNodeToInsert2"); + + try { + log.println("try to insert a valid node on invalid index '-3'..."); + oObj.insertChildByIndex(-3, myNode2); + log.println("ERROR: expected IndexOutOfBoundsException was not thrown => FAILED"); + bOK = false; + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: wrong IllegalArgumentException was thrown. Expected is IndexOutOfBoundsException => FAILED"); + bOK = false; + } catch (com.sun.star.lang.IndexOutOfBoundsException ex) { + log.println("Expected IndexOutOfBoundsException was thrown => OK"); + } + + try { + log.println("try to insert the object itself..."); + oObj.insertChildByIndex(0, oObj); + log.println("ERROR: expected IllegalArgumentException was not thrown => FAILED"); + bOK = false; + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("expected IllegalArgumentException was thrown => OK"); + } catch (com.sun.star.lang.IndexOutOfBoundsException ex) { + log.println("unexpected IndexOutOfBoundsException was thrown, expected was IllegalArgumentException => FAILED"); + bOK = false; + } + + tRes.tested("insertChildByIndex()", bOK); + } + + public void _removeChildByIndex(){ + + requiredMethod("insertChildByIndex()"); + boolean bOK = true; + + try { + log.println("try to remove node at index '0'..."); + oObj.removeChildByIndex(0); + } catch (com.sun.star.lang.IndexOutOfBoundsException ex) { + log.println("ERROR: IndexOutOfBoundsException was thrown => FAILED"); + bOK = false; + } + + try { + log.println("try to remove node at invalid index '-3'"); + oObj.removeChildByIndex(-3); + log.println("ERROR: expected IndexOutOfBoundsException was not thrown => FAILED"); + bOK = false; + } catch (com.sun.star.lang.IndexOutOfBoundsException ex) { + log.println("expected IndexOutOfBoundsException was thrown => OK"); + } + tRes.tested("removeChildByIndex()", bOK); + } + + public void _setHasChildrenOnDemand(){ + boolean bOK = true; + + log.println("setHasChildrenOnDemand(true)"); + oObj.setHasChildrenOnDemand(true); + + log.println("setHasChildrenOnDemand(false)"); + oObj.setHasChildrenOnDemand(false); + + tRes.tested("setHasChildrenOnDemand()", bOK); + } + + public void _setDisplayValue(){ + boolean bOK = true; + + log.println("setDisplayValue(\"MyTestValue\")"); + oObj.setDisplayValue("MyTestValue"); + + log.println("setDisplayValue(null)"); + oObj.setDisplayValue(null); + + log.println("oObj.setDisplayValue(oObj)"); + oObj.setDisplayValue(oObj); + + tRes.tested("setDisplayValue()", bOK); + } + + public void _setNodeGraphicURL(){ + boolean bOK = true; + + log.println("setNodeGraphicURL(\"MyTestURL\")"); + oObj.setNodeGraphicURL("MyTestURL"); + + log.println("setNodeGraphicURL(null)"); + oObj.setNodeGraphicURL(null); + + tRes.tested("setNodeGraphicURL()", bOK); + } + + public void _setExpandedGraphicURL(){ + boolean bOK = true; + + log.println("setExpandedGraphicURL(\"myExpandedURL\")"); + oObj.setExpandedGraphicURL("myExpandedURL"); + + log.println("setExpandedGraphicURL(null)"); + oObj.setExpandedGraphicURL(null); + + tRes.tested("setExpandedGraphicURL()", bOK); + } + + public void _setCollapsedGraphicURL(){ + boolean bOK = true; + + log.println("setCollapsedGraphicURL(\"myCollapsedURL\")"); + oObj.setCollapsedGraphicURL("myCollapsedURL"); + + log.println("setCollapsedGraphicURL(null)"); + oObj.setCollapsedGraphicURL(null); + + tRes.tested("setCollapsedGraphicURL()", bOK); + } + + public void _DataValue(){ + boolean bOK = true; + + log.println("setDataValue(\"myDataValue\")"); + oObj.setDataValue("myDataValue"); + + String sDataValue = (String) oObj.getDataValue(); + + if ( ! sDataValue.equals("myDataValue")) { + log.println("ERROR: getDataValue does not return the value which is inserted before:\n" + + "\texpected: myDataValue\n" + + "\tgot: " + sDataValue); + bOK = false; + } + + log.println("setDataValue(null)"); + oObj.setDataValue(null); + + Object oDataValue = oObj.getDataValue(); + if ( oDataValue != null) { + log.println("ERROR: getDataValue does not return the value which is inserted before:\n" + + "\texpected: null\n" + + "\tgot: " + oDataValue.toString()); + bOK = false; + } + + log.println("oObj.setDisplayValue(oObj)"); + oObj.setDisplayValue(oObj); + + oDataValue = oObj.getDataValue(); + if ( oDataValue != null) { + log.println("ERROR: getDataValue does not return the value which is inserted before:\n" + + "\texpected: " + oObj.toString() +"\n" + + "\tgot: " + oDataValue.toString()); + bOK = false; + } + + tRes.tested("DataValue()", bOK); + } + +} diff --git a/qadevOOo/tests/java/ifc/awt/tree/_XTreeControl.java b/qadevOOo/tests/java/ifc/awt/tree/_XTreeControl.java new file mode 100644 index 0000000000..e3c124d0a6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/tree/_XTreeControl.java @@ -0,0 +1,640 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt.tree; + +import com.sun.star.awt.tree.ExpandVetoException; +import com.sun.star.awt.tree.TreeExpansionEvent; +import com.sun.star.awt.tree.XMutableTreeNode; +import com.sun.star.awt.tree.XTreeControl; +import com.sun.star.awt.tree.XTreeEditListener; +import com.sun.star.awt.tree.XTreeExpansionListener; +import com.sun.star.awt.tree.XTreeNode; +import com.sun.star.lang.EventObject; +import com.sun.star.util.VetoException; +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +/** + * Testing <code>com.sun.star.awt.tree.XTreeControl</code> + * interface methods : + * <ul> + * <li><code> isNodeExpanded()</code></li> + * <li><code> isNodeCollapsed()</code></li> + * <li><code> makeNodeVisible()</code></li> + * <li><code> isNodeVisible()</code></li> + * <li><code> expandNode()</code></li> + * <li><code> collapseNode()</code></li> + * <li><code> addTreeExpansionListener()</code></li> + * <li><code> removeTreeExpansionListener()</code></li> + * <li><code> getNodeForLocation()</code></li> + * <li><code> getClosestNodeForLocation()</code></li> + * <li><code> isEditing()</code></li> + * <li><code> stopEditing()</code></li> + * <li><code> cancelEditing()</code></li> + * <li><code> startEditingAtNode()</code></li> + * <li><code> addTreeEditListener()</code></li> + * <li><code> removeTreeEditListener()</code></li> + * <li><code> DefaultExpandedGraphicURL()</code></li> + * <li><code> DefaultCollapsedGraphicURL()</code></li>* </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * + * @see com.sun.star.awt.tree.XTreeControl + */ +public class _XTreeControl extends MultiMethodTest { + + public XTreeControl oObj = null; + + private XMutableTreeNode mXNode = null; + + XTreeExpansionListener mTreeExpansionListener1 = new TreeExpansionListenerImpl1(); + + XTreeExpansionListener mTreeExpansionListener2 = new TreeExpansionListenerImpl2(); + + XTreeEditListener mTreeEditListener1 = new TreeEditListenerImpl1(); + + XTreeEditListener mTreeEditListener2 = new TreeEditListenerImpl2(); + + boolean mTreeExpanded1 = false; + boolean mTreeExpanding1 = false; + boolean mTreeCollapsed1 = false; + boolean mTreeCollapsing1 = false; + + boolean mTreeExpanded2 = false; + boolean mTreeExpanding2 = false; + boolean mTreeCollapsed2 = false; + boolean mTreeCollapsing2 = false; + + public interface XTreeDataModelListenerEvent{ + void fireEvent(); + } + + public class TreeExpansionListenerImpl1 implements XTreeExpansionListener{ + public void requestChildNodes(TreeExpansionEvent treeExpansionEvent) { + log.println("event at ExpansionListener 1: requestChildNodes"); + } + + public void treeExpanding(TreeExpansionEvent treeExpansionEvent) throws ExpandVetoException { + log.println("event at ExpansionListener 1: treeExpanding"); + mTreeExpanding1 = true; + } + + public void treeCollapsing(TreeExpansionEvent treeExpansionEvent) throws ExpandVetoException { + log.println("event at ExpansionListener 1: treeCollapsing"); + mTreeCollapsing1 = true; + } + + public void treeExpanded(TreeExpansionEvent treeExpansionEvent) { + log.println("event at ExpansionListener 1: treeExpanded"); + mTreeExpanded1 = true; + } + + public void treeCollapsed(TreeExpansionEvent treeExpansionEvent) { + log.println("event at ExpansionListener 1: treeCollapsed"); + mTreeCollapsed1 = true; + } + + public void disposing(EventObject eventObject) { + log.println("event at ExpansionListener 1: disposing"); + } + } + + public class TreeExpansionListenerImpl2 implements XTreeExpansionListener{ + public void requestChildNodes(TreeExpansionEvent treeExpansionEvent) { + log.println("event at ExpansionListener 2: requestChildNodes"); + } + + public void treeExpanding(TreeExpansionEvent treeExpansionEvent) throws ExpandVetoException { + log.println("event at ExpansionListener 2: treeExpanding"); + mTreeExpanding2 = true; + } + + public void treeCollapsing(TreeExpansionEvent treeExpansionEvent) throws ExpandVetoException { + log.println("event at ExpansionListener 2: treeCollapsing"); + mTreeCollapsing2 = true; + } + + public void treeExpanded(TreeExpansionEvent treeExpansionEvent) { + log.println("event at ExpansionListener 2: treeExpanded"); + mTreeExpanded2 = true; + } + + public void treeCollapsed(TreeExpansionEvent treeExpansionEvent) { + log.println("event at ExpansionListener 2: treeCollapsed"); + mTreeCollapsed2 = true; + } + + public void disposing(EventObject eventObject) { + log.println("event at ExpansionListener 2: disposing"); + } + + } + + public class TreeEditListenerImpl1 implements XTreeEditListener{ + public void nodeEditing(XTreeNode xTreeNode) throws VetoException { + log.println("event at EditListener 1: nodeEditing"); + } + + public void nodeEdited(XTreeNode xTreeNode, String string) { + log.println("event at EditListener 1: nodeEdited"); + } + + public void disposing(EventObject eventObject) { + log.println("event at EditListener 1: disposing"); + } + } + + public class TreeEditListenerImpl2 implements XTreeEditListener{ + public void nodeEditing(XTreeNode xTreeNode) throws VetoException { + log.println("event at EditListener 2: nodeEditing"); + } + + public void nodeEdited(XTreeNode xTreeNode, String string) { + log.println("event at EditListener 2: nodeEdited"); + } + + public void disposing(EventObject eventObject) { + log.println("event at EditListener 2: disposing"); + } + } + + private void resetTreeExpandingListener(){ + mTreeExpanded1 = false; + mTreeExpanded2 = false; + mTreeCollapsed1 = false; + mTreeCollapsed2 = false; + mTreeExpanding1 = false; + mTreeExpanding2 = false; + mTreeCollapsing1 = false; + mTreeCollapsing2 = false; + } + + @Override + public void before(){ + mXNode = (XMutableTreeNode) tEnv.getObjRelation("XTreeControl_Node"); + if (mXNode == null) { + throw new StatusException(Status.failed("ERROR: could not get object relation 'XTreeControl_Node'")); + } + } + + public void _isNodeExpanded() { + + boolean bOK = true; + + boolean isExpanded = false; + + try { + isExpanded = oObj.isNodeExpanded(mXNode); + log.println("node is expanded: " + isExpanded); + + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: could not query for 'isNodeExpanded()': " + ex.toString()); + } + + if (isExpanded) + try { + + log.println("try to collapse node..."); + oObj.collapseNode(mXNode); + + } catch (ExpandVetoException ex) { + bOK = false; + log.println("ERROR: could not collapse node: " + ex.toString()); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: could not collapse node: " + ex.toString()); + } + else + try { + + log.println("try to expand node..."); + oObj.expandNode(mXNode); + + } catch (ExpandVetoException ex) { + bOK = false; + log.println("ERROR: could not expand node: " + ex.toString()); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: could not expand node: " + ex.toString()); + } + + try { + + boolean isAlsoExpanded = oObj.isNodeExpanded(mXNode); + + bOK &= (isExpanded != isAlsoExpanded); + + log.println("node is expanded: " + isAlsoExpanded + " => " + bOK); + + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: could not query for 'isNodeExpanded()': " + ex.toString()); + } + + tRes.tested("isNodeExpanded()", bOK); + + } + public void _isNodeCollapsed(){ + + boolean bOK = true; + + boolean isCollapsed = false; + + try { + isCollapsed = oObj.isNodeCollapsed(mXNode); + log.println("node is Collapsed: " + isCollapsed); + + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: could not query for 'isNodeCollapsed()': " + ex.toString()); + } + + if ( ! isCollapsed) + try { + + log.println("try to collapse node..."); + oObj.collapseNode(mXNode); + + } catch (ExpandVetoException ex) { + bOK = false; + log.println("ERROR: could not collapse node: " + ex.toString()); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: could not collapse node: " + ex.toString()); + } + else + try { + + log.println("try to expand node..."); + oObj.expandNode(mXNode); + + } catch (ExpandVetoException ex) { + bOK = false; + log.println("ERROR: could not expand node: " + ex.toString()); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: could not expand node: " + ex.toString()); + } + + try { + + boolean isAlsoCollapsed = oObj.isNodeCollapsed(mXNode); + + bOK &= (isCollapsed != isAlsoCollapsed); + + log.println("node is Collapsed: " + isAlsoCollapsed + " => " + bOK); + + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: could not query for 'isNodeCollapsed()': " + ex.toString()); + } + + tRes.tested("isNodeCollapsed()", bOK); + + } + public void _makeNodeVisible(){ + + boolean bOK = true; + try { + + oObj.makeNodeVisible(mXNode); + } catch (ExpandVetoException ex) { + bOK = false; + log.println("ERROR: could not call method 'makeNodeVisible()' successfully: " + ex.toString()); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: could not call method 'makeNodeVisible()' successfully: " + ex.toString()); + } + try { + + bOK &= oObj.isNodeVisible(mXNode); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: could not call method 'isNodeVisible()' successfully: " + ex.toString()); + } + + tRes.tested("makeNodeVisible()", bOK); + + } + public void _isNodeVisible(){ + + this.requiredMethod("makeNodeVisible()"); + + boolean bOK = true; + log.println("since required method 'makeNodeVisible()' uses method 'isNodeVisible()' this test is ok."); + tRes.tested("isNodeVisible()", bOK); + + } + + public void _expandNode(){ + + this.requiredMethod("isNodeExpanded()"); + + boolean bOK = true; + log.println("since required method 'isnodeExpanded()' uses method 'expandNode()' this test is ok."); + tRes.tested("expandNode()", bOK); + + } + + public void _collapseNode(){ + + this.requiredMethod("isNodeCollapsed()"); + + boolean bOK = true; + log.println("since required method 'isnodeCollapsed()' uses method 'expandNode()' this test is ok."); + tRes.tested("collapseNode()", bOK); + + } + + public void _addTreeExpansionListener(){ + + boolean bOK = true; + + log.println("collapse Node to get an initial status..."); + try { + + oObj.collapseNode(mXNode); + } catch (ExpandVetoException ex) { + bOK = false; + log.println("ERROR: could not collapse node: " + ex.toString()); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: could not collapse node: " + ex.toString()); + } + + log.println("add mTreeExpansionListener1..."); + oObj.addTreeExpansionListener(mTreeExpansionListener1); + + log.println("add mTreeExpansionListener2"); + oObj.addTreeExpansionListener(mTreeExpansionListener2); + + resetTreeExpandingListener(); + + log.println("expand Node..."); + try { + + oObj.expandNode(mXNode); + + } catch (ExpandVetoException ex) { + bOK = false; + log.println("ERROR: could not expand node: " + ex.toString()); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: could not expand node: " + ex.toString()); + } + + bOK &= mTreeExpanded1 & mTreeExpanded2 & ! mTreeCollapsed1 & ! mTreeCollapsed2 + & mTreeExpanding1 & mTreeExpanding2 & ! mTreeCollapsing1 & ! mTreeCollapsing2; + + resetTreeExpandingListener(); + + log.println("collapse Node..."); + try { + + oObj.collapseNode(mXNode); + } catch (ExpandVetoException ex) { + bOK = false; + log.println("ERROR: could not collapse node: " + ex.toString()); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: could not collapse node: " + ex.toString()); + } + + bOK &= ! mTreeExpanded1 & ! mTreeExpanded2 & mTreeCollapsed1 & mTreeCollapsed2 + & ! mTreeExpanding1 & ! mTreeExpanding2 & mTreeCollapsing1 & mTreeCollapsing2; + + tRes.tested("addTreeExpansionListener()", bOK); + + } + + public void _removeTreeExpansionListener(){ + + this.requiredMethod("addTreeExpansionListener()"); + + boolean bOK = true; + + log.println("collapse Node to get an initial status..."); + try { + + oObj.collapseNode(mXNode); + } catch (ExpandVetoException ex) { + bOK = false; + log.println("ERROR: could not collapse node: " + ex.toString()); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: could not collapse node: " + ex.toString()); + } + + resetTreeExpandingListener(); + + log.println("remove mTreeExpansionListener2 ..."); + oObj.removeTreeExpansionListener(mTreeExpansionListener2); + + log.println("expand Node..."); + try { + + oObj.expandNode(mXNode); + + } catch (ExpandVetoException ex) { + bOK = false; + log.println("ERROR: could not expand node: " + ex.toString()); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: could not expand node: " + ex.toString()); + } + + bOK &= mTreeExpanded1 & ! mTreeExpanded2 & ! mTreeCollapsed1 & ! mTreeCollapsed2 + & mTreeExpanding1 & ! mTreeExpanding2 & ! mTreeCollapsing1 & ! mTreeCollapsing2; + + resetTreeExpandingListener(); + + log.println("collapse Node..."); + try { + + oObj.collapseNode(mXNode); + } catch (ExpandVetoException ex) { + bOK = false; + log.println("ERROR: could not collapse node: " + ex.toString()); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + bOK = false; + log.println("ERROR: could not collapse node: " + ex.toString()); + } + + bOK &= ! mTreeExpanded1 & ! mTreeExpanded2 & mTreeCollapsed1 & ! mTreeCollapsed2 + & ! mTreeExpanding1 & ! mTreeExpanding2 & mTreeCollapsing1 & ! mTreeCollapsing2; + + log.println("remove mTreeExpansionListener2 ..."); + oObj.removeTreeExpansionListener(mTreeExpansionListener2); + + tRes.tested("removeTreeExpansionListener()", bOK); + + } + + public void _getNodeForLocation(){ + + boolean bOK = false; + + + tRes.tested("getNodeForLocation()", bOK); + + } + + public void _getClosestNodeForLocation(){ + + boolean bOK = false; + + log.println("try to get Node for location 100,100"); + XTreeNode myNode = oObj.getClosestNodeForLocation(100,100); + + bOK &= (myNode != null); + + tRes.tested("getClosestNodeForLocation()", bOK); + + } + + public void _isEditing(){ + + boolean bOK = false; + + log.println("not ready because of i78701"); + + tRes.tested("isEditing()", bOK); + + } + + public void _stopEditing(){ + + boolean bOK = false; + log.println("not ready because of i78701"); + + + tRes.tested("stopEditing()", bOK); + + } + + public void _cancelEditing(){ + + boolean bOK = false; + + log.println("not ready because of i78701"); + + tRes.tested("cancelEditing()", bOK); + + } + + public void _startEditingAtNode(){ + + boolean bOK = false; + + log.println("not ready because of i78701"); + + tRes.tested("startEditingAtNode()", bOK); + + } + + public void _addTreeEditListener(){ + + boolean bOK = true; + + log.println("add EditListener 1..."); + oObj.addTreeEditListener(mTreeEditListener1); + + log.println("add EditListener 2..."); + oObj.addTreeEditListener(mTreeEditListener2); + + try { + oObj.startEditingAtNode(mXNode); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: could not start editing at node: " + ex.toString()); + bOK = false; + } + + log.println("not ready because of i78701"); + bOK = false; + + + tRes.tested("addTreeEditListener()", bOK); + + } + + public void _removeTreeEditListener(){ + + boolean bOK = false; + + log.println("not ready because of i78701"); + + tRes.tested("removeTreeEditListener()", bOK); + + } + + public void _DefaultExpandedGraphicURL(){ + + boolean bOK = true; + + String current = oObj.getDefaultExpandedGraphicURL(); + log.println("current DefaultExpandedGraphicURL: " + current); + + String changeUrl = null; + + if (current.equals("private:graphicrepository/sd/res/triangle_right.png")) + changeUrl = "private:graphicrepository/sd/res/triangle_down.png"; + else changeUrl = "private:graphicrepository/sd/res/triangle_right.png"; + + log.println("try to set '" + changeUrl + "' as new DefaultExpandedGraphicURL"); + + oObj.setDefaultExpandedGraphicURL(changeUrl); + + String newUrl = oObj.getDefaultExpandedGraphicURL(); + + log.println("new DefaultExpandedGraphicURL: " + newUrl); + + bOK &= ! newUrl.equals(current); + + tRes.tested("DefaultExpandedGraphicURL()", bOK); + + } + + public void _DefaultCollapsedGraphicURL(){ + + boolean bOK = true; + + String current = oObj.getDefaultCollapsedGraphicURL(); + log.println("current DefaultCollapsedGraphicURL: " + current); + + String changeUrl = null; + + if (current.equals("private:graphicrepository/sd/res/triangle_right.png")) + changeUrl = "private:graphicrepository/sd/res/triangle_down.png"; + else changeUrl = "private:graphicrepository/sd/res/triangle_right.png"; + + log.println("try to set '" + changeUrl + "' as new DefaultCollapsedGraphicURL"); + oObj.setDefaultCollapsedGraphicURL(changeUrl); + + String newUrl = oObj.getDefaultCollapsedGraphicURL(); + + log.println("new DefaultCollapsedGraphicURL: " + newUrl); + + bOK &= ! newUrl.equals(current); + + tRes.tested("DefaultCollapsedGraphicURL()", bOK); + } +} + + diff --git a/qadevOOo/tests/java/ifc/awt/tree/_XTreeDataModel.java b/qadevOOo/tests/java/ifc/awt/tree/_XTreeDataModel.java new file mode 100644 index 0000000000..3c544efd54 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/tree/_XTreeDataModel.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 ifc.awt.tree; + +import com.sun.star.awt.tree.TreeDataModelEvent; +import com.sun.star.awt.tree.XTreeDataModel; +import com.sun.star.awt.tree.XTreeDataModelListener; +import com.sun.star.lang.EventObject; +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +/** + * Testing <code>com.sun.star.awt.tree.XTreeDataModel</code> + * interface methods : + * <ul> + * <li><code> createNode()</code></li> + * <li><code> setRoot()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * + * @see com.sun.star.awt.tree.XTreeDataModel + */ +public class _XTreeDataModel extends MultiMethodTest { + + public XTreeDataModel oObj = null; + + XTreeDataModelListener mListener1 = new myEventListener1(); + + XTreeDataModelListener mListener2 = new myEventListener2(); + + XTreeDataModelListenerEvent mListenerEvent = null; + + boolean mTreeStructureChanged1 = false; + + boolean mTreeStructureChanged2 = false; + + public interface XTreeDataModelListenerEvent{ + void fireEvent(); + } + + public class myEventListener1 implements XTreeDataModelListener{ + public void treeNodesChanged(TreeDataModelEvent treeDataModelEvent) { + log.println("Listener 1: treeNodesChanged"); + } + + public void treeNodesInserted(TreeDataModelEvent treeDataModelEvent) { + log.println("Listener 1: treeNodesInserted"); + } + + public void treeNodesRemoved(TreeDataModelEvent treeDataModelEvent) { + log.println("Listener 1: treeNodesRemoved"); + } + + public void treeStructureChanged(TreeDataModelEvent treeDataModelEvent) { + log.println("Listener 1: treeStructureChanged"); + mTreeStructureChanged1 = true; + } + + public void disposing(EventObject eventObject) { + log.println("Listener 1: disposing"); + } + } + + public class myEventListener2 implements XTreeDataModelListener{ + public void treeNodesChanged(TreeDataModelEvent treeDataModelEvent) { + log.println("Listener 2: treeNodesChanged"); + } + + public void treeNodesInserted(TreeDataModelEvent treeDataModelEvent) { + log.println("Listener 2: treeNodesInserted"); + } + + public void treeNodesRemoved(TreeDataModelEvent treeDataModelEvent) { + log.println("Listener 2: treeNodesRemoved"); + } + + public void treeStructureChanged(TreeDataModelEvent treeDataModelEvent) { + log.println("Listener 2: treeStructureChanged"); + mTreeStructureChanged2 = true; + } + + public void disposing(EventObject eventObject) { + log.println("Listener 2: disposing"); + } + + } + + @Override + public void before(){ + mListenerEvent = (XTreeDataModelListenerEvent) tEnv.getObjRelation("XTreeDataModelListenerEvent"); + if (mListenerEvent == null) { + throw new StatusException(Status.failed("ERROR: could not get object relation 'XTreeDataModelListenerEvent'\n" + + "This object relation must be kind of 'ifc.awt.tree._XTreeDataModel.XTreeDataModelListenerEvent'")); + } + } + + /** + * Gets the title and compares it to the value set in + * <code>setTitle</code> method test. <p> + * Has <b>OK</b> status is set/get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setTitle </code> </li> + * </ul> + */ + public void _getRoot() { + + boolean bOK = true; + oObj.getRoot(); + + tRes.tested("getRoot()", bOK); + + } + + public void _addTreeDataModelListener(){ + + boolean bOK = true; + + log.println("add listener 1 to object..."); + oObj.addTreeDataModelListener(mListener1); + + log.println("add listener 2 to object..."); + oObj.addTreeDataModelListener(mListener2); + + mTreeStructureChanged1 = false; + mTreeStructureChanged2 = false; + + mListenerEvent.fireEvent(); + + bOK = mTreeStructureChanged1 & mTreeStructureChanged2; + + tRes.tested("addTreeDataModelListener()", bOK); + } + + public void _removeTreeDataModelListener(){ + + boolean bOK = true; + + log.println("remove listener 2 from object..."); + oObj.removeTreeDataModelListener(mListener2); + + mTreeStructureChanged1 = false; + mTreeStructureChanged2 = false; + + mListenerEvent.fireEvent(); + + bOK = mTreeStructureChanged1 & ! mTreeStructureChanged2; + + tRes.tested("removeTreeDataModelListener()", bOK); + + } +} + + diff --git a/qadevOOo/tests/java/ifc/awt/tree/_XTreeNode.java b/qadevOOo/tests/java/ifc/awt/tree/_XTreeNode.java new file mode 100644 index 0000000000..f0ca8ae9f6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/awt/tree/_XTreeNode.java @@ -0,0 +1,259 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.awt.tree; + +import com.sun.star.awt.tree.XTreeNode; +import com.sun.star.uno.AnyConverter; +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +/** + * Testing <code>com.sun.star.awt.tree.XTreeDataModel</code> + * interface methods : + * <ul> + * <li><code> getChildAt()</code></li> + * <li><code> getChildCount()</code></li> + * <li><code> getParent()</code></li> + * <li><code> getIndex()</code></li> + * <li><code> hasChildrenOnDemand()</code></li> + * <li><code> getDisplayValue()</code></li> + * <li><code> getNodeGraphicURL()</code></li> + * <li><code> getExpandedGraphicURL()</code></li> + * <li><code> getCollapsedGraphicURL()</code></li> * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * + * @see com.sun.star.awt.tree.XTreeDataModel + */ +public class _XTreeNode extends MultiMethodTest { + + public XTreeNode oObj = null; + + private int mCount = 0; + + String msDisplayValue = null; + String msExpandedGraphicURL = null; + String msCollapsedGraphicURL = null; + String msNodeGraphicURL = null; + + + @Override + public void before(){ + msDisplayValue = (String) tEnv.getObjRelation("XTreeNode_DisplayValue"); + if (msDisplayValue == null){ + throw new StatusException(Status.failed( + "Couldn't get relation 'XTreeNode_DisplayValue'")); + } + + msExpandedGraphicURL = (String) tEnv.getObjRelation("XTreeNode_ExpandedGraphicURL"); + if (msExpandedGraphicURL == null){ + throw new StatusException(Status.failed( + "Couldn't get relation 'XTreeNode_ExpandedGraphicURL'")); + } + + msCollapsedGraphicURL = (String) tEnv.getObjRelation("XTreeNode_CollapsedGraphicURL"); + if (msCollapsedGraphicURL == null){ + throw new StatusException(Status.failed( + "Couldn't get relation 'XTreeNode_CollapsedGraphicURL'")); + } + + msNodeGraphicURL = (String) tEnv.getObjRelation("XTreeNode_NodeGraphicURL"); + if(msNodeGraphicURL == null){ + throw new StatusException(Status.failed( + "Couldn't get relation 'XTreeNode_NodeGraphicURL'")); + } + + } + + /** + * Gets the title and compares it to the value set in + * <code>setTitle</code> method test. <p> + * Has <b>OK</b> status is set/get values are equal. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setTitle </code> </li> + * </ul> + */ + public void _getChildAt(){ + this.requiredMethod("getChildCount()"); + boolean bOK = true; + + for (int i=0; i < mCount ; i++){ + XTreeNode xNode = null; + try { + xNode = oObj.getChildAt(i); + } catch (com.sun.star.lang.IndexOutOfBoundsException ex) { + log.println("ERROR: getChildAt(" + i + "): " + ex.toString()); + } + if (xNode == null){ + log.println("ERROR: getChildAt(" + i + ") returns null => FAILED"); + bOK = false; + } + } + + tRes.tested("getChildAt()", bOK); + } + + + public void _getChildCount(){ + + boolean bOK = true; + mCount = oObj.getChildCount(); + log.println("got count '" + mCount + "' of children"); + if (mCount < 1 ) { + log.println("ERROR: got a count < 1. The test object must support more than zero children => FAILED"); + bOK = false; + } + tRes.tested("getChildCount()", bOK); + } + + + public void _getParent(){ + this.requiredMethod("getChildAt()"); + + boolean bOK = true; + XTreeNode xNode = null; + try { + log.println("try to getChildAt(0)"); + xNode = oObj.getChildAt(0); + } catch (com.sun.star.lang.IndexOutOfBoundsException ex) { + log.println("ERROR: getChildAt(0): " + ex.toString()); + } + + log.println("try to get parent of children"); + if (xNode == null) { + log.println("missing xNode"); + tRes.tested("getParent()", false); + } + else { + XTreeNode xParrent = xNode.getParent(); + + + bOK = oObj.equals(xParrent); + log.println("original object and parent should be the same: " + bOK); + tRes.tested("getParent()", bOK); + } + } + + + public void _getIndex(){ + this.requiredMethod("getChildAt()"); + + boolean bOK = true; + XTreeNode xNode = null; + try { + log.println("try to getChildAt(0)"); + xNode = oObj.getChildAt(0); + } catch (com.sun.star.lang.IndexOutOfBoundsException ex) { + log.println("ERROR: getChildAt(0): " + ex.toString()); + } + + log.println("try to get index from child..."); + int index = oObj.getIndex(xNode); + + if (index != 0){ + log.println("ERROR: getIndex() does not return '0' => FAILED"); + bOK = false; + } + + tRes.tested("getIndex()", bOK); + } + + + public void _hasChildrenOnDemand(){ + + boolean bOK = true; + + bOK = oObj.hasChildrenOnDemand(); + tRes.tested("hasChildrenOnDemand()", bOK); + } + + + public void _getDisplayValue(){ + + boolean bOK = true; + String DisplayValue = null; + Object dispVal = oObj.getDisplayValue(); + + try { + DisplayValue = AnyConverter.toString(dispVal); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: could not convert the returned object of 'getDisplayValue()' " + + "to String with AnyConverter: " + ex.toString()); + } + + if ( ! this.msDisplayValue.equals(DisplayValue)){ + log.println("ERROR: getNodeGraphicURL() does not return expected value:\n" + + "\tExpected: " + this.msDisplayValue +"\n" + + "\tGot: " + DisplayValue); + bOK = false; + } + + tRes.tested("getDisplayValue()", bOK); + } + + + public void _getNodeGraphicURL(){ + + boolean bOK = true; + String graphicURL = oObj.getNodeGraphicURL(); + + if ( ! this.msNodeGraphicURL.equals(graphicURL)){ + log.println("ERROR: getNodeGraphicURL() does not return expected value:\n" + + "\tExpected: " + this.msNodeGraphicURL +"\n" + + "\tGot: " + graphicURL); + bOK = false; + } + tRes.tested("getNodeGraphicURL()", bOK); + } + + + public void _getExpandedGraphicURL(){ + + boolean bOK = true; + String ExpandedGraphicURL = oObj.getExpandedGraphicURL(); + + if ( ! this.msExpandedGraphicURL.equals(ExpandedGraphicURL)){ + log.println("ERROR: getExpandedGraphicURL() does not return expected value:\n" + + "\tExpected: " + this.msExpandedGraphicURL +"\n" + + "\tGot: " + ExpandedGraphicURL); + bOK = false; + } + + tRes.tested("getExpandedGraphicURL()", bOK); + } + + + public void _getCollapsedGraphicURL(){ + + boolean bOK = true; + + String CollapsedGraphicURL = oObj.getCollapsedGraphicURL(); + + if ( ! this.msCollapsedGraphicURL.equals(CollapsedGraphicURL)){ + log.println("ERROR: getExpandedGraphicURL() does not return expected value:\n" + + "\tExpected: " + this.msCollapsedGraphicURL +"\n" + + "\tGot: " + CollapsedGraphicURL); + bOK = false; + } + + tRes.tested("getCollapsedGraphicURL()", bOK); + } + +} diff --git a/qadevOOo/tests/java/ifc/beans/_XExactName.java b/qadevOOo/tests/java/ifc/beans/_XExactName.java new file mode 100644 index 0000000000..033426e22f --- /dev/null +++ b/qadevOOo/tests/java/ifc/beans/_XExactName.java @@ -0,0 +1,84 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.beans; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.XExactName; + + +public class _XExactName extends MultiMethodTest { + protected String expectedName = ""; + public XExactName oObj = null; + + public void _getExactName() { + String nameFor = expectedName.toLowerCase(); + + log.println("Getting exact name for " + nameFor); + + String getting = oObj.getExactName(nameFor); + + boolean res = true; + + if (getting == null) { + res = false; + } else { + if (!getting.equals(expectedName)) { + log.println("didn't get the expected Name:"); + log.println("getting: " + getting); + log.println("Expected: " + expectedName); + res = false; + } + } + + nameFor = expectedName.toUpperCase(); + + log.println("Getting exact name for " + nameFor); + getting = oObj.getExactName(nameFor); + + if (getting == null) { + res = false; + } else { + if (!getting.equals(expectedName)) { + log.println("didn't get the expected Name:"); + log.println("getting: " + getting); + log.println("Expected: " + expectedName); + res = false; + } + } + + tRes.tested("getExactName()", res); + } + + /** + * Checking if the Object relation expectedName is given + * throw a StatusException if not. + */ + @Override + protected void before() { + expectedName = (String) tEnv.getObjRelation("expectedName"); + + if (expectedName == null) { + throw new StatusException(Status.failed( + "Object relation expectedName is missing")); + } + } +} diff --git a/qadevOOo/tests/java/ifc/beans/_XFastPropertySet.java b/qadevOOo/tests/java/ifc/beans/_XFastPropertySet.java new file mode 100644 index 0000000000..12f4a1bdc2 --- /dev/null +++ b/qadevOOo/tests/java/ifc/beans/_XFastPropertySet.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 ifc.beans; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.Set; + +import lib.MultiMethodTest; +import lib.StatusException; +import util.ValueChanger; + +import com.sun.star.beans.Property; +import com.sun.star.beans.PropertyAttribute; +import com.sun.star.beans.XFastPropertySet; +import com.sun.star.beans.XPropertySet; +import com.sun.star.beans.XPropertySetInfo; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.beans.XFastPropertySet</code> +* interface methods : +* <ul> +* <li><code> setFastPropertyValue()</code></li> +* <li><code> getFastPropertyValue()</code></li> +* </ul> <p> +* Required relations : +* <ul> +* <li> <code>'XFastPropertySet.ExcludeProps'</code> +* <b>(optional) </b> : java.util.Set. +* Has property names which must be skipped from testing in +* some reasons (for example property accepts restricted set +* of values). +* </li> +* <ul> <p> +* @see com.sun.star.beans.XFastPropertySet +*/ +public class _XFastPropertySet extends MultiMethodTest { + public Random rnd = new Random(); + + private static final class Prop { + public final int handle; + public final String name; + + public Prop(int handle, String name) { + this.handle = handle; + this.name = name; + } + } + + public XFastPropertySet oObj = null; + private final List<Prop> props = new ArrayList<Prop>(); + private Prop prop; + private Set<String> exclude = null ; + + /** + * Retrieves relation. + */ + @SuppressWarnings("unchecked") + @Override + protected void before() { + exclude = (Set<String>) tEnv.getObjRelation("XFastPropertySet.ExcludeProps") ; + if (exclude == null) { + exclude = new java.util.HashSet<String>() ; + } + } + + /** + * Test selects random property which can not be VOID and + * is writable, then change property value using <code> + * get/set</code> methods, and checks if value properly changed. + * Has <b> OK </b> status if value after change is not equal to value + * before and no exceptions were thrown. <p> + */ + public void _setFastPropertyValue() { + XPropertySet PS = UnoRuntime.queryInterface + (XPropertySet.class, oObj); + XPropertySetInfo propertySetInfo = PS.getPropertySetInfo(); + + if (propertySetInfo == null) { + log.println("getPropertySetInfo() method returned null"); + tRes.tested("setFastPropertyValue()", false) ; + } + getPropsToTest(propertySetInfo); + + Object gValue = null; + Object sValue = null; + + if ( prop.handle == -1) { + log.println("*** No changeable properties found ***"); + tRes.tested("setFastPropertyValue()", false) ; + } else { + try { + gValue = oObj.getFastPropertyValue(prop.handle); + sValue = ValueChanger.changePValue(gValue, prop.name); + oObj.setFastPropertyValue(prop.handle, sValue); + sValue = oObj.getFastPropertyValue(prop.handle); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception occurred while trying to change property with handle = " + prop.handle); + e.printStackTrace(log); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while trying to change property with handle = " + prop.handle); + e.printStackTrace(log); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("Exception occurred while trying to change property with handle = " + prop.handle); + e.printStackTrace(log); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception occurred while trying to change property with handle = " + prop.handle); + e.printStackTrace(log); + } + + tRes.tested("setFastPropertyValue()",(!gValue.equals(sValue))); + } + } + + /** + * Test selects random property which can not be VOID and + * is writable, then calls the method and checks that + * no exceptions were thrown. <p> + * Has <b> OK </b> status if exceptions were thrown. <p> + */ + public void _getFastPropertyValue() { + XPropertySet PS = UnoRuntime.queryInterface + (XPropertySet.class, oObj); + XPropertySetInfo propertySetInfo = PS.getPropertySetInfo(); + + if (propertySetInfo == null) { + log.println("getPropertySetInfo() method returned null"); + tRes.tested("getFastPropertyValue()", false) ; + } + + getPropsToTest(propertySetInfo); + + try { + oObj.getFastPropertyValue(prop.handle); + tRes.tested("getFastPropertyValue()",true); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception occurred while trying to get property '" + + prop.handle +"'"); + e.printStackTrace(log); + tRes.tested("getFastPropertyValue()",false); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while trying to get property '" + + prop.handle +"'"); + e.printStackTrace(log); + tRes.tested("getFastPropertyValue()",false); + } + } + + + //Get the properties being tested + private void getPropsToTest(XPropertySetInfo xPSI) { + + Property[] properties = xPSI.getProperties(); + + for (int i = 0; i < properties.length; i++) { + if (exclude.contains(properties[i].Name)) continue ; + Property property = properties[i]; + String name = property.Name; + int handle = property.Handle; + log.println("Checking '" + name + "' with handle = " + handle); + boolean isWritable = + ((property.Attributes & PropertyAttribute.READONLY) == 0); + boolean isNotNull = + ((property.Attributes & PropertyAttribute.MAYBEVOID) == 0); + boolean canChange = false; + if ( isWritable && isNotNull ) + canChange = isChangeable(handle, name); + if ( isWritable && isNotNull && canChange) + props.add(new Prop(handle, name)); + } // endfor + + int nr = rnd.nextInt(props.size()); + prop = props.get(nr); + } + + private boolean isChangeable(int handle, String name) { + boolean hasChanged = false; + try { + Object getProp = oObj.getFastPropertyValue(handle); + Object setValue = null; + + if (getProp != null) + setValue = ValueChanger.changePValue(getProp, name); + else + log.println("Property with handle = " + handle + + " is null but 'MAYBEVOID' isn't set"); + if (setValue != null) { + oObj.setFastPropertyValue(handle, setValue); + hasChanged = + (!getProp.equals(oObj.getFastPropertyValue(handle))); + } + else + log.println("Couldn't change Property with handle " + handle); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Property with handle " + handle + " throws exception"); + e.printStackTrace(log); + throw new StatusException("Property with handle " + handle + + " throws exception", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Property with handle " + handle + " throws exception"); + e.printStackTrace(log); + throw new StatusException("Property with handle " + handle + + " throws exception", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Property with handle " + handle + " throws exception"); + e.printStackTrace(log); + throw new StatusException("Property with handle " + handle + + " throws exception", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Property with handle " + handle + " throws exception"); + e.printStackTrace(log); + throw new StatusException("Property with handle " + handle + + " throws exception", e); + } + + return hasChanged; + } +} + + diff --git a/qadevOOo/tests/java/ifc/beans/_XHierarchicalPropertySet.java b/qadevOOo/tests/java/ifc/beans/_XHierarchicalPropertySet.java new file mode 100644 index 0000000000..c7cc8faf71 --- /dev/null +++ b/qadevOOo/tests/java/ifc/beans/_XHierarchicalPropertySet.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 ifc.beans; + +import lib.MultiMethodTest; +import lib.Status; +import util.ValueChanger; +import util.ValueComparer; + +import com.sun.star.beans.XHierarchicalPropertySet; +import com.sun.star.beans.XHierarchicalPropertySetInfo; + + +public class _XHierarchicalPropertySet extends MultiMethodTest { + public XHierarchicalPropertySet oObj; + + public void _getHierarchicalPropertySetInfo() { + XHierarchicalPropertySetInfo hpsi = oObj.getHierarchicalPropertySetInfo(); + boolean res = true; + + if (hpsi == null) { + log.println( + "The component doesn't provide HierarchicalPropertySetInfo"); + tRes.tested("getHierarchicalPropertySetInfo()", + Status.skipped(true)); + + return; + } + + tRes.tested("getHierarchicalPropertySetInfo()", res); + } + + public void _getHierarchicalPropertyValue() { + String[] pNames = (String[]) tEnv.getObjRelation("PropertyNames"); + String[] pTypes = (String[]) tEnv.getObjRelation("PropertyTypes"); + boolean res = true; + + for (int i = 0; i < pNames.length; i++) { + try { + log.print("Property " + pNames[i]); + + Object getting = oObj.getHierarchicalPropertyValue(pNames[i]); + log.println(" has Value " + getting.toString()); + res &= checkType(pNames[i], pTypes[i], getting); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println(" is unknown"); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println(" is illegal"); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println(" throws exception " + e.getMessage()); + } + } + + tRes.tested("getHierarchicalPropertyValue()", res); + } + + public void _setHierarchicalPropertyValue() { + String ro = (String) tEnv.getObjRelation("allReadOnly"); + + if (ro != null) { + log.println(ro); + tRes.tested("setHierarchicalPropertyValue()", Status.skipped(true)); + + return; + } + + boolean res = true; + + String[] pNames = (String[]) tEnv.getObjRelation("PropertyNames"); + + for (int k = 0; k < pNames.length; k++) { + try { + Object oldValue = oObj.getHierarchicalPropertyValue(pNames[k]); + Object newValue = ValueChanger.changePValue(oldValue); + oObj.setHierarchicalPropertyValue(pNames[k], newValue); + + Object getValue = oObj.getHierarchicalPropertyValue(pNames[k]); + boolean localRes = ValueComparer.equalValue(getValue, newValue); + + if (!localRes) { + log.println("Expected " + newValue.toString()); + log.println("Gained " + getValue.toString()); + } + + + //reset Value + oObj.setHierarchicalPropertyValue(pNames[k], oldValue); + + res &= localRes; + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Property is unknown"); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("IllegalArgument "+e.getMessage()); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("VetoException "+e.getMessage()); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("WrappedTarget "+e.getMessage()); + } + + } + + tRes.tested("setHierarchicalPropertyValue()", res); + } + + protected boolean checkType(String name, String type, Object value) { + boolean result = true; + + if (type.equals("Boolean")) { + result = (value instanceof Boolean); + + if (!result) { + log.println("Wrong Type for property " + name); + log.println("Expected " + type); + log.println("getting " + value.getClass()); + } + } else if (type.equals("Short")) { + result = (value instanceof Short); + + if (!result) { + log.println("Wrong Type for property " + name); + log.println("Expected " + type); + log.println("getting " + value.getClass()); + } + } + + return result; + } +} diff --git a/qadevOOo/tests/java/ifc/beans/_XIntrospection.java b/qadevOOo/tests/java/ifc/beans/_XIntrospection.java new file mode 100644 index 0000000000..79d7d1767d --- /dev/null +++ b/qadevOOo/tests/java/ifc/beans/_XIntrospection.java @@ -0,0 +1,53 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.beans; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XIntrospection; +import com.sun.star.beans.XIntrospectionAccess; + +/** +* Testing <code>com.sun.star.beans.XIntrospection</code> +* interface methods : +* <ul> +* <li><code> inspect() </code></li> +* </ul> <p> +* Test is multithread compliant. <p> +* @see com.sun.star.beans.XIntrospection +*/ +public class _XIntrospection extends MultiMethodTest { + + public XIntrospection oObj = null; + + /** + * Test inspects the object tested, and checks if it + * has a base <code>XInterface</code> method + * <code>acquire</code>. + */ + public void _inspect() { + boolean result = true; + XIntrospectionAccess xIA = oObj.inspect(oObj); + result = xIA.hasMethod("acquire",1); + tRes.tested("inspect()",result); + } + +} // finish class _XIntrospection + + diff --git a/qadevOOo/tests/java/ifc/beans/_XMultiHierarchicalPropertySet.java b/qadevOOo/tests/java/ifc/beans/_XMultiHierarchicalPropertySet.java new file mode 100644 index 0000000000..10b1c8ce99 --- /dev/null +++ b/qadevOOo/tests/java/ifc/beans/_XMultiHierarchicalPropertySet.java @@ -0,0 +1,139 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.beans; + +import lib.MultiMethodTest; +import lib.Status; +import util.ValueChanger; +import util.ValueComparer; + +import com.sun.star.beans.XHierarchicalPropertySetInfo; +import com.sun.star.beans.XMultiHierarchicalPropertySet; + + +public class _XMultiHierarchicalPropertySet extends MultiMethodTest { + public XMultiHierarchicalPropertySet oObj; + + public void _getHierarchicalPropertySetInfo() { + XHierarchicalPropertySetInfo hpsi = oObj.getHierarchicalPropertySetInfo(); + boolean res = true; + + if (hpsi == null) { + log.println( + "The component doesn't provide HierarchicalPropertySetInfo"); + tRes.tested("getHierarchicalPropertySetInfo()", + Status.skipped(true)); + + return; + } + + tRes.tested("getMultiHierarchicalPropertySetInfo()", res); + } + + public void _getHierarchicalPropertyValues() { + String[] pNames = (String[]) tEnv.getObjRelation("PropertyNames"); + String[] pTypes = (String[]) tEnv.getObjRelation("PropertyTypes"); + boolean res = true; + + try { + Object[] getting = oObj.getHierarchicalPropertyValues(pNames); + res &= checkType(pNames, pTypes, getting); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception " + e.getMessage()); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception " + e.getMessage()); + } + + tRes.tested("getHierarchicalPropertyValues()", res); + } + + public void _setHierarchicalPropertyValues() { + String ro = (String) tEnv.getObjRelation("allReadOnly"); + + if (ro != null) { + log.println(ro); + tRes.tested("setHierarchicalPropertyValues()", + Status.skipped(true)); + + return; + } + + String[] pNames = (String[]) tEnv.getObjRelation("PropertyNames"); + boolean res = true; + + try { + Object[] oldValues = oObj.getHierarchicalPropertyValues(pNames); + Object[] newValues = new Object[oldValues.length]; + + for (int k = 0; k < oldValues.length; k++) { + newValues[k] = ValueChanger.changePValue(oldValues[k]); + } + + oObj.setHierarchicalPropertyValues(pNames, newValues); + + Object[] getValues = oObj.getHierarchicalPropertyValues(pNames); + + for (int k = 0; k < pNames.length; k++) { + boolean localRes = ValueComparer.equalValue(getValues[k], + newValues[k]); + + if (!localRes) { + log.println("didn't work for " + pNames[k]); + log.println("Expected " + newValues[k].toString()); + log.println("Getting " + getValues[k].toString()); + } + //reset properties + oObj.setHierarchicalPropertyValues(pNames, oldValues); + } + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("IllegalArgument " + e.getMessage()); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("VetoException " + e.getMessage()); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("WrappedTarget " + e.getMessage()); + } + + tRes.tested("setHierarchicalPropertyValues()", res); + } + + protected boolean checkType(String[] name, String[] type, Object[] value) { + boolean result = true; + + for (int k = 0; k < name.length; k++) { + if (type[k].equals("Boolean")) { + result &= (value[k] instanceof Boolean); + + if (!(value[k] instanceof Boolean)) { + log.println("Wrong Type for property " + name[k]); + log.println("Expected " + type[k]); + log.println("getting " + value[k].getClass()); + } + } else if (type[k].equals("Short")) { + result &= (value[k] instanceof Short); + + if (!(value[k] instanceof Short)) { + log.println("Wrong Type for property " + name[k]); + log.println("Expected " + type[k]); + log.println("getting " + value[k].getClass()); + } + } + } + + return result; + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/beans/_XMultiPropertySet.java b/qadevOOo/tests/java/ifc/beans/_XMultiPropertySet.java new file mode 100644 index 0000000000..052e588436 --- /dev/null +++ b/qadevOOo/tests/java/ifc/beans/_XMultiPropertySet.java @@ -0,0 +1,364 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.beans; + +import java.util.HashSet; +import java.util.ArrayList; +import java.util.Set; +import java.util.StringTokenizer; +import java.util.Arrays; + +import lib.MultiMethodTest; +import lib.Status; +import util.ValueChanger; + +import com.sun.star.beans.Property; +import com.sun.star.beans.PropertyAttribute; +import com.sun.star.beans.PropertyChangeEvent; +import com.sun.star.beans.XMultiPropertySet; +import com.sun.star.beans.XPropertiesChangeListener; +import com.sun.star.beans.XPropertySetInfo; +import com.sun.star.lang.EventObject; + + +/** +* Testing <code>com.sun.star.beans.XMultiPropertySet</code> +* interface methods : +* <ul> +* <li><code> getPropertySetInfo()</code></li> +* <li><code> setPropertyValues()</code></li> +* <li><code> getPropertyValues()</code></li> +* <li><code> addPropertiesChangeListener()</code></li> +* <li><code> removePropertiesChangeListener()</code></li> +* <li><code> firePropertiesChangeEvent()</code></li> +* </ul> <p> +* +* Required relations : +* <ul> +* <li> <code>'XMultiPropertySet.ExcludeProps'</code> +* <b>(optional) </b> : java.util.Set. +* Has property names which must be skipped from testing in +* some reasons (for example property accepts restricted set +* of values). +* </li> +* <ul> <p> +* +* Test is <b> NOT </b> multithread compliant. <p> +* After test completion object environment has to be recreated. +* @see com.sun.star.beans.XMultiPropertySet +*/ +public class _XMultiPropertySet extends MultiMethodTest { + + public XMultiPropertySet oObj = null; + + private boolean propertiesChanged = false; + private XPropertySetInfo propertySetInfo = null; + private String [] testPropsNames = null; + private int testPropsAmount = 0; + private Object[] values = null; + + private Set<String> exclProps = null; + + /** + * Initializes some fields. + */ + @SuppressWarnings("unchecked") + @Override + public void before() { + exclProps = (Set<String>) tEnv.getObjRelation("XMultiPropertySet.ExcludeProps"); + if (exclProps == null) exclProps = new HashSet<String>(0); + } + + /** + * Listener implementation which sets a flag when + * listener was called. + */ + public class MyChangeListener implements XPropertiesChangeListener { + public void propertiesChange(PropertyChangeEvent[] e) { + propertiesChanged = true; + } + public void disposing (EventObject obj) {} + } + + private final XPropertiesChangeListener PClistener = + new MyChangeListener(); + + /** + * Test calls the method and checks return value. + * <code>PropertySetInfo</code> object is stored<p> + * Has <b> OK </b> status if the method returns not null value + * and no exceptions were thrown. <p> + */ + public void _getPropertySetInfo() { + boolean bResult = true; + propertySetInfo = oObj.getPropertySetInfo(); + + if (propertySetInfo == null) { + log.println("getPropertySetInfo() method returned null"); + bResult = false; + } + + tRes.tested("getPropertySetInfo()", bResult) ; + } + + + /** + * Test collects all property names and retrieves their values, + * then checks the value returned. Finally it also collects + * bound properties for other methods tests.<p> + * Has <b> OK </b> status if the method returns non null value + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getPropertySetInfo() </code> : to have a list + * of properties.</li> + * </ul> + */ + public void _getPropertyValues() { + requiredMethod("getPropertySetInfo()"); + boolean bResult = true; + + Property[] properties = propertySetInfo.getProperties(); + + ArrayList<String> allFilteredNames = new ArrayList<String>(); + ArrayList<Property> allFilteredProperties = new ArrayList<Property>(); + + String[] skipNames = (String[]) tEnv.getObjRelation("SkipProperties"); + + for (int i = 0; i < properties.length; i++) { + if (skipNames == null || !Arrays.asList(skipNames).contains(properties[i].Name)) + { + allFilteredNames.add(properties[i].Name); + allFilteredProperties.add(properties[i]); + } + } + + String[] arrayAllFilteredNames = allFilteredNames.toArray(new String[allFilteredNames.size()]); + + values = oObj.getPropertyValues(arrayAllFilteredNames); + + bResult &= values!=null; + tRes.tested("getPropertyValues()", bResult) ; + + Property[] arrayFilteredProperties = allFilteredProperties.toArray(new Property[allFilteredProperties.size()]); + + getPropsToTest(arrayFilteredProperties); + } + + /** + * Test adds listener for all bound properties then each property + * is changed and listener call . <p> + * Has <b> OK </b> status if on each property change the listener was + * called and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getPropertyValues() </code> : to collect bound + * properties.</li> + * </ul> + */ + public void _addPropertiesChangeListener() { + + requiredMethod("getPropertyValues()"); + + // Creating listener + oObj.addPropertiesChangeListener(testPropsNames, PClistener); + + if ((testPropsAmount==1) && (testPropsNames[0].equals("none"))) { + testPropsAmount = 0; + } + + if (testPropsAmount == 0) { + log.println("all properties are read only"); + tRes.tested("addPropertiesChangeListener()", Status.skipped(true)); + return; + } + + // Change one of the property to be sure that this event was caught. + for (int i=0; i<testPropsAmount;i++) { + log.print("Trying to change property " + testPropsNames[i]); + try { + Object[] gValues = oObj.getPropertyValues(testPropsNames); + Object newValue = ValueChanger.changePValue(gValues[i]); + gValues[i] = newValue; + propertiesChanged = false; + oObj.setPropertyValues(testPropsNames, gValues); + log.println(" ... done"); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("Exception occurred while trying to change "+ + "property '"+testPropsNames[i] + "' :" + e); + e.printStackTrace(log); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception occurred while trying to change "+ + "property '"+testPropsNames[i] + "' :" + e); + e.printStackTrace(log); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while trying to change "+ + "property '"+testPropsNames[i] + "' :" + e); + e.printStackTrace(log); + } // end of try-catch + } + waitForEventIdle(); + tRes.tested("addPropertiesChangeListener()", propertiesChanged); + } + + /** + * Calls method and check if listener was called. <p> + * Has <b> OK </b> status if the listener was + * called and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addPropertiesChangeListener() </code> : listener to + * be added.</li> + * </ul> + */ + public void _firePropertiesChangeEvent() { + requiredMethod("addPropertiesChangeListener()"); + propertiesChanged = false ; + + oObj.firePropertiesChangeEvent(testPropsNames, PClistener); + waitForEventIdle(); + + tRes.tested("firePropertiesChangeEvent()", propertiesChanged); + } + + + /** + * Removes listener added before. <p> + * Has <b> OK </b> status no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addPropertiesChangeListener() </code> : listener to + * be added.</li> + * </ul> + */ + public void _removePropertiesChangeListener() { + requiredMethod("firePropertiesChangeEvent()"); + boolean bResult = true; + + oObj.removePropertiesChangeListener(PClistener); + + tRes.tested("removePropertiesChangeListener()", bResult); + } + + + /** + * Changes all properties, then set them to new values, get them + * and checks if their values were changed properly. <p> + * Has <b> OK </b> status if all properties properly changed + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getPropertyValues() </code> : to collect bound + * properties.</li> + * </ul> + */ + public void _setPropertyValues() { + requiredMethod("getPropertyValues()"); + boolean bResult = true; + + if ((testPropsNames.length==1)&&(testPropsNames[0].equals("none"))) { + log.println("all properties are readOnly"); + tRes.tested("setPropertyValues()",Status.skipped(true)); + return; + } + + log.println("Changing all properties"); + Object[] gValues = oObj.getPropertyValues(testPropsNames); + for (int i=0; i<testPropsAmount;i++) { + Object oldValue = gValues[i]; + Object newValue = ValueChanger.changePValue(oldValue); + gValues[i] = newValue; + } + + try { + oObj.setPropertyValues(testPropsNames, gValues); + Object[] newValues = oObj.getPropertyValues(testPropsNames); + for (int i=0; i<testPropsAmount;i++) { + if (newValues[i].equals(gValues[i])) { + bResult = true; + } + } + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("Exception occurred while setting properties"); + e.printStackTrace(log); + bResult = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception occurred while setting properties"); + e.printStackTrace(log); + bResult = false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while setting properties"); + e.printStackTrace(log); + bResult = false; + } // end of try-catch + + tRes.tested("setPropertyValues()", bResult); + } + + //Get the properties being tested + private void getPropsToTest(Property[] properties) { + + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < properties.length; i++) { + + Property property = properties[i]; + String name = property.Name; + boolean isWritable = ((property.Attributes & + PropertyAttribute.READONLY) == 0); + boolean isNotNull = ((property.Attributes & + PropertyAttribute.MAYBEVOID) == 0); + boolean isBound = ((property.Attributes & + PropertyAttribute.BOUND) != 0); + boolean isExcluded = exclProps.contains(name); + + //exclude UserDefined, because we can't change XNameContainer + if (name.indexOf("UserDefined")>0 || name.indexOf("Device")>0) { + isWritable=false; + } + + values = oObj.getPropertyValues(new String[]{property.Name}); + + boolean isVoid = util.utils.isVoid(values[0]); + + if ( isWritable && isNotNull && isBound && !isExcluded && !isVoid) { + sb.append(name + ";"); + } + + } // endfor + + String bound = sb.toString(); + + //get an array of bound properties + if (bound.equals("")) bound = "none"; + StringTokenizer ST=new StringTokenizer(bound,";"); + int nr = ST.countTokens(); + testPropsNames = new String[nr]; + for (int i=0; i<nr; i++) testPropsNames[i] = ST.nextToken(); + testPropsAmount = nr; + } + + /* + * Does nothing. + */ + @Override + protected void after() { + disposeEnvironment(); + } +} diff --git a/qadevOOo/tests/java/ifc/beans/_XMultiPropertyStates.java b/qadevOOo/tests/java/ifc/beans/_XMultiPropertyStates.java new file mode 100644 index 0000000000..884fb27afb --- /dev/null +++ b/qadevOOo/tests/java/ifc/beans/_XMultiPropertyStates.java @@ -0,0 +1,227 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.beans; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.Property; +import com.sun.star.beans.PropertyAttribute; +import com.sun.star.beans.PropertyState; +import com.sun.star.beans.XMultiPropertyStates; +import com.sun.star.beans.XPropertySet; +import com.sun.star.beans.XPropertySetInfo; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.beans.XMultiPropertyStates</code> +* interface methods : +* <ul> +* <li><code> getPropertyStates()</code></li> +* <li><code> setAllPropertiesToDefault()</code></li> +* <li><code> getPropertyValues()</code></li> +* <li><code> setPropertiesToDefault()</code></li> +* <li><code> getPropertyDefaults()</code></li> +* </ul> +* @see com.sun.star.beans.XMultiPropertyStates +*/ +public class _XMultiPropertyStates extends MultiMethodTest { + + public XMultiPropertyStates oObj = null; + + private PropertyState[] states = null; + private String[] names = null; + + @Override + public void before() { + names = (String[]) tEnv.getObjRelation("PropertyNames"); + if (names == null) { + throw new StatusException(Status.failed("No PropertyNames given")); + } + + log.println("Totally " + names.length + " properties encountered:"); + log.print("{"); + for (int i = 0; i < names.length; i++) + log.print(names[i] + " "); + log.print("}"); + log.println(""); + } + + + /** + * Test calls the method and checks return value. + * <code>PropertyDefaults</code> are stored<p> + * Has <b> OK </b> status if the method returns not null value + * and no exceptions were thrown. <p> + */ + public void _getPropertyDefaults() { + boolean result = false; + try { + Object[] defaults = oObj.getPropertyDefaults(names); + log.println("Number of default values: " + defaults.length); + result = defaults.length == names.length; + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("some properties seem to be unknown: " + e.toString()); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Wrapped target Exception was thrown: " + e.toString()); + } + tRes.tested("getPropertyDefaults()", result) ; + } + + /** + * Test calls the method and checks return value. + * Has <b> OK </b> status if the method returns not null value + * and no exceptions were thrown. <p> + */ + public void _getPropertyStates() { + boolean result = false; + try { + states = oObj.getPropertyStates(names); + result = (states != null) && (states.length == names.length); + if (states != null) { + log.println("Number of states: " + states.length); + } + else { + log.println("Number of states: <null>"); + } + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("some properties seem to be unknown: " + e.toString()); + } + tRes.tested("getPropertyStates()", result) ; + } + + /** + * Test calls the method and checks return value. + * Has <b> OK </b> status if the Property + * has default state afterwards. <p> + */ + public void _setPropertiesToDefault() { + requiredMethod("getPropertyStates()"); + // searching for property which currently don't have default value + // and preferable has MAYBEDEFAULT attr + // if no such properties are found then the first one is selected + + String ro = (String) tEnv.getObjRelation("allReadOnly"); + if (ro != null) { + log.println(ro); + tRes.tested("setPropertiesToDefault()",Status.skipped(true)); + return; + } + + boolean mayBeDef = false; + String propName = names[0]; + + for(int i = 0; i < names.length; i++) { + if (!mayBeDef && states[i] != PropertyState.DEFAULT_VALUE ) { + propName = names[i]; + XPropertySet xPropSet = UnoRuntime.queryInterface(XPropertySet.class, oObj); + XPropertySetInfo xPropSetInfo = xPropSet.getPropertySetInfo(); + Property prop = null; + try { + prop = xPropSetInfo.getPropertyByName(names[i]); + } + catch(com.sun.star.beans.UnknownPropertyException e) { + throw new StatusException(e, Status.failed("couldn't get property info")); + } + if ( (prop.Attributes & PropertyAttribute.MAYBEDEFAULT) != 0){ + log.println("Property " + names[i] + + " 'may be default' and doesn't have default value"); + mayBeDef = true; + } + } + } + log.println("The property " + propName + " selected"); + + boolean result = false; + try { + String[] the_first = new String[1]; + the_first[0] = propName; + log.println("Setting " + propName + " to default"); + oObj.setPropertiesToDefault(the_first); + result = oObj.getPropertyStates(the_first)[0].equals(PropertyState.DEFAULT_VALUE); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("some properties seem to be unknown: " + e.toString()); + } + + if (!result) { + log.println("The property didn't change its state to default ..."); + if (mayBeDef) { + log.println(" ... and it may be default - FAILED"); + } else { + log.println(" ... but it may not be default - OK"); + result = true; + } + } + + tRes.tested("setPropertiesToDefault()", result) ; + } + + /** + * Test calls the method and checks return value. + * Has <b> OK </b> status if the all Properties + * have default state afterwards. <p> + */ + public void _setAllPropertiesToDefault() { + requiredMethod("setPropertiesToDefault()"); + boolean result = true; + + try { + oObj.setAllPropertiesToDefault(); + } catch(RuntimeException e) { + log.println("Ignore Runtime Exception: " + e.getMessage()); + } + log.println("Checking that all properties are now in DEFAULT state" + + " excepting may be those which 'can't be default'"); + + try { + states = oObj.getPropertyStates(names); + for (int i = 0; i < states.length; i++) { + boolean part_result = states[i].equals + (PropertyState.DEFAULT_VALUE); + if (!part_result) { + log.println("Property '" + names[i] + + "' wasn't set to default"); + XPropertySet xPropSet = UnoRuntime.queryInterface(XPropertySet.class, oObj); + XPropertySetInfo xPropSetInfo = + xPropSet.getPropertySetInfo(); + Property prop = xPropSetInfo.getPropertyByName(names[i]); + if ( (prop.Attributes & + PropertyAttribute.MAYBEDEFAULT) != 0 ) { + log.println(" ... and it has MAYBEDEFAULT "+ + "attribute - FAILED"); + } else { + log.println(" ... but it has no MAYBEDEFAULT "+ + "attribute - OK"); + part_result = true; + } + } + + result &= part_result; + } + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("some properties seem to be unknown: " + e.toString()); + result=false; + } + + tRes.tested("setAllPropertiesToDefault()", result) ; + } + +} + diff --git a/qadevOOo/tests/java/ifc/beans/_XProperty.java b/qadevOOo/tests/java/ifc/beans/_XProperty.java new file mode 100644 index 0000000000..cb38867016 --- /dev/null +++ b/qadevOOo/tests/java/ifc/beans/_XProperty.java @@ -0,0 +1,34 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.beans; + +import lib.MultiMethodTest; + +import com.sun.star.beans.Property; +import com.sun.star.beans.XProperty; + + +public class _XProperty extends MultiMethodTest { + public XProperty oObj; + + public void _getAsProperty() { + Property prop = oObj.getAsProperty(); + boolean res = (prop.Type != null); + tRes.tested("getAsProperty()", res); + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/beans/_XPropertyAccess.java b/qadevOOo/tests/java/ifc/beans/_XPropertyAccess.java new file mode 100644 index 0000000000..697290dc73 --- /dev/null +++ b/qadevOOo/tests/java/ifc/beans/_XPropertyAccess.java @@ -0,0 +1,225 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.beans; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.beans.PropertyVetoException; +import com.sun.star.lang.WrappedTargetException; +import lib.MultiMethodTest; +import com.sun.star.beans.UnknownPropertyException; +import com.sun.star.beans.XPropertyAccess; +import lib.Status; +import lib.StatusException; + +/** + * Testing <code>com.sun.star.beans.XPropertyAccess</code> + * interface methods : + * <ul> + * <li><code>getPropertyValues()</code></li> + * <li><code>setPropertyValues()</code></li> + * </ul> + * @see com.sun.star.beans.XPropertyAccess + */ +public class _XPropertyAccess extends MultiMethodTest { + + /** + * oObj filled by MultiMethodTest + */ + public XPropertyAccess oObj = null;// oObj filled by MultiMethodTest + + /** + * object relation X<CODE>PropertyAccess.propertyToChange</CODE><br> + * This relation must be filled from the module. It contains a property which must + * be kind of String property, available at <CODE>getPropertyValues()</CODE> and changeable by + * <CODE>setPropertyValues()</CODE> + */ + public PropertyValue propertyToChange = null; + + /** + * checks if the object relation <CODE>XPropertyAccess.propertyToChange</CODE> + * is available + */ + @Override + public void before() { + propertyToChange = (PropertyValue) tEnv.getObjRelation("XPropertyAccess.propertyToChange"); + if (propertyToChange == null) { + throw new StatusException(Status.failed("Object raltion 'XPropertyAccess.propertyToChange' is null")); + } + } + + /** + * Test calls the method and checks if the returned sequence contains a property which is named + * in the object relation <code>XPropertyAccess.propertyToChange</code>. + */ + public void _getPropertyValues() { + PropertyValue[] properties = oObj.getPropertyValues(); + + boolean ok = true; + + if (properties != null){ + + boolean found = false; + for (int i=0; i < properties.length; i++){ + if (properties[i].Name.equals(propertyToChange.Name)) found = true; + } + if (! found){ + log.println("ERROR: could not find desired property '"+ propertyToChange.Name+"'"); + ok=false; + } + + } else { + log.println("ERROR: the method returned NULL"); + ok =false; + } + + tRes.tested("getPropertyValues()", ok ); + } + + /** + * Test calls the method and checks if: + * <ul> + * <li>the property given by the object relation + * <CODE>XPropertyAccess.propertyToChange</CODE> has changed</LI> + * <li><CODE>com.sun.star.lang.IllegalArgumentException</CODE> was thrown if a <CODE>Integer</CODE> + * value was set to a <CODE>String</CODE> property</LI> + * <li><CODE>com.sun.star.beans.UnknownPropertyException</CODE> was thrown if an invalid property + * was set</LI> + * </ul> + */ + public void _setPropertyValues(){ + + boolean ok = true; + boolean test = true; + boolean exp = false; + + try { + PropertyValue[] newProps = new PropertyValue[1]; + newProps[0] = propertyToChange; + + log.println("try to set property values given by object relation 'XPropertyAccess.propertyToChange'..."); + oObj.setPropertyValues(newProps); + + } catch (UnknownPropertyException ex) { + log.println("ERROR: Exception was thrown while trying to set property value: " + + ex.toString()); + test = false; + } catch (PropertyVetoException ex) { + log.println("ERROR: Exception was thrown while trying to set property value: " + + ex.toString()); + test = false; + } catch (WrappedTargetException ex) { + log.println("ERROR: Exception was thrown while trying to set property value: " + + ex.toString()); + test = false; + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: Exception was thrown while trying to set property value: " + + ex.toString()); + test = false; + } + + if ( test){ + log.println("... OK"); + } + + ok &= test; + test = false; + exp = false; + try { + log.println("try to set integer value to string property, " + + "expect 'com.sun.star.lang.IllegalArgumentException'..."); + PropertyValue[] newProps = new PropertyValue[1]; + PropertyValue failedProp = new PropertyValue(); + failedProp.Name = propertyToChange.Name; + failedProp.Value = Integer.valueOf(10); + newProps[0] = failedProp; + oObj.setPropertyValues(newProps); + } catch (PropertyVetoException ex) { + log.println("ERROR: unexpected exception was thrown while trying to set null value: " + + ex.toString()); + exp = true; + } catch (WrappedTargetException ex) { + log.println("ERROR: unexpected exception was thrown while trying to set null value: " + + ex.toString()); + exp = true; + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("OK: expected exception was thrown while trying to set null value: " + + ex.toString()); + test = true; + exp = true; + } catch (UnknownPropertyException ex) { + log.println("ERROR: unexpected exception was thrown while trying to set null value: " + + ex.toString()); + exp = true; + } + + if (! exp){ + log.println("FAILED: expected exception 'UnknownPropertyException' was not thrown"); + } else { + if (test) log.println("... OK"); + } + + ok &= test; + test = false; + exp = false; + try { + + log.println("try to set values with invalid property name. " + + "Expect 'com.sun.star.beans.UnknownPropertyException'..."); + + PropertyValue[] newProps = new PropertyValue[1]; + PropertyValue newProp = new PropertyValue(); + newProp.Name = "XPropertyAccess.InvalidPropertyName"; + newProp.Value = "invalid property"; + newProps[0] = newProp; + + oObj.setPropertyValues(newProps); + + } catch (WrappedTargetException ex) { + log.println("ERROR: unexpected exception was thrown while trying to set invalid value: " + + ex.toString()); + exp = true; + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: unexpected exception was thrown while trying to set invalid value: " + + ex.toString()); + exp = true; + } catch (PropertyVetoException ex) { + log.println("ERROR: unexpected exception was thrown while trying to set invalid value: " + + ex.toString()); + exp = true; + } catch (UnknownPropertyException ex) { + log.println("OK: Expected exception was thrown while trying to set invalid value: " + + ex.toString()); + exp = true; + test = true; + } + + ok &= test; + + if (! exp){ + log.println("FAILED: expected exception 'UnknownPropertyException' was not thrown"); + } else { + if (test) log.println("... OK"); + } + + tRes.tested("setPropertyValues()", ok); + } + +} /// finish class XPropertyAccess + + diff --git a/qadevOOo/tests/java/ifc/beans/_XPropertyContainer.java b/qadevOOo/tests/java/ifc/beans/_XPropertyContainer.java new file mode 100644 index 0000000000..00fcff66f0 --- /dev/null +++ b/qadevOOo/tests/java/ifc/beans/_XPropertyContainer.java @@ -0,0 +1,299 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.beans; + +import com.sun.star.beans.IllegalTypeException; +import com.sun.star.beans.NotRemoveableException; +import com.sun.star.beans.PropertyExistException; +import com.sun.star.uno.Any; +import lib.MultiMethodTest; +import com.sun.star.beans.UnknownPropertyException; +import com.sun.star.beans.XPropertyContainer; +import lib.Status; +import lib.StatusException; + +/** + * Testing <code>com.sun.star.beans.XPropertyAccess</code> + * interface methods : + * <ul> + * <li><code>addProperty()</code></li> + * <li><code>removeProperty()</code></li> + * </ul> + * @see com.sun.star.beans.XPropertyAccess + */ +public class _XPropertyContainer extends MultiMethodTest { + + /** + * oObj filled by MultiMethodTest + */ + public XPropertyContainer oObj = null;// oObj filled by MultiMethodTest + + /** + * object relation X<CODE>PropertyAccess.propertyNotRemovable</CODE><br> + * This relation must be filled from the module. It contains a property which must + * be a property of the implementation object. + */ + private String propertyNotRemovable = null; + + /** + * checks if the object relation <CODE>XPropertyAccess.propertyNotRemovable</CODE> + * is available + */ + @Override + public void before() { + propertyNotRemovable = (String) tEnv.getObjRelation("XPropertyContainer.propertyNotRemovable"); + if (propertyNotRemovable == null) { + throw new StatusException(Status.failed("Object raltion 'XPropertyAccess.propertyNotRemovable' is null")); + } + } + + + + /** + * Test calls the method and checks if the returned sequence contains a property which is named + * in the object relation <code>XPropertyAccess.propertyNotRemovable</code>. + */ + public void _addProperty() { + + boolean ok = true; + boolean test = true; + boolean exp = false; + + try { + log.println("try to add following property:\n" + + "\t('myXPropertContainerProperty', com.sun.star.beans.PropertyAttribute.MAYBEVOID, null) ..."); + oObj.addProperty("myXPropertContainerProperty" , com.sun.star.beans.PropertyAttribute.MAYBEVOID, null); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: Exception was thrown while adding following property: " + + "('myXPropertContainerProperty', com.sun.star.beans.PropertyAttribute.MAYBEVOID, null) : " + + ex.toString()); + log.println("... FAILED"); + test = false; + } catch (PropertyExistException ex) { + log.println("ERROR: Exception was thrown while adding following property: " + + "('myXPropertContainerProperty', com.sun.star.beans.PropertyAttribute.MAYBEVOID, null) : " + + ex.toString()); + log.println("... FAILED"); + test = false; + } catch (IllegalTypeException ex) { + log.println("ERROR: Exception was thrown while adding following property: " + + "('myXPropertContainerProperty', com.sun.star.beans.PropertyAttribute.MAYBEVOID, null) : " + + ex.toString()); + log.println("... FAILED"); + test = false; + } + + if ( test){ + log.println("... OK"); + } + + ok &= test; + test = false; + exp = false; + try { + log.println("add following property second time:\n" + + "\t('myXPropertContainerProperty', com.sun.star.beans.PropertyAttribute.MAYBEVOID, null) ..."); + oObj.addProperty("myXPropertContainerProperty" , com.sun.star.beans.PropertyAttribute.MAYBEVOID, null); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: wrong Exception was thrown while adding following property: " + + "('myXPropertContainerProperty', com.sun.star.beans.PropertyAttribute.MAYBEVOID, null) : " + + "Expected: 'PropertyExistException'\n" + + "Got: 'IllegalArgumentException\n" + + ex.toString()); + log.println("... FAILED"); + exp = true; + } catch (PropertyExistException ex) { + log.println("OK: expected Exception was thrown." + ex.toString()); + test = true; + exp = true; + } catch (IllegalTypeException ex) { + log.println("ERROR: wrong Exception was thrown while adding following property: " + + "('myXPropertContainerProperty', com.sun.star.beans.PropertyAttribute.MAYBEVOID, null) : " + + "Expected: 'PropertyExistException'\n" + + "Got: 'IllegalTypeException\n" + + ex.toString()); + log.println("... FAILED"); + exp = true; + } + if (! exp){ + log.println("FAILED: expected exception 'UnknownPropertyException' was not thrown"); + } else { + if (test) log.println("... OK"); + } + + ok &= test; + test = false; + exp = false; + try { + log.println("try to add following property:\n" + + "\t('IllegalTypeProperty', com.sun.star.beans.PropertyAttribute.MAYBEVOID, Any.VOID) ..."); + oObj.addProperty("IllegalTypeProperty", com.sun.star.beans.PropertyAttribute.MAYBEVOID, Any.VOID); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: wrong Exception was thrown while adding following property: " + + "'', com.sun.star.beans.PropertyAttribute.MAYBEVOID, null\n" + + "Expected: 'IllegalTypeException'\n" + + "Got: 'IllegalArgumentException\n" + + ex.toString()); + log.println("... FAILED"); + exp = true; + } catch (PropertyExistException ex) { + log.println("ERROR: wrong Exception was thrown while adding following property: " + + "'', com.sun.star.beans.PropertyAttribute.MAYBEVOID, null\n" + + "Expected: 'IllegalArgumentException'\n" + + "Got: 'PropertyExistException\n" + + ex.toString()); + log.println("... FAILED"); + exp = true; + } catch (IllegalTypeException ex) { + log.println("OK: expected Exception was thrown." + ex.toString()); + test = true; + exp = true; + } + + if (! exp){ + log.println("FAILED: expected exception 'IllegalTypeException' was not thrown"); + } else { + if (test) log.println("... OK"); + } + + ok &= test; + test = false; + exp = false; + try { + short attrib = -1; + log.println("add following property:\n" + + "'', -1, new Object"); + oObj.addProperty("", attrib, null); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("OK: expected Exception was thrown." + ex.toString()); + test = true; + exp = true; + } catch (PropertyExistException ex) { + log.println("ERROR: wrong Exception was thrown while adding following property: " + + "'invalidPropertyAttribute', -1, null\n" + + "Expected: 'IllegalTypeException'\n" + + "Got: 'PropertyExistException\n" + + ex.toString()); + log.println("... FAILED"); + exp = true; + } catch (IllegalTypeException ex) { + log.println("ERROR: unexpected Exception was thrown while adding following property: " + + "'', -1, null\n" + + "Expected: 'IllegalArgumentException'\n" + + "Got: 'IllegalTypeException\n" + + ex.toString()); + log.println("... FAILED"); + exp = true; + } + + if (! exp){ + log.println("FAILED: expected exception 'IllegalArgumentException' was not thrown"); + } else { + if (test) log.println("... OK"); + } + + ok &= test; + + tRes.tested("addProperty()", ok ); + } + + /** + * Test calls the method and checks if the returned sequence contains a property which is named + * in the object relation <code>XPropertyAccess.propertyNotRemovable</code>. + */ + public void _removeProperty() { + + requiredMethod("addProperty()"); + + boolean ok = true; + boolean test = true; + boolean exp = false; + + try { + log.println("remove 'myXPropertContainerProperty'"); + oObj.removeProperty("myXPropertContainerProperty"); + } catch (NotRemoveableException ex) { + log.println("ERROR: could not remote property 'myXPropertContainerProperty'" + ex.toString()); + log.println("... FAILED"); + test = false; + } catch (UnknownPropertyException ex) { + log.println("ERROR: could not remote property 'myXPropertContainerProperty'" + ex.toString()); + log.println("... FAILED"); + test = false; + } + if ( test){ + log.println("... OK"); + } + + ok &= test; + test = false; + exp=false; + + try { + log.println("remove not removable property '" + propertyNotRemovable + "'") ; + oObj.removeProperty(propertyNotRemovable); + } catch (NotRemoveableException ex) { + log.println("OK: expected Exception was thrown: " + ex.toString()); + test = true; + exp = true; + } catch (UnknownPropertyException ex) { + log.println("ERROR: wrong exception was thrown.\n" + + "Expected: 'NotRemoveableException'\n" + + "Got: 'UnknownPropertyException'\n" + + ex.toString()); + log.println("... FAILED"); + exp = true; + } + + if (! exp){ + log.println("FAILED: expected exception 'NotRemoveableException' was not thrown"); + } else { + if (test) log.println("... OK"); + } + + ok &= test; + test = false; + exp = false; + + try { + log.println("remove property 'thisPropertyDoesNotExist'"); + oObj.removeProperty("thisPropertyDoesNotExist"); + } catch (UnknownPropertyException ex) { + log.println("OK: expected Exception was thrown: " + ex.toString()); + test = true; + exp = true; + } catch (NotRemoveableException ex) { + log.println("ERROR: wrong exception was thrown.\n" + + "Expected: 'UnknownPropertyException'\n" + + "Got: 'NotRemoveableException\n" + + ex.toString()); + log.println("... FAILED"); + exp = true; + } + if (! exp){ + log.println("FAILED: expected exception 'UnknownPropertyException' was not thrown"); + } else { + if (test) log.println("... OK"); + } + + tRes.tested("removeProperty()", ok ); + } + + +} /// finish class XPropertyContainer diff --git a/qadevOOo/tests/java/ifc/beans/_XPropertySet.java b/qadevOOo/tests/java/ifc/beans/_XPropertySet.java new file mode 100644 index 0000000000..0fe6b25934 --- /dev/null +++ b/qadevOOo/tests/java/ifc/beans/_XPropertySet.java @@ -0,0 +1,645 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.beans; + +import java.util.ArrayList; + +import lib.MultiMethodTest; +import util.ValueChanger; +import util.utils; + +import com.sun.star.beans.Property; +import com.sun.star.beans.PropertyAttribute; +import com.sun.star.beans.PropertyChangeEvent; +import com.sun.star.beans.XPropertyChangeListener; +import com.sun.star.beans.XPropertySet; +import com.sun.star.beans.XPropertySetInfo; +import com.sun.star.beans.XVetoableChangeListener; +import com.sun.star.lang.EventObject; + +/** +* Testing <code>com.sun.star.beans.XPropertySet</code> +* interface methods : +* <ul> +* <li><code>getPropertySetInfo()</code></li> +* <li><code>setPropertyValue()</code></li> +* <li><code>getPropertyValue()</code></li> +* <li><code>addPropertyChangeListener()</code></li> +* <li><code>removePropertyChangeListener()</code></li> +* <li><code>addVetoableChangeListener()</code></li> +* <li><code>removeVetoableChangeListener()</code></li> +* </ul> +* @see com.sun.star.beans.XPropertySet +*/ +public class _XPropertySet extends MultiMethodTest { + + public XPropertySet oObj = null; + + /** + * Flag that indicates change listener was called. + */ + private boolean propertyChanged = false; + + /** + * Listener that must be called on bound property changing. + */ + public class MyChangeListener implements XPropertyChangeListener { + /** + * Just set <code>propertyChanged</code> flag to true. + */ + public void propertyChange(PropertyChangeEvent e) { + propertyChanged = true; + } + public void disposing (EventObject obj) {} + } + + private final XPropertyChangeListener PClistener = new MyChangeListener(); + + /** + * Flag that indicates veto listener was called. + */ + private boolean vetoableChanged = false; + + /** + * Listener that must be called on constrained property changing. + */ + public class MyVetoListener implements XVetoableChangeListener { + /** + * Just set <code>vetoableChanged</code> flag to true. + */ + public void vetoableChange(PropertyChangeEvent e) { + vetoableChanged = true; + } + public void disposing (EventObject obj) {} + } + + private final XVetoableChangeListener VClistener = new MyVetoListener(); + + /** + * Structure that collects the properties of different types to test : + * Constrained, Bound and Normal. + */ + private static final class PropsToTest { + ArrayList< String > constrained = new ArrayList< String >(); + ArrayList< String > bound = new ArrayList< String >(); + ArrayList< String > normal = new ArrayList< String >(); + } + + private final PropsToTest PTT = new PropsToTest(); + + /** + * Tests method <code>getPropertySetInfo</code>. After test completed + * call {@link #getPropsToTest} method to retrieve different kinds + * of properties to test then. <p> + * Has OK status if not null <code>XPropertySetInfo</code> + * object returned.<p> + * Since <code>getPropertySetInfo</code> is optional, it may return null, + * if it is not implemented. This method uses then an object relation + * <code>PTT</code> (Properties To Test) to determine available properties. + * All tests for services without <code>getPropertySetInfo</code> must + * provide this object relation. + */ + public void _getPropertySetInfo() { + + XPropertySetInfo propertySetInfo = oObj.getPropertySetInfo(); + + if (propertySetInfo == null) { + log.println("getPropertySetInfo() method returned null"); + tRes.tested("getPropertySetInfo()", true) ; + String[] ptt = (String[]) tEnv.getObjRelation("PTT"); + PTT.normal.clear(); + PTT.bound.clear(); + PTT.constrained.clear(); + PTT.normal.add( ptt[0] ); + PTT.bound.add( ptt[1] ); + PTT.constrained.add( ptt[2] ); + } else { + tRes.tested("getPropertySetInfo()", true ); + getPropsToTest(propertySetInfo); + } + } // end of getPropertySetInfo() + + /** + * Tests change listener which added for bound properties. + * Adds listener to bound property (if it exists), then changes + * its value and check if listener was called. <p> + * Method tests to be successfully completed before : + * <ul> + * <li> <code>getPropertySetInfo</code> : in this method test + * one of bound properties is retrieved. </li> + * </ul> <p> + * Has OK status if NO bound properties exist or if listener + * was successfully called. + */ + public void _addPropertyChangeListener() { + + requiredMethod("getPropertySetInfo()"); + + int count = PTT.bound.size(); + if ( count==0 || PTT.bound.get(0).equals("none") ) { + log.println("*** No bound properties found ***"); + tRes.tested("addPropertyChangeListener()", true) ; + } else { + boolean error = false; + for (int i = 0; i < count; i++) { + String propertyName = PTT.bound.get(i); + propertyChanged = false; + try { + oObj.addPropertyChangeListener(propertyName,PClistener); + Object gValue = oObj.getPropertyValue(propertyName); + log.println("Check bound property: " + propertyName ); + oObj.setPropertyValue(propertyName, + ValueChanger.changePValue(gValue)); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } // end of try-catch + error = error || !propertyChanged; + if (!propertyChanged) { + log.println("propertyChangeListener wasn't called for '"+ + propertyName+"'"); + } + } + tRes.tested("addPropertyChangeListener()", !error); + } + } // end of addPropertyChangeListener() + + /** + * Tests vetoable listener which added for constrained properties. + * Adds listener to constrained property (if it exists), then changes + * its value and check if listener was called. <p> + * Method tests to be successfully completed before : + * <ul> + * <li> <code>getPropertySetInfo</code> : in this method test + * one of constrained properties is retrieved. </li> + * </ul> <p> + * Has OK status if NO constrained properties exist or if listener + * was successfully called. + */ + public void _addVetoableChangeListener() { + + requiredMethod("getPropertySetInfo()"); + + int count = PTT.constrained.size(); + if ( count==0 || PTT.constrained.get(0).equals("none") ) { + log.println("*** No constrained properties found ***"); + tRes.tested("addVetoableChangeListener()", true) ; + } else { + boolean error = false; + for (int i = 0; i < count; i++) { + String propertyName = PTT.constrained.get(i); + vetoableChanged = false; + try { + oObj.addVetoableChangeListener(propertyName,VClistener); + Object gValue = oObj.getPropertyValue(propertyName); + oObj.setPropertyValue(propertyName, + ValueChanger.changePValue(gValue)); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } // end of try-catch + error = error || !vetoableChanged; + if (!vetoableChanged) { + log.println("vetoableChangeListener wasn't called for '"+ + propertyName+"'"); + } + } + tRes.tested("addVetoableChangeListener()",!error); + } + } // end of addVetoableChangeListener() + + + /** + * Tests <code>setPropertyValue</code> method. + * Stores value before call, and compares it with value after + * call. <p> + * Method tests to be successfully completed before : + * <ul> + * <li> <code>getPropertySetInfo</code> : in this method test + * one of normal properties is retrieved. </li> + * </ul> <p> + * Has OK status if NO normal properties exist or if value before + * method call is not equal to value after. + */ + public void _setPropertyValue() { + + requiredMethod("getPropertySetInfo()"); + + Object gValue = null; + Object sValue = null; + + int count = PTT.normal.size(); + if ( count==0 || PTT.normal.get(0).equals("none") ) { + log.println("*** No changeable properties found ***"); + tRes.tested("setPropertyValue()", true) ; + } else { + boolean error = false; + for (int i = 0; i < count; i++) { + String propertyName = PTT.normal.get(i); + try { + log.println("try to change value of property '" + propertyName + "'" ); + gValue = oObj.getPropertyValue(propertyName); + sValue = ValueChanger.changePValue(gValue, propertyName); + oObj.setPropertyValue(propertyName, sValue); + sValue = oObj.getPropertyValue(propertyName); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } // end of try-catch + /* this is stupid: we can't set properties whose semantics we + * don't know to random values in an arbitrary order and + * expect that to actually work. + if( gValue.equals(sValue) ) + { + log.println("setting property '"+ propertyName+"' failed"); + error = true; + } + */ + } + tRes.tested("setPropertyValue()",!error); + } //endif + } // end of setPropertyValue() + + /** + * Tests <code>getPropertyValue</code> method for the given property. + * Returns true if no exceptions occurred + */ + private boolean getSinglePropertyValue( String propertyName ) + { + boolean runOk = false; + try { + oObj.getPropertyValue(propertyName); + runOk = true; + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception occurred while trying to get property '"+ + propertyName+"'"); + e.printStackTrace(log); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while trying to get property '"+ + propertyName+"'"); + e.printStackTrace(log); + } + return runOk; + } + + /** + * Tests <code>getPropertyValue</code> method. + * Just call this method and checks for no exceptions <p> + * Method tests to be successfully completed before : + * <ul> + * <li> <code>getPropertySetInfo</code> : in this method test + * one of normal properties is retrieved. </li> + * </ul> <p> + * Has OK status if NO normal properties exist or if no + * exceptions were thrown. + */ + public void _getPropertyValue() { + + requiredMethod("getPropertySetInfo()"); + + int count = PTT.normal.size(); + if ( count==0 || PTT.normal.get(0).equals("none") ) { + Property[] properties = oObj.getPropertySetInfo().getProperties(); + if( properties.length > 0 ) { + String propertyName = properties[0].Name; + log.println("All properties are Read Only"); + log.println("Using: "+propertyName); + tRes.tested("getPropertyValue()", getSinglePropertyValue( propertyName ) ); + } + else { + log.println("*** No properties found ***"); + tRes.tested("getPropertyValue()", true) ; + } + } else { + boolean error = false; + for (int i = 0; i < count; i++) { + String propertyName = PTT.normal.get(i); + boolean runOk = getSinglePropertyValue( propertyName ); + if( !runOk ) + { + error = true; + log.println("getPropertyValue() failed for property '"+propertyName+"'"); + } + } + tRes.tested("getPropertyValue()", !error) ; + } + } + + /** + * Tests <code>removePropertyChangeListener</code> method. + * Removes change listener, then changes bound property value + * and checks if the listener was NOT called. + * Method tests to be successfully completed before : + * <ul> + * <li> <code>addPropertyChangeListener</code> : here listener + * was added. </li> + * </ul> <p> + * Has OK status if NO bound properties exist or if listener + * was not called and no exceptions arose. + */ + public void _removePropertyChangeListener() { + + requiredMethod("addPropertyChangeListener()"); + + int count = PTT.bound.size(); + if ( count==0 || PTT.bound.get(0).equals("none") ) { + log.println("*** No bound properties found ***"); + tRes.tested("removePropertyChangeListener()", true) ; + } else { + + //remove all listeners first + for (int i = 0; i < count; i++) { + String propertyName = PTT.bound.get(i); + try { + oObj.removePropertyChangeListener(propertyName,PClistener); + } catch (Exception e) { + log.println("Exception occurred while removing change listener from"+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } + } + + boolean error = false; + for (int i = 0; i < count; i++) { + String propertyName = PTT.bound.get(i); + try { + propertyChanged = false; + oObj.addPropertyChangeListener(propertyName,PClistener); + oObj.removePropertyChangeListener(propertyName,PClistener); + Object gValue = oObj.getPropertyValue(propertyName); + oObj.setPropertyValue(propertyName, + ValueChanger.changePValue(gValue)); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } // end of try-catch + + error = error || propertyChanged; + if (propertyChanged) { + log.println("propertyChangeListener was called after removing"+ + " for '"+propertyName+"'"); + } + } + tRes.tested("removePropertyChangeListener()",!error); + } + } // end of removePropertyChangeListener() + + + /** + * Tests <code>removeVetoableChangeListener</code> method. + * Removes vetoable listener, then changes constrained property value + * and checks if the listener was NOT called. + * Method tests to be successfully completed before : + * <ul> + * <li> <code>addPropertyChangeListener</code> : here vetoable listener + * was added. </li> + * </ul> <p> + * Has OK status if NO constrained properties exist or if listener + * was NOT called and no exceptions arose. + */ + public void _removeVetoableChangeListener() { + + requiredMethod("addVetoableChangeListener()"); + + int count = PTT.constrained.size(); + if ( count==0 || PTT.constrained.get(0).equals("none") ) { + log.println("*** No constrained properties found ***"); + tRes.tested("removeVetoableChangeListener()", true) ; + } else { + + //remove all listeners first + for (int i = 0; i < count; i++) { + String propertyName = PTT.constrained.get(i); + try { + oObj.removeVetoableChangeListener(propertyName,VClistener); + } catch (Exception e) { + log.println("Exception occurred while removing veto listener from"+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } + } + + boolean error = false; + for (int i = 0; i < count; i++) { + String propertyName = PTT.constrained.get(i); + vetoableChanged = false; + try { + oObj.addVetoableChangeListener(propertyName,VClistener); + oObj.removeVetoableChangeListener(propertyName,VClistener); + Object gValue = oObj.getPropertyValue(propertyName); + oObj.setPropertyValue(propertyName, + ValueChanger.changePValue(gValue)); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while trying to change "+ + "property '"+ propertyName+"'"); + e.printStackTrace(log); + } // end of try-catch + error = error || vetoableChanged; + if (vetoableChanged) { + log.println("vetoableChangeListener was called after "+ + "removing for '"+propertyName+"'"); + } + } + tRes.tested("removeVetoableChangeListener()",!error); + } + } // end of removeVetoableChangeListener() + + /** + * Gets the properties being tested. Searches and stores by one + * property of each kind (Bound, Vetoable, Normal). + */ + public void getPropsToTest(XPropertySetInfo xPSI) { + + Property[] properties = xPSI.getProperties(); + // some properties should not be changed in a unspecific way + String[] skip = {"PrinterName", "CharRelief", "IsLayerMode"}; + + for (int i = 0; i < properties.length; i++) { + + Property property = properties[i]; + String name = property.Name; + + boolean cont = false; + for (int j = 0; j < skip.length; j++) { + if (name.equals(skip[j])){ + log.println("skipping '" + name + "'"); + cont = true; + } + } + + if (cont) continue; + + boolean isWritable = ((property.Attributes & + PropertyAttribute.READONLY) == 0); + boolean isNotNull = ((property.Attributes & + PropertyAttribute.MAYBEVOID) == 0); + boolean isBound = ((property.Attributes & + PropertyAttribute.BOUND) != 0); + boolean isConstr = ((property.Attributes & + PropertyAttribute.CONSTRAINED) != 0); + boolean canChange = false; + + if ( !isWritable ) log.println("Property '"+name+"' is READONLY"); + + if (name.endsWith("URL")) isWritable = false; + if (name.startsWith("Fill")) isWritable = false; + if (name.startsWith("Font")) isWritable = false; + if (name.startsWith("IsNumbering")) isWritable = false; + if (name.startsWith("LayerName")) isWritable = false; + if (name.startsWith("Line")) isWritable = false; + if (name.startsWith("TextWriting")) isWritable = false; + + if ( isWritable && isNotNull ) canChange = isChangeable(name); + + if ( isWritable && isNotNull && isBound && canChange) { + PTT.bound.add(name); + } + + if ( isWritable && isNotNull && isConstr && canChange) { + PTT.constrained.add(name); + } + + if ( isWritable && isNotNull && canChange) { + PTT.normal.add(name); + } + + + } // endfor + } + + public boolean isChangeable(String name) { + boolean hasChanged = false; + try { + Object getProp = oObj.getPropertyValue(name); + log.println("Getting: "+getProp); + if (name.equals("xinterfaceA")) { + System.out.println("drin"); + } + + Object setValue = null; + if (getProp != null) { + if (!utils.isVoid(getProp)) + setValue = ValueChanger.changePValue(getProp); + else log.println("Property '"+name+ + "' is void but MAYBEVOID isn't set"); + } else log.println("Property '"+name+"'is null and can't be changed"); + if (name.equals("LineStyle")) setValue = null; + if (setValue != null) { + log.println("Setting to :"+setValue); + oObj.setPropertyValue(name, setValue); + hasChanged = (! getProp.equals(oObj.getPropertyValue(name))); + } else log.println("Couldn't change Property '"+name+"'"); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("'" + name + "' throws exception '" + e + "'"); + e.printStackTrace(log); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("'" + name + "' throws exception '" + e + "'"); + e.printStackTrace(log); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("'" + name + "' throws exception '" + e + "'"); + e.printStackTrace(log); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("'" + name + "' throws exception '" + e + "'"); + e.printStackTrace(log); + } catch (com.sun.star.uno.RuntimeException e) { + log.println("'" + name + "' throws exception '" + e + "'"); + e.printStackTrace(log); + } catch (java.lang.ArrayIndexOutOfBoundsException e) { + log.println("'" + name + "' throws exception '" + e + "'"); + e.printStackTrace(log); + } + + return hasChanged; + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + + +} // finish class _XPropertySet + diff --git a/qadevOOo/tests/java/ifc/beans/_XPropertySetInfo.java b/qadevOOo/tests/java/ifc/beans/_XPropertySetInfo.java new file mode 100644 index 0000000000..dc6ad368f7 --- /dev/null +++ b/qadevOOo/tests/java/ifc/beans/_XPropertySetInfo.java @@ -0,0 +1,115 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.beans; + +import lib.MultiMethodTest; + +import com.sun.star.beans.Property; +import com.sun.star.beans.UnknownPropertyException; +import com.sun.star.beans.XPropertySetInfo; + +/** +* Testing <code>com.sun.star.beans.XPropertySetInfo</code> +* interface methods : +* <ul> +* <li><code>getProperties()</code></li> +* <li><code>getPropertyByName()</code></li> +* <li><code>hasPropertyByName()</code></li> +* </ul> +* @see com.sun.star.beans.XPropertySetInfo +*/ +public class _XPropertySetInfo extends MultiMethodTest { + + public XPropertySetInfo oObj = null;// oObj filled by MultiMethodTest + + public Property IsThere = null; + + /** + * Test calls the method and stores one of the properties.<p> + * Has <b> OK </b> status if the method successfully returns + * value that isn't null.<p> + */ + public void _getProperties() { + Property[] properties = oObj.getProperties(); + IsThere = properties[0]; + tRes.tested("getProperties()", ( properties != null )); + } + + /** + * Test calls the method with property name that certainly present + * in the property set and again calls the method with property name + * that certainly doesn't present in the property set.<p> + * Has <b> OK </b> status if the method in one case successfully + * returns value that isn't null and no exceptions were thrown and + * in other case exception was thrown.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code>getProperties()</code> : to have a property that certainly + * present in the property set</li> + * </ul> + */ + public void _getPropertyByName() { + requiredMethod("getProperties()"); + boolean result; + try { + Property prop = oObj.getPropertyByName(IsThere.Name); + result = (prop != null); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception occurred while testing" + + " getPropertyByName with existing property"); + e.printStackTrace(log); + result = false; + } + + try { + oObj.getPropertyByName("Jupp"); + log.println("No Exception thrown while testing"+ + " getPropertyByName with non existing property"); + result = false; + } + catch (UnknownPropertyException e) { + result = true; + } + tRes.tested("getPropertyByName()", result); + } + + /** + * Test calls the method with property name that certainly present + * in the property set and again calls the method with property name + * that certainly doesn't present in the property set.<p> + * Has <b> OK </b> status if the method successfully returns true in + * one case and false in other case.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code>getProperties()</code> : to have a property that certainly + * present in the property set</li> + * </ul> + */ + public void _hasPropertyByName() { + requiredMethod("getProperties()"); + tRes.tested("hasPropertyByName()", + ( + (oObj.hasPropertyByName(IsThere.Name)) && + (!oObj.hasPropertyByName("Jupp")) ) + ); + } + +} /// finish class XPropertySetInfo + + diff --git a/qadevOOo/tests/java/ifc/beans/_XPropertyState.java b/qadevOOo/tests/java/ifc/beans/_XPropertyState.java new file mode 100644 index 0000000000..ca7337a741 --- /dev/null +++ b/qadevOOo/tests/java/ifc/beans/_XPropertyState.java @@ -0,0 +1,266 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.beans; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.Property; +import com.sun.star.beans.PropertyAttribute; +import com.sun.star.beans.PropertyState; +import com.sun.star.beans.XPropertySet; +import com.sun.star.beans.XPropertySetInfo; +import com.sun.star.beans.XPropertyState; +import com.sun.star.uno.Any; +import com.sun.star.uno.UnoRuntime; + + +/** +* Testing <code>com.sun.star.beans.XPropertyState</code> +* interface methods : +* <ul> +* <li><code> getPropertyState()</code></li> +* <li><code> getPropertyStates()</code></li> +* <li><code> setPropertyToDefault()</code></li> +* <li><code> getPropertyDefault()</code></li> +* </ul> +* Test is <b> NOT </b> multithread compliant. <p> +* After test completion object environment has to be recreated. <p> +* <b>Note:</b> object tested must also implement +* <code>com.sun.star.beans.XPropertySet</code> interface. +* @see com.sun.star.beans.XPropertyState +*/ +public class _XPropertyState extends MultiMethodTest { + + public XPropertyState oObj = null; + + private XPropertySet oPS = null ; + private XPropertySetInfo propertySetInfo = null; + private Property[] properties = null ; + private String pName = null ; + private Object propDef = null ; + + /** + * Queries object for <code>XPropertySet</code> interface and + * initializes some fields used by all methods. <p> + * + * Searches property which is not READONLY and MAYBEDEFAULT, if + * such property is not found, then uses property with only + * READONLY attribute. This property name is stored and is used + * by all tests. + * + * @throws StatusException If <code>XPropertySet</code> is not + * implemented by object. + */ + @Override + public void before() throws StatusException { + oPS = UnoRuntime.queryInterface( XPropertySet.class, oObj ); + if (oPS == null) + throw new StatusException + ("XPropertySet interface isn't implemented.", + new NullPointerException + ("XPropertySet interface isn't implemented.")) ; + + propertySetInfo = oPS.getPropertySetInfo(); + properties = propertySetInfo.getProperties(); + Property prop = null; + for (int i=0;i<properties.length;i++) { + try { + prop = propertySetInfo.getPropertyByName + (properties[i].Name); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Unknown Property "+prop.Name); + } + boolean readOnly = (prop.Attributes & + PropertyAttribute.READONLY) != 0; + boolean maybeDefault = (prop.Attributes & + PropertyAttribute.MAYBEDEFAULT) != 0; + if (!readOnly && maybeDefault) { + pName = properties[i].Name; + log.println("Property '" + pName + "' has attributes "+ + prop.Attributes); + break ; + } else + if (!readOnly) { + pName = properties[i].Name; + log.println("Property '" + pName + + "' is not readonly, may be used ..."); + } else { + log.println("Skipping property '" + properties[i].Name + + "' Readonly: " + readOnly + ", MaybeDefault: " + + maybeDefault); + } + } + + } + + /** + * Test calls the method and checks that no exceptions were thrown. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + */ + public void _getPropertyDefault(){ + boolean result = true ; + String localName = pName; + if (localName == null) { + localName = propertySetInfo.getProperties()[0].Name; + } + try { + propDef = oObj.getPropertyDefault(localName); + log.println("Default property value is : '" + propDef + "'"); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception " + e + + "occurred while getting Property default"); + result=false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception " + e + + "occurred while getting Property default"); + result=false; + } + tRes.tested("getPropertyDefault()", result); + } + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <p> + * Has <b> OK </b> status if the method returns not null value + * and no exceptions were thrown. <p> + */ + public void _getPropertyState(){ + boolean result = true ; + + String localName = pName; + if (localName == null) { + localName = propertySetInfo.getProperties()[0].Name; + } + + try { + PropertyState ps = oObj.getPropertyState(localName); + if (ps == null) { + log.println("!!! Returned value == null") ; + result = false ; + } + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception " + e + + "occurred while getting Property state"); + result = false; + } + tRes.tested("getPropertyState()", result); + } + + /** + * Test calls the method with array of one property name + * and checks return value and that no exceptions were thrown. <p> + * Has <b> OK </b> status if the method returns array with one + * PropertyState and no exceptions were thrown. <p> + */ + public void _getPropertyStates(){ + boolean result = true ; + + String localName = pName; + if (localName == null) { + localName = propertySetInfo.getProperties()[0].Name; + } + + try { + PropertyState[] ps = oObj.getPropertyStates + (new String[] {localName}); + if (ps == null) { + log.println("!!! Returned value == null") ; + result = false ; + } else { + if (ps.length != 1) { + log.println("!!! Array length returned is invalid - " + + ps.length) ; + result = false ; + } + } + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception " + e + + "occurred while getting Property state"); + result = false; + } + + tRes.tested("getPropertyStates()", result); + } + + + /** + * Sets the property to default, then compares the current property + * value to value received by method <code>getPropertyDefault</code>. + * Has <b> OK </b> status if the current property value equals to + * default property. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code>getPropertyDefault</code>: we have to know what is + * default value</li></ul> + */ + public void _setPropertyToDefault(){ + requiredMethod("getPropertyDefault()") ; + + if (pName == null) { + log.println("all found properties are read only"); + tRes.tested("setPropertyToDefault()",Status.skipped(true)); + return; + } + + boolean result = true ; + try { + try { + oObj.setPropertyToDefault(pName); + } + catch(RuntimeException e) { + System.out.println("Ignoring RuntimeException: " + e.getMessage()); + } + if ((properties[0].Attributes & + PropertyAttribute.MAYBEDEFAULT) != 0) { + Object actualDef = propDef ; + if (propDef instanceof Any) { + actualDef = ((Any)propDef).getObject() ; + } + Object actualVal = oPS.getPropertyValue(pName) ; + if (actualVal instanceof Any) { + actualVal = ((Any)actualVal).getObject() ; + } + result = util.ValueComparer.equalValue + (actualDef,actualVal) ; + log.println("Default value = '" + actualDef + + "', returned value = '" + + actualVal + "' for property " + pName) ; + } + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception " + e + + "occurred while setting Property to default"); + result=false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception " + e + + "occurred while testing property value"); + result=false; + } + + tRes.tested("setPropertyToDefault()", result); + } + + @Override + public void after() { + disposeEnvironment() ; + } + + }// EOF _XPropertyState + diff --git a/qadevOOo/tests/java/ifc/beans/_XPropertyWithState.java b/qadevOOo/tests/java/ifc/beans/_XPropertyWithState.java new file mode 100644 index 0000000000..9f93e00209 --- /dev/null +++ b/qadevOOo/tests/java/ifc/beans/_XPropertyWithState.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 ifc.beans; + +import com.sun.star.beans.PropertyState; +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertyWithState; +import lib.Status; +import lib.StatusException; + +/** +* Testing <code>com.sun.star.beans.XPropertyWithState</code> +* interface methods : +* <ul> +* <li><code> getDefaultAsProperty()</code></li> +* <li><code> getStateAsProperty()</code></li> +* <li><code> setToDefaultAsProperty()</code></li> +* </ul> <p> +* @see com.sun.star.beans.XPropertyWithState +*/ + +public class _XPropertyWithState extends MultiMethodTest { + + /** + * the test object + */ + public XPropertyWithState oObj; + + + /** + * Test calls the method. + * Test has ok status if no + * <CODE>com.sun.star.lang.WrappedTargetException</CODE> + * was thrown + */ + public void _getDefaultAsProperty() { + try{ + + oObj.getDefaultAsProperty(); + + } catch (com.sun.star.lang.WrappedTargetException e){ + throw new StatusException(e, Status.failed("'com.sun.star.lang.WrappedTargetException' was thrown")); + } + + tRes.tested("getDefaultAsProperty()", true); + } + + /** + * Test is ok if <CODE>getStateAsProperty()</CODE> returns + * as <CODE>PropertyState</CODE> which is not <CODE>null</CODE> + */ + public void _getStateAsProperty() { + + boolean res = true; + + PropertyState propState = oObj.getStateAsProperty(); + + if (propState == null) { + log.println("the returned PropertyState is null -> FALSE"); + res = false; + } + + tRes.tested("getStateAsProperty()", res); + } + + /** + * Test calls the method. + * Test has ok status if no + * <CODE>com.sun.star.lang.WrappedTargetException</CODE> + * was thrown + */ + public void _setToDefaultAsProperty() { + try{ + + oObj.setToDefaultAsProperty(); + + } catch (com.sun.star.lang.WrappedTargetException e){ + throw new StatusException(e, Status.failed("'com.sun.star.lang.WrappedTargetException' was thrown")); + } + + tRes.tested("setToDefaultAsProperty()", true); + } + +} diff --git a/qadevOOo/tests/java/ifc/beans/_XTolerantMultiPropertySet.java b/qadevOOo/tests/java/ifc/beans/_XTolerantMultiPropertySet.java new file mode 100644 index 0000000000..6860c86902 --- /dev/null +++ b/qadevOOo/tests/java/ifc/beans/_XTolerantMultiPropertySet.java @@ -0,0 +1,330 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.beans; + +import com.sun.star.beans.GetDirectPropertyTolerantResult; +import com.sun.star.beans.GetPropertyTolerantResult; +import com.sun.star.beans.Property; +import com.sun.star.beans.PropertyAttribute; +import com.sun.star.beans.PropertyState; +import com.sun.star.beans.SetPropertyTolerantFailed; +import com.sun.star.beans.XPropertySet; +import com.sun.star.beans.XPropertyState; +import com.sun.star.beans.XTolerantMultiPropertySet; +import com.sun.star.uno.UnoRuntime; + +import java.util.ArrayList; +import java.util.Collections; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import util.ValueChanger; +import util.ValueComparer; + + +public class _XTolerantMultiPropertySet extends MultiMethodTest { + public XTolerantMultiPropertySet oObj; + protected String[] namesOfDirectProperties = null; + protected String[] namesOfProperties = null; + protected Object[] valuesOfProperties = null; + protected Property[] properties = null; + protected XPropertyState pState = null; + protected XPropertySet PS = null; + + + /* + * Queries XPropertySet from the given Component and gets XPropertySetInfo + * from it to get the PropertyNames available and their Values<br> + * Then queries XPropertyState from the given Component + * to get the direct properties<br> + * Throws a lib StatusException if the Component doesn't support XPropertySet or XPropertyState + */ + @Override + public void before() { + PS = UnoRuntime.queryInterface(XPropertySet.class, + tEnv.getTestObject()); + + if (PS == null) { + throw new StatusException(Status.failed( + "Component doesn't provide the needed XPropertySet")); + } + + pState = UnoRuntime.queryInterface( + XPropertyState.class, tEnv.getTestObject()); + + if (pState == null) { + throw new StatusException(Status.failed( + "Component doesn't provide the needed XPropertyState")); + } + + properties = PS.getPropertySetInfo().getProperties(); + namesOfProperties = getProperties(); + valuesOfProperties = getPropertyValues(namesOfProperties); + } + + /* + * Calls the method getDirectPropertyValuesTolerant() and compares the resulting + * sequence with the one gained as direct values in the before() method.<br> + * Has OK state if both sequences equal. + */ + public void _getDirectPropertyValuesTolerant() { + namesOfDirectProperties = getDirectProperties(properties); + + GetDirectPropertyTolerantResult[] GDPR = oObj.getDirectPropertyValuesTolerant( + namesOfProperties); + + boolean res = (GDPR.length == namesOfDirectProperties.length); + + if (!res) { + log.println("Found: "); + + for (int i = 0; i < GDPR.length; i++) { + log.println("\t" + GDPR[i].Name); + } + + log.println("Expected: "); + + for (int i = 0; i < namesOfDirectProperties.length; i++) { + log.println("\t" + namesOfDirectProperties[i]); + } + } else { + for (int i = 0; i < GDPR.length; i++) { + boolean localres = GDPR[i].Name.equals( + namesOfDirectProperties[i]); + + if (!localres) { + log.println("Found: "); + log.println("\t" + GDPR[i].Name); + log.println("Expected: "); + log.println("\t" + namesOfDirectProperties[i]); + } + + res &= localres; + } + } + + tRes.tested("getDirectPropertyValuesTolerant()", res); + } + + public void _getPropertyValuesTolerant() { + requiredMethod("getDirectPropertyValuesTolerant()"); + GetPropertyTolerantResult[] GPR = oObj.getPropertyValuesTolerant( + namesOfProperties); + + boolean res = (GPR.length == namesOfProperties.length); + + if (!res) { + log.println("Length of sequences differs"); + log.println("Found: " + GPR.length); + log.println("Expected: " + namesOfProperties.length); + } else { + for (int i = 0; i < GPR.length; i++) { + boolean localres = true; + + if (!(GPR[i].Value instanceof com.sun.star.uno.Any)) { + localres = ValueComparer.equalValue(GPR[i].Value, + valuesOfProperties[i]); + + } + + if (!localres) { + log.println("Values differ for : " + + namesOfProperties[i]); + log.println("\t" + GPR[i].Value); + log.println("Expected: "); + log.println("\t" + valuesOfProperties[i]); + } + + res &= localres; + } + } + + tRes.tested("getPropertyValuesTolerant()", res); + } + + public void _setPropertyValuesTolerant() { + requiredMethod("getPropertyValuesTolerant()"); + + SetPropertyTolerantFailed[] SPTF = oObj.setPropertyValuesTolerant(namesOfProperties, + getNewValues(valuesOfProperties)); + + //read only properties will throw a PropertyVetoException if they are set + int failures = 0; + + for (int k = 0; k < SPTF.length; k++) { + if (SPTF[k].Result == com.sun.star.beans.TolerantPropertySetResultType.PROPERTY_VETO) { + failures++; + } + } + + int roProps = getCountOfReadOnlyProperties(); + + boolean res = (failures == roProps); + + if (!res) { + log.println("Failures: " + failures); + log.println("Count of R/O properties: " + roProps); + + for (int i = 0; i < SPTF.length; i++) { + if (SPTF[i].Result == com.sun.star.beans.TolerantPropertySetResultType.PROPERTY_VETO) { + failures++; + log.println("Failed for " + SPTF[i].Name); + log.println("\t Result: " + SPTF[i].Result); + } + } + } else { + for (int i = 0; i < SPTF.length; i++) { + boolean localres = true; + GetPropertyTolerantResult[] GPR = oObj.getPropertyValuesTolerant( + namesOfProperties); + + if ((!(GPR[i].Value instanceof com.sun.star.uno.Any)) && + (SPTF[i].Result == com.sun.star.beans.TolerantPropertySetResultType.SUCCESS)) { + localres = ValueComparer.equalValue(GPR[i].Value, + valuesOfProperties[i]); + } + + if (!localres) { + log.println("Values differ for : " + + namesOfProperties[i]); + log.println("\t" + GPR[i].Value); + log.println("Expected: "); + log.println("\t" + valuesOfProperties[i]); + } + + res &= localres; + } + } + + tRes.tested("setPropertyValuesTolerant()", res); + } + + /* + * This method returns a sorted list of property names + * contained in a given sequence of properties that additionally + * have the state DIRECT_VALUE + */ + protected String[] getDirectProperties(Property[] props) { + ArrayList<String> direct = new ArrayList<String>(); + + for (int i = 0; i < props.length; i++) { + String pName = props[i].Name; + + try { + PropertyState state = pState.getPropertyState(pName); + + if (state.equals(PropertyState.DIRECT_VALUE) && isUsable(pName)) + direct.add(pName); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Property '" + pName + "'"); + } + } + + Collections.sort(direct); + + Object[] obj = direct.toArray(); + String[] ret = new String[obj.length]; + + for (int i = 0; i < obj.length; i++) { + ret[i] = (String) obj[i]; + } + + return ret; + } + + private boolean isUsable(String name) { + boolean isUsable=true; + if (name.startsWith("TextWriting")) isUsable = false; + if (name.startsWith("MetaFile")) isUsable = false; + return isUsable; + } + + /* + * This method returns a sorted list of property names + * contained in a given sequence of properties + */ + protected String[] getProperties() { + ArrayList<String> names = new ArrayList<String>(); + + for (int i = 0; i < properties.length; i++) { + String pName = properties[i].Name; + if (isUsable(pName)) names.add(pName); + } + + Collections.sort(names); + + Object[] obj = names.toArray(); + String[] ret = new String[obj.length]; + + for (int i = 0; i < obj.length; i++) { + ret[i] = (String) obj[i]; + } + + return ret; + } + + /* + * Returns the values of a given array of properties in an Object array + */ + protected Object[] getPropertyValues(String[] propertyNames) { + Object[] values = new Object[propertyNames.length]; + + for (int i = 0; i < propertyNames.length; i++) { + try { + values[i] = PS.getPropertyValue(propertyNames[i]); + } catch (com.sun.star.beans.UnknownPropertyException e) { + e.printStackTrace(log); + } catch (com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + } + } + + return values; + } + + protected int getCountOfReadOnlyProperties() { + int ro = 0; + + for (int i = 0; i < properties.length; i++) { + Property property = properties[i]; + boolean isWritable = ((property.Attributes & PropertyAttribute.READONLY) == 0); + + if (!isWritable) { + ro++; + } + } + + return ro; + } + + protected Object[] getNewValues(Object[] oldValues) { + Object[] newValues = new Object[oldValues.length]; + + for (int i = 0; i < oldValues.length; i++) { + if (oldValues[i] instanceof com.sun.star.uno.Any) { + newValues[i] = oldValues[i]; + } else { + newValues[i] = ValueChanger.changePValue(oldValues[i]); + } + } + + return newValues; + } +} diff --git a/qadevOOo/tests/java/ifc/bridge/_XBridge.java b/qadevOOo/tests/java/ifc/bridge/_XBridge.java new file mode 100644 index 0000000000..4e18332844 --- /dev/null +++ b/qadevOOo/tests/java/ifc/bridge/_XBridge.java @@ -0,0 +1,141 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.bridge; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.bridge.XBridge; +import com.sun.star.connection.XConnection; +import com.sun.star.lang.XInitialization; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + + +/** +* Testing <code>com.sun.star.bridge.XBridge</code> +* interface methods : +* <ul> +* <li><code> getInstance()</code></li> +* <li><code> getName()</code></li> +* <li><code> getDescription()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XInitialization.args'</code> (of type <code>Object[]</code>): +* relation which contains arguments for Bridge initialization. +* It used here to check description of the bridge. This array +* must contain : [0] - the name of the bridge, [1] - the name of +* protocol, [2] - <code>XConnection</code> reference to bridge +* connection. </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* After test completion object environment has to be recreated. +* @see com.sun.star.bridge.XBridge +*/ +public class _XBridge extends MultiMethodTest { + + public XBridge oObj; + + protected Object[] args;//for object relation 'XInitialization.args' + + /** + * Retrieves object relations. + * @throws StatusException If one of relations not found. + */ + @Override + public void before() { + args = (Object[])tEnv.getObjRelation("XInitialization.args"); + + if (args == null) throw new StatusException(Status.failed + ("Relation 'XInitialization.args' not found")) ; + XInitialization xInit = UnoRuntime.queryInterface( + XInitialization.class, oObj); + try { + xInit.initialize(args); + } + catch (com.sun.star.uno.Exception e) { + e.printStackTrace(log); + throw new StatusException("Can't initialize the bridge", e); + } + } + + /** + * Tries to retrieve <code>ServiceManager</code> service + * using the bridge. <p> + * Has <b>OK</b> status if non null object returned. + */ + public void _getInstance() { + XInterface xInt = (XInterface)oObj.getInstance( + "com.sun.star.lang.ServiceManager"); + + tRes.tested("getInstance()", xInt != null); + } + + /** + * Retrieves the name of the bridge from relation and compares + * it to name returned by the method. <p> + * Has <b>OK</b> status if names are equal. + */ + public void _getName() { + String expectedName = (String)args[0]; // args[0] - bridge name + + String name = oObj.getName(); + + if (!tRes.tested("getName()", name.equals(expectedName))) { + log.println("getName() returns wrong result : \"" + name + "\""); + log.println("expected = \"" + expectedName + "\""); + } + } + + /** + * Retrieves the description of the bridge and compares it with + * expected description composed using relation + * <code> ([protocol] + ":" + [connection description]) </code>. <p> + * Has <b>OK</b> status if description returned by the method + * is equal to expected one. + */ + public void _getDescription() { + String protocol = (String)args[1]; // args[1] - protocol + XConnection xConnection = (XConnection)args[2]; // args[2] - connection + // expected description is protocol + ":" + xConnection.getDescription() + String expectedDescription = + protocol + ":" + xConnection.getDescription(); + + String description = oObj.getDescription(); + + if (!tRes.tested("getDescription()", + description.equals(expectedDescription))) { + log.println("getDescription() returns wrong result : \"" + + description + "\""); + log.println("expected = \"" + expectedDescription + "\""); + } + } + + /** + * Disposes object environment. + */ + @Override + public void after() { + disposeEnvironment() ; + } + +} + diff --git a/qadevOOo/tests/java/ifc/bridge/_XBridgeFactory.java b/qadevOOo/tests/java/ifc/bridge/_XBridgeFactory.java new file mode 100644 index 0000000000..fe0f28d695 --- /dev/null +++ b/qadevOOo/tests/java/ifc/bridge/_XBridgeFactory.java @@ -0,0 +1,222 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.bridge; + +import lib.MultiMethodTest; +import lib.StatusException; + +import com.sun.star.bridge.XBridge; +import com.sun.star.bridge.XBridgeFactory; +import com.sun.star.connection.XAcceptor; +import com.sun.star.connection.XConnection; +import com.sun.star.connection.XConnector; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Tests <code>com.sun.star.bridge.XBridgeFactory</code> +* interface methods : +* <ul> +* <li><code> createBridge()</code></li> +* <li><code> getBridge()</code></li> +* <li><code> getExistingBridges()</code></li> +* </ul> <p> +* @see com.sun.star.bridge.XBridgeFactory +*/ +public class _XBridgeFactory extends MultiMethodTest { + + public XBridgeFactory oObj = null; + + private String bridgeName = null ; + + AcceptorThread acceptorThread = null; + + /** + * Interrupts the acceptor after test is finished + */ + @Override + protected void after() { + acceptorThread.acc.stopAccepting(); + if (acceptorThread.isAlive()) { + acceptorThread.interrupt(); + } + } + /** + * Calls <code>accept()</code> method in a separate thread. + * Then stores exception thrown by call if it occurred, or + * return value. + */ + protected class AcceptorThread extends Thread { + /** + * the acceptor + */ + private final XAcceptor acc; + /** + * If exception occurred during method call it is + * stored in this field. + */ + public Exception ex = null ; + /** + * If method call returns some value it stores in this field. + */ + public XConnection acceptedCall = null ; + + /** + * Gets an object which can call <code>accept</code> method. + */ + public AcceptorThread(XAcceptor acc) { + this.acc = acc ; + } + + /** + * Call <code>accept()</code> method. + */ + @Override + public void run() { + try { + acceptedCall = acc.accept(connectString); + } catch (com.sun.star.lang.IllegalArgumentException e) { + ex = e ; + } catch (com.sun.star.connection.ConnectionSetupException e) { + ex = e ; + } catch (com.sun.star.connection.AlreadyAcceptingException e) { + ex = e ; + } + } + } + + /** + * Variable to make bridge names unique in different threads. + */ + public static int uniqueSuffix = 0 ; + /** + * Object for synchronizing <code>uniqueSuffix</code> increment. + */ + public static Object synchFlag = new Object() ; + /** + * Connection string + */ + public String connectString; + + /** + * Gets array of existing bridges. <p> + * Has <b>OK</b> status if method returns not null. + */ + public void _getExistingBridges() { + + XBridge[] bridges = oObj.getExistingBridges() ; + + log.println("Existing bridges :") ; + for (int i = 0; i < bridges.length; i++) + log.println(" " + bridges[i].getDescription()) ; + + if (bridges.length > 0) bridgeName = bridges[0].getName() ; + + tRes.tested("getExistingBridges()", true) ; + } + + /** + * First creates connection with StarOffice process, using environment + * property <code>'CONNECTION_STRING'</code>. Then create bridge with unique name + * using protocol specified in environment as <code>'PROTOCOL'</code> + * property. After that bridge is disposed. <p> + * Has <b>OK</b> status if value returned is not null + * and no exceptions were thrown.<p> + */ + public void _createBridge() { + XBridge bridge = null; + XConnection conn = null ; + boolean result = false ; + + // first creating a connection + try { + XInterface x = (XInterface) + tParam.getMSF().createInstance + ("com.sun.star.connection.Connector") ; + + XConnector xCntr = UnoRuntime.queryInterface + (XConnector.class, x) ; + + x = (XInterface) tParam.getMSF().createInstance + ("com.sun.star.connection.Acceptor") ; + + XAcceptor xAccptr = UnoRuntime.queryInterface( + XAcceptor.class, x); + connectString = (String)tEnv.getObjRelation("CNNCTSTR"); + acceptorThread = new AcceptorThread(xAccptr) ; + acceptorThread.start(); + + util.utils.shortWait(); + conn = xCntr.connect(connectString) ; + + } catch (com.sun.star.uno.Exception e) { + e.printStackTrace(log) ; + throw new StatusException("Can't create connection", e); + } + + try { + String protocol = (String) tParam.get("PROTOCOL") ; + if (protocol == null) protocol = "urp" ; + + String brName ; + synchronized (synchFlag) { + brName = "MyBridge" + (uniqueSuffix++) ; + } + + log.println("Creating bridge with name " + brName) ; + + bridge = oObj.createBridge(brName, + protocol, conn, null) ; + + + result = bridge != null ; + } catch (com.sun.star.bridge.BridgeExistsException e) { + log.println("Exception while bridge creating :" + e) ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while bridge creating :" + e) ; + } + + tRes.tested("createBridge()", result) ; + } + + /** + * Gets bridge by name and checks the bridge name returned. <p> + * The following method tests are to be executed before : + * <ul> + * <li> <code>getExestingBridges</code> : to have some bridge name + * to retrieve </li> + * </ul> <p> + * Has <b>OK</b> status if bridge successfully returned and its name + * equals to name passed as parameter. + */ + public void _getBridge() { + executeMethod("getExistingBridges()") ; + + if (bridgeName == null) { + log.println("No name for getting the bridge") ; + return ; + } + + XBridge br = oObj.getBridge(bridgeName) ; + + tRes.tested("getBridge()", br != null && + bridgeName.equals(br.getName())) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/bridge/_XUnoUrlResolver.java b/qadevOOo/tests/java/ifc/bridge/_XUnoUrlResolver.java new file mode 100644 index 0000000000..16bbceb454 --- /dev/null +++ b/qadevOOo/tests/java/ifc/bridge/_XUnoUrlResolver.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 ifc.bridge; + +import lib.MultiMethodTest; +import lib.StatusException; +import util.utils; + +import com.sun.star.bridge.XBridge; +import com.sun.star.bridge.XBridgeFactory; +import com.sun.star.bridge.XInstanceProvider; +import com.sun.star.bridge.XUnoUrlResolver; +import com.sun.star.connection.ConnectionSetupException; +import com.sun.star.connection.NoConnectException; +import com.sun.star.connection.XAcceptor; +import com.sun.star.connection.XConnection; +import com.sun.star.lang.IllegalArgumentException; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.bridge.XUnoUrlResolver</code> +* interface methods : +* <ul> +* <li><code> resolve()</code></li> +* </ul> <p> +* @see com.sun.star.bridge.XUnoUrlResolver +*/ +public class _XUnoUrlResolver extends MultiMethodTest { + + // starting port and current port to choose + static int basePort = 0; + int curPort = 0; + + public XUnoUrlResolver oObj; + + /** + * Implementation for providing an instance + * + * @see com.sun.star.bridge.XInstanceProvider + */ + static class MyInstanceProvider implements XInstanceProvider { + /** + * a MultiServiceFactory for creating instances + * + * @see com.sun.star.lang.MultiServiceFactory + */ + private final XMultiServiceFactory xMSF; + + /** + * Construct object with a MultiServiceFactory + * + * @see com.sun.star.lang.MultiServiceFactory + */ + public MyInstanceProvider(XMultiServiceFactory xMSF) { + this.xMSF = xMSF; + } + + /** + * get an instance by name + */ + public Object getInstance(String aInstanceName) + throws com.sun.star.container.NoSuchElementException + { + try { + return xMSF.createInstance(aInstanceName); + } + catch(com.sun.star.uno.Exception e) { + throw new StatusException("Unexpected exception", e); + } + } + } + + /** + * Thread for creating a bridge so the resolver can access it + */ + class BridgeThread extends Thread { + private final XBridgeFactory xBrdgFctr; + private final XInstanceProvider xInstProv; + private final XAcceptor xAcc; + private final String connectString; + + public XBridge xBridge = null; + + public BridgeThread(XAcceptor xAcc, XBridgeFactory xBrdgFctr, + XInstanceProvider xInstProv, String connectString) { + this.xInstProv = xInstProv; + this.xBrdgFctr = xBrdgFctr; + this.xAcc = xAcc; + this.connectString = connectString; + } + + @Override + public void run() { + try { + // create a connection + XConnection xCon = xAcc.accept(connectString); + // create a bridge over that connection + xBridge = xBrdgFctr.createBridge( + "MyBridge", "urp", xCon, xInstProv); + } catch (com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log); + } catch (com.sun.star.connection.ConnectionSetupException e) { + e.printStackTrace(log); + } catch (com.sun.star.connection.AlreadyAcceptingException e) { + e.printStackTrace(log); + } catch (com.sun.star.bridge.BridgeExistsException e) { + e.printStackTrace(log); + } + } + + } + /** + * Test calls the method using environment property + * <code>'CONNECTION_STRING'</code>. <p> + * Has <b> OK </b> status if the method successfully returns + * object that support interface <code>XMultiServiceFactory</code> and + * no exceptions were thrown. <p> + * @see com.sun.star.lang.XMultiServiceFactory + */ + public void _resolve() { + String connectStr = (String)tParam.get("CONNECTION_STRING"); + int pIndex = connectStr.indexOf("port=") + 5; + connectStr = connectStr.substring(0, pIndex); + System.out.println("ConnectString: " + connectStr); + + // select the port + basePort = ((Integer)tEnv.getObjRelation("PORT")).intValue(); + curPort = utils.getNextFreePort(basePort); + log.println("Choose Port nr: " + curPort); + + connectStr += curPort; + + try { + XMultiServiceFactory xMSF = tParam.getMSF(); + + // get the bridge factory + XBridgeFactory xBrdgFctr = UnoRuntime.queryInterface(XBridgeFactory.class, + tEnv.getObjRelation("BRIDGEFACTORY")); + + // get the acceptor + XAcceptor xAcc = UnoRuntime.queryInterface( + XAcceptor.class, tEnv.getObjRelation("ACCEPTOR")); + + // instance provider + XInstanceProvider xInstProv = new MyInstanceProvider(xMSF); + // thread for providing a bridge + BridgeThread brThread = new BridgeThread(xAcc, xBrdgFctr, + xInstProv, connectStr); + brThread.start(); + + util.utils.shortWait(); + // get an instance from the remote + Object obj = oObj.resolve( + "uno:" + connectStr + ";urp;com.sun.star.lang.ServiceManager"); + // got the instance? + XMultiServiceFactory oMSF = UnoRuntime.queryInterface(XMultiServiceFactory.class, obj); + + if (brThread.isAlive()) + brThread.interrupt(); + + tRes.tested("resolve()", oMSF != null); + } catch (NoConnectException e) { + log.println("Unexpected exception thrown " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception", e); + } catch (ConnectionSetupException e) { + log.println("Unexpected exception thrown " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception", e); + } catch (IllegalArgumentException e) { + log.println("Unexpected exception thrown " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception", e); + } + } +} diff --git a/qadevOOo/tests/java/ifc/chart/_BarDiagram.java b/qadevOOo/tests/java/ifc/chart/_BarDiagram.java new file mode 100644 index 0000000000..4d7637623a --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_BarDiagram.java @@ -0,0 +1,152 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XChartDocument; +import com.sun.star.chart.XDiagram; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.chart.BarDiagram</code> +* service properties: +* <ul> +* <li><code>'Vertical'</code></li> +* <li><code>'Deep'</code></li> +* <li><code>'StackedBarsConnected'</code></li> +* <li><code>'NumberOfLines'</code></li> +* </ul> +* Properties testing is automated +* by <code>lib.MultiPropertyTest</code> except property +* <code>'NumberOfLines'</code>. <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CHARTDOC'</code> (of type <code>XChartDocument</code>): +* to have reference to chart document </li> +* <li> <code>'BAR'</code> (of type <code>XDiagram</code>): +* relation that use as parameter for method setDiagram of chart document </li> +* <ul> <p> +* @see com.sun.star.chart.BarDiagram +* @see com.sun.star.chart.XChartDocument +* @see com.sun.star.chart.XDiagram +* @see lib.MultiPropertyTest +*/ +public class _BarDiagram extends MultiPropertyTest { + + XChartDocument doc = null; + XDiagram oldDiagram = null; + + /** + * Retrieves object relations and prepares a chart document. + * @throws StatusException if one of relations not found. + */ + @Override + protected void before() { + log.println("Setting Diagram type to BarDiagram"); + doc = (XChartDocument) tEnv.getObjRelation("CHARTDOC"); + if (doc == null) throw new StatusException(Status.failed + ("Relation 'CHARTDOC' not found")); + + XDiagram bar = (XDiagram) tEnv.getObjRelation("BAR"); + if (bar == null) throw new StatusException(Status.failed + ("Relation 'BAR' not found")); + + oldDiagram = doc.getDiagram(); + doc.setDiagram(bar); + oObj = UnoRuntime.queryInterface( XPropertySet.class, doc.getDiagram() ); + log.println("Set it to 3D"); + try { + oObj.setPropertyValue("Dim3D", Boolean.TRUE); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } + } + + /** + * Sets the old diagram for a chart document. + */ + @Override + protected void after() { + doc.setDiagram(oldDiagram); + } + + protected PropertyTester LineTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + int a = 0; + int b = 2; + if ( ((Integer) oldValue).intValue() == a) + return Integer.valueOf(b); else + return Integer.valueOf(a); + } + } ; + + /** + * Tests property 'NumberOfLines'. + * This property tests when diagram in 2D-mode only + * except all other properties. This property is currently supported by + * two dimensional vertical bar charts only. + */ + public void _NumberOfLines() { + log.println("Set it to 2D"); + try { + oObj.setPropertyValue("Dim3D", Boolean.FALSE); + oObj.setPropertyValue("Vertical", Boolean.FALSE); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } + + log.println("Testing with custom Property tester") ; + testProperty("NumberOfLines", LineTester) ; + } +} // EOF BarDiagram + diff --git a/qadevOOo/tests/java/ifc/chart/_Chart3DBarProperties.java b/qadevOOo/tests/java/ifc/chart/_Chart3DBarProperties.java new file mode 100644 index 0000000000..401b1d9bbe --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_Chart3DBarProperties.java @@ -0,0 +1,123 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XChartDocument; +import com.sun.star.chart.XDiagram; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.chart.Chart3DBarProperties</code> +* service properties: +* <ul> +* <li><code> SolidType</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CHARTDOC'</code> (of type <code>XChartDocument</code>): +* to have reference to chart document </li> +* <li> <code>'BAR'</code> (of type <code>XDiagram</code>): +* relation that use as parameter for method setDiagram of chart document </li> +* <ul> <p> +* @see com.sun.star.chart.Chart3DBarProperties +* @see com.sun.star.chart.XChartDocument +* @see com.sun.star.chart.XDiagram +*/ +public class _Chart3DBarProperties extends MultiPropertyTest { + + /** + * Retrieves object relations and prepares a chart document. + * @throws StatusException if one of relations not found. + */ + @Override + protected void before() { + log.println("Setting Diagram type to BarDiagram"); + XChartDocument doc = (XChartDocument) tEnv.getObjRelation("CHARTDOC"); + if (doc == null) throw new StatusException(Status.failed + ("Relation 'CHARTDOC' not found")); + + XDiagram bar = (XDiagram) tEnv.getObjRelation("BAR"); + if (bar == null) throw new StatusException(Status.failed + ("Relation 'BAR' not found")); + + doc.setDiagram(bar); + log.println("Change Diagram to 3D"); + oObj = UnoRuntime.queryInterface( XPropertySet.class, doc.getDiagram() ); + try { + oObj.setPropertyValue("Dim3D", Boolean.TRUE); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Couldn't change Diagram to 3D"); + e.printStackTrace(log); + throw new StatusException("Couldn't change Diagram to 3D", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Couldn't change Diagram to 3D"); + e.printStackTrace(log); + throw new StatusException("Couldn't change Diagram to 3D", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Couldn't change Diagram to 3D"); + e.printStackTrace(log); + throw new StatusException("Couldn't change Diagram to 3D", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Couldn't change Diagram to 3D"); + e.printStackTrace(log); + throw new StatusException("Couldn't change Diagram to 3D", e); + } + } + + /** + * Sets the diagram back to 2D as 2D rendering is much faster for the following tests. + */ + @Override + protected void after() { + log.println("Setting Diagram back to 2D"); + XChartDocument doc = (XChartDocument) tEnv.getObjRelation("CHARTDOC"); + if (doc == null) throw new StatusException(Status.failed + ("Relation 'CHARTDOC' not found")); + + log.println("Change Diagram to 3D"); + oObj = UnoRuntime.queryInterface( XPropertySet.class, doc.getDiagram() ); + try { + oObj.setPropertyValue("Dim3D", Boolean.FALSE); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Couldn't change Diagram back to 2D"); + e.printStackTrace(log); + throw new StatusException("Couldn't change Diagram back to 2D", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Couldn't change Diagram back to 2D"); + e.printStackTrace(log); + throw new StatusException("Couldn't change Diagram back to 2D", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Couldn't change Diagram back to 2D"); + e.printStackTrace(log); + throw new StatusException("Couldn't change Diagram back to 2D", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Couldn't change Diagram back to 2D"); + e.printStackTrace(log); + throw new StatusException("Couldn't change Diagram back to 2D", e); + } + } + +} // finish class _Chart3DBarProperties + + diff --git a/qadevOOo/tests/java/ifc/chart/_ChartAxis.java b/qadevOOo/tests/java/ifc/chart/_ChartAxis.java new file mode 100644 index 0000000000..0528158b21 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_ChartAxis.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 ifc.chart; + +import lib.MultiPropertyTest; +import lib.StatusException; +import util.ValueChanger; + +/** +* Testing <code>com.sun.star.chart.ChartAxis</code> +* service properties: +* <ul> +* <li><code> ArrangeOrder</code></li> +* <li><code> AutoMax</code></li> +* <li><code> AutoMin</code></li> +* <li><code> AutoOrigin</code></li> +* <li><code> AutoStepHelp</code></li> +* <li><code> AutoStepMain</code></li> +* <li><code> DisplayLabels</code></li> +* <li><code> GapWidth</code></li> +* <li><code> HelpMarks</code></li> +* <li><code> Logarithmic</code></li> +* <li><code> Marks</code></li> +* <li><code> Max</code></li> +* <li><code> Min</code></li> +* <li><code> NumberFormat</code></li> +* <li><code> Origin</code></li> +* <li><code> Overlap</code></li> +* <li><code> StepHelp</code></li> +* <li><code> StepMain</code></li> +* <li><code> TextBreak</code></li> +* <li><code> TextRotation</code></li> +* <li><code> TextCanOverlap</code></li> +* </ul> <p> +* @see com.sun.star.chart.ChartAxis +*/ +public class _ChartAxis extends MultiPropertyTest { + + /** + * Tests property 'Max'. + * Property 'AutoOrigin' sets to true and property 'AutoMax' + * sets to false before test. + */ + public void _Max() { + try { + //if AutoOrigin isn't true then this property works only when + //current Origin is less than new value of Max + oObj.setPropertyValue("AutoOrigin", Boolean.TRUE); + oObj.setPropertyValue("AutoMax",Boolean.FALSE); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Couldn't set property value"); + e.printStackTrace(log); + throw new StatusException("Couldn't set property value", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Couldn't set property value"); + e.printStackTrace(log); + throw new StatusException("Couldn't set property value", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Couldn't set property value"); + e.printStackTrace(log); + throw new StatusException("Couldn't set property value", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Couldn't set property value"); + e.printStackTrace(log); + throw new StatusException("Couldn't set property value", e); + } + + testProperty("Max"); + } + + /** + * Tests property 'Min'. + * Property 'AutoOrigin' sets to true and property 'AutoMin' + * sets to false before test. + */ + public void _Min() { + try { + //if AutoOrigin isn't true then this property works only when + //current Origin is greater than new value of Min + oObj.setPropertyValue("AutoOrigin", Boolean.TRUE); + oObj.setPropertyValue("AutoMin", Boolean.FALSE); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Couldn't set property value"); + e.printStackTrace(log); + throw new StatusException("Couldn't set property value", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Couldn't set property value"); + e.printStackTrace(log); + throw new StatusException("Couldn't set property value", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Couldn't set property value"); + e.printStackTrace(log); + throw new StatusException("Couldn't set property value", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Couldn't set property value"); + e.printStackTrace(log); + throw new StatusException("Couldn't set property value", e); + } + + testProperty("Min"); + } + + /** + * Tests property 'Origin'. + * Property 'Logarithmic' sets to false before test. + */ + public void _Origin() { + try { + oObj.setPropertyValue("Logarithmic",Boolean.FALSE); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Couldn't set property value"); + e.printStackTrace(log); + throw new StatusException("Couldn't set property value", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Couldn't set property value"); + e.printStackTrace(log); + throw new StatusException("Couldn't set property value", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Couldn't set property value"); + e.printStackTrace(log); + throw new StatusException("Couldn't set property value", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Couldn't set property value"); + e.printStackTrace(log); + throw new StatusException("Couldn't set property value", e); + } + + testProperty("Origin"); + } + + protected PropertyTester StepMainTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + Double ValueToSet = (Double) ValueChanger.changePValue(oldValue); + double stm = ValueToSet.doubleValue(); + stm = stm / 5; + return Double.valueOf(stm); + } + }; + + /** + * Tests property 'StepMain'. + * Property 'Logarithmic' and 'AutoStepMain' sets + * to false before test. + */ + public void _StepMain() { + try { + oObj.setPropertyValue("AutoStepMain", Boolean.FALSE); + oObj.setPropertyValue("Logarithmic",Boolean.FALSE); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Couldn't set property value"); + e.printStackTrace(log); + throw new StatusException("Couldn't set property value", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Couldn't set property value"); + e.printStackTrace(log); + throw new StatusException("Couldn't set property value", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Couldn't set property value"); + e.printStackTrace(log); + throw new StatusException("Couldn't set property value", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Couldn't set property value"); + e.printStackTrace(log); + throw new StatusException("Couldn't set property value", e); + } + + testProperty("StepMain", StepMainTester); + } + + public void _StepHelp() { + try { + oObj.setPropertyValue("AutoStepMain", Boolean.FALSE); + oObj.setPropertyValue("Logarithmic",Boolean.FALSE); + oObj.setPropertyValue("StepMain", 100.0); + oObj.setPropertyValue("StepHelpCount", 10); + } catch (com.sun.star.uno.Exception e) { + throw new StatusException("Couldn't set property value", e); + } + testProperty("StepHelp"); + } +} // finish class _ChartAxis + diff --git a/qadevOOo/tests/java/ifc/chart/_ChartAxisXSupplier.java b/qadevOOo/tests/java/ifc/chart/_ChartAxisXSupplier.java new file mode 100644 index 0000000000..4f9075ef95 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_ChartAxisXSupplier.java @@ -0,0 +1,132 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.chart.ChartAxisXSupplier</code> +* service properties : +* <ul> +* <li><code> HasXAxis</code></li> +* <li><code> HasXAxisDescription</code></li> +* <li><code> HasXAxisGrid</code></li> +* <li><code> HasXAxisHelpGrid</code></li> +* <li><code> HasXAxisTitle</code></li> +* </ul> <p> +* @see com.sun.star.chart.ChartAxisXSupplier +*/ +public class _ChartAxisXSupplier extends MultiPropertyTest { + public void _HasXAxis() { + try { + log.println("Property HasXAxis"); + boolean res = ((Boolean)oObj.getPropertyValue( + "HasXAxis")).booleanValue(); + if (!res) + oObj.setPropertyValue("HasXAxis", Boolean.TRUE); + // test connected property HasXAxisDescription + if (!((Boolean)oObj.getPropertyValue( + "HasXAxisDescription")).booleanValue()) + oObj.setPropertyValue("HasXAxisDescription", Boolean.TRUE); + + oObj.setPropertyValue("HasXAxis", Boolean.FALSE); + boolean setVal = ((Boolean)oObj.getPropertyValue( + "HasXAxis")).booleanValue(); + log.println("Start value: " + setVal); + // description should also be false now + setVal |= ((Boolean)oObj.getPropertyValue( + "HasXAxisDescription")).booleanValue(); + log.println("Connected value axis description: " + setVal); + + oObj.setPropertyValue("HasXAxis", Boolean.TRUE); + setVal |= !((Boolean)oObj.getPropertyValue( + "HasXAxis")).booleanValue(); + log.println("Changed value: " + !setVal); + + // description should be true again + setVal |= !((Boolean)oObj.getPropertyValue( + "HasXAxisDescription")).booleanValue(); + log.println("Changed connected value axis description: " + !setVal); + + tRes.tested("HasXAxis", !setVal); + // leave axis untouched + oObj.setPropertyValue("HasXAxis", Boolean.valueOf(res)); + } + catch (com.sun.star.lang.WrappedTargetException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasXAxis", false); + } + catch (com.sun.star.lang.IllegalArgumentException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasXAxis", false); + } + catch (com.sun.star.beans.UnknownPropertyException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasXAxis", false); + } + catch (com.sun.star.beans.PropertyVetoException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasXAxis", false); + } + } + + public void _HasXAxisDescription() { + requiredMethod("HasXAxis"); + try { + log.println("Property HasXAxisDescription"); + if (!((Boolean)oObj.getPropertyValue("HasXAxis")).booleanValue()) + oObj.setPropertyValue("HasXAxis", Boolean.TRUE); + + boolean res = ((Boolean)oObj.getPropertyValue( + "HasXAxisDescription")).booleanValue(); + log.println("Start value: " + res); + + oObj.setPropertyValue("HasXAxisDescription", Boolean.valueOf(!res)); + boolean setValue = ((Boolean)oObj.getPropertyValue( + "HasXAxisDescription")).booleanValue(); + log.println("Changed value: " + setValue); + tRes.tested("HasXAxisDescription", res != setValue); + } + catch (com.sun.star.lang.WrappedTargetException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasXAxisDescription", false); + } + catch (com.sun.star.lang.IllegalArgumentException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasXAxisDescription", false); + } + catch (com.sun.star.beans.UnknownPropertyException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasXAxisDescription", false); + } + catch (com.sun.star.beans.PropertyVetoException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasXAxisDescription", false); + } + } +} // EOF ChartAxisXSupplier + diff --git a/qadevOOo/tests/java/ifc/chart/_ChartAxisYSupplier.java b/qadevOOo/tests/java/ifc/chart/_ChartAxisYSupplier.java new file mode 100644 index 0000000000..ca2d6aedf7 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_ChartAxisYSupplier.java @@ -0,0 +1,158 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XChartDocument; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.chart.ChartAxisYSupplier</code> +* service properties : +* <ul> +* <li><code> HasYAxis</code></li> +* <li><code> HasYAxisDescription</code></li> +* <li><code> HasYAxisGrid</code></li> +* <li><code> HasYAxisHelpGrid</code></li> +* <li><code> HasYAxisTitle</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CHARTDOC'</code> (of type <code>XChartDocument</code>): +* to have reference to chart document </li> +* </ul> <p> +* @see com.sun.star.chart.ChartAxisYSupplier +*/ +public class _ChartAxisYSupplier extends MultiPropertyTest { + + /** + * Retrieves object relations and prepares a chart document. + * @throws StatusException if one of relations not found. + */ + @Override + protected void before() { + XChartDocument doc = (XChartDocument) tEnv.getObjRelation("CHARTDOC"); + if (doc == null) throw new StatusException(Status.failed + ("Relation 'CHARTDOC' not found")); + + oObj = UnoRuntime.queryInterface( XPropertySet.class, doc.getDiagram() ); + } + + public void _HasYAxis() { + try { + log.println("Property HasYAxis"); + boolean res = ((Boolean)oObj.getPropertyValue( + "HasYAxis")).booleanValue(); + if (!res) + oObj.setPropertyValue("HasYAxis", Boolean.TRUE); + // test connected property HasYAxisDescription + if (!((Boolean)oObj.getPropertyValue( + "HasYAxisDescription")).booleanValue()) + oObj.setPropertyValue("HasYAxisDescription", Boolean.TRUE); + + oObj.setPropertyValue("HasYAxis", Boolean.FALSE); + boolean setVal = ((Boolean)oObj.getPropertyValue( + "HasYAxis")).booleanValue(); + log.println("Start value: " + setVal); + // description should also be false now + setVal |= ((Boolean)oObj.getPropertyValue( + "HasYAxisDescription")).booleanValue(); + log.println("Connected value axis description: " + setVal); + + oObj.setPropertyValue("HasYAxis", Boolean.TRUE); + setVal |= !((Boolean)oObj.getPropertyValue( + "HasYAxis")).booleanValue(); + log.println("Changed value: " + !setVal); + + // description should be true again + setVal |= !((Boolean)oObj.getPropertyValue( + "HasYAxisDescription")).booleanValue(); + log.println("Changed connected value axis description: "+!setVal); + + tRes.tested("HasYAxis", !setVal); + // leave axis untouched + oObj.setPropertyValue("HasYAxis", Boolean.valueOf(res)); + } + catch (com.sun.star.lang.WrappedTargetException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasYAxis", false); + } + catch (com.sun.star.lang.IllegalArgumentException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasYAxis", false); + } + catch (com.sun.star.beans.UnknownPropertyException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasYAxis", false); + } + catch (com.sun.star.beans.PropertyVetoException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasYAxis", false); + } + } + + public void _HasYAxisDescription() { + requiredMethod("HasYAxis"); + try { + log.println("Property HasYAxisDescription"); + if (!((Boolean)oObj.getPropertyValue("HasYAxis")).booleanValue()) + oObj.setPropertyValue("HasYAxis", Boolean.TRUE); + + boolean res = ((Boolean)oObj.getPropertyValue( + "HasYAxisDescription")).booleanValue(); + log.println("Start value: " + res); + + oObj.setPropertyValue("HasYAxisDescription", Boolean.valueOf(!res)); + boolean setValue = ((Boolean)oObj.getPropertyValue( + "HasYAxisDescription")).booleanValue(); + log.println("Changed value: " + setValue); + tRes.tested("HasYAxisDescription", res != setValue); + } + catch (com.sun.star.lang.WrappedTargetException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasYAxisDescription", false); + } + catch (com.sun.star.lang.IllegalArgumentException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasYAxisDescription", false); + } + catch (com.sun.star.beans.UnknownPropertyException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasYAxisDescription", false); + } + catch (com.sun.star.beans.PropertyVetoException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasYAxisDescription", false); + } + } + +} // EOF ChartAxisYSupplier + diff --git a/qadevOOo/tests/java/ifc/chart/_ChartAxisZSupplier.java b/qadevOOo/tests/java/ifc/chart/_ChartAxisZSupplier.java new file mode 100644 index 0000000000..30ac5bc926 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_ChartAxisZSupplier.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 ifc.chart; + +import lib.MultiPropertyTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XChartDocument; +import com.sun.star.chart.XDiagram; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.chart.ChartAxisZSupplier</code> +* service properties : +* <ul> +* <li><code> HasZAxis</code></li> +* <li><code> HasZAxisDescription</code></li> +* <li><code> HasZAxisGrid</code></li> +* <li><code> HasZAxisHelpGrid</code></li> +* <li><code> HasZAxisTitle</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CHARTDOC'</code> (of type <code>XChartDocument</code>): +* to have reference to chart document </li> +* <li> <code>'BAR'</code> (of type <code>XDiagram</code>): +* relation that use as parameter for method setDiagram of chart document</li> +* </ul> <p> +* @see com.sun.star.chart.ChartAxisZSupplier +*/ +public class _ChartAxisZSupplier extends MultiPropertyTest { + + /** + * Retrieves object relations and prepares a chart document. + * @throws StatusException if one of relations not found. + */ + @Override + protected void before() { + log.println("Setting Diagram type to BarDiagram"); + XChartDocument doc = (XChartDocument) tEnv.getObjRelation("CHARTDOC"); + if (doc == null) throw new StatusException(Status.failed + ("Relation 'CHARTDOC' not found")); + + XDiagram bar = (XDiagram) tEnv.getObjRelation("BAR"); + if (bar == null) throw new StatusException(Status.failed + ("Relation 'BAR' not found")); + + doc.setDiagram(bar); + log.println("Set it to 3D"); + oObj = UnoRuntime.queryInterface( XPropertySet.class, doc.getDiagram() ); + try { + oObj.setPropertyValue("Dim3D", Boolean.TRUE); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } + } + + public void _HasZAxis() { + try { + log.println("Property HasZAxis"); + boolean res = ((Boolean)oObj.getPropertyValue( + "HasZAxis")).booleanValue(); + if (!res) + oObj.setPropertyValue("HasZAxis", Boolean.TRUE); + // test connected property HasZAxisDescription + if (!((Boolean)oObj.getPropertyValue( + "HasZAxisDescription")).booleanValue()) + oObj.setPropertyValue("HasZAxisDescription", Boolean.TRUE); + + oObj.setPropertyValue("HasZAxis", Boolean.FALSE); + boolean setVal = ((Boolean)oObj.getPropertyValue( + "HasZAxis")).booleanValue(); + log.println("Start value: " + setVal); + // description should also be false now + setVal |= ((Boolean)oObj.getPropertyValue( + "HasZAxisDescription")).booleanValue(); + log.println("Connected value axis description: " + setVal); + + oObj.setPropertyValue("HasZAxis", Boolean.TRUE); + setVal |= !((Boolean)oObj.getPropertyValue( + "HasZAxis")).booleanValue(); + log.println("Changed value: " + !setVal); + + // description should be true again + setVal |= !((Boolean)oObj.getPropertyValue( + "HasZAxisDescription")).booleanValue(); + log.println("Changed connected value axis description: " + !setVal); + + tRes.tested("HasZAxis", !setVal); + // leave axis untouched + oObj.setPropertyValue("HasZAxis", Boolean.valueOf(res)); + } + catch (com.sun.star.lang.WrappedTargetException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasZAxis", false); + } + catch (com.sun.star.lang.IllegalArgumentException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasZAxis", false); + } + catch (com.sun.star.beans.UnknownPropertyException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasZAxis", false); + } + catch (com.sun.star.beans.PropertyVetoException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasZAxis", false); + } + } + + public void _HasZAxisDescription() { + requiredMethod("HasZAxis"); + try { + log.println("Property HasZAxisDescription"); + if (!((Boolean)oObj.getPropertyValue("HasZAxis")).booleanValue()) + oObj.setPropertyValue("HasZAxis", Boolean.TRUE); + + boolean res = ((Boolean)oObj.getPropertyValue( + "HasZAxisDescription")).booleanValue(); + log.println("Start value: " + res); + + oObj.setPropertyValue("HasZAxisDescription", Boolean.valueOf(!res)); + boolean setValue = ((Boolean)oObj.getPropertyValue( + "HasZAxisDescription")).booleanValue(); + log.println("Changed value: " + setValue); + tRes.tested("HasZAxisDescription", res != setValue); + } + catch (com.sun.star.lang.WrappedTargetException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasZAxisDescription", false); + } + catch (com.sun.star.lang.IllegalArgumentException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasZAxisDescription", false); + } + catch (com.sun.star.beans.UnknownPropertyException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasZAxisDescription", false); + } + catch (com.sun.star.beans.PropertyVetoException e) { + log.println(e.getMessage()); + e.printStackTrace(log); + tRes.tested("HasZAxisDescription", false); + } + } + + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + +} // EOF ChartAxisZSupplier + diff --git a/qadevOOo/tests/java/ifc/chart/_ChartDataPointProperties.java b/qadevOOo/tests/java/ifc/chart/_ChartDataPointProperties.java new file mode 100644 index 0000000000..e7872378c7 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_ChartDataPointProperties.java @@ -0,0 +1,120 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; +import lib.Status; +import lib.StatusException; +import util.utils; + +import com.sun.star.chart.XChartDocument; +import com.sun.star.chart.XDiagram; + +/** +* Testing <code>com.sun.star.chart.ChartDataPointProperties</code> +* service properties : +* <ul> +* <li><code> DataCaption</code></li> +* <li><code> SymbolType</code></li> +* <li><code> SymbolBitmapURL</code></li> +* </ul> <p> +* The following predefined files needed to complete the test: +* <ul> +* <li> <code>space-metal.jpg</code> : +* for test of property 'SymbolBitmapURL' </li> +* <ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CHARTDOC'</code> (of type <code>XChartDocument</code>): +* to have reference to chart document </li> +* <li> <code>'LINE'</code> (of type <code>XDiagram</code>): +* relation that use as parameter for method setDiagram of chart document </li> +* </ul> <p> +* @see com.sun.star.chart.ChartDataPointProperties +*/ +public class _ChartDataPointProperties extends MultiPropertyTest { + + /** + * Retrieves object relations and prepares a chart document. + * @throws StatusException if one of relations not found. + */ + @Override + protected void before() { + log.println("Setting Diagram type to LineDiagram"); + XChartDocument doc = (XChartDocument) tEnv.getObjRelation("CHARTDOC"); + if (doc == null) throw new StatusException(Status.failed + ("Relation 'CHARTDOC' not found")); + + XDiagram Line = (XDiagram) tEnv.getObjRelation("LINE"); + if (Line == null) throw new StatusException(Status.failed + ("Relation 'LINE' not found")); + + doc.setDiagram(Line); + } + + /** + * Tests property 'SymbolBitmapURL' using file <code>polibal.gif</code>. + */ + public void _SymbolBitmapURL() { + try { + oObj.setPropertyValue( + "SymbolType", + Integer.valueOf(com.sun.star.chart.ChartSymbolType.BITMAPURL) ); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } + + try { + oObj.setPropertyValue( + "SymbolBitmapURL", + utils.getFullTestURL("space-metal.jpg") ); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } + } +} + diff --git a/qadevOOo/tests/java/ifc/chart/_ChartDataRowProperties.java b/qadevOOo/tests/java/ifc/chart/_ChartDataRowProperties.java new file mode 100644 index 0000000000..5cd275f766 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_ChartDataRowProperties.java @@ -0,0 +1,54 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.chart.ChartDataRowProperties</code> +* service properties : +* <ul> +* <li><code> Axis</code></li> +* <li><code> DataErrorProperties</code></li> +* <li><code> DataMeanValueProperties</code></li> +* <li><code> DataRegressionProperties</code></li> +* </ul> <p> +* @see com.sun.star.chart.ChartDataRowProperties +*/ +public class _ChartDataRowProperties extends MultiPropertyTest { + + public void _Axis() { + try { + Integer axis = (Integer) oObj.getPropertyValue("Axis"); + int newValue; + if (axis.intValue()==2) { + newValue = 4; + } else { + newValue = 2; + } + oObj.setPropertyValue("Axis", Integer.valueOf(newValue)); + axis = (Integer) oObj.getPropertyValue("Axis"); + tRes.tested("Axis",axis.intValue()==newValue); + } catch (Exception e) { + e.printStackTrace(log); + tRes.tested("Axis",false); + } + } +} + diff --git a/qadevOOo/tests/java/ifc/chart/_ChartDocument.java b/qadevOOo/tests/java/ifc/chart/_ChartDocument.java new file mode 100644 index 0000000000..bf9215f017 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_ChartDocument.java @@ -0,0 +1,35 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.chart.ChartDocument</code> +* service properties : +* <ul> +* <li><code> HasLegend</code></li> +* <li><code> HasMainTitle</code></li> +* <li><code> HasSubTitle</code></li> +* </ul> <p> +* @see com.sun.star.chart.ChartDocument +*/ +public class _ChartDocument extends MultiPropertyTest { +} + diff --git a/qadevOOo/tests/java/ifc/chart/_ChartLegend.java b/qadevOOo/tests/java/ifc/chart/_ChartLegend.java new file mode 100644 index 0000000000..ccfd408f4f --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_ChartLegend.java @@ -0,0 +1,33 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.chart.ChartLegend</code> +* service properties : +* <ul> +* <li><code> Alignment</code></li> +* </ul> <p> +* @see com.sun.star.chart.ChartLegend +*/ +public class _ChartLegend extends MultiPropertyTest { +} + diff --git a/qadevOOo/tests/java/ifc/chart/_ChartStatistics.java b/qadevOOo/tests/java/ifc/chart/_ChartStatistics.java new file mode 100644 index 0000000000..3abbcc03cb --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_ChartStatistics.java @@ -0,0 +1,65 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XChartDocument; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.chart.ChartStatistics</code> +* service properties : +* <ul> +* <li><code> RegressionCurves</code></li> +* <li><code> ConstantErrorLow</code></li> +* <li><code> ConstantErrorHigh</code></li> +* <li><code> MeanValue</code></li> +* <li><code> ErrorCategory</code></li> +* <li><code> PercentageError</code></li> +* <li><code> ErrorMargin</code></li> +* <li><code> ErrorIndicator</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CHARTDOC'</code> (of type <code>XChartDocument</code>): +* to have reference to chart document </li> +* </ul> <p> +* @see com.sun.star.chart.ChartStatistics +*/ +public class _ChartStatistics extends MultiPropertyTest { + + /** + * Retrieves object relations and prepares a chart document. + * @throws StatusException if one of relations not found. + */ + @Override + protected void before() { + log.println("Setting Diagram type to LineDiagram"); + XChartDocument doc = (XChartDocument) tEnv.getObjRelation("CHARTDOC"); + if (doc == null) throw new StatusException(Status.failed + ("Relation 'CHARTDOC' not found")); + + oObj = UnoRuntime.queryInterface( XPropertySet.class, doc.getDiagram() ); + } +} + diff --git a/qadevOOo/tests/java/ifc/chart/_ChartTableAddressSupplier.java b/qadevOOo/tests/java/ifc/chart/_ChartTableAddressSupplier.java new file mode 100644 index 0000000000..f3cf71a250 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_ChartTableAddressSupplier.java @@ -0,0 +1,59 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; + +import com.sun.star.chart.ChartSeriesAddress; + +/** +* Testing <code>com.sun.star.chart.ChartTableAddressSupplier</code> +* service properties : +* <ul> +* <li><code> CategoriesRangeAddress</code></li> +* <li><code> SeriesAddresses</code></li> +* <li><code> MainTitleAddress</code></li> +* <li><code> SubTitleAddress</code></li> +* </ul> <p> +* @see com.sun.star.chart.ChartTableAddressSupplier +*/ +public class _ChartTableAddressSupplier extends MultiPropertyTest { + + /** + * Tests property 'SeriesAddresses'. + */ + public void _SeriesAddresses() { + testProperty("SeriesAddresses", new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + ChartSeriesAddress[] addr = (ChartSeriesAddress[]) oldValue ; + ChartSeriesAddress[] newAddr = null ; + if (addr.length > 1) { + newAddr = new ChartSeriesAddress[addr.length - 1] ; + System.arraycopy(addr, 0, newAddr, 0, addr.length - 1) ; + } else { + newAddr = addr ; + } + + return newAddr ; + } + }) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/chart/_ChartTitle.java b/qadevOOo/tests/java/ifc/chart/_ChartTitle.java new file mode 100644 index 0000000000..a8bf068cfc --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_ChartTitle.java @@ -0,0 +1,49 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; +import util.ValueChanger; + +/** +* Testing <code>com.sun.star.chart.ChartTitle</code> +* service properties : +* <ul> +* <li><code> TextRotation</code></li> +* <li><code> String</code></li> +* </ul> <p> +* @see com.sun.star.chart.ChartTitle +*/ +public class _ChartTitle extends MultiPropertyTest { + + /** + * Tests property 'TextRotation'. + */ + public void _TextRotation() { + testProperty("TextRotation", new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + Object ValueToSet = ValueChanger.changePValue(oldValue); + int ro = ((Integer) ValueToSet).intValue() * 100; + return Integer.valueOf( ro ); + } + } ); + } +} + diff --git a/qadevOOo/tests/java/ifc/chart/_ChartTwoAxisXSupplier.java b/qadevOOo/tests/java/ifc/chart/_ChartTwoAxisXSupplier.java new file mode 100644 index 0000000000..fcd2609944 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_ChartTwoAxisXSupplier.java @@ -0,0 +1,100 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XChartDocument; +import com.sun.star.chart.XDiagram; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.chart.ChartTwoAxisXSupplier</code> +* service properties : +* <ul> +* <li><code> HasSecondaryXAxis</code></li> +* <li><code> HasSecondaryXAxisDescription</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CHARTDOC'</code> (of type <code>XChartDocument</code>): +* to have reference to chart document </li> +* <li> <code>'BAR'</code> (of type <code>XDiagram</code>): +* relation that use as parameter for method setDiagram of chart document </li> +* </ul> <p> +* @see com.sun.star.chart.ChartTwoAxisXSupplier +*/ +public class _ChartTwoAxisXSupplier extends MultiPropertyTest { + + XChartDocument doc = null; + XDiagram oldDiagram = null; + + /** + * Retrieves object relations and prepares a chart document. + * @throws StatusException if one of relations not found. + */ + @Override + protected void before() { + log.println("Setting Diagram type to BarDiagram"); + doc = (XChartDocument) tEnv.getObjRelation("CHARTDOC"); + if (doc == null) throw new StatusException(Status.failed + ("Relation 'CHARTDOC' not found")); + + XDiagram bar = (XDiagram) tEnv.getObjRelation("BAR"); + if (bar == null) throw new StatusException(Status.failed + ("Relation 'BAR' not found")); + + oldDiagram = doc.getDiagram(); + + doc.setDiagram(bar); + log.println("Set it to 3D"); + oObj = UnoRuntime.queryInterface( XPropertySet.class, doc.getDiagram() ); + try { + oObj.setPropertyValue("Dim3D", Boolean.TRUE); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } + } + + /** + * Sets the old diagram for a chart document. + */ + @Override + protected void after() { + doc.setDiagram(oldDiagram); + } +} // EOF ChartTwoAxisXSupplier + diff --git a/qadevOOo/tests/java/ifc/chart/_ChartTwoAxisYSupplier.java b/qadevOOo/tests/java/ifc/chart/_ChartTwoAxisYSupplier.java new file mode 100644 index 0000000000..a6b690d71d --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_ChartTwoAxisYSupplier.java @@ -0,0 +1,100 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XChartDocument; +import com.sun.star.chart.XDiagram; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.chart.ChartTwoAxisYSupplier</code> +* service properties : +* <ul> +* <li><code> HasSecondaryYAxis</code></li> +* <li><code> HasSecondaryYAxisDescription</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CHARTDOC'</code> (of type <code>XChartDocument</code>): +* to have reference to chart document </li> +* <li> <code>'BAR'</code> (of type <code>XDiagram</code>): +* relation that use as parameter for method setDiagram of chart document </li> +* </ul> <p> +* @see com.sun.star.chart.ChartTwoAxisYSupplier +*/ +public class _ChartTwoAxisYSupplier extends MultiPropertyTest { + + XChartDocument doc = null; + XDiagram oldDiagram = null; + + /** + * Retrieves object relations and prepares a chart document. + * @throws StatusException if one of relations not found. + */ + @Override + protected void before() { + log.println("Setting Diagram type to BarDiagram"); + doc = (XChartDocument) tEnv.getObjRelation("CHARTDOC"); + if (doc == null) throw new StatusException(Status.failed + ("Relation 'CHARTDOC' not found")); + + XDiagram bar = (XDiagram) tEnv.getObjRelation("BAR"); + if (bar == null) throw new StatusException(Status.failed + ("Relation 'BAR' not found")); + + oldDiagram = doc.getDiagram(); + + doc.setDiagram(bar); + log.println("Set it to 3D"); + oObj = UnoRuntime.queryInterface( XPropertySet.class, doc.getDiagram() ); + try { + oObj.setPropertyValue("Dim3D", Boolean.TRUE); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } + } + + /** + * Sets the old diagram for a chart document. + */ + @Override + protected void after() { + doc.setDiagram(oldDiagram); + } +} // EOF ChartTwoAxisYSupplier + diff --git a/qadevOOo/tests/java/ifc/chart/_Diagram.java b/qadevOOo/tests/java/ifc/chart/_Diagram.java new file mode 100644 index 0000000000..ea4fe01ca4 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_Diagram.java @@ -0,0 +1,59 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XChartDocument; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.chart.Diagram</code> +* service properties : +* <ul> +* <li><code> DataCaption</code></li> +* <li><code> DataRowSource</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CHARTDOC'</code> (of type <code>XChartDocument</code>): +* to have reference to chart document </li> +* </ul> <p> +* @see com.sun.star.chart.Diagram +*/ +public class _Diagram extends MultiPropertyTest { + + /** + * Retrieves object relations and prepares a chart document. + * @throws StatusException if one of relations not found. + */ + @Override + protected void before() { + log.println("Setting Diagram type to LineDiagram"); + XChartDocument doc = (XChartDocument) tEnv.getObjRelation("CHARTDOC"); + if (doc == null) throw new StatusException(Status.failed + ("Relation 'CHARTDOC' not found")); + + oObj = UnoRuntime.queryInterface( XPropertySet.class, doc.getDiagram() ); + } +} + diff --git a/qadevOOo/tests/java/ifc/chart/_Dim3DDiagram.java b/qadevOOo/tests/java/ifc/chart/_Dim3DDiagram.java new file mode 100644 index 0000000000..512bb0016c --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_Dim3DDiagram.java @@ -0,0 +1,58 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XChartDocument; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.chart.Dim3DDiagram</code> +* service properties : +* <ul> +* <li><code> Dim3D</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CHARTDOC'</code> (of type <code>XChartDocument</code>): +* to have reference to chart document </li> +* </ul> <p> +* @see com.sun.star.chart.Dim3DDiagram +*/ +public class _Dim3DDiagram extends MultiPropertyTest { + + /** + * Retrieves object relations and prepares a chart document. + * @throws StatusException if one of relations not found. + */ + @Override + protected void before() { + log.println("Setting Diagram type to LineDiagram"); + XChartDocument doc = (XChartDocument) tEnv.getObjRelation("CHARTDOC"); + if (doc == null) throw new StatusException(Status.failed + ("Relation 'CHARTDOC' not found")); + + oObj = UnoRuntime.queryInterface( XPropertySet.class, doc.getDiagram() ); + } +} // EOF Dim3DDiagram + diff --git a/qadevOOo/tests/java/ifc/chart/_LineDiagram.java b/qadevOOo/tests/java/ifc/chart/_LineDiagram.java new file mode 100644 index 0000000000..ef48ee877b --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_LineDiagram.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 ifc.chart; + +import lib.MultiPropertyTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XChartDocument; +import com.sun.star.chart.XDiagram; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.chart.LineDiagram</code> +* service properties : +* <ul> +* <li><code> SymbolType</code></li> +* <li><code> SymbolSize</code></li> +* <li><code> SymbolBitmapURL</code></li> +* <li><code> Lines</code></li> +* <li><code> SplineType</code></li> +* </ul> <p> +* The following predefined files needed to complete the test: +* <ul> +* <li> <code>space-metal.jpg</code> : +* for test of property 'SymbolBitmapURL' </li> +* <li> <code>crazy-blue.jpg</code> : +* for test of property 'SymbolBitmapURL' </li> +* <ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CHARTDOC'</code> (of type <code>XChartDocument</code>): +* to have reference to chart document </li> +* <li> <code>'LINE'</code> (of type <code>XDiagram</code>): +* relation that use as parameter for method setDiagram of chart document </li> +* </ul> <p> +* @see com.sun.star.chart.LineDiagram +*/ +public class _LineDiagram extends MultiPropertyTest { + + XChartDocument doc = null; + XDiagram oldDiagram = null; + + /** + * Retrieves object relations. + * @throws StatusException If one of relations not found. + */ + @Override + protected void before() { + log.println("Setting Diagram type to LineDiagram"); + doc = (XChartDocument) tEnv.getObjRelation("CHARTDOC"); + if (doc == null) throw new StatusException(Status.failed + ("Relation 'CHARTDOC' not found")); + + XDiagram Line = (XDiagram) tEnv.getObjRelation("LINE"); + if (Line == null) throw new StatusException(Status.failed + ("Relation 'LINE' not found")); + + oldDiagram = doc.getDiagram(); + doc.setDiagram(Line); + oObj = UnoRuntime.queryInterface( XPropertySet.class, doc.getDiagram() ); + } + + /** + * Sets the old diagram for a chart document. + */ + @Override + protected void after() { + doc.setDiagram(oldDiagram); + } + + protected PropertyTester SymbolTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + + int a = com.sun.star.chart.ChartSymbolType.AUTO; + int b = com.sun.star.chart.ChartSymbolType.NONE; + if ( ((Integer) oldValue).intValue() == a) + return Integer.valueOf(b); else + return Integer.valueOf(a); + } + } ; + + protected PropertyTester SplineTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + + int a = 0; + int b = 2; + if ( ((Integer) oldValue).intValue() == a) + return Integer.valueOf(b); else + return Integer.valueOf(a); + } + } ; + + /** + * Tests property 'SymbolType'. + */ + public void _SymbolType() { + log.println("Testing with custom Property tester") ; + testProperty("SymbolType", SymbolTester) ; + try { + oObj.setPropertyValue("SymbolType",Integer.valueOf(-2)); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } + } + + /** + * Tests property 'SplineType'. + */ + public void _SplineType() { + log.println("Testing with custom Property tester") ; + testProperty("SplineType", SplineTester) ; + } + + /** + * Tests property 'SymbolBitmapURL'. + */ + public void _SymbolBitmapURL() { + log.println("Testing with custom Property tester") ; + try { + oObj.setPropertyValue("SymbolType", + Integer.valueOf(com.sun.star.chart.ChartSymbolType.BITMAPURL)); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } + + try { + oObj.setPropertyValue( + "SymbolBitmapURL", + util.utils.getFullTestURL("space-metal.jpg") ); + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.PropertyVetoException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception while set property value"); + e.printStackTrace(log); + throw new StatusException("Exception while set property value", e); + } + } +} // EOF LineDiagram + diff --git a/qadevOOo/tests/java/ifc/chart/_StackableDiagram.java b/qadevOOo/tests/java/ifc/chart/_StackableDiagram.java new file mode 100644 index 0000000000..9fbb2bed27 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_StackableDiagram.java @@ -0,0 +1,81 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XChartDocument; +import com.sun.star.chart.XDiagram; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.chart.StackableDiagram</code> +* service properties : +* <ul> +* <li><code> Percent</code></li> +* <li><code> Stacked</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CHARTDOC'</code> (of type <code>XChartDocument</code>): +* to have reference to chart document </li> +* <li> <code>'STACK'</code> (of type <code>XDiagram</code>): +* relation that use as parameter for method setDiagram of chart document </li> +* </ul> <p> +* @see com.sun.star.chart.StackableDiagram +*/ +public class _StackableDiagram extends MultiPropertyTest { + + XChartDocument doc = null; + XDiagram oldDiagram = null; + + /** + * Retrieves object relations and prepares a chart document. + * @throws StatusException if one of relations not found. + */ + @Override + protected void before() { + log.println("Setting Diagram type to LineDiagram"); + doc = (XChartDocument) tEnv.getObjRelation("CHARTDOC"); + if (doc == null) throw new StatusException(Status.failed + ("Relation 'CHARTDOC' not found")); + + XDiagram stack = (XDiagram) tEnv.getObjRelation("STACK"); + if (stack == null) throw new StatusException(Status.failed + ("Relation 'STACK' not found")); + + oldDiagram = doc.getDiagram(); + + doc.setDiagram(stack); + oObj = UnoRuntime.queryInterface( XPropertySet.class, doc.getDiagram() ); + } + + /** + * Sets the old diagram for a chart document. + */ + @Override + protected void after() { + doc.setDiagram(oldDiagram); + } + +} // EOF StackableDiagram + diff --git a/qadevOOo/tests/java/ifc/chart/_StockDiagram.java b/qadevOOo/tests/java/ifc/chart/_StockDiagram.java new file mode 100644 index 0000000000..32c0200241 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_StockDiagram.java @@ -0,0 +1,79 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiPropertyTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XChartDocument; +import com.sun.star.chart.XDiagram; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.chart.StockDiagram</code> +* service properties : +* <ul> +* <li><code> Volume</code></li> +* <li><code> UpDown</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CHARTDOC'</code> (of type <code>XChartDocument</code>): +* to have reference to chart document </li> +* <li> <code>'STOCK'</code> (of type <code>XDiagram</code>): +* relation that use as parameter for method setDiagram of chart document </li> +* </ul> <p> +* @see com.sun.star.chart.StockDiagram +*/ +public class _StockDiagram extends MultiPropertyTest { + + XDiagram oldDiagram = null; + XChartDocument doc = null; + + /** + * Retrieves object relations and prepares a chart document. + * @throws StatusException if one of relations not found. + */ + @Override + protected void before() { + log.println("Setting Diagram type to StockDiagram"); + doc = (XChartDocument) tEnv.getObjRelation("CHARTDOC"); + if (doc == null) throw new StatusException(Status.failed + ("Relation 'CHARTDOC' not found")); + + XDiagram stock = (XDiagram) tEnv.getObjRelation("STOCK"); + if (stock == null) throw new StatusException(Status.failed + ("Relation 'STOCK' not found")); + + oldDiagram = doc.getDiagram(); + doc.setDiagram(stock); + oObj = UnoRuntime.queryInterface(XPropertySet.class, doc.getDiagram()); + } + + /** + * Sets the old diagram for a chart document. + */ + @Override + protected void after() { + doc.setDiagram(oldDiagram); + } +} + diff --git a/qadevOOo/tests/java/ifc/chart/_X3DDisplay.java b/qadevOOo/tests/java/ifc/chart/_X3DDisplay.java new file mode 100644 index 0000000000..a9db80003b --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_X3DDisplay.java @@ -0,0 +1,68 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.X3DDisplay; + +/** +* Testing <code>com.sun.star.chart.X3DDisplay</code> +* interface methods : +* <ul> +* <li><code> getWall()</code></li> +* <li><code> getFloor()</code></li> +* </ul> <p> +* @see com.sun.star.chart.X3DDisplay +*/ +public class _X3DDisplay extends MultiMethodTest { + + public X3DDisplay oObj = null; + boolean result = true; + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value that isn't null. <p> + */ + public void _getWall() { + result = true; + + XPropertySet Wall = oObj.getWall(); + result = (Wall != null); + + tRes.tested("getWall()", result); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value that isn't null. <p> + */ + public void _getFloor() { + result = true; + + XPropertySet Floor = oObj.getWall(); + result = (Floor != null); + + tRes.tested("getFloor()", result); + } + +} // EOF X3DDisplay + + diff --git a/qadevOOo/tests/java/ifc/chart/_XAxisXSupplier.java b/qadevOOo/tests/java/ifc/chart/_XAxisXSupplier.java new file mode 100644 index 0000000000..5063b9a4bd --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_XAxisXSupplier.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 ifc.chart; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XAxisXSupplier; +import com.sun.star.drawing.XShape; + +/** +* Testing <code>com.sun.star.chart.XAxisXSupplier</code> +* interface methods : +* <ul> +* <li><code> getXMainGrid()</code></li> +* <li><code> getXAxisTitle()</code></li> +* <li><code> getXAxis()</code></li> +* <li><code> getXHelpGrid()</code></li> +* </ul> <p> +* @see com.sun.star.chart.XAxisXSupplier +*/ +public class _XAxisXSupplier extends MultiMethodTest { + + public XAxisXSupplier oObj = null; + boolean result = true; + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value that isn't null. <p> + */ + public void _getXMainGrid() { + result = true; + + XPropertySet MGrid = oObj.getXMainGrid(); + result = (MGrid != null); + + tRes.tested("getXMainGrid()", result); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value that isn't null. <p> + */ + public void _getXAxisTitle() { + result = true; + + XShape title = oObj.getXAxisTitle(); + result = (title != null); + + tRes.tested("getXAxisTitle()", result); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value that isn't null. <p> + */ + public void _getXAxis() { + result = true; + + XPropertySet axis = oObj.getXAxis(); + result = (axis != null); + + tRes.tested("getXAxis()", result); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value that isn't null. <p> + */ + public void _getXHelpGrid() { + result = true; + + XPropertySet HGrid = oObj.getXHelpGrid(); + result = (HGrid != null); + + tRes.tested("getXHelpGrid()", result); + } + +} + + diff --git a/qadevOOo/tests/java/ifc/chart/_XAxisYSupplier.java b/qadevOOo/tests/java/ifc/chart/_XAxisYSupplier.java new file mode 100644 index 0000000000..a5f3fc84fd --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_XAxisYSupplier.java @@ -0,0 +1,100 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XAxisYSupplier; +import com.sun.star.drawing.XShape; + +/** +* Testing <code>com.sun.star.chart.XAxisYSupplier</code> +* interface methods : +* <ul> +* <li><code> getYMainGrid()</code></li> +* <li><code> getYAxisTitle()</code></li> +* <li><code> getYAxis()</code></li> +* <li><code> getYHelpGrid()</code></li> +* </ul> <p> +* @see com.sun.star.chart.XAxisYSupplier +*/ +public class _XAxisYSupplier extends MultiMethodTest { + + public XAxisYSupplier oObj = null; + boolean result = true; + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if the method returns + * value that isn't null. <p> + */ + public void _getYMainGrid() { + result = true; + + XPropertySet MGrid = oObj.getYMainGrid(); + result = (MGrid != null); + + tRes.tested("getYMainGrid()", result); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if the method returns + * value that isn't null. <p> + */ + public void _getYAxisTitle() { + result = true; + + XShape title = oObj.getYAxisTitle(); + result = (title != null); + + tRes.tested("getYAxisTitle()", result); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if the method returns + * value that isn't null. <p> + */ + public void _getYAxis() { + result = true; + + XPropertySet axis = oObj.getYAxis(); + result = (axis != null); + + tRes.tested("getYAxis()", result); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if the method returns + * value that isn't null. <p> + */ + public void _getYHelpGrid() { + result = true; + + XPropertySet HGrid = oObj.getYHelpGrid(); + result = (HGrid != null); + + tRes.tested("getYHelpGrid()", result); + } +} // EOF XAxisYSupplier + + diff --git a/qadevOOo/tests/java/ifc/chart/_XAxisZSupplier.java b/qadevOOo/tests/java/ifc/chart/_XAxisZSupplier.java new file mode 100644 index 0000000000..00b89656c3 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_XAxisZSupplier.java @@ -0,0 +1,100 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XAxisZSupplier; +import com.sun.star.drawing.XShape; + +/** +* Testing <code>com.sun.star.chart.XAxisZSupplier</code> +* interface methods : +* <ul> +* <li><code> getZMainGrid()</code></li> +* <li><code> getZAxisTitle()</code></li> +* <li><code> getZAxis()</code></li> +* <li><code> getZHelpGrid()</code></li> +* </ul> <p> +* @see com.sun.star.chart.XAxisZSupplier +*/ +public class _XAxisZSupplier extends MultiMethodTest { + public XAxisZSupplier oObj = null; + boolean result = true; + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if the method returns + * value that isn't null. <p> + */ + public void _getZMainGrid() { + result = true; + + XPropertySet MGrid = oObj.getZMainGrid(); + result = (MGrid != null); + + tRes.tested("getZMainGrid()", result); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if the method returns + * value that isn't null. <p> + */ + public void _getZAxisTitle() { + result = true; + + XShape title = oObj.getZAxisTitle(); + result = (title != null); + + tRes.tested("getZAxisTitle()", result); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if the method returns + * value that isn't null. <p> + */ + public void _getZAxis() { + result = true; + + XPropertySet axis = oObj.getZAxis(); + result = (axis != null); + + tRes.tested("getZAxis()", result); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if the method returns + * value that isn't null. <p> + */ + public void _getZHelpGrid() { + result = true; + + XPropertySet HGrid = oObj.getZHelpGrid(); + result = (HGrid != null); + + tRes.tested("getZHelpGrid()", result); + } + +} // EOF XAxisZSupplier + + diff --git a/qadevOOo/tests/java/ifc/chart/_XChartData.java b/qadevOOo/tests/java/ifc/chart/_XChartData.java new file mode 100644 index 0000000000..c0a4bc3c7b --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_XChartData.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 ifc.chart; + +import com.sun.star.chart.ChartDataChangeEvent; +import com.sun.star.chart.XChartData; +import com.sun.star.chart.XChartDataArray; +import com.sun.star.chart.XChartDataChangeEventListener; +import com.sun.star.lang.EventObject; +import com.sun.star.uno.UnoRuntime; + +import lib.MultiMethodTest; + + +/** +* Testing <code>com.sun.star.chart.XChartData</code> +* interface methods : +* <ul> +* <li><code> addChartDataChangeEventListener()</code></li> +* <li><code> removeChartDataChangeEventListener()</code></li> +* <li><code> getNotANumber()</code></li> +* <li><code> isNotANumber()</code></li> +* </ul> <p> +* @see com.sun.star.chart.XChartData +*/ +public class _XChartData extends MultiMethodTest { + public XChartData oObj = null; + boolean result = true; + double nan = 0; + XChartDataArray dataArray = null; + boolean[] dataChanged = new boolean[2]; + XChartDataChangeEventListener listener1 = new MyEventListener(); + XChartDataChangeEventListener listener2 = new MyEventListener2(); + + /** + * Test calls the method adding two listeners and then changes data. <p> + * Has <b> OK </b> status if after data were changed + * listeners were called. <p> + */ + public void _addChartDataChangeEventListener() { + dataChanged[0] = false; + dataChanged[1] = false; + + oObj.addChartDataChangeEventListener(listener1); + oObj.addChartDataChangeEventListener(listener2); + + dataArray = UnoRuntime.queryInterface( + XChartDataArray.class, oObj); + + double[][] data = dataArray.getData(); + data[0][0] += 0.1; + dataArray.setData(data); + + if (!dataChanged[0]) { + log.println("ChartDataChangeEventListener1 " + + "isn't called after changing data"); + } + + if (!dataChanged[1]) { + log.println("ChartDataChangeEventListener2 " + + "isn't called after changing data"); + } + + tRes.tested("addChartDataChangeEventListener()", + dataChanged[0] && dataChanged[1]); + } + + /** + * Test calls the method for one listener, changes data, + * calls the method for other listener and again changes data. <p> + * Has <b> OK </b> status if listener is not called after removing. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code>addChartDataChangeEventListener</code> : to have listeners + * that must be removed by the method </li> + * </ul> + */ + public void _removeChartDataChangeEventListener() { + requiredMethod("addChartDataChangeEventListener()"); + + dataChanged[0] = false; + dataChanged[1] = false; + + oObj.removeChartDataChangeEventListener(listener1); + dataArray = UnoRuntime.queryInterface( + XChartDataArray.class, oObj); + + double[][] data = dataArray.getData(); + data[0][0] += 0.1; + dataArray.setData(data); + oObj.removeChartDataChangeEventListener(listener2); + + if (dataChanged[0]) { + log.println("ChartDataChangeEventListener1 is " + + "called after removing listener"); + } + + tRes.tested("removeChartDataChangeEventListener()", + ((!dataChanged[0]) && (dataChanged[1]))); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if the return value isn't equal to 1. <p> + */ + public void _getNotANumber() { + result = true; + + nan = oObj.getNotANumber(); + log.println("Current NotANumber is " + nan); + result = nan != 1; + + tRes.tested("getNotANumber()", result); + } + + /** + * Test calls the method with NAN value and with non NAN value. <p> + * Has <b> OK </b> status if the method returns true for NAN value and + * returns false for other value<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code>getNotANumber</code> : to have the current NAN value </li> + * </ul> + */ + public void _isNotANumber() { + requiredMethod("getNotANumber()"); + result = true; + + result = (oObj.isNotANumber(nan) && !oObj.isNotANumber(nan + 1)); + + tRes.tested("isNotANumber()", result); + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + + class MyEventListener implements XChartDataChangeEventListener { + public void disposing(EventObject oEvent) { + System.out.println("Listener1 disposed"); + } + + public void chartDataChanged(ChartDataChangeEvent ev) { + dataChanged[0] = true; + } + } + + class MyEventListener2 implements XChartDataChangeEventListener { + public void disposing(EventObject oEvent) { + System.out.println("Listener2 disposed"); + } + + public void chartDataChanged(ChartDataChangeEvent ev) { + dataChanged[1] = true; + } + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/chart/_XChartDataArray.java b/qadevOOo/tests/java/ifc/chart/_XChartDataArray.java new file mode 100644 index 0000000000..5021657ea9 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_XChartDataArray.java @@ -0,0 +1,240 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import com.sun.star.beans.XPropertySet; +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.chart.XChartDataArray; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.chart.XChartDataArray</code> +* interface methods : +* <ul> +* <li><code> getColumnDescriptions()</code></li> +* <li><code> getData()</code></li> +* <li><code> getRowDescriptions()</code></li> +* <li><code> setColumnDescriptions()</code></li> +* <li><code> setData()</code></li> +* <li><code> setRowDescriptions()</code></li> +* </ul> <p> +* @see com.sun.star.chart.XChartDataArray +*/ +public class _XChartDataArray extends MultiMethodTest { + + public XChartDataArray oObj = null; + boolean bResult = true; + String[] colDscs = new String[3]; + String[] rowDscs = new String[3]; + double[][] data = null; + private boolean mbExcludeSetRowAndSetColumn = false; + private String msExcludeMessage; + + @Override + protected void before() { + Object o = tEnv.getObjRelation("CRDESC"); + if (o != null) { + mbExcludeSetRowAndSetColumn = true; + msExcludeMessage = (String)o; + } + if (mbExcludeSetRowAndSetColumn) { + return; + } + XPropertySet xProp = UnoRuntime.queryInterface(XPropertySet.class, oObj); + if(xProp != null) { + try { + boolean columnAsLabel = ((Boolean)xProp.getPropertyValue("ChartColumnAsLabel")).booleanValue(); + boolean rowAsLabel = ((Boolean)xProp.getPropertyValue("ChartRowAsLabel")).booleanValue(); + if (!columnAsLabel) { + xProp.setPropertyValue("ChartColumnAsLabel", Boolean.TRUE); + } + if (!rowAsLabel) { + xProp.setPropertyValue("ChartRowAsLabel", Boolean.TRUE); + } + } + catch(Exception e) { + // ignore + } + } + } + + /** + * Test calls the method and restores new values. <p> + * Has <b> OK </b> status if the method successfully returns. <p> + */ + public void _setColumnDescriptions() { + bResult = true; + + colDscs = oObj.getColumnDescriptions(); + if (mbExcludeSetRowAndSetColumn) { + log.println(msExcludeMessage); + throw new StatusException(Status.skipped(true)); + } + for (int i = 0; i < colDscs.length; i++) { + colDscs[i] = "Col" + i; + } + oObj.setColumnDescriptions(colDscs); + + tRes.tested("setColumnDescriptions()", bResult); + } + + /** + * Test calls the method and restores new values. <p> + * Has <b> OK </b> status if the method successfully returns. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setColumnDescriptions </code></li> + * </ul> + */ + public void _setRowDescriptions() { + bResult = true; + + rowDscs = oObj.getRowDescriptions(); + if (mbExcludeSetRowAndSetColumn) { + log.println(msExcludeMessage); + throw new StatusException(Status.skipped(true)); + } + for (int i = 0; i < rowDscs.length; i++) { + rowDscs[i] = "Row" + i; + } + oObj.setRowDescriptions(rowDscs); + + tRes.tested("setRowDescriptions()", bResult); + } + + /** + * Test calls the method and restores new values. <p> + * Has <b> OK </b> status if the method successfully returns. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setRowDescriptions </code></li> + * </ul> + */ + public void _setData() { + rowDscs = oObj.getRowDescriptions(); + colDscs = oObj.getColumnDescriptions(); + + bResult = true; + double[][] _data = oObj.getData(); + data = _data; + if(rowDscs.length != 0 && rowDscs.length != data.length) + bResult = false; + if(colDscs.length != 0 && colDscs.length != data[0].length) + bResult = false; + for (int i = 0; i < data.length; i++) { + for (int j = 0; j < data[i].length; j++) + data[i][j] = i * (j + 1); + } + oObj.setData(data); + + tRes.tested("setData()", bResult); + } + + /** + * Test calls the method and compare returned values with values restored + * after method <code>setColumnDescriptions</code>. <p> + * Has <b> OK </b> status if the returned values equils to restored values. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setData </code> : to set and restore new values </li> + * </ul> + */ + public void _getColumnDescriptions() { + requiredMethod("setColumnDescriptions()"); + + String[] dscs = oObj.getColumnDescriptions(); + bResult = dscs.length == colDscs.length; + if (bResult) { + for (int i = 0; i < dscs.length; i++) { + log.println("Col " + i + ": got " + dscs[i] + " expected: " + colDscs[i]); + if (!dscs[i].equals(colDscs[i])) { + bResult = false; + } + } + } + + tRes.tested("getColumnDescriptions()", bResult); + } + + /** + * Test calls the method and compare returned values with values restored + * after method <code>setRowDescriptions</code>. <p> + * Has <b> OK </b> status if the returned values equils to restored values. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setData </code> : to set and restore new values </li> + * </ul> + */ + public void _getRowDescriptions() { + requiredMethod("setRowDescriptions()"); + + String[] dscs = oObj.getRowDescriptions(); + bResult = dscs.length == rowDscs.length; + if (bResult) { + for (int i = 0; i < dscs.length; i++) { + log.println("Row " + i + ": got " + dscs[i] + " expected: " + rowDscs[i]); + if (!dscs[i].equals(rowDscs[i])) { + bResult = false; + } + } + } + + tRes.tested("getRowDescriptions()", bResult); + } + + /** + * Test calls the method and compare returned values with values restored + * after method <code>setData</code>. <p> + * Has <b> OK </b> status if the returned values equils to restored values. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setData </code> : to set and restore new values </li> + * </ul> + */ + public void _getData() { + requiredMethod("setData()"); + bResult = true; + + double[][] _data = oObj.getData(); + data = _data; + if(rowDscs.length != 0 && rowDscs.length != data.length) + bResult = false; + if(colDscs.length != 0 && colDscs.length != data[0].length) + bResult = false; + for (int i = 0; i < data.length; i++) { + for (int j = 0; j < data[i].length; j++) { + if (data[i][j] != _data[i][j]) { + bResult = false; + } + } + } + + tRes.tested("getData()", bResult); + } + + @Override + protected void after() { + disposeEnvironment(); + } +} + + diff --git a/qadevOOo/tests/java/ifc/chart/_XChartDocument.java b/qadevOOo/tests/java/ifc/chart/_XChartDocument.java new file mode 100644 index 0000000000..87fe405c51 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_XChartDocument.java @@ -0,0 +1,154 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XChartData; +import com.sun.star.chart.XChartDocument; +import com.sun.star.chart.XDiagram; +import com.sun.star.drawing.XShape; + +/** +* Testing <code>com.sun.star.chart.XChartDocument</code> +* interface methods : +* <ul> +* <li><code> getTitle()</code></li> +* <li><code> getSubTitle()</code></li> +* <li><code> getLegend()</code></li> +* <li><code> getArea()</code></li> +* <li><code> getDiagram()</code></li> +* <li><code> setDiagram()</code></li> +* <li><code> getData()</code></li> +* <li><code> attachData()</code></li> +* </ul> <p> +* +* This test needs the following object relations : +* <ul> +* <li> <code>'DIAGRAM'</code> (of type <code>XDiagram</code>): +* is used as parameter for method <code>setDiagram</code> </li> +* <li> <code>'CHARTDATA'</code> (of type <code>XChartData</code>): +* is used as parameter for method <code>attachData</code> </li> +* </ul> +* +* @see com.sun.star.chart.XChartDocument +*/ +public class _XChartDocument extends MultiMethodTest { + + public XChartDocument oObj = null; + XDiagram diagram = null; + XChartData ChartData = null; + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getTitle() { + XShape title = oObj.getTitle(); + tRes.tested("getTitle()", title != null); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getSubTitle() { + XShape subtitle = oObj.getSubTitle(); + tRes.tested("getSubTitle()", subtitle != null); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getLegend() { + XShape legend = oObj.getLegend(); + tRes.tested("getLegend()", legend != null); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getArea() { + XPropertySet area = oObj.getArea(); + tRes.tested("getArea()", area != null); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getDiagram() { + diagram = oObj.getDiagram(); + tRes.tested("getDiagram()", diagram != null); + } + + /** + * Test compares type of diagram before method call and after.<p> + * Has <b> OK </b> status if diagram types are not equal. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getDiagram </code> : to have diagram before method call</li> + * </ul> + * + * @see com.sun.star.chart.XDiagram + */ + public void _setDiagram() { + requiredMethod("getDiagram()"); + String oldType = diagram.getDiagramType(); + XDiagram diag = (XDiagram)tEnv.getObjRelation("DIAGRAM"); + oObj.setDiagram(diag); + String newType = oObj.getDiagram().getDiagramType(); + tRes.tested("setDiagram()", !(oldType.equals(newType))); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getData() { + ChartData = oObj.getData(); + tRes.tested("getData()", ChartData != null); + } + + /** + * Test compares data before method call and after. <p> + * Has <b> OK </b> status if the data before method call and + * after are not equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getData </code> : to have data before method call </li> + * </ul> + * @see com.sun.star.chart.XChartData + */ + public void _attachData() { + requiredMethod("getData()"); + XChartData data = (XChartData)tEnv.getObjRelation("CHARTDATA"); + oObj.attachData(data); + XChartData newdata = oObj.getData(); + + tRes.tested("attachData()", !(newdata.equals(ChartData))); + } + +} + + diff --git a/qadevOOo/tests/java/ifc/chart/_XDiagram.java b/qadevOOo/tests/java/ifc/chart/_XDiagram.java new file mode 100644 index 0000000000..de51ea2e10 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_XDiagram.java @@ -0,0 +1,148 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XDiagram; + +/** +* Testing <code>com.sun.star.chart.XDiagram</code> +* interface methods : +* <ul> +* <li><code> getDiagramType()</code></li> +* <li><code> getDataRowProperties()</code></li> +* <li><code> getDataPointProperties()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'ROWAMOUNT'</code> (of type <code>Integer</code>): +* to have amount of rows </li> +* <li> <code>'COLAMOUNT'</code> (of type <code>Integer</code>): +* to have amount of columns </li> +* <ul> <p> +* @see com.sun.star.chart.XDiagram +*/ +public class _XDiagram extends MultiMethodTest { + + public XDiagram oObj = null; + boolean result = true; + Integer rowamount = null; + Integer colamount = null; + + /** + * Retrieves object relations. + * @throws StatusException If one of relations not found. + */ + @Override + public void before() { + rowamount = (Integer)tEnv.getObjRelation("ROWAMOUNT"); + if (rowamount == null) throw new StatusException(Status.failed + ("Relation 'ROWAMOUNT' not found")); + + colamount = (Integer)tEnv.getObjRelation("COLAMOUNT"); + if (colamount == null) throw new StatusException(Status.failed + ("Relation 'COLAMOUNT' not found")); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value start from 'com.sun.star.chart.' <p> + */ + public void _getDiagramType() { + result = true; + + String stype = oObj.getDiagramType(); + log.println("Current Diagram Type is " + stype); + result = stype.startsWith("com.sun.star.chart."); + + tRes.tested("getDiagramType()", result); + } + + /** + * Test calls the method for every row and checks returned value. <p> + * Has <b> OK </b> status if returned value for every row isn't null and + * no exceptions were thrown. <p> + */ + public void _getDataRowProperties() { + result = true; + + int rows = rowamount.intValue(); + rows -= 1; + XPropertySet props = null; + + log.println("There are " + rows + " rows."); + try { + for (int i = 0; i < rows; i++) { + props = oObj.getDataRowProperties(i); + if (props != null) { + log.println("Row " + i + " - OK"); + } else { + log.println("Row " + i + " - FAILED"); + result = false; + } + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception while get data row properties"); + e.printStackTrace(log); + result = false; + } + + tRes.tested("getDataRowProperties()", result); + } + + /** + * Test calls the method for every point and checks returned value. <p> + * Has <b> OK </b> status if returned value for every point isn't null and + * no exceptions were thrown. <p> + */ + public void _getDataPointProperties() { + result = true; + + int rows = rowamount.intValue(); + int cols = colamount.intValue(); + XPropertySet props = null; + + log.println("There are " + rows + " rows and " + cols + " cols."); + + try { + for (int i = 0; i < rows; i++) + for (int j = 0; j < cols; j++) { + props = oObj.getDataPointProperties(i, j); + if (props != null) { + log.println("Row " + i + " Col " + j + " - OK"); + } else { + log.println("Row " + i + " Col " + j + " - FAILED"); + result = false; + } + } + } catch(com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception while get data point properties"); + e.printStackTrace(log); + result = false; + } + + tRes.tested("getDataPointProperties()", result); + } +} + + diff --git a/qadevOOo/tests/java/ifc/chart/_XStatisticDisplay.java b/qadevOOo/tests/java/ifc/chart/_XStatisticDisplay.java new file mode 100644 index 0000000000..7791838561 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_XStatisticDisplay.java @@ -0,0 +1,82 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XStatisticDisplay; + +/** +* Testing <code>com.sun.star.chart.XStatisticDisplay</code> +* interface methods : +* <ul> +* <li><code> getMinMaxLine()</code></li> +* <li><code> getUpBar()</code></li> +* <li><code> getDownBar()</code></li> +* </ul> <p> +* @see com.sun.star.chart.XStatisticDisplay +*/ +public class _XStatisticDisplay extends MultiMethodTest { + + public XStatisticDisplay oObj = null; + boolean result = true; + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getMinMaxLine() { + result = true; + + XPropertySet MinMaxLine = oObj.getMinMaxLine(); + result = (MinMaxLine != null); + + tRes.tested("getMinMaxLine()", result); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getUpBar() { + result = true; + + XPropertySet UpBar = oObj.getUpBar(); + result = (UpBar != null); + + tRes.tested("getUpBar()", result); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getDownBar() { + result = true; + + XPropertySet DownBar = oObj.getDownBar(); + result = (DownBar != null); + + tRes.tested("getDownBar()", result); + } + +} // EOF XStatisticDisplay + + diff --git a/qadevOOo/tests/java/ifc/chart/_XTwoAxisXSupplier.java b/qadevOOo/tests/java/ifc/chart/_XTwoAxisXSupplier.java new file mode 100644 index 0000000000..488181108f --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_XTwoAxisXSupplier.java @@ -0,0 +1,54 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XTwoAxisXSupplier; + +/** +* Testing <code>com.sun.star.chart.XTwoAxisXSupplier</code> +* interface methods : +* <ul> +* <li><code> getSecondaryXAxis()</code></li> +* </ul> <p> +* @see com.sun.star.chart.XTwoAxisXSupplier +*/ +public class _XTwoAxisXSupplier extends MultiMethodTest { + + public XTwoAxisXSupplier oObj = null; + boolean result = true; + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getSecondaryXAxis() { + result = true; + + XPropertySet SecXAxis = oObj.getSecondaryXAxis(); + result = (SecXAxis != null); + + tRes.tested("getSecondaryXAxis()", result); + } + +} // EOF XTwoAxisXSupplier + + diff --git a/qadevOOo/tests/java/ifc/chart/_XTwoAxisYSupplier.java b/qadevOOo/tests/java/ifc/chart/_XTwoAxisYSupplier.java new file mode 100644 index 0000000000..bc88bdc729 --- /dev/null +++ b/qadevOOo/tests/java/ifc/chart/_XTwoAxisYSupplier.java @@ -0,0 +1,63 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.chart; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.chart.XTwoAxisYSupplier; + +/** +* Testing <code>com.sun.star.chart.XTwoAxisYSupplier</code> +* interface methods : +* <ul> +* <li><code> getSecondaryYAxis()</code></li> +* </ul> <p> +* After test completion object environment has to be recreated. +* @see com.sun.star.chart.XTwoAxisYSupplier +*/ +public class _XTwoAxisYSupplier extends MultiMethodTest { + + public XTwoAxisYSupplier oObj = null; + boolean result = true; + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getSecondaryYAxis() { + result = true; + + XPropertySet SecYAxis = oObj.getSecondaryYAxis(); + result = (SecYAxis != null); + + tRes.tested("getSecondaryYAxis()", result); + } + + /** + * Forces object environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + +} // EOF XTwoAxisYSupplier + + diff --git a/qadevOOo/tests/java/ifc/configuration/_XTemplateContainer.java b/qadevOOo/tests/java/ifc/configuration/_XTemplateContainer.java new file mode 100644 index 0000000000..6c000f23ff --- /dev/null +++ b/qadevOOo/tests/java/ifc/configuration/_XTemplateContainer.java @@ -0,0 +1,41 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.configuration; + +import com.sun.star.configuration.XTemplateContainer; +import lib.MultiMethodTest; + + +public class _XTemplateContainer extends MultiMethodTest { + + public XTemplateContainer oObj; + + public void _getElementTemplateName() { + String tName = (String) tEnv.getObjRelation("TemplateName"); + String oTName = oObj.getElementTemplateName(); + log.println("TemplateName: "+oTName); + boolean res = oTName.equals(tName); + if (!res) { + log.println("Expected: "+tName); + log.println("Gained: "+oTName); + } + tRes.tested("getElementTemplateName()", res); + } + +} diff --git a/qadevOOo/tests/java/ifc/configuration/_XTemplateInstance.java b/qadevOOo/tests/java/ifc/configuration/_XTemplateInstance.java new file mode 100644 index 0000000000..fac45c4935 --- /dev/null +++ b/qadevOOo/tests/java/ifc/configuration/_XTemplateInstance.java @@ -0,0 +1,41 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.configuration; + +import com.sun.star.configuration.XTemplateInstance; +import lib.MultiMethodTest; + + +public class _XTemplateInstance extends MultiMethodTest { + + public XTemplateInstance oObj; + + + public void _getTemplateName() { + String expected = (String) tEnv.getObjRelation("TemplateInstance"); + String getting = oObj.getTemplateName(); + boolean res = getting.equals(expected); + if (!res) { + log.println("Expected: "+expected); + log.println("Getting: "+getting); + } + tRes.tested("getTemplateName()",res); + } + +} diff --git a/qadevOOo/tests/java/ifc/configuration/backend/_XBackend.java b/qadevOOo/tests/java/ifc/configuration/backend/_XBackend.java new file mode 100644 index 0000000000..eb8a09cc65 --- /dev/null +++ b/qadevOOo/tests/java/ifc/configuration/backend/_XBackend.java @@ -0,0 +1,250 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.configuration.backend; + +import com.sun.star.configuration.backend.XBackend; +import com.sun.star.configuration.backend.XLayer; +import com.sun.star.configuration.backend.XUpdateHandler; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.XStringSubstitution; + +import lib.MultiMethodTest; + +import util.XLayerHandlerImpl; + + +public class _XBackend extends MultiMethodTest { + public XBackend oObj; + + public void _getOwnUpdateHandler() { + boolean res = true; + + String noUpdate = (String) tEnv.getObjRelation("noUpdate"); + + if (noUpdate != null) { + log.println(noUpdate); + tRes.tested("getOwnUpdateHandler()", res); + + return; + } + + try { + XUpdateHandler aHandler = oObj.getOwnUpdateHandler( + "org.openoffice.Office.Linguistic"); + res &= (aHandler != null); + + if (aHandler == null) { + log.println("\treturned Layer is NULL -- FAILED"); + } + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } catch (com.sun.star.lang.NoSupportException e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } + + tRes.tested("getOwnUpdateHandler()", res); + } + + public void _getUpdateHandler() { + boolean res = true; + + String noUpdate = (String) tEnv.getObjRelation("noUpdate"); + + if (noUpdate != null) { + log.println(noUpdate); + tRes.tested("getUpdateHandler()", res); + + return; + } + + try { + oObj.getUpdateHandler( + "org.openoffice.Office.TypeDetection", + "illegal"); + log.println("Exception expected -- FAILED"); + res = false; + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("expected Exception -- OK"); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } catch (com.sun.star.lang.NoSupportException e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } + + try { + XStringSubstitution sts = createStringSubstitution( + tParam.getMSF()); + String ent = sts.getSubstituteVariableValue("$(inst)") + + "/share/registry"; + XUpdateHandler aHandler = oObj.getUpdateHandler( + "org.openoffice.Office.Jobs", + ent); + + if (aHandler == null) { + log.println("\treturned Layer is NULL -- FAILED"); + } + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } catch (com.sun.star.lang.NoSupportException e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } catch (com.sun.star.uno.Exception e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } + + tRes.tested("getUpdateHandler()", res); + } + + public void _listLayers() { + boolean res = true; + + try { + XStringSubstitution sts = createStringSubstitution(tParam.getMSF()); + String ent = sts.getSubstituteVariableValue("$(inst)") + + "/share/registry"; + XLayer[] Layers = oObj.listLayers( + "org.openoffice.Office.Linguistic", ent); + + for (int i = 0; i < Layers.length; i++) { + log.println("Checking Layer " + i); + res &= checkLayer(Layers[i]); + } + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } catch (com.sun.star.uno.Exception e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } + + tRes.tested("listLayers()", res); + } + + public void _listOwnLayers() { + boolean res = true; + + try { + XLayer[] Layers = oObj.listOwnLayers( + "org.openoffice.Office.Common"); + + for (int i = 0; i < Layers.length; i++) { + log.println("Checking Layer " + i); + res &= checkLayer(Layers[i]); + } + if (Layers.length==0) { + System.out.println("No Layers found -- FAILED"); + res &= false; + } + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } + + tRes.tested("listOwnLayers()", res); + } + + protected boolean checkLayer(XLayer aLayer) { + boolean res = false; + + log.println("Checking for Exception in case of null argument"); + + try { + aLayer.readData(null); + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Expected Exception -- OK"); + res = true; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + } + + log.println("checking read data with own XLayerHandler implementation"); + + try { + XLayerHandlerImpl xLayerHandler = new XLayerHandlerImpl(); + aLayer.readData(xLayerHandler); + + String implCalled = xLayerHandler.getCalls(); + log.println(implCalled); + + int sl = implCalled.indexOf("startLayer"); + + if (sl < 0) { + log.println("startLayer wasn't called -- FAILED"); + res &= false; + } else { + log.println("startLayer was called -- OK"); + res &= true; + } + + int el = implCalled.indexOf("endLayer"); + + if (el < 0) { + log.println("endLayer wasn't called -- FAILED"); + res &= false; + } else { + log.println("endLayer was called -- OK"); + res &= true; + } + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } + + return res; + } + + public static XStringSubstitution createStringSubstitution(XMultiServiceFactory xMSF) throws com.sun.star.uno.Exception + { + Object xPathSubst = xMSF.createInstance( + "com.sun.star.util.PathSubstitution"); + return UnoRuntime.queryInterface(XStringSubstitution.class, xPathSubst); + } +} diff --git a/qadevOOo/tests/java/ifc/configuration/backend/_XBackendEntities.java b/qadevOOo/tests/java/ifc/configuration/backend/_XBackendEntities.java new file mode 100644 index 0000000000..5ed64c2921 --- /dev/null +++ b/qadevOOo/tests/java/ifc/configuration/backend/_XBackendEntities.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 ifc.configuration.backend; + +import com.sun.star.configuration.backend.XBackendEntities; + +import lib.MultiMethodTest; + + +public class _XBackendEntities extends MultiMethodTest { + String AdminEntity = ""; + String OwnerEntity = ""; + String adm = ""; + public XBackendEntities oObj; + + @Override + public void before() { + adm = (String) tEnv.getObjRelation("NoAdmin"); + } + + public void _getAdminEntity() { + if (adm != null) { + AdminEntity = adm; + log.println( + "This component doesn't have an AdminEntity, setting it to default"); + tRes.tested("getAdminEntity()", true); + + return; + } + + AdminEntity = oObj.getAdminEntity(); + + boolean res = AdminEntity.endsWith("/share/registry"); + + if (!res) { + log.println("Expected the Entity to end with /share/registry"); + log.println("getting: " + AdminEntity + " -- FAILED"); + } + + tRes.tested("getAdminEntity()", res); + } + + public void _getOwnerEntity() { + OwnerEntity = oObj.getOwnerEntity(); + + boolean res = OwnerEntity.endsWith("/user/registry"); + + if (!res) { + log.println("Expected the Entity to end with /user/registry"); + log.println("getting: " + OwnerEntity + " -- FAILED"); + } + + tRes.tested("getOwnerEntity()", res); + } + + public void _isEqualEntity() { + boolean res = true; + boolean localRes = true; + + try { + localRes = oObj.isEqualEntity("", ""); + log.println( + "No Exception thrown for isEqualEntity(\"\",\"\") -- FAILED"); + res &= false; + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Expected Exception (" + e + ") -- OK"); + res &= true; + } + + try { + localRes = oObj.isEqualEntity(AdminEntity, AdminEntity); + + if (!localRes) { + log.println( + "isEqualEntity(AdminEntity,AdminEntity) returns false -- FAILED"); + } + + res &= localRes; + + localRes = oObj.isEqualEntity(OwnerEntity, OwnerEntity); + + if (!localRes) { + log.println( + "isEqualEntity(OwnerEntity,OwnerEntity) returns false -- FAILED"); + } + + res &= localRes; + + localRes = !oObj.isEqualEntity(AdminEntity, OwnerEntity); + + if (!localRes) { + log.println( + "isEqualEntity(AdminEntity,OwnerEntity) returns true -- FAILED"); + } + + res &= localRes; + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } + + tRes.tested("isEqualEntity()", res); + } + + public void _supportsEntity() { + boolean res = true; + boolean localRes = true; + + try { + localRes = oObj.supportsEntity("illegal"); + log.println( + "No Exception thrown for supportsEntity(\"\") -- FAILED"); + res &= false; + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("Expected Exception (" + e + ") -- OK"); + res &= true; + } + + try { + localRes = oObj.supportsEntity(AdminEntity); + + if (adm != null) { + Object msb = tEnv.getObjRelation("MSB") ; + if (msb == null){ + localRes = !localRes; + log.println("This Component doesn't support the AdminEntity"); + } + } + + if (!localRes) { + log.println( + "supportsEntity(AdminEntity) returns false -- FAILED"); + } + + res &= localRes; + + localRes = oObj.supportsEntity(OwnerEntity); + + if (!localRes) { + log.println( + "supportsEntity(OwnerEntity) returns false -- FAILED"); + } + + res &= localRes; + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } + + tRes.tested("supportsEntity()", res); + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/configuration/backend/_XLayer.java b/qadevOOo/tests/java/ifc/configuration/backend/_XLayer.java new file mode 100644 index 0000000000..879a3113e2 --- /dev/null +++ b/qadevOOo/tests/java/ifc/configuration/backend/_XLayer.java @@ -0,0 +1,81 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.configuration.backend; + +import com.sun.star.configuration.backend.XLayer; +import lib.MultiMethodTest; +import util.XLayerHandlerImpl; + +public class _XLayer extends MultiMethodTest { + + public XLayer oObj; + + public void _readData() { + boolean res = false; + + log.println("Checking for Exception in case of nul argument"); + + try { + oObj.readData(null); + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Expected Exception -- OK"); + res = true; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception ("+e+") -- FAILED"); + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception ("+e+") -- FAILED"); + } + + log.println("checking read data with own XLayerHandler implementation"); + try { + XLayerHandlerImpl xLayerHandler = new XLayerHandlerImpl(); + oObj.readData(xLayerHandler); + String implCalled = xLayerHandler.getCalls(); + log.println(implCalled); + int sl = implCalled.indexOf("startLayer"); + if (sl < 0) { + log.println("startLayer wasn't called -- FAILED"); + res &= false; + } else { + log.println("startLayer was called -- OK"); + res &= true; + } + int el = implCalled.indexOf("endLayer"); + if (el < 0) { + log.println("endLayer wasn't called -- FAILED"); + res &= false; + } else { + log.println("endLayer was called -- OK"); + res &= true; + } + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Unexpected Exception ("+e+") -- FAILED"); + res &= false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception ("+e+") -- FAILED"); + res &= false; + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception ("+e+") -- FAILED"); + res &= false; + } + + tRes.tested("readData()",res); + } + +} diff --git a/qadevOOo/tests/java/ifc/configuration/backend/_XLayerHandler.java b/qadevOOo/tests/java/ifc/configuration/backend/_XLayerHandler.java new file mode 100644 index 0000000000..609d1c9a83 --- /dev/null +++ b/qadevOOo/tests/java/ifc/configuration/backend/_XLayerHandler.java @@ -0,0 +1,242 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.configuration.backend; + +import com.sun.star.configuration.backend.XLayer; +import com.sun.star.configuration.backend.XLayerHandler; +import com.sun.star.io.XActiveDataSink; +import com.sun.star.io.XInputStream; +import com.sun.star.ucb.XSimpleFileAccess; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; + +import lib.MultiMethodTest; + +import util.XLayerHandlerImpl; + + +public class _XLayerHandler extends MultiMethodTest { + public XLayerHandler oObj = null; + + /** this method contains the logic for all test methods + * the others will be passed OK if this one is + */ + public void _endLayer() { + boolean res = false; + + try { + oObj.startLayer(); + oObj.overrideNode("org.openoffice.Setup", (short) 0, false); + oObj.overrideNode("Office", (short) 0, false); + oObj.overrideProperty("ooSetupInstCompleted", (short) 0, + new Type(String.class), false); + oObj.setPropertyValue(Boolean.FALSE); + oObj.endProperty(); + oObj.overrideNode("Factories", (short) 0, false); + oObj.addOrReplaceNode("com.sun.star.chart.ChartDocument", + (short) 0); + oObj.overrideProperty("ooSetupFactoryEmptyDocumentURL", (short) 0, + new Type(String.class), false); + oObj.setPropertyValue("private:factory/schart"); + oObj.endProperty(); + oObj.overrideProperty("ooSetupFactoryIcon", (short) 0, + new Type(java.lang.Long.class), false); + oObj.setPropertyValue(Integer.valueOf(13)); + oObj.endProperty(); + oObj.overrideProperty("ooSetupFactoryShortName", (short) 0, + new Type(String.class), false); + oObj.setPropertyValue("schart"); + oObj.setPropertyValueForLocale("TemplateFile", "en-US"); + oObj.endProperty(); + oObj.overrideProperty("ooSetupFactoryTemplateFile", (short) 0, + new Type(String.class), false); + oObj.setPropertyValue("empty"); + oObj.endProperty(); + oObj.addProperty("ooSetupFactoryTemplateFile", (short) 0, + new Type(String.class)); + oObj.addPropertyWithValue("ooSetupFactoryTemplateFile", (short) 0, + "TemplateFile"); + oObj.endNode(); + + oObj.addOrReplaceNode("dropme", (short) 0); + oObj.overrideProperty("anyway", (short) 0, + new Type(String.class), false); + oObj.setPropertyValue("nice"); + oObj.endProperty(); + oObj.dropNode("dropme"); + oObj.endNode(); + + oObj.addOrReplaceNodeFromTemplate("FromTemplate", + new com.sun.star.configuration.backend.TemplateIdentifier( + "org.openoffice.Setup", + "Setup"), (short) 0); + oObj.endNode(); + + oObj.endNode(); + oObj.endNode(); + oObj.endNode(); + oObj.endLayer(); + + Object LayerParser = tParam.getMSF().createInstance( + "com.sun.star.comp.configuration.backend.xml.LayerParser"); + + XActiveDataSink xSink = UnoRuntime.queryInterface( + XActiveDataSink.class, LayerParser); + Object fileacc = tParam.getMSF().createInstance( + "com.sun.star.comp.ucb.SimpleFileAccess"); + XSimpleFileAccess simpleAccess = UnoRuntime.queryInterface( + XSimpleFileAccess.class, + fileacc); + + String filename = util.utils.getOfficeTemp( + tParam.getMSF()) + + "LayerWriter.xcu"; + log.println("Going to parse: " + filename); + + XInputStream xStream = simpleAccess.openFileRead(filename); + + xSink.setInputStream(xStream); + + XLayer xLayer = UnoRuntime.queryInterface(XLayer.class, + LayerParser); + + XLayerHandlerImpl xLayerHandler = new XLayerHandlerImpl(); + + xLayer.readData(xLayerHandler); + + res = xLayerHandler.getCalls().equals(getExpected()); + + if (!res) { + log.println("#### Getting: "); + log.println(xLayerHandler.getCalls()); + log.println("#### Expected: "); + log.println(getExpected()); + } + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception " + e); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception " + e); + } catch (com.sun.star.uno.Exception e) { + log.println("Unexpected Exception " + e); + } + + tRes.tested("endLayer()", res); + } + + public void _addOrReplaceNode() { + requiredMethod("endLayer()"); + tRes.tested("addOrReplaceNode()", true); + } + + public void _addOrReplaceNodeFromTemplate() { + requiredMethod("endLayer()"); + tRes.tested("addOrReplaceNodeFromTemplate()", true); + } + + public void _addProperty() { + requiredMethod("endLayer()"); + tRes.tested("addProperty()", true); + } + + public void _addPropertyWithValue() { + requiredMethod("endLayer()"); + tRes.tested("addPropertyWithValue()", true); + } + + public void _dropNode() { + requiredMethod("endLayer()"); + tRes.tested("dropNode()", true); + } + + public void _endNode() { + requiredMethod("endLayer()"); + tRes.tested("endNode()", true); + } + + public void _endProperty() { + requiredMethod("endLayer()"); + tRes.tested("endProperty()", true); + } + + public void _overrideNode() { + requiredMethod("endLayer()"); + tRes.tested("overrideNode()", true); + } + + public void _overrideProperty() { + requiredMethod("endLayer()"); + tRes.tested("overrideProperty()", true); + } + + public void _setPropertyValue() { + requiredMethod("endLayer()"); + tRes.tested("setPropertyValue()", true); + } + + public void _setPropertyValueForLocale() { + requiredMethod("endLayer()"); + tRes.tested("setPropertyValueForLocale()", true); + } + + public void _startLayer() { + requiredMethod("endLayer()"); + tRes.tested("startLayer()", true); + } + + protected String getExpected() { + String ls = System.getProperty("line.separator"); + String expected = "startLayer();" + ls; + expected += ("overrideNode(org.openoffice.Setup,0,false);" + ls); + expected += ("overrideNode(Office,0,false);" + ls); + expected += ("overrideProperty(ooSetupInstCompleted,0,Type[string],false);" + ls); + expected += ("setPropertyValue(false);" + ls); + expected += ("endProperty();" + ls); + expected += ("overrideNode(Factories,0,false);" + ls); + expected += ("addOrReplace(com.sun.star.chart.ChartDocument,0);" + ls); + expected += ("overrideProperty(ooSetupFactoryEmptyDocumentURL,0,Type[string],false);" + ls); + expected += ("setPropertyValue(private:factory/schart);" + ls); + expected += ("endProperty();" + ls); + expected += ("overrideProperty(ooSetupFactoryIcon,0,Type[hyper],false);" + ls); + expected += ("setPropertyValue(13);" + ls); + expected += ("endProperty();" + ls); + expected += ("overrideProperty(ooSetupFactoryShortName,0,Type[string],false);" + ls); + expected += ("setPropertyValue(schart);" + ls); + expected += ("setPropertyValueForLocale(TemplateFile,en-US);" + ls); + expected += ("endProperty();" + ls); + expected += ("overrideProperty(ooSetupFactoryTemplateFile,0,Type[string],false);" + ls); + expected += ("setPropertyValue(empty);" + ls); + expected += ("endProperty();" + ls); + expected += ("addProperty(ooSetupFactoryTemplateFile,0,Type[string]);" + ls); + expected += ("addPropertyWithValue(ooSetupFactoryTemplateFile,0,TemplateFile);" + ls); + expected += ("endNode();" + ls); + expected += ("addOrReplace(dropme,0);" + ls); + expected += ("overrideProperty(anyway,0,Type[string],false);" + ls); + expected += ("setPropertyValue(nice);" + ls); + expected += ("endProperty();" + ls); + expected += ("dropNode(dropme);" + ls); + expected += ("endNode();" + ls); + expected += ("addOrReplace(FromTemplate,0);" + ls); + expected += ("endNode();" + ls); + expected += ("endNode();" + ls); + expected += ("endNode();" + ls); + expected += ("endNode();" + ls); + expected += ("endLayer();" + ls); + + return expected; + } +} diff --git a/qadevOOo/tests/java/ifc/configuration/backend/_XLayerImporter.java b/qadevOOo/tests/java/ifc/configuration/backend/_XLayerImporter.java new file mode 100644 index 0000000000..0e42ec5264 --- /dev/null +++ b/qadevOOo/tests/java/ifc/configuration/backend/_XLayerImporter.java @@ -0,0 +1,157 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.configuration.backend; + +import com.sun.star.configuration.backend.XBackend; +import com.sun.star.configuration.backend.XLayerImporter; +import lib.MultiMethodTest; + +public class _XLayerImporter extends MultiMethodTest { + + public XLayerImporter oObj; + public XBackend xBackend = null; + + public void _getTargetBackend() { + xBackend = oObj.getTargetBackend(); + tRes.tested("getTargetBackend()", xBackend != null); + } + + public void _importLayer() { + boolean res = false; + log.println("checking for exception is argument null is given"); + try { + oObj.importLayer(null); + log.println("\tException expected -- FAILED"); + } catch (com.sun.star.lang.NullPointerException ne) { + res = true; + log.println("\tExpected exception was thrown -- OK"); + } catch (com.sun.star.configuration.backend.MalformedDataException mde) { + res = false; + log.println("\tWrong Expected "+mde+" exception was thrown -- FAILED"); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + res = false; + log.println("\tWrong Expected "+iae+" exception was thrown -- FAILED"); + } catch (com.sun.star.lang.WrappedTargetException wte) { + res = false; + log.println("\tWrong Expected "+wte+" exception was thrown -- FAILED"); + } + + log.println("checking own implementation of XLayer"); + try { + util.XLayerImpl xLayer = new util.XLayerImpl(); + oObj.importLayer(xLayer); + if (! xLayer.hasBeenCalled()) { + log.println("\tXLayer hasn't been imported -- FAILED"); + res &= false; + } else { + log.println("\tXLayer has been imported -- OK"); + res &= true; + } + } catch (com.sun.star.lang.NullPointerException ne) { + res &= false; + log.println("\tExpected exception "+ne+" was thrown -- FAILED"); + } catch (com.sun.star.configuration.backend.MalformedDataException mde) { + res &= false; + log.println("\tWrong Expected "+mde+" exception was thrown -- FAILED"); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + res &= false; + log.println("\tWrong Expected "+iae+" exception was thrown -- FAILED"); + } catch (com.sun.star.lang.WrappedTargetException wte) { + res &= false; + log.println("\tWrong Expected "+wte+" exception was thrown -- FAILED"); + } + + tRes.tested("importLayer()",res); + } + + public void _importLayerForEntity() { + boolean res = false; + log.println("checking for exception for argument (null,\"\")"); + try { + oObj.importLayerForEntity(null,""); + log.println("\tException expected -- FAILED"); + } catch (com.sun.star.lang.NullPointerException ne) { + res = true; + log.println("\tExpected exception was thrown -- OK"); + } catch (com.sun.star.configuration.backend.MalformedDataException mde) { + res = false; + log.println("\tWrong Expected "+mde+" exception was thrown -- FAILED"); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + res = false; + log.println("\tWrong Expected "+iae+" exception was thrown -- FAILED"); + } catch (com.sun.star.lang.WrappedTargetException wte) { + res = false; + log.println("\tWrong Expected "+wte+" exception was thrown -- FAILED"); + } + + log.println("checking own implementation of XLayer"); + try { + util.XLayerImpl xLayer = new util.XLayerImpl(); + oObj.importLayerForEntity(xLayer,""); + if (! xLayer.hasBeenCalled()) { + log.println("\tXLayer hasn't been imported -- FAILED"); + res &= false; + } else { + log.println("\tXLayer has been imported -- OK"); + res &= true; + } + } catch (com.sun.star.lang.NullPointerException ne) { + res &= false; + log.println("\tExpected exception "+ne+" was thrown -- FAILED"); + } catch (com.sun.star.configuration.backend.MalformedDataException mde) { + res &= false; + log.println("\tWrong Expected "+mde+" exception was thrown -- FAILED"); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + res &= false; + log.println("\tWrong Expected "+iae+" exception was thrown -- FAILED"); + } catch (com.sun.star.lang.WrappedTargetException wte) { + res &= false; + log.println("\tWrong Expected "+wte+" exception was thrown -- FAILED"); + } + + tRes.tested("importLayerForEntity()",res); + } + + public void _setTargetBackend() { + requiredMethod("getTargetBackend()"); + boolean res = false; + log.println("checking for exception if argument null is given"); + try { + oObj.setTargetBackend(null); + log.println("\tException expected -- FAILED"); + } catch (com.sun.star.lang.NullPointerException ne) { + res = true; + log.println("\tExpected exception was thrown -- OK"); + } + + log.println("checking argument previously gained by getTargetBackend"); + try { + oObj.setTargetBackend(xBackend); + log.println("\t No Exception thrown -- OK"); + res &= true; + } catch (com.sun.star.lang.NullPointerException ne) { + res &= false; + log.println("\tException was thrown -- FAILED"); + } + + tRes.tested("setTargetBackend()",res); + + } + +} diff --git a/qadevOOo/tests/java/ifc/configuration/backend/_XMultiLayerStratum.java b/qadevOOo/tests/java/ifc/configuration/backend/_XMultiLayerStratum.java new file mode 100644 index 0000000000..c0b7c438c4 --- /dev/null +++ b/qadevOOo/tests/java/ifc/configuration/backend/_XMultiLayerStratum.java @@ -0,0 +1,303 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.configuration.backend; + +import com.sun.star.configuration.backend.XLayer; +import com.sun.star.configuration.backend.XMultiLayerStratum; +import com.sun.star.configuration.backend.XUpdatableLayer; +import lib.MultiMethodTest; + +import util.XLayerHandlerImpl; + + +public class _XMultiLayerStratum extends MultiMethodTest { + public XMultiLayerStratum oObj; + protected String aLayerID; + + public void _getLayer() { + boolean res = true; + + try { + oObj.getLayer("", ""); + log.println("Exception expected -- FAILED"); + res = false; + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("expected Exception -- OK"); + } + + try { + XLayer aLayer = oObj.getLayer(aLayerID, ""); + res &= (aLayer != null); + + if (aLayer == null) { + log.println("\treturned Layer is NULL -- FAILED"); + } else { + res &= checkLayer(aLayer); + } + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } + + tRes.tested("getLayer()", res); + } + + public void _getLayers() { + boolean res = true; + + try { + String[] LayerIds = new String[] { + "1 /org/openoffice/Office/Jobs.xcu", + "2 /org/openoffice/Office/Linguistic.xcu" }; + + XLayer[] Layers = oObj.getLayers(LayerIds, ""); + res = Layers.length == 2; + log.println("Getting two XLayers -- OK"); + log.println("Checking first on "+LayerIds[0]); + res &= checkLayer(Layers[0]); + log.println("Checking second on "+LayerIds[1]); + res &= checkLayer(Layers[1]); + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } + + tRes.tested("getLayers()", res); + } + + public void _getMultipleLayers() { + boolean res = true; + + try { + String[] LayerIds = new String[] { + "1 /org/openoffice/Office/Jobs.xcu", + "2 /org/openoffice/Office/Linguistic.xcu" }; + String[] Times = new String[] { "", "" }; + + XLayer[] Layers = oObj.getMultipleLayers(LayerIds, Times); + res = Layers.length == 2; + log.println("Getting two XLayers -- OK"); + log.println("Checking first on "+LayerIds[0]); + res &= checkLayer(Layers[0]); + log.println("Checking second on "+LayerIds[1]); + res &= checkLayer(Layers[1]); + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } + + tRes.tested("getMultipleLayers()", res); + } + + public void _getUpdatableLayer() { + boolean res = true; + + try { + oObj.getUpdatableLayer(""); + log.println("Exception expected -- FAILED"); + res = false; + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("expected Exception -- OK"); + } catch (com.sun.star.lang.NoSupportException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } + + try { + XUpdatableLayer aLayer = oObj.getUpdatableLayer(aLayerID); + res &= (aLayer != null); + + if (aLayer == null) { + log.println("\treturned Layer is NULL -- FAILED"); + } else { + res &= checkLayer(aLayer); + } + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } catch (com.sun.star.lang.NoSupportException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } + + tRes.tested("getUpdatableLayer()", res); + } + + public void _getUpdateLayerId() throws com.sun.star.uno.Exception { + boolean res = true; + + try { + oObj.getUpdateLayerId( + "org.openoffice.Office.TypeDetection", + "illegal"); + log.println("Exception expected -- FAILED"); + res = false; + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("expected Exception -- OK"); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } catch (com.sun.star.lang.NoSupportException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } + + try { + String ent = util.utils.getOfficeURL( + tParam.getMSF()) + + "/../share/registry"; + String UpdateLayerID = oObj.getUpdateLayerId( + "org.openoffice.Office.Linguistic", ent); + res &= UpdateLayerID.endsWith("Linguistic.xcu"); + + if (!UpdateLayerID.endsWith("Linguistic.xcu")) { + log.println("\tExpected the id to end with Linguistic.xcu"); + log.println("\tBut got " + UpdateLayerID); + log.println("\t=> FAILED"); + } + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("unexpected Exception "+e+" -- FAILED"); + res = false; + } catch (com.sun.star.lang.NoSupportException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } + + tRes.tested("getUpdateLayerId()", res); + } + + public void _listLayerIds() throws com.sun.star.uno.Exception { + boolean res = true; + + try { + oObj.listLayerIds( + "org.openoffice.Office.TypeDetection", + "illegal"); + log.println("Exception expected -- FAILED"); + res = false; + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("expected Exception -- OK"); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } + + try { + String ent = util.utils.getOfficeURL( + tParam.getMSF()) + + "/../share/registry"; + String[] LayerIDs = oObj.listLayerIds("org.openoffice.Office.Jobs", + ent); + res &= LayerIDs[0].endsWith("Jobs.xcu"); + aLayerID = LayerIDs[0]; + + if (!LayerIDs[0].endsWith("Jobs.xcu")) { + log.println("\tExpected the id to end with Jobs.xcu"); + log.println("\tBut got " + LayerIDs[0]); + log.println("\t=> FAILED"); + } + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } + + tRes.tested("listLayerIds()", res); + } + + protected boolean checkLayer(XLayer aLayer) { + boolean res = false; + + log.println("Checking for Exception in case of null argument"); + + try { + aLayer.readData(null); + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Expected Exception -- OK"); + res = true; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + } + + log.println("checking read data with own XLayerHandler implementation"); + + try { + XLayerHandlerImpl xLayerHandler = new XLayerHandlerImpl(); + aLayer.readData(xLayerHandler); + + String implCalled = xLayerHandler.getCalls(); + log.println(implCalled); + + int sl = implCalled.indexOf("startLayer"); + + if (sl < 0) { + log.println("startLayer wasn't called -- FAILED"); + res &= false; + } else { + log.println("startLayer was called -- OK"); + res &= true; + } + + int el = implCalled.indexOf("endLayer"); + + if (el < 0) { + log.println("endLayer wasn't called -- FAILED"); + res &= false; + } else { + log.println("endLayer was called -- OK"); + res &= true; + } + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } + + return res; + } +} diff --git a/qadevOOo/tests/java/ifc/configuration/backend/_XSchema.java b/qadevOOo/tests/java/ifc/configuration/backend/_XSchema.java new file mode 100644 index 0000000000..597d245efb --- /dev/null +++ b/qadevOOo/tests/java/ifc/configuration/backend/_XSchema.java @@ -0,0 +1,253 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.configuration.backend; + +import com.sun.star.configuration.backend.XSchema; +import com.sun.star.io.XActiveDataSink; +import com.sun.star.io.XInputStream; +import com.sun.star.ucb.XSimpleFileAccess; +import com.sun.star.uno.UnoRuntime; + +import lib.MultiMethodTest; + +import util.XSchemaHandlerImpl; + +public class _XSchema extends MultiMethodTest { + public XSchema oObj; + XSchemaHandlerImpl xSchemaHandlerImpl = new XSchemaHandlerImpl(); + String filename = null; + + @Override + protected void before() { + filename = (String)tEnv.getObjRelation("ParsedFileName"); + } + + public void _readComponent() { + requiredMethod("readTemplates()"); + boolean res = false; + + log.println("Checking for Exception in case of null argument"); + + try { + oObj.readComponent(null); + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Expected Exception -- OK"); + res = true; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + } + + log.println( + "checking readComponent with own XSchemeHandler implementation"); + + try { + xSchemaHandlerImpl.cleanCalls(); + oObj.readComponent(xSchemaHandlerImpl); + + String implCalled = xSchemaHandlerImpl.getCalls(); + + System.out.println(implCalled); + + int sc = implCalled.indexOf("startComponent"); + + if (sc < 0) { + log.println("startComponent wasn't called -- FAILED"); + res &= false; + } else { + log.println("startComponent was called -- OK"); + res &= true; + } + + int ec = implCalled.indexOf("endComponent"); + + if (ec < 0) { + log.println("endComponent wasn't called -- FAILED"); + res &= false; + } else { + log.println("endComponent was called -- OK"); + res &= true; + } + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } + + tRes.tested("readComponent()", res); + reopenFile(); + } + + public void _readSchema() { + requiredMethod("readComponent()"); + boolean res = false; + + log.println("Checking for Exception in case of null argument"); + + try { + xSchemaHandlerImpl.cleanCalls(); + oObj.readSchema(null); + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Expected Exception -- OK"); + res = true; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + } + + log.println( + "checking read data with own XSchemeHandler implementation"); + + try { + xSchemaHandlerImpl.cleanCalls(); + oObj.readSchema(xSchemaHandlerImpl); + + String implCalled = xSchemaHandlerImpl.getCalls(); + + int sc = implCalled.indexOf("startSchema"); + + if (sc < 0) { + log.println("startSchema wasn't called -- FAILED"); + res &= false; + } else { + log.println("startSchema was called -- OK"); + res &= true; + } + + int ec = implCalled.indexOf("endSchema"); + + if (ec < 0) { + log.println("endSchema wasn't called -- FAILED"); + res &= false; + } else { + log.println("endSchema was called -- OK"); + res &= true; + } + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } + + // check for the wrapped target exception + try { + xSchemaHandlerImpl.cleanCalls(); + oObj.readSchema(xSchemaHandlerImpl); + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Expected Exception -- OK"); + res = true; + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + } + + tRes.tested("readSchema()", res); + reopenFile(); + } + + public void _readTemplates() { + boolean res = false; + + log.println("Checking for Exception in case of null argument"); + + try { + oObj.readTemplates(null); + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Expected Exception -- OK"); + res = true; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + } + + log.println( + "checking readComponent with own XSchemeHandler implementation"); + + try { + xSchemaHandlerImpl.cleanCalls(); + oObj.readComponent(xSchemaHandlerImpl); + + String implCalled = xSchemaHandlerImpl.getCalls(); + + int sc = implCalled.indexOf("startGroup"); + + if (sc < 0) { + log.println("startGroup wasn't called -- FAILED"); + res &= false; + } else { + log.println("startGroup was called -- OK"); + res &= true; + } + + int ec = implCalled.indexOf("endNode"); + + if (ec < 0) { + log.println("endNode wasn't called -- FAILED"); + res &= false; + } else { + log.println("endNode was called -- OK"); + res &= true; + } + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } + + tRes.tested("readTemplates()", res); + reopenFile(); + } + + /** + * reopen the parsed file again, to avoid the wrapped target exception. + */ + private void reopenFile() { + XSimpleFileAccess simpleAccess = null; + XInputStream xStream = null; + try { + Object fileacc = tParam.getMSF().createInstance("com.sun.star.comp.ucb.SimpleFileAccess"); + simpleAccess = UnoRuntime.queryInterface(XSimpleFileAccess.class,fileacc); + log.println("Going to parse: "+filename); + xStream = simpleAccess.openFileRead(filename); + } catch (com.sun.star.uno.Exception e) { + } + + XActiveDataSink xSink = UnoRuntime.queryInterface(XActiveDataSink.class, oObj); + xSink.setInputStream(xStream); + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/configuration/backend/_XSchemaSupplier.java b/qadevOOo/tests/java/ifc/configuration/backend/_XSchemaSupplier.java new file mode 100644 index 0000000000..aee858b6a6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/configuration/backend/_XSchemaSupplier.java @@ -0,0 +1,109 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.configuration.backend; + +import com.sun.star.configuration.backend.XSchema; +import com.sun.star.configuration.backend.XSchemaSupplier; + +import lib.MultiMethodTest; +import util.XSchemaHandlerImpl; + +public class _XSchemaSupplier extends MultiMethodTest { + public XSchemaSupplier oObj; + + public void _getComponentSchema() { + boolean res = true; + XSchema aSchema = null; + + try { + aSchema = oObj.getComponentSchema("org.openoffice.Office.Linguistic"); + res &= (aSchema != null); + + if (aSchema == null) { + log.println("\treturned Layer is NULL -- FAILED"); + } else { + res &= checkSchema(aSchema); + } + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } + tRes.tested("getComponentSchema()",res); + } + + protected boolean checkSchema(XSchema aSchema) { + boolean res = false; + XSchemaHandlerImpl xSchemaHandlerImpl = new XSchemaHandlerImpl(); + log.println("Checking for Exception in case of null argument"); + + try { + aSchema.readTemplates(null); + log.println("NoException thrown for null argument -- FAILED"); + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Expected Exception -- OK"); + res = true; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + } + + log.println( + "checking readComponent with own XSchemaHandler implementation"); + + try { + aSchema.readComponent(xSchemaHandlerImpl); + + String implCalled = xSchemaHandlerImpl.getCalls(); + int sc = implCalled.indexOf("startComponent"); + + if (sc < 0) { + log.println("startComponent wasn't called -- FAILED"); + res &= false; + } else { + log.println("startComponent was called -- OK"); + res &= true; + } + + int ec = implCalled.indexOf("endComponent"); + + if (ec < 0) { + log.println("endComponent wasn't called -- FAILED"); + res &= false; + } else { + log.println("endComponent was called -- OK"); + res &= true; + } + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } + + return res; + + } +} diff --git a/qadevOOo/tests/java/ifc/configuration/backend/_XSingleLayerStratum.java b/qadevOOo/tests/java/ifc/configuration/backend/_XSingleLayerStratum.java new file mode 100644 index 0000000000..33eb0cfa89 --- /dev/null +++ b/qadevOOo/tests/java/ifc/configuration/backend/_XSingleLayerStratum.java @@ -0,0 +1,165 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.configuration.backend; + +import com.sun.star.configuration.backend.XLayer; +import com.sun.star.configuration.backend.XSingleLayerStratum; +import com.sun.star.configuration.backend.XUpdatableLayer; + +import lib.MultiMethodTest; + +import util.XLayerHandlerImpl; + + +public class _XSingleLayerStratum extends MultiMethodTest { + public XSingleLayerStratum oObj; + + public void _getLayer() { + String aLayerID = "org.openoffice.Office.Common"; + boolean res = true; + + try { + oObj.getLayer("", ""); + log.println("Exception expected -- FAILED"); + res = false; + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("expected Exception -- OK"); + } + + try { + XLayer aLayer = oObj.getLayer(aLayerID, ""); + res &= (aLayer != null); + + if (aLayer == null) { + log.println("\treturned Layer is NULL -- FAILED"); + } else { + res &= checkLayer(aLayer); + } + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } + + tRes.tested("getLayer()", res); + } + + public void _getUpdatableLayer() { + String aLayerID = "org.openoffice.Office.Common"; + boolean res = true; + + try { + oObj.getUpdatableLayer(""); + log.println("Exception expected -- FAILED"); + res = false; + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("unexpected Exception " + e + " -- FAILED"); + res = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("expected Exception -- OK"); + } catch (com.sun.star.lang.NoSupportException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } + + try { + XUpdatableLayer aLayer = oObj.getUpdatableLayer(aLayerID); + res &= (aLayer != null); + + if (aLayer == null) { + log.println("\treturned Layer is NULL -- FAILED"); + } else { + res &= checkLayer(aLayer); + } + } catch (com.sun.star.configuration.backend.BackendAccessException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } catch (com.sun.star.lang.NoSupportException e) { + log.println("unexpected Exception -- FAILED"); + res = false; + } + + tRes.tested("getUpdatableLayer()", res); + } + + protected boolean checkLayer(XLayer aLayer) { + boolean res = false; + + log.println("Checking for Exception in case of null argument"); + + try { + aLayer.readData(null); + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Expected Exception -- OK"); + res = true; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + } + + log.println("checking read data with own XLayerHandler implementation"); + + try { + XLayerHandlerImpl xLayerHandler = new XLayerHandlerImpl(); + aLayer.readData(xLayerHandler); + + String implCalled = xLayerHandler.getCalls(); + log.println(implCalled); + + int sl = implCalled.indexOf("startLayer"); + + if (sl < 0) { + log.println("startLayer wasn't called -- FAILED"); + res &= false; + } else { + log.println("startLayer was called -- OK"); + res &= true; + } + + int el = implCalled.indexOf("endLayer"); + + if (el < 0) { + log.println("endLayer wasn't called -- FAILED"); + res &= false; + } else { + log.println("endLayer was called -- OK"); + res &= true; + } + } catch (com.sun.star.lang.NullPointerException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception (" + e + ") -- FAILED"); + res &= false; + } + + return res; + } +} diff --git a/qadevOOo/tests/java/ifc/configuration/backend/_XUpdateHandler.java b/qadevOOo/tests/java/ifc/configuration/backend/_XUpdateHandler.java new file mode 100644 index 0000000000..4c35cc70d2 --- /dev/null +++ b/qadevOOo/tests/java/ifc/configuration/backend/_XUpdateHandler.java @@ -0,0 +1,234 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.configuration.backend; + +import com.sun.star.configuration.backend.TemplateIdentifier; +import com.sun.star.configuration.backend.XUpdateHandler; +import com.sun.star.uno.Type; + +import lib.MultiMethodTest; + +import util.XLayerHandlerImpl; +import util.XLayerImpl; + +public class _XUpdateHandler extends MultiMethodTest { + public XUpdateHandler oObj; + protected XLayerHandlerImpl xLayerHandler = null; + + @Override + public void before() { + xLayerHandler = (XLayerHandlerImpl) tEnv.getObjRelation("LayerHandler"); + + try { + xLayerHandler.startLayer(); + xLayerHandler.overrideNode("org.openoffice.Setup", (short) 0, + false); + xLayerHandler.overrideNode("Office", (short) 0, false); + xLayerHandler.overrideProperty("ooSetupInstCompleted", (short) 0, + new Type(String.class), + false); + xLayerHandler.setPropertyValue(Boolean.FALSE); + xLayerHandler.endProperty(); + xLayerHandler.overrideNode("Factories", (short) 0, false); + xLayerHandler.addOrReplaceNode("com.sun.star.chart.ChartDocument", + (short) 0); + xLayerHandler.overrideProperty("ooSetupFactoryEmptyDocumentURL", + (short) 0, + new Type(String.class), + false); + xLayerHandler.setPropertyValue("private:factory/schart"); + xLayerHandler.endProperty(); + xLayerHandler.overrideProperty("ooSetupFactoryIcon", (short) 0, + new Type(java.lang.Long.class), + false); + xLayerHandler.setPropertyValue(Integer.valueOf(13)); + xLayerHandler.endProperty(); + xLayerHandler.overrideProperty("ooSetupFactoryShortName", + (short) 0, + new Type(String.class), + false); + xLayerHandler.setPropertyValue("schart"); + xLayerHandler.setPropertyValueForLocale("TemplateFile", "en-US"); + xLayerHandler.endProperty(); + xLayerHandler.overrideProperty("ooSetupFactoryTemplateFile", + (short) 0, + new Type(String.class), + false); + xLayerHandler.setPropertyValue("empty"); + xLayerHandler.endProperty(); + xLayerHandler.addProperty("ooSetupFactoryTemplateFile", (short) 0, + new Type(String.class)); + xLayerHandler.addPropertyWithValue("ooSetupFactoryTemplateFile", + (short) 0, "TemplateFile"); + xLayerHandler.endNode(); + + xLayerHandler.addOrReplaceNode("dropme", (short) 0); + xLayerHandler.overrideProperty("anyway", (short) 0, + new Type(String.class), + false); + xLayerHandler.setPropertyValue("nice"); + xLayerHandler.endProperty(); + xLayerHandler.dropNode("dropme"); + xLayerHandler.endNode(); + + xLayerHandler.addOrReplaceNodeFromTemplate("FromTemplate", + new com.sun.star.configuration.backend.TemplateIdentifier( + "org.openoffice.Setup", + "Setup"), + (short) 0); + xLayerHandler.endNode(); + + xLayerHandler.endNode(); + xLayerHandler.endNode(); + xLayerHandler.endNode(); + xLayerHandler.endLayer(); + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected Exception " + e); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected Exception " + e); + } + } + + public void _addOrReplaceNode() { + requiredMethod("startUpdate()"); + tRes.tested("addOrReplaceNode()", true); + } + + public void _addOrReplaceNodeFromTemplate() { + requiredMethod("startUpdate()"); + tRes.tested("addOrReplaceNodeFromTemplate()", true); + } + + public void _addOrReplaceProperty() { + requiredMethod("startUpdate()"); + tRes.tested("addOrReplaceProperty()", true); + } + + public void _addOrReplacePropertyWithValue() { + requiredMethod("startUpdate()"); + tRes.tested("addOrReplacePropertyWithValue()", true); + } + + public void _endNode() { + requiredMethod("startUpdate()"); + tRes.tested("endNode()", true); + } + + public void _endProperty() { + requiredMethod("startUpdate()"); + tRes.tested("endProperty()", true); + } + + public void _endUpdate() { + requiredMethod("startUpdate()"); + tRes.tested("endUpdate()", true); + } + + public void _modifyNode() { + requiredMethod("startUpdate()"); + tRes.tested("modifyNode()", true); + } + + public void _modifyProperty() { + requiredMethod("startUpdate()"); + tRes.tested("modifyProperty()", true); + } + + public void _removeNode() { + requiredMethod("startUpdate()"); + tRes.tested("removeNode()", true); + } + + public void _removeProperty() { + requiredMethod("startUpdate()"); + tRes.tested("removeProperty()", true); + } + + public void _resetProperty() { + requiredMethod("startUpdate()"); + tRes.tested("resetProperty()", true); + } + + public void _resetPropertyValue() { + requiredMethod("startUpdate()"); + tRes.tested("resetPropertyValue()", true); + } + + public void _resetPropertyValueForLocale() { + requiredMethod("startUpdate()"); + tRes.tested("resetPropertyValueForLocale()", true); + } + + public void _setPropertyValue() { + requiredMethod("startUpdate()"); + tRes.tested("setPropertyValue()", true); + } + + public void _setPropertyValueForLocale() { + requiredMethod("startUpdate()"); + tRes.tested("setPropertyValueForLocale()", true); + } + + public void _startUpdate() { + boolean res = true; + + try { + XLayerImpl xLayer = (XLayerImpl) tEnv.getObjRelation("Layer"); + log.println("Layer called (before): " + xLayer.hasBeenCalled()); + oObj.startUpdate(); + oObj.addOrReplaceNode("whatever", (short) 0); + oObj.addOrReplaceNodeFromTemplate("Office", (short) 0, + new TemplateIdentifier()); + oObj.addOrReplaceProperty("prop", (short) 0, + new Type(String.class)); + oObj.addOrReplacePropertyWithValue("prop2", (short) 0, "this"); + oObj.modifyProperty("ooSetupFactoryIcon", (short) 0, (short) 0, + new Type(String.class)); + oObj.resetPropertyValue(); + oObj.resetPropertyValueForLocale("en-US"); + oObj.endProperty(); + oObj.modifyProperty("ooSetupFactoryEmptyDocumentURL", (short) 0, + (short) 0, new Type(String.class)); + oObj.setPropertyValue("newValue"); + oObj.setPropertyValueForLocale("newValue-US", "de-DE"); + oObj.endProperty(); + oObj.modifyNode("org.openoffice.Setup", (short) 0, (short) 0, true); + oObj.removeNode("whatever"); + oObj.resetProperty("prop"); + oObj.endNode(); + oObj.endNode(); + oObj.endNode(); + oObj.endUpdate(); + + log.println("Layer called (after): " + xLayer.hasBeenCalled()); + + res = xLayer.hasBeenCalled(); + } catch (com.sun.star.configuration.backend.MalformedDataException e) { + log.println("Unexpected exception " + e.getMessage()); + res = false; + } catch (com.sun.star.lang.IllegalAccessException e) { + log.println("Unexpected exception " + e.getMessage()); + res = false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Unexpected exception " + e.getMessage()); + res = false; + } + + tRes.tested("startUpdate()", res); + } +} diff --git a/qadevOOo/tests/java/ifc/connection/_XAcceptor.java b/qadevOOo/tests/java/ifc/connection/_XAcceptor.java new file mode 100644 index 0000000000..2e69eab959 --- /dev/null +++ b/qadevOOo/tests/java/ifc/connection/_XAcceptor.java @@ -0,0 +1,304 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.connection; + +import lib.MultiMethodTest; +import lib.StatusException; + +import com.sun.star.connection.XAcceptor; +import com.sun.star.connection.XConnection; +import com.sun.star.connection.XConnector; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Tests methods of <code>XAcceptor</code> interface. <p> +* Required relations : +* <ul> +* <li> <code>'XAcceptor.connectStr'</code> : String variable. Has +* the following format : +* <code>'socket,host=<SOHost>,port=<UniquePort>' where <SOHost> is +* the host where StarOffice is started. This string must be passed +* as parameter to <code>accept()</code> method. </li> +* <ul> <p> +* This test <b>can not</b> be run in multiply threads. +*/ +public class _XAcceptor extends MultiMethodTest { + + /** + * Calls <code>accept()</code> method in a separate thread. + * Then stores exception thrown by call if it occurred, or + * return value. + */ + protected class AcceptorThread extends Thread { + /** + * If exception occurred during method call it is + * stored in this field. + */ + public Exception ex = null ; + private final XAcceptor acc; + /** + * If method call returns some value it stores in this field. + */ + public XConnection acceptedCall = null ; + + /** + * Creates object which can call <code>accept</code> method + * of the Acceptor object specified. + */ + public AcceptorThread(XAcceptor acc) { + this.acc = acc ; + } + + /** + * Call <code>accept()</code> method. + */ + @Override + public void run() { + try { + acceptedCall = acc.accept(connectString) ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + ex = e ; + } catch (com.sun.star.connection.ConnectionSetupException e) { + ex = e ; + } catch (com.sun.star.connection.AlreadyAcceptingException e) { + ex = e ; + } + } + } + + public XAcceptor oObj = null; + protected String connectString = null ; + + /** + * Retrieves object relation. + */ + @Override + public void before() throws StatusException { + connectString = (String) + tEnv.getObjRelation("XAcceptor.connectStr") ; + + if (connectString == null) + throw new StatusException("No object relation found", + new NullPointerException()) ; + } + + /** + * First part : Thread with acceptor created, and it starts listening. + * The main thread tries to connect to acceptor. Acception thread must + * return and valid connection must be returned by Acceptor. <p> + * + * Second part : Trying to create second acceptor which listen on + * the same port. Calling <code>accept()</code> method of the second + * Acceptor must rise appropriate exception. <p> + * + * Has OK status if both test parts executed properly. + */ + public void _accept() { + boolean result = true ; + AcceptorThread acception = null, + dupAcception = null ; + XAcceptor dupAcceptor = null ; + XConnector xConnector = null ; + + // creating services required + try { + Object oConnector = tParam.getMSF().createInstance("com.sun.star.connection.Connector") ; + + xConnector = UnoRuntime.queryInterface + (XConnector.class, oConnector) ; + + XInterface acceptor = (XInterface) tParam.getMSF().createInstance + ("com.sun.star.connection.Acceptor") ; + + dupAcceptor = UnoRuntime.queryInterface + (XAcceptor.class, acceptor) ; + } catch (com.sun.star.uno.Exception e) { + e.printStackTrace(log) ; + throw new StatusException("Can't create service", e) ; + } + + // Testing connection to the acceptor + try { + acception = new AcceptorThread(oObj) ; + acception.start() ; + + util.utils.shortWait(); + + XConnection con = xConnector.connect(connectString) ; + + if (con == null) + log.println("Connector returned : null") ; + else + log.println("Connector returned : " + con.getDescription()) ; + + try { + acception.join(5 * 1000) ; + } catch(InterruptedException e) {} + + if (acception.isAlive()) { + + result = false ; + log.println("Method call haven't returned") ; + + if (acception.acceptedCall == null) + log.println("Acceptor returned : null") ; + else + log.println("Acceptor returned : " + + acception.acceptedCall.getDescription()) ; + } else { + if (acception.ex != null) { + log.println("Exception occurred in accept() thread :") ; + acception.ex.printStackTrace(log) ; + } + + if (acception.acceptedCall == null) + log.println("Method returned : null") ; + else + log.println("Method returned : " + + acception.acceptedCall.getDescription()) ; + + result &= acception.acceptedCall != null ; + } + } catch (com.sun.star.connection.ConnectionSetupException e) { + e.printStackTrace(log) ; + result = false ; + } catch (com.sun.star.connection.NoConnectException e) { + e.printStackTrace(log) ; + result = false ; + } finally { + oObj.stopAccepting(); + if (acception.isAlive()) { + acception.interrupt(); + } + } + + // duplicate acceptor test + // creating the additional acceptor which listens + // on the same port + + log.println("___ Testing for accepting on the same port ...") ; + + try { + dupAcception = new AcceptorThread(dupAcceptor) ; + dupAcception.start() ; + + try { + dupAcception.join(1 * 1000) ; + } catch(InterruptedException e) {} + + + if (dupAcception.isAlive()) { + log.println("Duplicate acceptor is listening ...") ; + + // now trying to accept on the same port as additional + // acceptor + acception = new AcceptorThread(oObj) ; + acception.start() ; + + try { + acception.join(3 * 1000) ; + } catch(InterruptedException e) {} + + if (acception.isAlive()) { + oObj.stopAccepting() ; + acception.interrupt() ; + + log.println("Acceptor with the same port must cause"+ + " an error but didn't") ; + result = false ; + } else { + log.println("Accepted call = " + acception.acceptedCall) ; + if (acception.ex == null) { + //result = false ; + log.println("No exception was thrown when trying"+ + " to listen on the same port") ; + } else { + if (acception.ex instanceof + com.sun.star.connection.AlreadyAcceptingException || + acception.ex instanceof + com.sun.star.connection.ConnectionSetupException) { + + log.println("Right exception was thrown when trying"+ + " to listen on the same port") ; + } else { + result = false ; + log.println("Wrong exception was thrown when trying"+ + " to listen on the same port :") ; + acception.ex.printStackTrace(log) ; + } + } + } + } + } finally { + dupAcceptor.stopAccepting() ; + if (dupAcception.isAlive()) { + dupAcception.interrupt() ; + } + } + + tRes.tested("accept()", result) ; + } + + /** + * Starts thread with Acceptor and then calls <code>stopListening</code> + * method. <p> + * Has OK status if <code>accept</code> method successfully returns and + * rises no exceptions. + */ + public void _stopAccepting() { + boolean result = true ; + + + AcceptorThread acception = new AcceptorThread(oObj) ; + + acception.start() ; + + oObj.stopAccepting() ; + + try { + acception.join(3 * 1000) ; + } catch (InterruptedException e) {} + + if (acception.isAlive()) { + acception.interrupt() ; + + result = false ; + log.println("Method call haven't returned") ; + + } else { + if (acception.ex != null) { + log.println("Exception occurred in accept() thread :") ; + acception.ex.printStackTrace(log) ; + result = false ; + } else { + result = true ; + } + + if (acception.acceptedCall == null) + log.println("accept() returned : null") ; + else + log.println("accept() returned : " + + acception.acceptedCall.getDescription()) ; + } + + tRes.tested("stopAccepting()", result) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/connection/_XConnector.java b/qadevOOo/tests/java/ifc/connection/_XConnector.java new file mode 100644 index 0000000000..5d63fafd2f --- /dev/null +++ b/qadevOOo/tests/java/ifc/connection/_XConnector.java @@ -0,0 +1,186 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.connection; + +import lib.MultiMethodTest; +import lib.StatusException; + +import com.sun.star.connection.XAcceptor; +import com.sun.star.connection.XConnection; +import com.sun.star.connection.XConnector; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Tests methods of <code>XConnector</code> interface. <p> +* Required relations : +* <ul> +* <li> <code>'XConnector.connectStr'</code> : String variable. Has +* the following format : +* <code>'socket,host=<SOHost>,port=<UniquePort>' where <SOHost> is +* the host where StarOffice is started. This string must be passed +* as parameter to <code>accept()</code> method. </li> +* <ul> <p> +* This test <b>can not</b> be run in multiply threads. +*/ +public class _XConnector extends MultiMethodTest { + + /** + * Calls <code>accept()</code> method in a separate thread. + * Then stores exception thrown by call if it occurred, or + * return value. + */ + protected class AcceptorThread extends Thread { + /** + * the acceptor + */ + private final XAcceptor acc; + /** + * If exception occurred during method call it is + * stored in this field. + */ + public Exception ex = null ; + /** + * If method call returns some value it stores in this field. + */ + public XConnection acceptedCall = null ; + + /** + * Gets an object which can call <code>accept</code> method. + */ + public AcceptorThread(XAcceptor acc) { + this.acc = acc ; + } + + /** + * Call <code>accept()</code> method. + */ + @Override + public void run() { + try { + acceptedCall = acc.accept(connectString) ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + ex = e ; + } catch (com.sun.star.connection.ConnectionSetupException e) { + ex = e ; + } catch (com.sun.star.connection.AlreadyAcceptingException e) { + ex = e ; + } + } + } + + public XConnector oObj = null; + protected String connectString = null ; + + /** + * Retrieves object relation. + */ + @Override + public void before() throws StatusException { + connectString = (String) + tEnv.getObjRelation("XConnector.connectStr") ; + if (connectString == null) + throw new StatusException("No object relation found", + new NullPointerException()) ; + } + + /** + * Thread with acceptor is created, and it starts listening. + * The main thread tries to connect to acceptor. Acception thread must + * return and a valid connection must be returned by Acceptor. <p> + * + */ + public void _connect() { + boolean result = true ; + AcceptorThread acceptorThread = null; + XAcceptor xAcceptor = null ; + XConnection aCon = null; + XInterface x = null; + + // create the acceptor + try { + x = (XInterface) tParam.getMSF().createInstance + ("com.sun.star.connection.Acceptor") ; + } catch (com.sun.star.uno.Exception e) { + e.printStackTrace(log) ; + throw new StatusException("Can't create service", e) ; + } + + xAcceptor = UnoRuntime.queryInterface(XAcceptor.class, x); + + acceptorThread = new AcceptorThread(xAcceptor) ; + acceptorThread.start() ; + + util.utils.shortWait(); + + // connect to acceptor + try { + aCon = oObj.connect(connectString); + + if (aCon == null) + log.println("Connector returned: null") ; + else + log.println("Connector returned: " + aCon.getDescription()) ; + + try { + acceptorThread.join(30 * 1000) ; + } catch(InterruptedException e) {} + + // connection not established + if (acceptorThread.isAlive()) { + + result = false ; + log.println("Method call hasn't returned") ; + + if (acceptorThread.acceptedCall == null) + log.println("Acceptor returned : null") ; + else + log.println("Acceptor returned : " + + acceptorThread.acceptedCall.getDescription()) ; + } else { + if (acceptorThread.ex != null) { + log.println("Exception occurred in accept() thread :") ; + acceptorThread.ex.printStackTrace(log) ; + } + + if (acceptorThread.acceptedCall == null) + log.println("Method returned : null") ; + else + log.println("Method returned : " + + acceptorThread.acceptedCall.getDescription()) ; + + result &= acceptorThread.acceptedCall != null ; + } + } catch (com.sun.star.connection.ConnectionSetupException e) { + e.printStackTrace(log) ; + result = false ; + } catch (com.sun.star.connection.NoConnectException e) { + e.printStackTrace(log) ; + result = false ; + } finally { + acceptorThread.acc.stopAccepting(); + if (acceptorThread.isAlive()) { + acceptorThread.interrupt(); + } + } + + tRes.tested("connect()", result) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/container/_XChild.java b/qadevOOo/tests/java/ifc/container/_XChild.java new file mode 100644 index 0000000000..fc32dc9c43 --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XChild.java @@ -0,0 +1,91 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.container; + +import lib.MultiMethodTest; +import lib.Status; + +import com.sun.star.container.XChild; +import com.sun.star.container.XNamed; +import com.sun.star.uno.UnoRuntime; + +/* +* Testing <code>com.sun.star.container.XChild</code> +* interface methods : +* <ul> +* <li><code> getParent()</code></li> +* <li><code> setParent()</code></li> +* </ul> +* @see com.sun.star.container.XChild +*/ +public class _XChild extends MultiMethodTest { + + public XChild oObj = null; + public Object gotten = null; + + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. Parent returned is stored.<p> + * Has <b> OK </b> status if the method returns not null value + * and no exceptions were thrown. <p> + */ + public void _getParent() { + gotten = oObj.getParent(); + XNamed the_name = UnoRuntime.queryInterface(XNamed.class,gotten); + if (the_name != null) + log.println("Parent:"+the_name.getName()); + tRes.tested("getParent()",gotten != null); + } + + /** + * Sets existing parent and checks that + * no exceptions were thrown. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getParent() </code> : to get the parent. </li> + * </ul> + */ + public void _setParent() { + requiredMethod("getParent()") ; + + String parentComment = (String) tEnv.getObjRelation("cannotSwitchParent"); + + if (parentComment != null) { + log.println(parentComment); + tRes.tested("setParent()",Status.skipped(true)); + return; + } + + try { + oObj.setParent(gotten); + tRes.tested("setParent()",true); + } + catch (com.sun.star.lang.NoSupportException ex) { + log.println("Exception occurred during setParent()"); + ex.printStackTrace(log); + tRes.tested("setParent()",false); + } + + } + +} // finish class _XChild + + diff --git a/qadevOOo/tests/java/ifc/container/_XContainer.java b/qadevOOo/tests/java/ifc/container/_XContainer.java new file mode 100644 index 0000000000..6d0d372558 --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XContainer.java @@ -0,0 +1,342 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.container; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.awt.XControl; +import com.sun.star.awt.XControlContainer; +import com.sun.star.container.ContainerEvent; +import com.sun.star.container.XContainer; +import com.sun.star.container.XContainerListener; +import com.sun.star.container.XNameContainer; +import com.sun.star.container.XNameReplace; +import com.sun.star.lang.EventObject; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XNamingService; + + +/** +* Testing <code>com.sun.star.container.XContainer</code> +* interface methods : +* <ul> +* <li><code> addContainerListener()</code></li> +* <li><code> removeContainerListener()</code></li> +* </ul> +* This test needs the following object relations : +* <ul> +* <li> <code>'INSTANCE'</code> : Object which can be inserted into +* container.</li> +* <li> <code>'INSTANCE2'</code> : <b>(optional)</b> +* Object which can be inserted into container. The relation +* must be specified when container can't contain two +* identical objects. Replaces the first instance.</li> +* <li> <code>'XContainer.Container'</code> (of type +* <code>com.sun.star.container.XNameContainer</code>) +* <b>optional</b> : is required when the tested component +* doesn't implement <code>XNameContainer</code> and is used +* for adding and removing elements.</li> +* <ul> <p> +* Object <b>must implement</b> +* <code>com.sun.star.container.XNameContainer</code>. +* <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.container.XContainer +*/ +public class _XContainer extends MultiMethodTest { + + public XContainer oObj = null; + private boolean bElementInserted = false; + private boolean bElementRemoved = false; + private boolean bElementReplaced = false; + private XNameContainer NC = null ; + private XControlContainer CC = null ; + private XNamingService NV = null ; + private XNameReplace NR = null ; + private Object inst = null ; + private Object inst2 = null ; + + /** + * Retrieves object relations, and tries to query object for + * <code>XNameContainer</code> interface. + * @throws StatusException If one of relations not found or + * object doesn't implement <code>XNameContainer</code> interface. + */ + @Override + public void before() throws StatusException { + // do this test with a different object + Object altObj = tEnv.getObjRelation("XContainer.AlternateObject"); + if (altObj != null) { + oObj = UnoRuntime.queryInterface(XContainer.class, altObj); + } + + NC = UnoRuntime.queryInterface + (XNameContainer.class, oObj) ; + + Object container = null; + if (NC == null) { + container = tEnv.getObjRelation("XContainer.Container") ; + } + + if (container != null) { + if (container instanceof com.sun.star.awt.XControlContainer) { + CC = (XControlContainer) container; + } else if (container instanceof com.sun.star.uno.XNamingService) { + NV = (XNamingService) container; + } else if (container instanceof com.sun.star.container.XNameReplace) { + NR = (XNameReplace) container; + inst2 = tEnv.getObjRelation("XContainer.NewValue"); + inst = tEnv.getObjRelation("XContainer.ElementName"); + } else if (container instanceof com.sun.star.container.XNameContainer) { + NC = (XNameContainer) container; + } + } + + if (NC == null && CC == null && NV == null && NR == null) + throw new StatusException( + Status.failed("Neither object implements XNameContainer" + + " nor relation 'XContainer.Container' found.")) ; + + if (inst == null) + inst = tEnv.getObjRelation("INSTANCE"); + if (inst == null) { + log.println("No INSTANCE ObjRelation!!! "); + throw new StatusException(Status.failed("No INSTANCE ObjRelation!!!")) ; + } + if (inst2 == null) + inst2 = tEnv.getObjRelation("INSTANCE2"); + } + + /** + * Listener implementation which just set flags on appropriate + * events. + */ + public class MyListener implements XContainerListener { + public void elementInserted(ContainerEvent e) { + bElementInserted = true; + } + public void elementRemoved(ContainerEvent e) { + bElementRemoved = true; + } + public void elementReplaced(ContainerEvent e) { + bElementReplaced = true; + } + public void disposing (EventObject obj) {} + } + + MyListener listener = new MyListener(); + + /** + * Adds <code>MyListener</code> and performs all possible changes + * (insert, replace, remove) with container. The checks which + * events were called. <p> + * Has <b>OK</b> status if all methods of the listener were called. + */ + public void _addContainerListener() { + boolean bResult = true; + + oObj.addContainerListener(listener); + bResult &= performChanges(); + //we can't replace if the container is XControlContainer + if (NC != null) bResult &= bElementReplaced; + // we do not remove and insert if the listener is triggered by XNameReplace + if (NR == null) bResult &= bElementRemoved; + if (NR == null) bResult &= bElementInserted; + + if (!bResult) { + log.println("inserted was " + (bElementInserted ? "" : "NOT") + + " called."); + + if (NC != null) { + log.println("replaced was " + (bElementReplaced ? "" : "NOT") + + " called."); + } + log.println("removed was " + (bElementRemoved ? "" : "NOT") + + " called."); + } + + tRes.tested("addContainerListener()", bResult); + } + + /** + * Removes listener added before and performs all possible changes + * (insert, replace, remove) with container. The checks which + * events were called. <p> + * Has <b>OK</b> status if no methods of the listener were called. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addContainerListener() </code> : to remove it now. </li> + * </ul> + */ + public void _removeContainerListener() { + requiredMethod("addContainerListener()") ; + + boolean bResult = true; + bElementReplaced = bElementRemoved = bElementInserted = false; + + oObj.removeContainerListener(listener); + bResult &= performChanges(); + bResult &= !bElementReplaced; + bResult &= !bElementRemoved; + bResult &= !bElementInserted; + + tRes.tested("removeContainerListener()", bResult); + } + + /** + * Inserts, replaces and finally removes object from container. + * Object is gotten from <code>'INSTANCE'</code> relation. If + * the relation <code>'INSTANCE2'</code> exists then the first + * instance is replaced with second. + */ + protected boolean performChanges() { + if (CC != null) return performChanges2(); + if (NV != null) return performChanges3(); + if (NR != null) return performChanges4(); + boolean bResult = true; + try { + String[] names = NC.getElementNames(); + log.println("Elements count = " + names.length); + NC.insertByName("XContainer_dummy", inst); + names = NC.getElementNames(); + log.println("Elements count = " + names.length); + if (inst2 == null) { + NC.replaceByName("XContainer_dummy", inst); + } else { + NC.replaceByName("XContainer_dummy", inst2); + } + NC.removeByName("XContainer_dummy"); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception occurred "); + ex.printStackTrace(log); + bResult = false; + } catch (com.sun.star.lang.WrappedTargetException ex) { + log.println("Exception occurred "); + ex.printStackTrace(log); + bResult = false; + } catch (com.sun.star.container.NoSuchElementException ex) { + log.println("Exception occurred "); + ex.printStackTrace(log); + bResult = false; + } catch (com.sun.star.container.ElementExistException ex) { + log.println("Exception occurred "); + ex.printStackTrace(log); + bResult = false; + } + + return bResult; + } + + /** + * In case no XNameContainer is available, but a XControlContainer + * instead. + * the XControl instance is inserted + * Method returns true if the count of Controls is changed afterwards + */ + protected boolean performChanges2() { + int precount = CC.getControls().length; + CC.addControl("NewControl",(XControl) inst); + waitForEventIdle(); + int count = CC.getControls().length; + CC.removeControl(CC.getControl("NewControl")); + waitForEventIdle(); + return count>precount; + } + + /** + * In case no XNameContainer is available, but a XNamingService + * instead. + * the instance is registered and revoked again + * Method return true if getRegisteredObject() works after + * registering and doesn't after revoke + */ + protected boolean performChanges3() { + boolean res = true; + Object reg = null; + + try { + reg = NV.getRegisteredObject("MyFactory"); + NV.revokeObject("MyFactory"); + } catch (Exception e) { + + } + + try { + NV.registerObject("MyFactory", inst); + reg = NV.getRegisteredObject("MyFactory"); + res &= (reg != null); + } catch (Exception e) { + e.printStackTrace(log); + log.println("registerObject failed"); + res &= false; + } + + try { + NV.revokeObject("MyFactory"); + reg = NV.getRegisteredObject("MyFactory"); + log.println("revokeObject failed"); + res &= false; + } catch (Exception e) { + res &= true; + } + + return res; + } + + /** + * In case no XNameContainer is available, but a XNamingReplace + * instead. + */ + protected boolean performChanges4() { + boolean res = true; + Object newValue = inst2; + Object originalValue = null; + String name = null; + + try { + name = (String)inst; + } + catch(java.lang.ClassCastException e) { + log.write("Expected String as object relations 'XContainer.ElementName'."); + e.printStackTrace(log); + return false; + } + + try { + originalValue = NR.getByName(name); + NR.replaceByName(name, newValue); + } catch (Exception e) { + e.printStackTrace(log); + res = false; + } + + try { + NR.replaceByName(name, originalValue); + } catch (Exception e) { + e.printStackTrace(log); + res = false; + } + + return res; + } +} + + diff --git a/qadevOOo/tests/java/ifc/container/_XContainerQuery.java b/qadevOOo/tests/java/ifc/container/_XContainerQuery.java new file mode 100644 index 0000000000..68cacca00a --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XContainerQuery.java @@ -0,0 +1,154 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.container; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.NamedValue; +import com.sun.star.container.XContainerQuery; +import com.sun.star.container.XEnumeration; + + +/** +* Testing <code>com.sun.star.container.XContainerQuery</code> +* interface methods : +* <ul> +* <li><code> createSubSetEnumerationByProperties()</code></li> +* <li><code> createSubSetEnumerationByQuery()</code></li> +* </ul> +* This test needs the following object relations : +* <ul> +* <li> <code>'XContainerQuery.createSubSetEnumerationByProperties'</code> : +* <code>NameValue[]</code> which is a valid argument for +* <code>createSubSetEnumerationByProperties()</code>.</li> +* <li> <code>'XContainerQuery.createSubSetEnumerationByQuery'</code> : <b>(optional)</b> +* Normally <code>createSubSetEnumerationByProperties()</code> covers all +* possible queries. But for special cases, i.e. sorted output, the function +* <code>createSubSetEnumerationByQuery()</code> was made. The special cases was not +* implemented by default in the implementation object. So this function could be +* marked as <code>optional</code></li> +* <ul> <p> +* <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.container.XContainerQuery +*/ +public class _XContainerQuery extends MultiMethodTest { + + public XContainerQuery oObj = null; + private NamedValue[] m_querySequenze = null; + private String[] m_queryStrings = null; + + + /** + * Retrieves object relations + * @throws StatusException If one of relations not found. + */ + @Override + public void before() throws StatusException { + + m_querySequenze = (NamedValue[]) tEnv.getObjRelation( + "XContainerQuery.createSubSetEnumerationByProperties"); + if (m_querySequenze == null) { + throw new StatusException( + Status.failed("Could not get object relation " + + "'XContainerQuery.createSubSetEnumerationByProperties'")) ; + } + + m_queryStrings = (String[]) tEnv.getObjRelation( + "XContainerQuery.createSubSetEnumerationByQuery"); + if (m_queryStrings == null) { + log.println("Could not get object relation " + + "'XContainerQuery.createSubSetEnumerationByQuery'"); + } + } + + + /** + * If object relation is available, the function was called with relation + * as parameter. The returned <code>XEnumeration</code> must not be null and + * elements of it must be valid. + * If object relation is not available, the result is always <code>true</code> + */ + public void _createSubSetEnumerationByQuery() { + + boolean bResult = true; + if ( m_queryStrings == null ) { + log.println("This object does not have an implementation for this function"); + // This is not a bug, because it's a feature for future purposes + } else { + for (int i = 0; i < m_queryStrings.length; i++){ + String queryString = m_queryStrings[i]; + XEnumeration subSet = oObj.createSubSetEnumerationByQuery( queryString ); + + bResult &= subSet.hasMoreElements(); + + while (subSet.hasMoreElements()) { + try{ + subSet.nextElement(); + + } catch (com.sun.star.container.NoSuchElementException e){ + log.println("Exception occurred "); + e.printStackTrace(log); + bResult = false; + } catch (com.sun.star.lang.WrappedTargetException e){ + log.println("Exception occurred "); + e.printStackTrace(log); + bResult = false; + } + } + } + } + + tRes.tested("createSubSetEnumerationByQuery()", bResult); + } + + /** + * The function was called with object relation + * as parameter. The returned <code>XEnumeration</code> must not be null and + * elements of it must be valid. + * + */ + public void _createSubSetEnumerationByProperties() { + + boolean bResult = true; + + XEnumeration subSet = oObj.createSubSetEnumerationByProperties( m_querySequenze ); + + bResult = subSet.hasMoreElements(); + + while (subSet.hasMoreElements()) { + try{ + subSet.nextElement(); + + } catch (com.sun.star.container.NoSuchElementException e){ + log.println("Exception occurred "); + e.printStackTrace(log); + bResult = false; + } catch (com.sun.star.lang.WrappedTargetException e){ + log.println("Exception occurred "); + e.printStackTrace(log); + bResult = false; + } + } + + tRes.tested("createSubSetEnumerationByProperties()", bResult); + } +} diff --git a/qadevOOo/tests/java/ifc/container/_XContentEnumerationAccess.java b/qadevOOo/tests/java/ifc/container/_XContentEnumerationAccess.java new file mode 100644 index 0000000000..24488025e0 --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XContentEnumerationAccess.java @@ -0,0 +1,86 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.container; + +import lib.MultiMethodTest; + +import com.sun.star.container.XContentEnumerationAccess; +import com.sun.star.container.XEnumeration; + +/** +* Testing <code>com.sun.star.container.XContentEnumerationAccess</code> +* interface methods : +* <ul> +* <li><code> createContentEnumeration()</code></li> +* <li><code> getAvailableServiceNames()</code></li> +* </ul> <p> +* @see com.sun.star.container.XContentEnumerationAccess +*/ +public class _XContentEnumerationAccess extends MultiMethodTest{ + public XContentEnumerationAccess oObj = null; + String[] serviceNames = null; + + /** + * Retrieves service names and stores them. <p> + * Has <b> OK </b> status if not <code>null</code> + * value returned. + */ + public void _getAvailableServiceNames(){ + boolean bResult = true; + try { + serviceNames = oObj.getAvailableServiceNames(); + bResult = serviceNames != null ; + } catch (Exception e) { + log.println("Exception occurred. " + e); + bResult = false; + } + tRes.tested("getAvailableServiceNames()", bResult); + } + + /** + * If at least one service available then an enumeration for + * it created. <p> + * Has <b> OK </b> status if no services available or enumeration + * created for available service is not <code>null</code>. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code>getAvailableServiceNames()</code> : + * to have at least one service name for enumeration to create for.</li> + * </ul> + */ + public void _createContentEnumeration(){ + requiredMethod("getAvailableServiceNames()"); + + if (serviceNames.length == 0) { + log.println("No service name available") ; + tRes.tested("createContentEnumeration()", true) ; + return ; + } + + boolean bResult = true; + + log.println( "creating Enumeration" ); + XEnumeration oEnum = oObj.createContentEnumeration(serviceNames[0]); + bResult &= oEnum != null; + + tRes.tested( "createContentEnumeration()", bResult); + } +} + + diff --git a/qadevOOo/tests/java/ifc/container/_XElementAccess.java b/qadevOOo/tests/java/ifc/container/_XElementAccess.java new file mode 100644 index 0000000000..25dee4a097 --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XElementAccess.java @@ -0,0 +1,60 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.container; + +import lib.MultiMethodTest; + +import com.sun.star.container.XElementAccess; + +/** + * Testing <code>com.sun.star.container.XElementAccess</code> + * interface methods : + * <ul> + * <li><code> getElementType()</code></li> + * <li><code> hasElements()</code></li> + * </ul> <p> + * + * @see com.sun.star.container.XElementAccess + */ +public class _XElementAccess extends MultiMethodTest { + public XElementAccess oObj = null; + + /** + * Test calls the method and checks return value. <p> + * Has <b> OK </b> status if the method returns <code>true</code>, + * only in the case the container is not empty.<p> + */ + public void _hasElements(){ + // Testing hasElements() method + tRes.tested( "hasElements()", oObj.hasElements() ); + } // end hasElements + + /** + * Test calls the method and checks return value. <p> + * Has <b> OK </b> status if the method returns not null value.<p> + */ + public void _getElementType(){ + // Testing getElementType() method + com.sun.star.uno.Type type = oObj.getElementType(); + tRes.tested( "getElementType()", type != null ); + } // end ElementType + +} /// finished class _XElementAccess + + diff --git a/qadevOOo/tests/java/ifc/container/_XEnumeration.java b/qadevOOo/tests/java/ifc/container/_XEnumeration.java new file mode 100644 index 0000000000..4cddb309e1 --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XEnumeration.java @@ -0,0 +1,115 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.container; + +import lib.MultiMethodTest; + +import com.sun.star.container.NoSuchElementException; +import com.sun.star.container.XEnumeration; +import com.sun.star.lang.WrappedTargetException; + +/** +* Testing <code>com.sun.star.container.XEnumeration</code> +* interface methods : +* <ul> +* <li><code> hasMoreElements()</code></li> +* <li><code> nextElement()</code></li> +* </ul> +* Test is multithread compliant. <p> +* @see com.sun.star.container.XEnumeration +*/ +public class _XEnumeration extends MultiMethodTest { + + public XEnumeration oObj = null; + + /** + * Retrieves relation and sets oObj to a separate enumeration + * created. Retrieves all elements from enumeration.<p> + * Has <b> OK </b> status if all elements successfully retrieved + * and exceptions occurred. + */ + public void _hasMoreElements() { + boolean result = true; + + log.println("get all elements"); + int counter = 0; + int tmpCounter = 0; + while ( oObj.hasMoreElements() ) { + try { + oObj.nextElement(); + counter ++; + if (counter - tmpCounter > 10000) { + log.println(counter+ " Elements"); + tmpCounter = counter; + } + } catch (WrappedTargetException e) { + log.println("hasMoreElements() : " + e); + result = false; + break; + } catch (NoSuchElementException e) { + log.println("hasMoreElements() : " + e); + result = false; + break; + } + } + Object expCount = tEnv.getObjRelation("ExpectedCount"); + if (expCount != null) { + int ec = ((Integer) expCount).intValue(); + boolean locResult = counter == ec; + if (!locResult) { + log.println("Not all Elements are returned: "); + log.println("\tExpected: "+ ec); + log.println("\tFound: "+counter); + } + result &= locResult; + } + tRes.tested("hasMoreElements()", result); + } // end hasMoreElements + + /** + * Calls the method (on starting this method there is no more elements + * in the enumeration. <p> + * Has <b> OK </b> status if only <code>NoSuchElementException</code> + * exception rises. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> hasMoreElements() </code> : it retrieves all elements </li> + * </ul> + */ + public void _nextElement(){ + requiredMethod("hasMoreElements()"); + boolean result = true; + log.println("additional call must throw NoSuchElementException"); + + try { + oObj.nextElement(); + log.println("nextElement: no exception!"); + result = false; + } catch (WrappedTargetException e) { + log.println("nextElement: wrong exception!"); + result = false; + } catch (NoSuchElementException e) { + log.println("nextElement: correct exception"); + } + + tRes.tested("nextElement()", result); + } // end NextElement + +} //end XEnumeration + diff --git a/qadevOOo/tests/java/ifc/container/_XEnumerationAccess.java b/qadevOOo/tests/java/ifc/container/_XEnumerationAccess.java new file mode 100644 index 0000000000..df79c9a531 --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XEnumerationAccess.java @@ -0,0 +1,47 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.container; + +import lib.MultiMethodTest; + +import com.sun.star.container.XEnumeration; +import com.sun.star.container.XEnumerationAccess; + + +/** +* Testing <code>com.sun.star.container.XEnumerationAccess</code> +* interface methods. <p> +* Test is multithread compliant. <p> +*/ +public class _XEnumerationAccess extends MultiMethodTest{ + public XEnumerationAccess oObj = null; + + /** + * Test calls the method and checks return value. <p> + * Has <b> OK </b> status if the method returns not null value. <p> + */ + public void _createEnumeration(){ + log.println( "creating Enumeration" ); + XEnumeration oEnum = oObj.createEnumeration(); + tRes.tested( "createEnumeration()", oEnum != null ); + } // end createEnumeration() +} // finish class _XEnumerationAccess + + + diff --git a/qadevOOo/tests/java/ifc/container/_XHierarchicalName.java b/qadevOOo/tests/java/ifc/container/_XHierarchicalName.java new file mode 100644 index 0000000000..f828c1f618 --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XHierarchicalName.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 ifc.container; + +import com.sun.star.container.XHierarchicalName; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + + +public class _XHierarchicalName extends MultiMethodTest { + public XHierarchicalName oObj; + + public void _composeHierarchicalName() { + String expName = (String) tEnv.getObjRelation("HierarchicalName"); + String element = (String) tEnv.getObjRelation("ElementName"); + boolean res = false; + + try { + String hn = oObj.composeHierarchicalName(element); + res = hn.startsWith(expName); + + if (!res) { + log.println("Getting : " + hn + + " but expected it to start with " + expName); + } + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception " + e.getMessage()); + } catch (com.sun.star.lang.NoSupportException e) { + log.println("Exception " + e.getMessage()); + } + + tRes.tested("composeHierarchicalName()", res); + } + + public void _getHierarchicalName() { + String hName = oObj.getHierarchicalName(); + String expName = (String) tEnv.getObjRelation("HierarchicalName"); + boolean res = true; +System.out.println("### "+hName); + if (expName != null) { + res = hName.startsWith(expName); + + if (!res) { + log.println("Expected the name to start with " + expName); + log.println("got " + hName); + } + } else { + throw new StatusException(Status.failed( + "ObjectRelation 'HierarchicalName' missing")); + } + + tRes.tested("getHierarchicalName()", res); + } +} diff --git a/qadevOOo/tests/java/ifc/container/_XHierarchicalNameAccess.java b/qadevOOo/tests/java/ifc/container/_XHierarchicalNameAccess.java new file mode 100644 index 0000000000..b128f199de --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XHierarchicalNameAccess.java @@ -0,0 +1,83 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.container; + +import lib.MultiMethodTest; + +import com.sun.star.container.NoSuchElementException; +import com.sun.star.container.XHierarchicalNameAccess; + +/** +* Testing <code>com.sun.star.container.XHierarchicalNameAccess</code> +* interface methods : +* <ul> +* <li><code> getByHierarchicalName()</code></li> +* <li><code> hasByHierarchicalName()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'ElementName'</code> (of type <code>String</code>): +* name of the element which exists in the container. </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.container.XHierarchicalNameAccess +*/ +public class _XHierarchicalNameAccess extends MultiMethodTest{ + public XHierarchicalNameAccess oObj = null; + + /** + * Calls the method with existing and nonexistent + * element names. <p> + * Has <b>OK</b> status if for existing name <code>true</code> + * is returned and for nonexistent - <code>false</code>. + */ + public void _hasByHierarchicalName(){ + String name = (String) tEnv.getObjRelation("ElementName") ; + boolean res = oObj.hasByHierarchicalName(name) ; + name +="ItMakesThisNameNonExistantForSure"; + boolean res2 = oObj.hasByHierarchicalName(name); + res &= !res2; + tRes.tested("hasByHierarchicalName()", res) ; + } // end _hasByHierarchicalName() + + /** + * Tries to retrieve an element with existing name. <p> + * Has <b>OK</b> status if non null object is returned. + */ + public void _getByHierarchicalName(){ + String name = (String) tEnv.getObjRelation("ElementName") ; + Object res ; + + try { + res = oObj.getByHierarchicalName(name) ; + + } catch (NoSuchElementException e) { + log.println("Element with name '" + name + + "' doesn't exist in this container") ; + res = null ; + } + + tRes.tested("getByHierarchicalName()", res != null) ; + + } // end _getByHierarchicalName() + +} // finish class _XHierarchicalNameAccess + + + diff --git a/qadevOOo/tests/java/ifc/container/_XIndexAccess.java b/qadevOOo/tests/java/ifc/container/_XIndexAccess.java new file mode 100644 index 0000000000..6b19084289 --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XIndexAccess.java @@ -0,0 +1,144 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.container; + +import lib.MultiMethodTest; + +import com.sun.star.container.XIndexAccess; +import com.sun.star.lang.IndexOutOfBoundsException; +import com.sun.star.lang.WrappedTargetException; + +/** +* Testing <code>com.sun.star.container.XIndexAccess</code> +* interface methods : +* <ul> +* <li><code> getCount()</code></li> +* <li><code> getByIndex()</code></li> +* </ul> <p> +* Test seems to work properly in multithreaded environment. +* @see com.sun.star.container.XIndexAccess +*/ +public class _XIndexAccess extends MultiMethodTest { + + public XIndexAccess oObj = null; + + /** + * Number of elements in the container. + */ + public int count = 0; + + /** + * Get number of element in the container. <p> + * Has <b> OK </b> status if method returns number lager than -1. + */ + public void _getCount() { + boolean result = true; + log.println("getting the number of the elements"); + // hope we haven't a count lower than zero ;-) + count = -1; + count = oObj.getCount(); + result = (count != -1); + tRes.tested("getCount()", result); + } //end getCount() + + /** + * This method tests the IndexAccess from the first element, + * the middle element and the last element. Finally it test + * Exceptions which throws by a not available index. <p> + * Has <b> OK </b> status if first, middle and last elements + * successfully returned and has non null value; and if on + * invalid index parameter <code>IndexOutOfBoundsException</code> + * is thrown.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getCount() </code> : to have number of elements + * in container. </li> + * </ul> + */ + public void _getByIndex() { + requiredMethod("getCount()"); + // get count from holder + + waitForEventIdle(); + + boolean result = true; + log.println("Testing getByIndex()"); + + if (count > 0) { + // Check the first element + log.println("Check the first element"); + result &= checkGetByIndex(0); + + // Check the middle element + log.println("Check the middle element"); + result &= checkGetByIndex(count /2); + + // Check the last element + log.println("Check the last element"); + result &= checkGetByIndex(count -1); + + // Testing getByIndex with wrong params. + log.println("Testing getByIndex with wrong params."); + try { + log.println("getByIndex(" + count + ")"); + oObj.getByIndex(count); + log.println("no exception thrown - FAILED"); + result = false; + } catch (IndexOutOfBoundsException e) { + log.println("Expected exception caught! " + e + " OK"); + } catch (WrappedTargetException e) { + log.println("Wrong exception! " + e + " FAILED"); + result = false; + } + } + + tRes.tested("getByIndex()", result); + + } // end getByIndex + + private boolean checkGetByIndex(int index){ + Object o = null; + boolean result = true; + try { + log.println("getByIndex(" + index + ")"); + o = oObj.getByIndex(index); + + if ( tEnv.getObjRelation("XIndexAccess.getByIndex.mustBeNull") != null){ + result = (o == null); + if (result) log.println("OK"); else log.println("FAILED -> not null"); + } else { + result = (o != null); + if (result) log.println("OK"); else log.println("FAILED -> null"); + } + + } catch (WrappedTargetException e) { + log.println("Exception! " + e); + result = false; + } catch (IndexOutOfBoundsException e) { + log.println("Exception! " + e); + result = false; + } + + return result; + } + +} // end XIndexAccess + + + diff --git a/qadevOOo/tests/java/ifc/container/_XIndexContainer.java b/qadevOOo/tests/java/ifc/container/_XIndexContainer.java new file mode 100644 index 0000000000..9b3a23f974 --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XIndexContainer.java @@ -0,0 +1,201 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.container; + +import lib.MultiMethodTest; + +import com.sun.star.container.XIndexContainer; +import com.sun.star.lang.IndexOutOfBoundsException; + +/** +* Testing <code>com.sun.star.container.XIndexContainer</code> +* interface methods : +* <ul> +* <li><code> insertByIndex()</code></li> +* <li><code> removeByIndex()</code></li> +* </ul> <p> +* +* This test needs the following object relations : +* <ul> +* <li> <code>'INSTANCE1', ..., 'INSTANCEN'</code> : N relations +* which represents objects to be inserted. See below +* for more information.</li> +* <li> <code>'XIndexContainerINDEX'</code> : For internal test +* usage. Contains current thread number. </li> +* <li> Test environment variable <code>'THRCNT'</code> : number +* of interface threads running concurrently. </li> +* <ul> <p> +* XIndexContainer needs n ObjectRelations "INSTANCEn" , where n=1, ..., +* THRCNT.<p> +* When this interface tested by different threads, it must use different +* instances to insert/remove - one for each thread. +* <p> +* That's why we use objRelation "XIndexContainerINDEX" to store the number of +* last taken instance. If there is no such relation, it initialize with 1. +* <p> +* This ObjectRelations should be necessary to create an Object, +* which is insertable by insterByIndex() +* INSTANCEn are n Objectrelations so that every thread can insert its own +* object. n depends on the variable THRCNT which and comes from API.INI +* <p> +* Why that: +* If you insert the same Object by insertByIndex() several times you +* don't insert the Object several times. The first insertByIndex() inserts +* the Object to the Container but all other insertByIndex() changes +* the Index in the Container because it's the same Object. <p> +* Test is multithread compliant. <p> +* @see com.sun.star.container.XIndexContainer +*/ + +public class _XIndexContainer extends MultiMethodTest { + public XIndexContainer oObj = null; + + int Index = 0; + + /** + * First tries to insert proper object. Second tries to insert + * null value. For each test thread different objects are inserted + * on different indexes. For example for the first started test index + * is 0 and object is get from relation 'INSTANCE1', and so on. <p> + * Has <b>OK</b> status if in the first case <code>getByIndex</code> + * method returns non null value and in the second <code> + * IndexOutOfBoundsException</code> was thrown. + */ + public void _insertByIndex() { + boolean result = true; + + log.println("get ObjRelation(\"XIndexContainerINDEX\")"); + String sIndex = (String)tEnv.getObjRelation("XIndexContainerINDEX"); + if (sIndex == null) { + log.println("No XIndexContainerINDEX - so set it to 1."); + tEnv.addObjRelation("XIndexContainerINDEX", Integer.toString(1)); + Index = 1; + } else { + Index = Integer.parseInt(sIndex); + Index++; + tEnv.addObjRelation("XIndexContainerINDEX", + Integer.toString(Index)); + } + + + log.println("get ObjRelation(\"INSTANCE" + Index +"\")"); + Object oInstance = tEnv.getObjRelation("INSTANCE"+ Index); + if (oInstance == null) { + log.println("ObjRelation(\"INSTANCE" + Index +"\") Object n.a."); + } + + log.println("testing insertByIndex(\"" + Index + "\")..."); + try { + oObj.insertByIndex(Index, oInstance); + result &= oObj.getByIndex(Index) != null ; + log.println("insertByIndex(\""+Index+"\")...OK"); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("insertByIndex(\""+Index+"\"): " + e + " FLASE"); + result = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("insertByIndex(\""+Index+"\"): " + e + " FLASE"); + result = false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("insertByIndex(\""+Index+"\"): " + e + " FLASE"); + result = false; + } + + log.println("inserting a wrong Object occurs Exceptions ..."); + try { + Object dummy = null; + oObj.insertByIndex(0, dummy); + log.println("No Exception: -> FALSE"); + result = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Dummy-Exception: " + e + " -> OK"); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("!!! Wrong Exception: " + e + " -> FAILED"); + result = false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("!!! Wrong Exception: " + e + " -> FAILED"); + result = false; + } + + tRes.tested("insertByIndex()", result); + } + + /** + * Removes the element inserted by <code>insertByIndex</code> method test. + * The number of elements is checked before and after removing. + * Then tries to remove an element with invalid index and checks exceptions. + * <p> + * Has <b>OK</b> status if after removing number of elements decreases by + * one and <code>IndexOutOfBoundsException</code> is thrown on invalid index + * removing. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> insertByIndex </code> : to have an object which can be + * removed.</li> + * </ul> + */ + public void _removeByIndex() { + requiredMethod("insertByIndex()"); + boolean result = true; + + log.println("testing removeByIndex() ..."); + + try { + log.println("remove " +Index); + int cnt1 = -1 , cnt2 = -1 ; + synchronized (oObj) { + cnt1 = oObj.getCount() ; + oObj.removeByIndex(Index); + cnt2 = oObj.getCount() ; + } + log.println("Count before removing : " + cnt1 + + ", and after : " + cnt2) ; + + result &= cnt1 == cnt2 + 1 ; + + log.println("1. removeByIndex(\""+Index+"\") ...OK"); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + result = false; + log.println("1. removeByIndex:(\""+Index+"\") " + + e + " - FAILED"); + } catch (com.sun.star.lang.WrappedTargetException e) { + result = false; + log.println("1. removeByIndex:(\""+Index+"\") " + + e + " - FAILED"); + } + + log.println("removing a non existent object to get an exception"); + try { + oObj.removeByIndex(100); + result = false; + log.println("2. removeByIndex(): Exception expected! - FAILED"); + } catch (IndexOutOfBoundsException e) { + log.println("2. removeByIndex(): Expected exception - OK"); + result &= true; + } catch (com.sun.star.lang.WrappedTargetException e) { + result = false; + log.println("2. removeByIndex(): Unexpected exception! - " + + e + " - FAILED"); + } + + tRes.tested("removeByIndex()", result); + } +} + + + diff --git a/qadevOOo/tests/java/ifc/container/_XIndexReplace.java b/qadevOOo/tests/java/ifc/container/_XIndexReplace.java new file mode 100644 index 0000000000..f97dfb0d9a --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XIndexReplace.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 ifc.container; + +import lib.MultiMethodTest; +import util.ValueComparer; + +import com.sun.star.container.XIndexReplace; +import com.sun.star.container.XNameContainer; +import com.sun.star.lang.IllegalArgumentException; +import com.sun.star.lang.IndexOutOfBoundsException; +import com.sun.star.uno.UnoRuntime; + + +/** +* Testing <code>com.sun.star.container.XIndexReplace</code> +* interface methods : +* <ul> +* <li><code> replaceByIndex()</code></li> +* </ul> +* This test needs the following object relations : +* <ul> +* <li> <code>'INSTANCE1', ..., 'INSTANCEN'</code> : N relations +* which represents objects to be replaced with. See below +* for more information.</li> +* <li> <code>'XIndexReplaceINDEX'</code> : For internal test +* usage. Contains current thread number. </li> +* <li> Test environment variable <code>'THRCNT'</code> : number +* of interface threads running concurrently. </li> +* <ul> <p> +* XIndexReplace needs n ObjectRelations "INSTANCEn" , where n = 1, ..., THRCNT. +* <p> +* When this interface tested by different threads, it must use different +* instances to replace - one for each thread.<p> +* That's why we use objRelation "XIndexReplaceINDEX" to store the number of +* last taken instance. If there is no such relation, it initialize with 1. +* <p> +* This ObjectRelations should be necessary to create an Object, +* which is can be replaced by index +* INSTANCEn are n Objectrelations so that every thread can insert its own +* object. n depends on the variable THRCNT which and comes from API.INI +* <p> +* Why that: +* If you insert the same Object by replaceByIndex() several times you +* don't insert the Object several times. The first replaceByIndex() inserts +* the Object to the Container but all other replaceByIndex() changes +* the Index in the Container because it's the same Object. <p> +* Test is multithread compliant. <p> +* @see com.sun.star.container.XIndexReplace +*/ + +public class _XIndexReplace extends MultiMethodTest { + public XIndexReplace oObj = null; + + /** + * Primarily tries to replace elements in a proper way : + * replaces the first, middle and the last element then + * checks if elements were properly replaced. + * Then wrong parameters are passed : invalid index and + * null value for replacing, and test checks for proper + * exceptions to be thrown. <p> + * In different threads it replaces elements with different + * objects. + * Has <b>OK</b> status if in the first (correct) case + * elements were successfully replaced (i.e. values got + * after replacing must be equal to those replaced with), + * and in the second case proper exceptions were thrown. + */ + public void _replaceByIndex() { + boolean result = true; + Object old = null; + Object oInstance = null; + int Index = 0; + + //get for every thread its own Object to insert it + log.println("get ObjRelation(\"XIndexReplaceINDEX\")"); + String sIndex = (String)tEnv.getObjRelation("XIndexReplaceINDEX"); + if (sIndex == null) { + log.println("No XIndexReplaceINDEX - so set it to 1."); + tEnv.addObjRelation("XIndexReplaceINDEX", Integer.toString(1)); + Index = 1; + } else { + Index = Integer.parseInt(sIndex); + Index++; + tEnv.addObjRelation("XIndexReplaceINDEX", Integer.toString(Index)); + } + + + log.println("get ObjRelation(\"INSTANCE" + Index +"\")"); + oInstance = tEnv.getObjRelation("INSTANCE"+ Index); + if (oInstance == null) { + log.println("ObjRelation(\"INSTANCE" + Index +"\") Object n.a."); + } + + log.println("testing replaceByIndex(0)..."); + + try { + + log.println("Getting old object"); + old = oObj.getByIndex(0); + oObj.replaceByIndex(0, oInstance); + result = !(oObj.getByIndex(0)).equals(old); + result = ! ValueComparer.equalValue(oObj,old); + + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + e.printStackTrace(log) ; + result = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log) ; + result = false; + } catch (com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log) ; + result = false; + } + + + log.println("replace with a wrong Object occurs Exceptions ..."); + try { + oObj.replaceByIndex(999, oInstance); + result = false; + log.println("1. replaceByIndex(): Exception expected! - FAILED"); + + + XNameContainer xNC = UnoRuntime.queryInterface(XNameContainer.class, oObj) ; + String[] names = xNC.getElementNames() ; + log.println("Element names :") ; + for (int i = 0; i<names.length; i++) { + log.println(" '" + names[i] + "'") ; + } + } catch (IndexOutOfBoundsException e) { + log.println("1. replaceByIndex(): Expected exception - OK"); + result &= true; + } catch (com.sun.star.lang.IllegalArgumentException e) { + result = false; + log.println("1. replaceByIndex(): Unexpected exception! - " + + e + " - FAILED"); + } catch (com.sun.star.lang.WrappedTargetException e) { + result = false; + log.println("1. replaceByIndex(): Unexpected exception! - " + + e + " - FAILED"); + } + + log.println("replace with a wrong Object occurs Exceptions ..."); + try { + oObj.replaceByIndex(0, null); + result = false; + log.println("2. replaceByIndex(): Exception expected! - FAILED"); + + + XNameContainer xNC = UnoRuntime.queryInterface(XNameContainer.class, oObj) ; + String[] names = xNC.getElementNames() ; + log.println("Element names :") ; + for (int i = 0; i<names.length; i++) { + log.println(" '" + names[i] + "'") ; + } + } catch (IllegalArgumentException e) { + log.println("2. replaceByIndex(): Expected exception - OK"); + result &= true; + } catch (com.sun.star.lang.WrappedTargetException e) { + result = false; + log.println("2. replaceByIndex(): Unexpected exception! - " + + e + " - FAILED"); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + result = false; + log.println("2. replaceByIndex(): Unexpected exception! - " + + e + " - FAILED"); + } + + log.println("replace with the old object"); + try { + oObj.replaceByIndex(0, old); + } catch (IllegalArgumentException e) { + e.printStackTrace(log) ; + } catch (com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log) ; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + e.printStackTrace(log) ; + } + + tRes.tested("replaceByIndex()", result); + } +} + + diff --git a/qadevOOo/tests/java/ifc/container/_XNameAccess.java b/qadevOOo/tests/java/ifc/container/_XNameAccess.java new file mode 100644 index 0000000000..765fb8fcd6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XNameAccess.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 ifc.container; + +import lib.MultiMethodTest; + +import com.sun.star.container.NoSuchElementException; +import com.sun.star.container.XNameAccess; + +/** +* Testing <code>com.sun.star.container.XNameAccess</code> interface methods. <p> +* Test is <b> NOT </b> multithread compliant. <p> +*/ +public class _XNameAccess extends MultiMethodTest { + public XNameAccess oObj = null; + public String[] Names = null; + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <p> + * Has <b> OK </b> status if the method successfully returns + * not null value and no exceptions were thrown. <p> + */ + public void _getElementNames() { + boolean result = true; + log.println("getting elements names"); + Names = oObj.getElementNames(); + + result = (Names != null); + tRes.tested("getElementNames()", result); + } // end getElementNames() + + /** + * First test calls the method with existing element name, + * then with non existing. <p> + * Has <b> OK </b> status if in the first case the method returns + * true and in the second - false. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getElementNames </code> : to retrieve at least one + * element name. </li> + * </ul> + */ + public void _hasByName() { + requiredMethod("getElementNames()"); + log.println("testing hasByName() ..."); + + boolean result = true; + boolean loc_result = true; + + String name = null; + + if (Names.length != 0) { + name = Names[0]; + log.println("testing hasByName() with valid name '" + name + "'"); + loc_result = oObj.hasByName(name); + log.println("hasByName with valid names: " + loc_result); + result &= loc_result; + } + + name = "non_existent_name__1234"; + log.println("testing hasByName() with invalid name"); + try { + loc_result = !oObj.hasByName(name); + } catch ( Exception nsee) { + log.println("Expected exception was thrown"); + } + log.println("hasByName with invalid names: " + loc_result); + result &= loc_result; + + tRes.tested("hasByName()", result); + } // end hasByName() + + + /** + * First test calls the method with existing element name, + * then with non existing. <p> + * Has <b> OK </b> status if in the first case the method returns + * not null value and no exceptions were thrown, + * and in the second case <code>NoSuchElementException</code> was + * thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getElementNames </code> : to retrieve at least one + * element name. </li> + * </ul> + */ + public void _getByName() { + log.println("require getElementNames() ..."); + requiredMethod("getElementNames()"); + log.println("require getElementNames() ...OK"); + log.println("testing getByName() ..."); + + boolean result = true; + boolean loc_result = true; + + String name = null; + + if (Names.length != 0) { + name = Names[0]; + log.println("testing with valid name '" + name + "'"); + try { + loc_result = (null != oObj.getByName(name)); + } catch (Exception e) { + log.println("Exception! - FAILED"); + log.println(e.toString()); + loc_result = false; + } + log.println("getByName with valid name: " + loc_result); + result &= loc_result; + } + + log.println("testing with non-existent name"); + name = "non_existent_name__1234"; + try { + loc_result = (null != oObj.getByName(name)); + loc_result = false; + log.println("getByName: Exception expected - FAILED"); + } catch (NoSuchElementException e) { + log.println("getByName: Expected exception - OK"); + loc_result = true; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("getByName: Wrong exception - " + e + " - FAILED"); + loc_result = false; + } + + result &= loc_result; + tRes.tested("getByName()", result); + } // end getByName() +} /// finished class _XNameAccess + + + diff --git a/qadevOOo/tests/java/ifc/container/_XNameContainer.java b/qadevOOo/tests/java/ifc/container/_XNameContainer.java new file mode 100644 index 0000000000..45a1b2c925 --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XNameContainer.java @@ -0,0 +1,245 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.container; + +import com.sun.star.container.NoSuchElementException; +import com.sun.star.container.XNameContainer; +import lib.MultiMethodTest; +import lib.StatusException; + +/** +* Testing <code>com.sun.star.container.XNameContainer</code> +* interface methods : +* <ul> +* <li><code> insertByName()</code></li> +* <li><code> removeByName()</code></li> +* </ul> +* This test needs the following object relations : +* <ul> +* <li> <code>'INSTANCE1', ..., 'INSTANCEN'</code> : N relations +* which represents objects to be inserted. See below +* for more information.</li> +* <li> <code>'XNameContainerINDEX'</code> : For internal test +* usage. Contains current thread number. </li> +* <li> <code>'XNameContainer.AllowDuplicateNames'</code> <b>optional</b>: +* if this relation exists then container elements can have duplicate +* names. </li> +* <li> Test environment variable <code>'THRCNT'</code> : number +* of interface threads running concurrently. </li> +* <ul> <p> +* XNameContainer needs n ObjectRelations "INSTANCEn" , where n=1, ..., THRCNT. +* +* When this interface tested by different threads, it must use different +* instances to insert/remove - one for each thread. +* +* That's why we use objRelation "XNameContainerINDEX" to store the number of +* last taken instance. If there is no such relation, it initialize with 1. +* +* If you insert the same Object by insertByName() several times you +* don't insert the Object several times. The first insertByName() inserts +* the Object to the Container but all other insertByName() changes +* the Name in the Container because it's the same Object. +* @see com.sun.star.container.XNameContainer +*/ + +public class _XNameContainer extends MultiMethodTest { + public XNameContainer oObj = null; + String Name = "XNameContainer"; + + /** + * First inserts object by name (different objects for different threads) + * and checks if it exists. Second, if duplicate names are not allowed + * test tries to insert element with the same name and checks for + * proper exception. Third, tries to add <code>null</code> element and + * checks for proper exception. <p> + * Has <b>OK</b> status if in the first case element added exists in + * the container, in the second case <code>ElementExistException</code> + * is thrown, and in the third case <code>IllegalArgumentException</code> + * is thrown. + */ + public void _insertByName() { + boolean result = true; + int Index = 0; + + //get for every thread its own Object to insert it + log.println("get ObjRelation(\"XNameContainerINDEX\")"); + String sIndex = null ; + synchronized (tEnv) { + sIndex = (String)tEnv.getObjRelation("XNameContainerINDEX"); + if (sIndex == null) { + log.println("No XNameContainerINDEX - so set it to 1."); + tEnv.addObjRelation("XNameContainerINDEX",Integer.toString(1)); + Index = 1; + } else { + Index = Integer.parseInt(sIndex); + Index++; + tEnv.addObjRelation("XNameContainerINDEX", + Integer.toString(Index)); + } + } + Name += Index ; + + log.println("get ObjRelation(\"INSTANCE" + Index +"\")"); + Object oInstance = tEnv.getObjRelation("INSTANCE"+ Index); + log.println("ObjRelation(\"INSTANCE" + Index +"\") Object n.a."); + + log.println("testing insertByName(\""+Name+"\")..."); + try { + String[] names = oObj.getElementNames() ; + log.println("Element names :") ; + for (int i = 0; i<names.length; i++) { + log.println(" '" + names[i] + "'") ; + } + + oObj.insertByName(Name, oInstance); + + names = oObj.getElementNames() ; + log.println("Element names :") ; + for (int i = 0; i<names.length; i++) { + log.println(" " + names[i]) ; + } + + result &= oObj.hasByName(Name) ; + log.println("insertByName(\""+Name+"\")...OK"); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("insertByName(\""+Name+"\"): " + e + " FALSE"); + result = false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("insertByName(\""+Name+"\"): " + e + " FALSE"); + result = false; + } catch (com.sun.star.container.ElementExistException e) { + log.println("insertByName(\""+Name+"\"): " + e + " FALSE"); + result = false; + } + + // if duplicate names is not allowed test for valid exception + if (tEnv.getObjRelation("XNameContainer.AllowDuplicateNames")==null) { + Object secondInstance = tEnv.getObjRelation("SecondInstance"); + if (secondInstance != null) { + oInstance = secondInstance; + } + log.println("Trying to add element with the same name ...") ; + try { + oObj.insertByName(Name, oInstance); + result = false ; + log.println("!!! No exception were thrown !!!"); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("!!! Wrong exception : " + e + " FALSE"); + result = false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("!!! Wrong exception : " + e + " FALSE"); + result = false; + } catch (com.sun.star.container.ElementExistException e) { + log.println("Right exception : " + e + " OK"); + } + } + + log.println("inserting a wrong Object occurs Exceptions ..."); + try { + Object dummy = null; + oObj.insertByName("Dummy", dummy); + log.println("No Exception: -> FALSE"); + result = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Dummy-Exception: " + e + " -> OK"); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("!!! This exception not expected: " +e+ " -> FAILED"); + result = false; + } catch (com.sun.star.container.ElementExistException e) { + log.println("!!! This exception not expected: " +e+ " -> FAILED"); + result = false; + } + + tRes.tested("insertByName()", result); + + } // end insertByName() + + /** + * Test removes element inserted before and checks if element + * still exists in the container. Second test tries to remove + * element with non-existing name and checks for proper exception. <p> + * Has <b> OK </b> status if in the first case element doesn't + * exist anymore (or duplicate names are allowed), and in the + * second case <code>NoSuchElementException</code> is thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> insertByName() </code> : to remove the element inserted + * in this test. </li> + * </ul> + */ + public void _removeByName() { + try { + requiredMethod("insertByName()"); + } catch (StatusException e) { + // removing the name anywhere + try { + oObj.removeByName(Name); + } catch (com.sun.star.container.NoSuchElementException e1) { + } catch (com.sun.star.lang.WrappedTargetException e1) { + } + } + + boolean result = true; + + log.println("testing removeByName() ..."); + + try { + log.println("remove " + Name); + String[] names = oObj.getElementNames() ; + log.println("Element names :") ; + for (int i = 0; i<names.length; i++) { + log.println(" " + names[i]) ; + } + oObj.removeByName(Name); + boolean loc_res = !oObj.hasByName(Name) || tEnv.getObjRelation + ("XNameContainer.AllowDuplicateNames") != null ; + result &= loc_res ; + if (loc_res) + log.println("1. removeByName(\""+Name+"\") ...OK"); + else + log.println("1. !!! Container still has element with name " + + Name) ; + } catch (com.sun.star.lang.WrappedTargetException e) { + result = false; + log.println("1. removeByName:(\""+Name+"\") " + e + " - FAILED"); + } catch (com.sun.star.container.NoSuchElementException e) { + result = false; + log.println("1. removeByName:(\""+Name+"\") " + e + " - FAILED"); + } + + log.println("removing a non existent object to get an exception"); + try { + oObj.removeByName(Name+ " dummy"); + result = false; + log.println("2. removeByName(): Exception expected! - FAILED"); + } catch (NoSuchElementException e) { + log.println("2. removeByName(): Expected exception - OK"); + result &= true; + } catch (com.sun.star.lang.WrappedTargetException e) { + result = false; + log.println("2. removeByName(): Unexpected exception! - " + + e + " - FAILED"); + } + + tRes.tested("removeByName()", result); + } // end removeByName() +} //XNameContainer + + + diff --git a/qadevOOo/tests/java/ifc/container/_XNameReplace.java b/qadevOOo/tests/java/ifc/container/_XNameReplace.java new file mode 100644 index 0000000000..d0ca709714 --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XNameReplace.java @@ -0,0 +1,216 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.container; + +import com.sun.star.sheet.XCellRangeAddressable; +import lib.MultiMethodTest; +import util.ValueComparer; + +import com.sun.star.container.XNameAccess; +import com.sun.star.container.XNameReplace; +import com.sun.star.uno.UnoRuntime; +/** +* Testing <code>com.sun.star.container.XNameReplace</code> +* interface methods : +* <ul> +* <li><code> replaceByName()</code></li> +* </ul> +* This test needs the following object relations : +* <ul> +* <li> <code>'INSTANCE1', ..., 'INSTANCEN'</code> : N relations +* which represents objects to be replaced with. See below +* for more information.</li> +* <li> <code>'NAMEREPLACE'</code> <b>optional</b>: <code>String</code> +* relation which represents element name to be replaced. +* Some Objects can't replace the first that comes along, i.e. +* SwXStyleFamily. It has some pool styles which can't be replaced. +* So the test need a special object to replace it by name. </li> +* <li> <code>'XNameReplaceINDEX'</code> : For internal test +* usage. Contains current thread number. </li> +* <li> Test environment variable <code>'THRCNT'</code> : number +* of interface threads running concurrently. </li> +* <ul> <p> +* XNameReplace needs n ObjectRelations "INSTANCEn" , where n = 1, ..., THRCNT. +* <p> +* When this interface tested by different threads, it must use different instances +* to replace - one for each thread. +* <p> +* That's why we use objRelation "XNameReplaceINDEX" to store the number of last +* taken instance. If there is no such relation, it initialize with 1. +* <p> +* In one of the last steps the replaced object will be compared with the old +* object. For that it is necessary that every thread replace its own object. +* INSTANCEn are n Objectrelations so that every thread can insert its own +* object. n depends on the variable THRCNT which and comes from API.INI +* Some Object-Container can't replace the first that comes belong. So in +* NAMEREPLACE you can determine a container object, which is replaceable. <p> +* +* Test is <b> NOT </b> multithread compliant. <p> +* After test completion object environment has to be recreated. +* @see com.sun.star.container.XNameReplace +*/ +public class _XNameReplace extends MultiMethodTest { + + public XNameReplace oObj = null; + + /** + * First test retrieves instance to be replaced with for each interface thread. + * Then list of element names is retrieved, the first of them will + * be replaced. In special case when <code>'NAMEREPLACE'</code> relation + * exists, element with the specified name is replaced. + * Test replaces element and checks values of element with the + * specified name before and after replacement. <p> + * Has <b>OK</b> status if values before and after replacement are + * different. + */ + public void _replaceByName(){ + boolean result = true; + String[] oNames = null; + + int Index = 0; + + //get for every thread its own Object to insert it + log.println("get ObjRelation(\"XNameReplaceINDEX\")"); + String sIndex = (String)tEnv.getObjRelation("XNameReplaceINDEX"); + System.out.println("Index: "+sIndex); + if (sIndex == null) { + log.println("No XNameReplaceINDEX - so set it to 1."); + tEnv.addObjRelation("XNameReplaceINDEX", Integer.toString(1)); + Index = 1; + } else { + Index = Integer.parseInt(sIndex); + Index++; + tEnv.addObjRelation("XNameReplaceINDEX", Integer.toString(Index)); + } + + log.println("get ObjRelation(\"INSTANCE" + Index +"\")"); + Object oInstance = tEnv.getObjRelation("INSTANCE"+ Index); + if (oInstance == null) { + log.println("ObjRelation(\"INSTANCE" + Index +"\") Object n.a."); + } + + log.println("getting the existing object's name"); + XNameAccess oNameAccess = UnoRuntime.queryInterface( + XNameAccess.class, oObj); + oNames = oNameAccess.getElementNames(); + /* Some Objects can't replace the first that comes along, i.e. + SwXStyleFamily. It has some pool styles which can't be replaced. + So the test need a special object to replace it by name. + */ + log.println("get ObjRelation(\"NAMEREPLACE\")"); + Object oNameReplace = tEnv.getObjRelation("NAMEREPLACE"); + if (oNameReplace != null) { + oNames[0] = oNameReplace.toString(); + } + + log.println("replaceByName()"); + try { + boolean ok; + log.println("get current object '" + oNames[0] + "'"); + Object old = oObj.getByName(oNames[0]) ; + log.println("replace object '" + oNames[0] + "' with another instance"); + oObj.replaceByName(oNames[0],oInstance); + Object newEl = oObj.getByName(oNames[0]) ; + + if (tEnv.getTestCase().getObjectName().equals("ScCellRangesObj")) { + ok = compareRanges(old, newEl); + } else { + ok = ! ValueComparer.equalValue(old, newEl); + } + result &= ok; + log.println("result of replace: " + ok); + log.println("replace back the old object"); + oObj.replaceByName(oNames[0],old); + Object origEl = oObj.getByName(oNames[0]) ; + + if (tEnv.getTestCase().getObjectName().equals("ScCellRangesObj")) { + ok = ! compareRanges(old, origEl); + } else { + ok = ValueComparer.equalValue(old, origEl); + } + + result &= ok; + log.println("result of replace back: " + ok); + } catch (com.sun.star.lang.IllegalArgumentException e ) { + result = false; + e.printStackTrace(log) ; + } catch (com.sun.star.container.NoSuchElementException e ) { + result = false; + e.printStackTrace(log) ; + } catch (com.sun.star.lang.WrappedTargetException e ) { + result = false; + e.printStackTrace(log) ; + } + + tRes.tested("replaceByName()", result); + + } // end replaceByName() + + /** + * Forces object environment recreation. + */ + @Override + public void after() { + disposeEnvironment() ; + } + + // method returns false if the ranges are equal and true otherwise + + private boolean compareRanges(Object old, Object newEl) { + XCellRangeAddressable xCRA = UnoRuntime.queryInterface(XCellRangeAddressable.class,old); + + XCellRangeAddressable xCRA2 = UnoRuntime.queryInterface(XCellRangeAddressable.class,newEl); + + int orgStartCol = xCRA.getRangeAddress().StartColumn; + int orgEndCol = xCRA.getRangeAddress().EndColumn; + int orgStartRow = xCRA.getRangeAddress().StartRow; + int orgEndRow = xCRA.getRangeAddress().EndRow; + + int newStartCol = xCRA2.getRangeAddress().StartColumn; + int newEndCol = xCRA2.getRangeAddress().EndColumn; + int newStartRow = xCRA2.getRangeAddress().StartRow; + int newEndRow = xCRA2.getRangeAddress().EndRow; + + boolean ret = true; + + if (orgStartCol == newStartCol) { + log.println("\t StartColumn is the same"); + ret = false; + } + + if (orgEndCol == newEndCol) { + log.println("\t EndColumn is the same"); + ret = false; + } + if (orgStartRow == newStartRow) { + log.println("\t StartRow is the same"); + ret = false; + } + + if (orgEndRow == newEndRow) { + log.println("\t EndRow is the same"); + ret = false; + } + + return ret; + } + +} + + diff --git a/qadevOOo/tests/java/ifc/container/_XNamed.java b/qadevOOo/tests/java/ifc/container/_XNamed.java new file mode 100644 index 0000000000..054306f40a --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XNamed.java @@ -0,0 +1,156 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.container; + +import com.sun.star.container.XNamed; + +import lib.MultiMethodTest; + +import util.utils; + + +/** +* Testing <code>com.sun.star.container.XNamed</code> +* interface methods : +* <ul> +* <li><code> getName()</code></li> +* <li><code> setName()</code></li> +* </ul> +* This test need the following object relations : +* <ul> +* <li> <code>'setName'</code> : of <code>Boolean</code> +* type. If it exists then <code>setName</code> method +* isn't to be tested and result of this test will be +* equal to relation value.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.container.XNamed +*/ +public class _XNamed extends MultiMethodTest { + public XNamed oObj = null; // oObj filled by MultiMethodTest + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <p> + * Has <b> OK </b> status if the method returns non null value + * and no exceptions were thrown. <p> + */ + public void _getName() { + // write to log what we try next + log.println("test for getName()"); + + boolean result = true; + boolean loc_result = true; + String name = null; + + loc_result = ((name = oObj.getName()) != null); + log.println("getting the name \"" + name + "\""); + + if (loc_result) { + log.println("... getName() - OK"); + } else { + log.println("... getName() - FAILED"); + } + + result &= loc_result; + tRes.tested("getName()", result); + } + + /** + * Sets a new name for object and checks if it was properly + * set. Special cases for the following objects : + * <ul> + * <li><code>ScSheetLinkObj</code> : name must be in form of URL.</li> + * <li><code>ScDDELinkObj</code> : name must contain link to cell in + * some external Sheet.</li> + * </ul> + * Has <b> OK </b> status if new name was successfully set, or if + * object environment contains relation <code>'setName'</code> with + * value <code>true</code>. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getName() </code> : to be sure the method works</li> + * </ul> + */ + public void _setName() { + String Oname = tEnv.getTestCase().getObjectName(); + String nsn = (String) tEnv.getObjRelation("NoSetName"); + + if (nsn != null) { + Oname = nsn; + } + + if ((Oname.indexOf("Exporter") > 0) || (nsn != null)) { + log.println("With " + Oname + " setName() doesn't work"); + log.println("see idl-file for further information"); + tRes.tested("setName()", true); + + return; + } + + requiredMethod("getName()"); + log.println("testing setName() ... "); + + String oldName = oObj.getName(); + String NewName = (oldName == null) ? "XNamed" : oldName + "X"; + + String testobjname = tEnv.getTestCase().getObjectName(); + + if (testobjname.equals("ScSheetLinkObj")) { + // special case, here name is equals to links URL. + NewName = "file:///c:/somename/from/XNamed"; + } else if (testobjname.equals("ScDDELinkObj")) { + String fileName = utils.getFullTestDocName("ScDDELinksObj.ods"); + NewName = "soffice|" + fileName + "!Sheet1.A2"; + } else if (testobjname.equals("SwXAutoTextGroup")) { + //This avoids a GPF + NewName = "XNamed*1"; + } + + boolean result = true; + boolean loc_result = true; + Boolean sName = (Boolean) tEnv.getObjRelation("setName"); + + if (sName == null) { + log.println("set the name of object to \"" + NewName + "\""); + oObj.setName(NewName); + log.println("check that container has element with this name"); + + String name = oObj.getName(); + log.println("getting the name \"" + name + "\""); + loc_result = name.equals(NewName); + + if (loc_result) { + log.println("... setName() - OK"); + } else { + log.println("... setName() - FAILED"); + } + + result &= loc_result; + oObj.setName(oldName); + } else { + log.println("The names for the object '" + testobjname + + "' are fixed."); + log.println("It is not possible to rename."); + log.println("So 'setName()' is always OK"); + result = sName.booleanValue(); + } + + tRes.tested("setName()", result); + } +} diff --git a/qadevOOo/tests/java/ifc/container/_XSet.java b/qadevOOo/tests/java/ifc/container/_XSet.java new file mode 100644 index 0000000000..743a894f5d --- /dev/null +++ b/qadevOOo/tests/java/ifc/container/_XSet.java @@ -0,0 +1,141 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.container; + +import lib.MultiMethodTest; + +import com.sun.star.container.XSet; +import com.sun.star.lang.XMultiServiceFactory; + +/** +* Testing <code>com.sun.star.container.XSet</code> +* interface methods : +* <ul> +* <li><code> has()</code></li> +* <li><code> insert()</code></li> +* <li><code> remove()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.container.XSet +*/ +public class _XSet extends MultiMethodTest { + + public static XSet oObj = null; + + private Object element = null ; + private boolean hasResult = true ; + + /** + * Inserts the element stored and removed before. <p> + * Has <b> OK </b> status if <code>has()</code> method returns + * <code>true</code>. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> remove() </code> : element from set is stored and + * removed </li> + * </ul> + */ + public void _insert() { + boolean res = true ; + try { + XMultiServiceFactory xMSF = tParam.getMSF(); + element = xMSF.createInstance( + "com.sun.star.reflection.TypeDescriptionProvider"); + + + oObj.insert(element) ; + + if (!oObj.has(element)) { + res = false ; + log.println("After adding element method has()" + + " returned false") ; + hasResult = false ; + } + } catch (com.sun.star.container.ElementExistException e) { + e.printStackTrace(log) ; + res = false ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log) ; + res = false ; + } + catch(com.sun.star.uno.Exception e) { + e.printStackTrace(log); + res = false; + } + + tRes.tested("insert()", res) ; + } + + /** + * Through <code>XEnumeration</code> interface an element from the set + * is retrieved. Then this element removed.<p> + * Has <b> OK </b> status if after removing <code>has()</code> method + * returns false. + */ + public void _remove() { + requiredMethod("insert()"); + boolean res = true ; + + try { + + // get an element to be removed/inserted + + oObj.remove(element) ; + + if (oObj.has(element)) { + res = false ; + log.println("After removing element method has()" + + " returned true") ; + hasResult = false ; + } + + + + } catch (com.sun.star.container.NoSuchElementException e) { + e.printStackTrace(log) ; + res = false ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log) ; + res = false ; + } + + tRes.tested("remove()", res) ; + } + + /** + * Does nothing. Testing performed in previous methods.<p> + * Has <b> OK </b> status if after <code>remove()</code> call + * methods returned <code>false</code>, and after <code>remove()</code> + * call methods returned <code>true</code>. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> insert() </code> : here the method is checked </li> + * <li> <code> remove() </code> : here the method is checked </li> + * </ul> + */ + public void _has() { + + requiredMethod("insert()") ; + requiredMethod("remove()") ; + + tRes.tested("has()", hasResult) ; + } + +} // finished class _XSet + diff --git a/qadevOOo/tests/java/ifc/datatransfer/_XDataFormatTranslator.java b/qadevOOo/tests/java/ifc/datatransfer/_XDataFormatTranslator.java new file mode 100644 index 0000000000..93213a0d8b --- /dev/null +++ b/qadevOOo/tests/java/ifc/datatransfer/_XDataFormatTranslator.java @@ -0,0 +1,68 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.datatransfer; + +import lib.MultiMethodTest; + +import com.sun.star.datatransfer.DataFlavor; +import com.sun.star.datatransfer.XDataFormatTranslator; +import com.sun.star.uno.Type; + +/** +* Testing <code>com.sun.star.datatransfer.XDataFormatTranslator</code> +* interface methods : +* <ul> +* <li><code> getSystemDataTypeFromDataFlavor()</code></li> +* <li><code> getDataFlavorFromSystemDataType()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.datatransfer.XDataFormatTranslator +*/ +public class _XDataFormatTranslator extends MultiMethodTest { + + public XDataFormatTranslator oObj = null; + + /** + * Get a system data type for 'text/html' MIME type. <p> + * Has <b> OK </b> status if not <code>null</code> value returned. + */ + public void _getSystemDataTypeFromDataFlavor() { + DataFlavor df = new DataFlavor + ("text/html","HTML-Documents", new Type()); + Object res = oObj.getSystemDataTypeFromDataFlavor(df); + tRes.tested("getSystemDataTypeFromDataFlavor()",res != null); + } + + /** + * Gets data flavor from system data type, which was gotten + * from 'text/html' MIME type. <p> + * Has <b>OK</b> status if DataFlavour returned has 'text/html' MIME + * type. + */ + public void _getDataFlavorFromSystemDataType() { + DataFlavor in = new DataFlavor + ("text/html","HTML-Documents", new Type()); + Object res = oObj.getSystemDataTypeFromDataFlavor(in); + DataFlavor out = oObj.getDataFlavorFromSystemDataType(res); + tRes.tested("getDataFlavorFromSystemDataType()", + out.MimeType.equals("text/html")); + } + +} + diff --git a/qadevOOo/tests/java/ifc/datatransfer/_XMimeContentTypeFactory.java b/qadevOOo/tests/java/ifc/datatransfer/_XMimeContentTypeFactory.java new file mode 100644 index 0000000000..18b6e91026 --- /dev/null +++ b/qadevOOo/tests/java/ifc/datatransfer/_XMimeContentTypeFactory.java @@ -0,0 +1,88 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.datatransfer; + +import lib.MultiMethodTest; + +import com.sun.star.datatransfer.XMimeContentType; +import com.sun.star.datatransfer.XMimeContentTypeFactory; + +/** +* Testing <code>com.sun.star.datatransfer.XMimeContentTypeFactory</code> +* interface methods : +* <ul> +* <li><code> createMimeContentType()</code></li> +* </ul> <p> +* Test is multithread compliant. <p> +* @see com.sun.star.datatransfer.XMimeContentTypeFactory +*/ +public class _XMimeContentTypeFactory extends MultiMethodTest { + + public XMimeContentTypeFactory oObj = null; + + /** + * First tries to create 'image/jpeg' MIME type and checks that + * valid <code>XMimeContentType</code> object was created. + * Second tries to create type with wrong argument and exception + * throwing is checked. <p> + * Has <b>OK</b> status if in the first case valid object is + * returned and in the second case <code>IllegalArgumentException</code> + * was thrown. + */ + public void _createMimeContentType() { + boolean result = true ; + XMimeContentType type = null; + + try { + type = oObj.createMimeContentType("image/jpeg") ; + + if (type != null) { + String typeS = type.getFullMediaType() ; + + log.println("MediaType = '" + type.getMediaType() + "'") ; + log.println("MediaSubType = '" + type.getMediaSubtype() + "'") ; + log.println("FullMediaType = '" + typeS + "'") ; + + result = "image/jpeg".equals(typeS) ; + } else { + log.println("!!! Null was returned !!!") ; + result = false ; + } + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception occurred : " ) ; + e.printStackTrace(log) ; + result = false ; + } + + if (result == true) { + try { + oObj.createMimeContentType("nosuchtype") ; + + log.println("!!! No exception was thrown on wrong MIME type !!!") ; + result = false ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Right exception was thrown." ) ; + } + } + + tRes.tested("createMimeContentType()", result) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/datatransfer/clipboard/_XClipboard.java b/qadevOOo/tests/java/ifc/datatransfer/clipboard/_XClipboard.java new file mode 100644 index 0000000000..95606a6845 --- /dev/null +++ b/qadevOOo/tests/java/ifc/datatransfer/clipboard/_XClipboard.java @@ -0,0 +1,131 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.datatransfer.clipboard; + +import lib.MultiMethodTest; +import lib.StatusException; + +import com.sun.star.datatransfer.DataFlavor; +import com.sun.star.datatransfer.XTransferable; +import com.sun.star.datatransfer.clipboard.XClipboard; +import com.sun.star.datatransfer.clipboard.XClipboardOwner; + +/** +* Testing <code>com.sun.star.datatransfer.clipboard.XClipboard</code> +* interface methods : +* <ul> +* <li><code> getContents()</code></li> +* <li><code> setContents()</code></li> +* <li><code> getName()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.datatransfer.clipboard.XClipboard +*/ +public class _XClipboard extends MultiMethodTest { + + public XClipboard oObj; + + MyTransferable myTransferable1; + MyTransferable myTransferable2; + + /** + * <code>XClipboardOwner</code> interface implementation which + * stores parameters passed to <code>lostOwnership</code> method. + */ + static class MyOwner implements XClipboardOwner { + + public void lostOwnership(XClipboard board, XTransferable contents) { + } + + } + + /** + * Simplest <code>XTransferable</code> interface implementation. + */ + static class MyTransferable implements XTransferable { + public Object getTransferData(DataFlavor dataFlavor) { + return ""; + } + + public com.sun.star.datatransfer.DataFlavor[] getTransferDataFlavors() { + return new DataFlavor[0]; + } + + public boolean isDataFlavorSupported(DataFlavor dataFlavor) { + return false; + } + + } + + /** + * Initially sets the content of the clipboard. + */ + @Override + public void before() { + oObj.setContents(myTransferable1 = new MyTransferable(), new MyOwner()); + } + + /** + * Gets the name of the clipboard. <p> + * Has <b>OK</b> status if not <code>null</code> value returned. + */ + public void _getName() { + String name = oObj.getName(); + tRes.tested("getName()", name != null); + } + + /** + * Gets the contents of the clipboard. <p> + * Has <b>OK</b> status if the content obtained is equal to content + * set in <code>before</code> method. + */ + public void _getContents() { + tRes.tested("getContents()", oObj.getContents() == myTransferable1); + } + + /** + * Sets new contents for the clipboard. Then checks if it was set, + * and if <code>lostOwnership()</code> notification of the previous + * contents was called with appropriate parameters.<p> + * Has <b> OK </b> status if <code>getContents</code> returns the same + * object which is set, and notification was received. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getContents() </code> : for right testing order </li> + * </ul> + */ + public void _setContents() { + requiredMethod("getContents()"); + myTransferable2 = new MyTransferable(); + + oObj.setContents(myTransferable2, new MyOwner()); + + log.println("sleeping for 1 second"); + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + log.println("interrupted"); + e.printStackTrace(log); + throw new StatusException("Operation interrupted", e); + } + + tRes.tested("setContents()", oObj.getContents() == myTransferable2); + } +} diff --git a/qadevOOo/tests/java/ifc/datatransfer/clipboard/_XClipboardEx.java b/qadevOOo/tests/java/ifc/datatransfer/clipboard/_XClipboardEx.java new file mode 100644 index 0000000000..ecd39fe1b0 --- /dev/null +++ b/qadevOOo/tests/java/ifc/datatransfer/clipboard/_XClipboardEx.java @@ -0,0 +1,46 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.datatransfer.clipboard; + +import lib.MultiMethodTest; + +import com.sun.star.datatransfer.clipboard.XClipboardEx; + +/** +* Testing <code>com.sun.star.datatransfer.clipboard.XClipboardEx</code> +* interface methods : +* <ul> +* <li><code> getRenderingCapabilities()</code></li> +* </ul> <p> +* Test is multithread compliant. <p> +* @see com.sun.star.datatransfer.clipboard.XClipboardEx +*/ +public class _XClipboardEx extends MultiMethodTest { + + public XClipboardEx oObj; + + /** + * Just calls the method. <p> + * Has <b> OK </b> status if no runtime exceptions occurred. + */ + public void _getRenderingCapabilities() { + oObj.getRenderingCapabilities(); + tRes.tested("getRenderingCapabilities()", true); + } +} diff --git a/qadevOOo/tests/java/ifc/datatransfer/clipboard/_XClipboardNotifier.java b/qadevOOo/tests/java/ifc/datatransfer/clipboard/_XClipboardNotifier.java new file mode 100644 index 0000000000..b26e89333e --- /dev/null +++ b/qadevOOo/tests/java/ifc/datatransfer/clipboard/_XClipboardNotifier.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 ifc.datatransfer.clipboard; + +import lib.MultiMethodTest; +import lib.StatusException; + +import com.sun.star.datatransfer.DataFlavor; +import com.sun.star.datatransfer.XTransferable; +import com.sun.star.datatransfer.clipboard.ClipboardEvent; +import com.sun.star.datatransfer.clipboard.XClipboard; +import com.sun.star.datatransfer.clipboard.XClipboardListener; +import com.sun.star.datatransfer.clipboard.XClipboardNotifier; +import com.sun.star.datatransfer.clipboard.XClipboardOwner; +import com.sun.star.lang.EventObject; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.datatransfer.clipboard.XClipboardNotifier</code> +* interface methods : +* <ul> +* <li><code> addClipboardListener()</code></li> +* <li><code> removeClipboardListener()</code></li> +* </ul> <p> +* The object <b>must also implement</b> <code>XClipboard</code> +* interface. <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.datatransfer.clipboard.XClipboardNotifier +* @see com.sun.star.datatransfer.clipboard.XClipboard +*/ +public class _XClipboardNotifier extends MultiMethodTest { + + public XClipboardNotifier oObj; + + /** + * <code>XClipboardOwner</code> interface implementation which + * stores parameters passed to <code>lostOwnership</code> method. + */ + static class MyOwner implements XClipboardOwner { + + public void lostOwnership(XClipboard board, XTransferable contents) { + } + } + + /** + * Simplest <code>XTransferable</code> interface implementation + * which supports "text/html" data type. + */ + static class MyTransferable implements XTransferable { + DataFlavor[] supportedFlavors; + + public MyTransferable() { + supportedFlavors = new DataFlavor[] { + new DataFlavor("text/plain", "Plain text", new Type(String.class)) + }; + } + + public Object getTransferData(DataFlavor dataFlavor) { + return ""; + } + + public DataFlavor[] getTransferDataFlavors() { + return supportedFlavors; + } + + public boolean isDataFlavorSupported(DataFlavor dataFlavor) { + return supportedFlavors[0].MimeType.equals(dataFlavor.MimeType); + } + } + + /** + * Implementation of listener which registers its method calls. + */ + class MyClipboardListener implements XClipboardListener { + boolean called = false; + + public void changedContents(ClipboardEvent evt) { + called = true; + } + + public void disposing(EventObject wvt) { + log.println(""); + } + } + + MyClipboardListener myListener; + + /** + * Adds a listener and put a new contents into clipboard. <p> + * Has <b> OK </b> status if the listener was called on contents changing. + */ + public void _addClipboardListener() { + oObj.addClipboardListener(myListener = new MyClipboardListener()); + + XClipboard board = UnoRuntime.queryInterface( + XClipboard.class, tEnv.getTestObject()); + + board.setContents(new MyTransferable(), new MyOwner()); + + log.println("sleeping for 1 second"); + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + log.println("interrupted"); + e.printStackTrace(log); + throw new StatusException("Operation interrupted", e); + } + + tRes.tested("addClipboardListener()", myListener.called); + } + + /** + * Removes the listener and put a new contents into clipboard. <p> + * Has <b> OK </b> status if the listener was not called on contents + * changing. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code>addClipboardListener()</code> </li> + * </ul> + */ + public void _removeClipboardListener() { + try { + requiredMethod("addClipboardListener()"); + myListener.called = false; + } finally { + oObj.removeClipboardListener(myListener); + } + + XClipboard board = UnoRuntime.queryInterface( + XClipboard.class, oObj); + + board.setContents(new MyTransferable(), new MyOwner()); + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + log.println("interrupted"); + e.printStackTrace(log); + throw new StatusException("Operation interrupted", e); + } + + tRes.tested("removeClipboardListener()", !myListener.called); + } +} diff --git a/qadevOOo/tests/java/ifc/datatransfer/clipboard/_XFlushableClipboard.java b/qadevOOo/tests/java/ifc/datatransfer/clipboard/_XFlushableClipboard.java new file mode 100644 index 0000000000..2af4554c7a --- /dev/null +++ b/qadevOOo/tests/java/ifc/datatransfer/clipboard/_XFlushableClipboard.java @@ -0,0 +1,47 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.datatransfer.clipboard; + +import lib.MultiMethodTest; + +import com.sun.star.datatransfer.clipboard.XFlushableClipboard; + +/** +* Testing <code>com.sun.star.datatransfer.clipboard.XFlushableClipboard</code> +* interface methods : +* <ul> +* <li><code> flushClipboard()</code></li> +* </ul> <p> +* Test is multithread compliant. <p> +* @see com.sun.star.datatransfer.clipboard.XFlushableClipboard +*/ +public class _XFlushableClipboard extends MultiMethodTest { + + public XFlushableClipboard oObj; + + /** + * Just calls the method. <p> + * Has <b> OK </b> status if no runtime exceptions occurred. + */ + public void _flushClipboard() { + oObj.flushClipboard(); + tRes.tested("flushClipboard()",true); + } + +} diff --git a/qadevOOo/tests/java/ifc/document/_ExportFilter.java b/qadevOOo/tests/java/ifc/document/_ExportFilter.java new file mode 100644 index 0000000000..7fcbdb711a --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_ExportFilter.java @@ -0,0 +1,42 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.document; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.document.ExportFilter</code> +* service properties : +* <ul> +* <li><code> Type</code></li> +* <li><code> UIName</code></li> +* <li><code> DocumentService</code></li> +* <li><code> FilterService</code></li> +* <li><code> Flags</code></li> +* <li><code> UserData</code></li> +* <li><code> FileFormatVersion</code></li> +* <li><code> TemplateName</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.document.ExportFilter +*/ +public class _ExportFilter extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/document/_ImportFilter.java b/qadevOOo/tests/java/ifc/document/_ImportFilter.java new file mode 100644 index 0000000000..aef27e02df --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_ImportFilter.java @@ -0,0 +1,43 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.document; + +/** +* Testing <code>com.sun.star.document.ImportFilter</code> +* service properties : +* <ul> +* <li><code> Type</code></li> +* <li><code> UIName</code></li> +* <li><code> DocumentService</code></li> +* <li><code> FilterService</code></li> +* <li><code> Flags</code></li> +* <li><code> UserData</code></li> +* <li><code> FileFormatVersion</code></li> +* <li><code> TemplateName</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.document.ImportFilter +*/ +import lib.MultiPropertyTest; + +public class _ImportFilter extends MultiPropertyTest { + + +} + diff --git a/qadevOOo/tests/java/ifc/document/_LinkTarget.java b/qadevOOo/tests/java/ifc/document/_LinkTarget.java new file mode 100644 index 0000000000..f39c5d6940 --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_LinkTarget.java @@ -0,0 +1,66 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.document; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.document.LinkTarget</code> +* service properties : +* <ul> +* <li><code> LinkDisplayName </code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.document.LinkTarget +*/ +public class _LinkTarget extends MultiPropertyTest { + +/* + public XPropertySet oObj = null; // oObj filled by MultiMethodTest + + public void _LinkDisplayName() { + // check if Service is available + XServiceInfo xInfo = (XServiceInfo) + UnoRuntime.queryInterface(XServiceInfo.class, oObj); + String [] sa = xInfo.getSupportedServiceNames(); + + for (int i = 0; i < sa.length; i++) { + System.out.println(sa[i]); + } + + if ( ! xInfo.supportsService("com.sun.star.document.LinkTarget")) { + log.println("Service not available !!!!!!!!!!!!!"); + tRes.tested("Supported", false); + } + //the only property is read only + try { + String LDN = (String) oObj.getPropertyValue("LinkDisplayName"); + tRes.tested("LinkDisplayName",LDN!=null); + } + catch (Exception ex) { + log.println("Exception occurred during LinkDisplayName"); + ex.printStackTrace(log); + tRes.tested("LinkDisplayName",false); + } + + }// EOF LinkDisplayName +*/ + +} + diff --git a/qadevOOo/tests/java/ifc/document/_OfficeDocument.java b/qadevOOo/tests/java/ifc/document/_OfficeDocument.java new file mode 100644 index 0000000000..7b1c2abde3 --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_OfficeDocument.java @@ -0,0 +1,36 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.document; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.document.OfficeDocument</code> +* service properties : +* <ul> +* <li><code> AutomaticControlFocus</code></li> +* <li><code> ApplyFormDesignMode</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.document.OfficeDocument +*/ +public class _OfficeDocument extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/document/_Settings.java b/qadevOOo/tests/java/ifc/document/_Settings.java new file mode 100644 index 0000000000..a0b0f87b6b --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_Settings.java @@ -0,0 +1,160 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.document; + +import com.sun.star.beans.Property; +import com.sun.star.beans.PropertyAttribute; +import com.sun.star.i18n.XForbiddenCharacters; +import com.sun.star.uno.UnoRuntime; +import java.lang.reflect.Method; + +import lib.MultiPropertyTest; +import lib.Status; +import lib.StatusException; + + +/* + * Generic test for all properties contained in this service + */ +public class _Settings extends MultiPropertyTest { + + /** + * This property accepts only values in a range of 1-3 + * @see com.sun.star.document.PrinterIndependentLayout + */ + public void _PrinterIndependentLayout() { + try{ + Short oldVal = (Short) oObj.getPropertyValue("PrinterIndependentLayout"); + Short newVal = oldVal.intValue() == 1 ? Short.valueOf("3") : Short.valueOf("1"); + + + testProperty("PrinterIndependentLayout", oldVal, newVal); + + } catch (com.sun.star.beans.UnknownPropertyException e) { + throw new StatusException(e, Status.failed("the property 'PrinterIndependentLayout' is unknown.")); + } catch (com.sun.star.lang.WrappedTargetException e) { + throw new StatusException(e, Status.failed("the property 'PrinterIndependentLayout' could not be tested.")); + } + } + + public void _PrinterName() { + Object[] oServices = null; + Exception ex = null; + + try { + Class<?> cPrinterJob = Class.forName("java.awt.print.PrinterJob"); + Method lookupMethod = cPrinterJob.getDeclaredMethod("lookupPrintServices", new Class[0]); + Object retValue = lookupMethod.invoke(cPrinterJob, new Object[0]); + oServices = (Object[])retValue; + } + catch(java.lang.ClassNotFoundException e) { + ex = e; + } + catch(java.lang.NoSuchMethodException e) { + ex = e; + } + catch(java.lang.IllegalAccessException e) { + ex = e; + } + catch(java.lang.reflect.InvocationTargetException e) { + ex = e; + } + + if (ex != null) { + // get Java version: + String javaVersion = System.getProperty("java.version"); + throw new StatusException(Status.failed( + "Cannot execute test with current Java version (Java 1.4 required) " + + javaVersion + ": " + ex.getMessage())); + } + + if (oServices.length > 1) { + testProperty("PrinterName", getPrinterNameWithReflection(oServices[0]), + getPrinterNameWithReflection(oServices[1])); + } else { + log.println( + "checking this property needs at least two printers to be installed on your system"); + throw new StatusException(Status.failed( + "only one printer installed so I can't change it")); + } + } + + public void _ForbiddenCharacters() { + boolean res = true; + + try { + //check if it is read only as specified + res &= isReadOnly("ForbiddenCharacters"); + + if (!isReadOnly("ForbiddenCharacters")) { + log.println( + "The Property 'ForbiddenCharacters' isn't readOnly as specified"); + } + + //check if the property has the right type + Object pValue = oObj.getPropertyValue("ForbiddenCharacters"); + XForbiddenCharacters fc = UnoRuntime.queryInterface( + XForbiddenCharacters.class, + pValue); + res &= (fc != null); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println( + "Exception while checking property 'ForbiddenCharacters' " + + e.getMessage()); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println( + "Exception while checking property 'ForbiddenCharacters' " + + e.getMessage()); + } + + tRes.tested("ForbiddenCharacters", res); + } + + protected boolean isReadOnly(String PropertyName) { + boolean res = false; + Property[] props = oObj.getPropertySetInfo().getProperties(); + + for (int i = 0; i < props.length; i++) { + if (props[i].Name.equals(PropertyName)) { + res = ((props[i].Attributes & PropertyAttribute.READONLY) != 0); + } + } + + return res; + } + + private String getPrinterNameWithReflection(Object pService) { + String pName = null; + try { + Class<?> cPrintService = Class.forName("javax.print.PrintService"); + Method getNameMethod = cPrintService.getDeclaredMethod("getName", new Class[0]); + Object retValue = getNameMethod.invoke(pService, new Object[0]); + pName = (String)retValue; + } + // ignore all exceptions: we already ran into one of these if Java is too old + catch(java.lang.ClassNotFoundException e) { + } + catch(java.lang.NoSuchMethodException e) { + } + catch(java.lang.IllegalAccessException e) { + } + catch(java.lang.reflect.InvocationTargetException e) { + } + return pName; + } +} diff --git a/qadevOOo/tests/java/ifc/document/_XActionLockable.java b/qadevOOo/tests/java/ifc/document/_XActionLockable.java new file mode 100644 index 0000000000..8276eb62ad --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_XActionLockable.java @@ -0,0 +1,100 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.document; + +import lib.MultiMethodTest; + +import com.sun.star.document.XActionLockable; + +/** +* Testing <code>com.sun.star.document.XActionLockable</code> +* interface methods : +* <ul> +* <li><code> isActionLocked()</code></li> +* <li><code> addActionLock()</code></li> +* <li><code> removeActionLock()</code></li> +* <li><code> setActionLocks()</code></li> +* <li><code> resetActionLocks()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.document.XActionLockable +*/ +public class _XActionLockable extends MultiMethodTest { + public XActionLockable oObj = null; + + /** + * Method addActionLock called first and then + * checked value returned by isActionLocked().<p> + * Has <b> OK </b> status if no runtime exceptions occurred + * and returned value is true. + */ + public void _isActionLocked() { + //determines if at least one lock exists + oObj.addActionLock(); + boolean result = oObj.isActionLocked(); + tRes.tested("isActionLocked()", result); + } + + /** + * Just calls the method. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _addActionLock() { + requiredMethod("resetActionLocks()"); + oObj.addActionLock(); + tRes.tested("addActionLock()", true); + } + + /** + * Calls the method and check value returned by isActionLocked(). <p> + * Has <b> OK </b> status if no runtime exceptions occurred + * and returned value is false. + */ + public void _removeActionLock() { + requiredMethod("addActionLock()"); + oObj.removeActionLock(); + boolean result = ! oObj.isActionLocked(); + tRes.tested("removeActionLock()", result); + } + + /** + * Calls the method with specific value. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _setActionLocks() { + oObj.setActionLocks( nLock ); + tRes.tested("setActionLocks()", true); + } + + static final short nLock = 8; + + /** + * Calls the method and checks returned value.<p> + * Has <b> OK </b> status if the component is not currently + * locked and returned value is the same as locks number + * set by <code>setActionLocks</code> method test. + */ + public void _resetActionLocks() { + requiredMethod("setActionLocks()"); + short nLocksBeforeReset = oObj.resetActionLocks(); + boolean result = !oObj.isActionLocked() && nLocksBeforeReset == nLock; + tRes.tested("resetActionLocks()", result); + } +}// finish class _XActionLockable + diff --git a/qadevOOo/tests/java/ifc/document/_XDocumentInsertable.java b/qadevOOo/tests/java/ifc/document/_XDocumentInsertable.java new file mode 100644 index 0000000000..c3417118e2 --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_XDocumentInsertable.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 ifc.document; + +import com.sun.star.io.IOException; +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import util.utils; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.document.XDocumentInsertable; +import com.sun.star.text.XTextRange; +import com.sun.star.uno.UnoRuntime; + + +/** +* Testing <code>com.sun.star.document.XDocumentInsertable</code> +* interface methods : +* <ul> +* <li><code> insertDocumentFromURL()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XDocumentInsertable.Checker'</code> +* (of type <code>_XDocumentInsertable.InsertChecker</code>) +* <b> optional </b> : +* relation for checking if document was inserted properly and +* for obtaining document file name. For details see the class +* description. If the relation doesn't exist default document +* name is used, and <code>XTextRange</code> interface of +* component is used for checking.</li> +* <ul> <p> +* The following predefined files needed to complete the test: +* <ul> +* <li> <code>XDocumentInsertable.sxw</code> : StarWriter document +* which content started with 'XDocumentInsertable test.' string. +* The file is needed if no other file name specified by relation. +* </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.document.XDocumentInsertable +*/ +public class _XDocumentInsertable extends MultiMethodTest { + + public XDocumentInsertable oObj = null; + protected XTextRange range = null ; + protected static final String defaultFileName = "XDocumentInsertable.sxw" ; + protected InsertChecker checker = null ; + protected String fileName = defaultFileName ; + + /** + * Abstract class for relation passing. It must check if + * document was inserted successfully and can specify its + * own document name to be inserted. + */ + public static abstract class InsertChecker { + /** + * Must be overridden to check if document was + * successfully inserted. + * @return <code>true</code> if document was inserted. + */ + public abstract boolean isInserted() ; + /** + * Can be overridden to specify different than default + * document name. This document must be situated in + * the test document directory, and its name must + * be specified relational to this directory. By + * default 'XDocumentInsertable.swx' file name returned. + * @return File name of the document to be inserted. + */ + public String getFileNameToInsert() { + return defaultFileName ; + } + } + + /** + * Retrieves object relation. If the relation is not found + * then the object tested is tried to query <code>XTextRange</code> + * interface for testing. If the relation is found then document name + * for testing is retrieved, else the default one is used. + * + * @throws StatusException If neither relation found nor + * <code>XTextRange</code> interface is queried. + */ + @Override + public void before() { + checker = (InsertChecker) + tEnv.getObjRelation("XDocumentInsertable.Checker") ; + + if (checker == null) { + log.println("Relation not found, trying to query for "+ + "XTextRange ...") ; + range = UnoRuntime.queryInterface (XTextRange.class, oObj) ; + if (range == null) { + log.println("XTextRange isn't supported by the component."); + throw new StatusException(Status.failed + ("XTextRange isn't supported and relation not found")) ; + } + } else { + fileName = checker.getFileNameToInsert(); + } + } + + /** + * Tries to insert document from URL specified by relation or + * from default URL. If no relation was passed, text range is + * checked for existence of loaded document content. In case + * if relation was found, then its <code>isInserted</code> + * method is used to check insertion.<p> + * A Second test uses an invalid URL and checks for correct exceptions. + * + * Has <b> OK </b> status if at first insertion was completed successfully + * and no exceptions were thrown and as second an expected exception was thrown. <p> + */ + public void _insertDocumentFromURL() { + boolean result = true ; + + try { + PropertyValue [] szEmptyArgs = new PropertyValue [0]; + String docURL = utils.getFullTestURL(fileName) ; + log.println("Inserting document from URL '" + docURL + "'"); + oObj.insertDocumentFromURL(docURL, szEmptyArgs); + + if (checker == null) { + log.println("Checker is not specified, testing through "+ + "XTextRange ...") ; + String text = range.getString() ; + log.println("Document text :\n" + text); + log.println("---"); + result &= ( text.indexOf("XDocumentInsertable test.") >= 0 ); + } else { + result &= checker.isInserted(); + } + + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception occurred while testing "+ + "insertDocumentFromURL()"); + ex.printStackTrace(log); + result = false ; + } catch (com.sun.star.io.IOException ex) { + log.println("Exception occurred while testing "+ + "insertDocumentFromURL()"); + ex.printStackTrace(log); + result = false ; + } + + if (result) { + try { + PropertyValue [] szEmptyArgs = new PropertyValue [0]; + String docURL = "file:///c:/ThisIsAnInvalidURL"; + log.println("Inserting document from URL '" + docURL + "'"); + oObj.insertDocumentFromURL(docURL, szEmptyArgs); + + result=false; + + } catch (IOException ex) { + log.println("expected exception was thrown -> ok"); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("expected exception was thrown -> ok"); + } + } + + tRes.tested("insertDocumentFromURL()", result); + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } +} // finish class _XDocumentInsertable diff --git a/qadevOOo/tests/java/ifc/document/_XEmbeddedObjectSupplier.java b/qadevOOo/tests/java/ifc/document/_XEmbeddedObjectSupplier.java new file mode 100644 index 0000000000..63aa6f4bff --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_XEmbeddedObjectSupplier.java @@ -0,0 +1,47 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.document; + +import lib.MultiMethodTest; + +import com.sun.star.document.XEmbeddedObjectSupplier; + +/** +* Testing <code>com.sun.star.document.XEmbeddedObjectSupplier</code> +* interface methods : +* <ul> +* <li><code> getEmbeddedObject()</code></li> +* </ul> <p> +* Test is multithread compliant. <p> +* @see com.sun.star.document.XEmbeddedObjectSupplier +*/ +public class _XEmbeddedObjectSupplier extends MultiMethodTest { + + public XEmbeddedObjectSupplier oObj = null; + + /** + * Just calls the method. <p> + * Has <b> OK </b> status if not <code>null</code> value returned. + */ + public void _getEmbeddedObject() { + tRes.tested("getEmbeddedObject()", + oObj.getEmbeddedObject() != null); + } +} // finish class _XEmbeddedObjectSupplier + diff --git a/qadevOOo/tests/java/ifc/document/_XEventBroadcaster.java b/qadevOOo/tests/java/ifc/document/_XEventBroadcaster.java new file mode 100644 index 0000000000..cc30c7ebb1 --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_XEventBroadcaster.java @@ -0,0 +1,74 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.document; + +import lib.MultiMethodTest; + +import com.sun.star.document.XEventBroadcaster; +import com.sun.star.document.XEventListener; +import com.sun.star.frame.XController; +import com.sun.star.frame.XModel; +import com.sun.star.uno.UnoRuntime; + +public class _XEventBroadcaster extends MultiMethodTest { + + public XEventBroadcaster oObj; + protected boolean listenerCalled = false; + private XEventListener listener = null; + + public class MyEventListener implements XEventListener { + + public void disposing(com.sun.star.lang.EventObject eventObject) { + } + + public void notifyEvent(com.sun.star.document.EventObject eventObject) { + System.out.println("EventObject "+eventObject.EventName); + listenerCalled = true; + } + + } + + private void switchFocus() { + XModel docModel = UnoRuntime.queryInterface( + XModel.class,tEnv.getTestObject()); + docModel.getCurrentController().getFrame().getContainerWindow().setFocus(); + waitForEventIdle(); + XController xc = UnoRuntime.queryInterface(XController.class,tEnv.getObjRelation("CONT2")); + xc.getFrame().getContainerWindow().setFocus(); + } + + public void _addEventListener() { + listener = new MyEventListener(); + listenerCalled = false; + oObj.addEventListener(listener); + switchFocus(); + waitForEventIdle(); + tRes.tested("addEventListener()",listenerCalled); + } + + public void _removeEventListener() { + requiredMethod("addEventListener()"); + listenerCalled = false; + oObj.removeEventListener(listener); + switchFocus(); + waitForEventIdle(); + tRes.tested("removeEventListener()",!listenerCalled); + } + +} diff --git a/qadevOOo/tests/java/ifc/document/_XEventsSupplier.java b/qadevOOo/tests/java/ifc/document/_XEventsSupplier.java new file mode 100644 index 0000000000..ee41f37c4c --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_XEventsSupplier.java @@ -0,0 +1,51 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.document; + +import lib.MultiMethodTest; + +import com.sun.star.container.XNameReplace; +import com.sun.star.document.XEventsSupplier; + +/** +* Testing <code>com.sun.star.document.XEventsSupplier</code> +* interface methods : +* <ul> +* <li><code> getEvents()</code></li> +* </ul> <p> +* Test is multithread compliant. <p> +* @see com.sun.star.document.XEventsSupplier +*/ +public class _XEventsSupplier extends MultiMethodTest { + + public XEventsSupplier oObj = null; + + /** + * Just calls the method. <p> + * Has <b> OK </b> status if not <code>null</code> value returned. + */ + public void _getEvents() { + + XNameReplace xNR = oObj.getEvents(); + xNR.getElementNames(); + tRes.tested("getEvents()", true); + } + +} // finish class _XEventSupplier + diff --git a/qadevOOo/tests/java/ifc/document/_XExporter.java b/qadevOOo/tests/java/ifc/document/_XExporter.java new file mode 100644 index 0000000000..067f8b5d5f --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_XExporter.java @@ -0,0 +1,82 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.document; + + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.document.XExporter; +import com.sun.star.lang.XComponent; + +/** +* Testing <code>com.sun.star.document.XExporter</code> +* interface methods : +* <ul> +* <li><code> setSourceDocument()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'SourceDocument'</code> (of type <code>XComponent</code>): +* the source document to be passed to the method. </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.document.XExporter +*/ +public class _XExporter extends MultiMethodTest { + + public XExporter oObj = null; + public XComponent source = null ; + + /** + * Retrieves object relations. + * @throws StatusException If one of relations not found. + */ + @Override + public void before() { + source = (XComponent) tEnv.getObjRelation("SourceDocument") ; + + if (source == null) throw new StatusException(Status.failed + ("Relation not found")) ; + } + + /** + * Just calls the method. <p> + * Has <b> OK </b> status if no runtime exceptions occurred. + * Usually this interface is supported both with <code>XFilter</code> + * where source document setting is checked. + */ + public void _setSourceDocument() { + boolean result = true ; + + try { + oObj.setSourceDocument(source); + } + catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception while checking :"); + ex.printStackTrace(log); + result = false; + } + + tRes.tested("setSourceDocument()", result) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/document/_XFilter.java b/qadevOOo/tests/java/ifc/document/_XFilter.java new file mode 100644 index 0000000000..8ea1326bc1 --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_XFilter.java @@ -0,0 +1,177 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.document; + + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.document.XExporter; +import com.sun.star.document.XFilter; +import com.sun.star.lang.XComponent; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.document.XFilter</code> +* interface methods : +* <ul> +* <li><code> filter()</code></li> +* <li><code> cancel()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'MediaDescriptor'</code> (of type <code>PropertyValue[]</code>): +* the property set described in +* <code>com.sun.star.document.MediaDescriptor</code> +* </li> +* <li> <code>'XFilter.Checker'</code> <b>(optional)</b> (of type +* <code>ifc.document._XFilter.FilterChecker</code>) : implementation +* of interface must allow checking that document was exported successfully. +* If the relation doesn't exist then by default successful filtering +* assumed. +* </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.document.XFilter +*/ +public class _XFilter extends MultiMethodTest { + + public interface FilterChecker { + boolean checkFilter() ; + } + + public XFilter oObj = null; + protected PropertyValue[] mDesc = null ; + protected FilterChecker checker = null ; + protected XComponent sourceDoc = null; + protected boolean dummy = false; + + /** + * Retrieves object relations. + * @throws StatusException If one of relations not found.<br> + * In case of Importers only a dummy implementation exists + * therefore the methods of this interface will be skipped + * in this case + */ + @Override + public void before() { + String name = tEnv.getTestCase().getObjectName(); + if (name.indexOf("Importer")>0) { + log.println(name+" contains only a dummy implementation"); + log.println("therefore all methods are skipped"); + dummy = true; + } + mDesc = (PropertyValue[]) tEnv.getObjRelation("MediaDescriptor") ; + checker = (FilterChecker) tEnv.getObjRelation("XFilter.Checker") ; + if (mDesc == null && !dummy) throw new StatusException( + Status.failed("Relation not found.")) ; + sourceDoc = (XComponent)tEnv.getObjRelation("SourceDocument"); + try { + if (sourceDoc != null) { + XExporter xEx = UnoRuntime.queryInterface( + XExporter.class,oObj); + xEx.setSourceDocument(sourceDoc); + } + } + catch (com.sun.star.lang.IllegalArgumentException e) {} + } + + @Override + public void after() { + if (dummy) { + throw new StatusException(Status.skipped(true)); + } + } + + /** + * Just calls the method. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _filter() { + if (dummy) { + tRes.tested("filter()", true); + return; + } + boolean result = true ; + result = oObj.filter(mDesc) ; + + if (checker == null) { + log.println("!!! Warning : can't check filter as no relation found"); + } else { + result &= checker.checkFilter() ; + } + + tRes.tested("filter()", result) ; + } + + /** + * Just calls the method. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _cancel() { + if (dummy) { + tRes.tested("cancel()",true); + return; + } + requiredMethod("filter()"); + if (tEnv.getObjRelation("NoFilter.cancel()") != null) { + System.out.println("Cancel not tested."); + log.println("Method 'cancel()' is not working and therefore "+ + "not tested.\nResult is set to SKIPPED.OK"); + tRes.tested("cancel()", Status.skipped(true)); + return; + } + + boolean result = false ; + FilterThread newFilter = new FilterThread(oObj); + newFilter.mdesc = mDesc; + newFilter.start(); + oObj.cancel(); + while (newFilter.isAlive()) { + } + result = !newFilter.filterRes; + tRes.tested("cancel()", result) ; + } + + /** + * Calls <code>filter()</code> method in a separate thread. + * Necessary to check if the cancel method works + */ + protected static class FilterThread extends Thread { + + public boolean filterRes = true; + private final XFilter Filter; + public PropertyValue[] mdesc = null; + + public FilterThread(XFilter Filter) { + this.Filter = Filter ; + } + + @Override + public void run() { + filterRes = Filter.filter(mdesc); + } + } + +} + + + diff --git a/qadevOOo/tests/java/ifc/document/_XImporter.java b/qadevOOo/tests/java/ifc/document/_XImporter.java new file mode 100644 index 0000000000..087494e65d --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_XImporter.java @@ -0,0 +1,68 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.document; + +import lib.MultiMethodTest; + +import com.sun.star.document.XImporter; +import com.sun.star.lang.XComponent; + +/** +* Testing <code>com.sun.star.document.XImporter</code> +* interface methods : +* <ul> +* <li><code> setTargetDocument()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'TargetDocument'</code> (of type <code>XComponent</code>): +* the target document to be passed to the method. </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.document.XImporter +*/ +public class _XImporter extends MultiMethodTest { + + public XImporter oObj = null; + + /** + * Retrieves relation and sets target document. <p> + * Has <b> OK </b> status if no runtime exceptions occurred, + * really this method tested when the whole import result + * checked. + */ + public void _setTargetDocument() { + boolean res = true; + try { + XComponent the_doc = (XComponent) + tEnv.getObjRelation("TargetDocument"); + oObj.setTargetDocument(the_doc); + } + catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception while checking 'setTargetDocument'"); + ex.printStackTrace(log); + res = false; + } + + tRes.tested("setTargetDocument()",res); + + } + +} // finish class _XImporter + diff --git a/qadevOOo/tests/java/ifc/document/_XLinkTargetSupplier.java b/qadevOOo/tests/java/ifc/document/_XLinkTargetSupplier.java new file mode 100644 index 0000000000..1cc5b32994 --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_XLinkTargetSupplier.java @@ -0,0 +1,48 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.document; + +import lib.MultiMethodTest; + +import com.sun.star.container.XNameAccess; +import com.sun.star.document.XLinkTargetSupplier; + +/** +* Testing <code>com.sun.star.document.XLinkTargetSupplier</code> +* interface methods : +* <ul> +* <li><code> getLinks()</code></li> +* </ul> <p> +* @see com.sun.star.document.XLinkTargetSupplier +*/ +public class _XLinkTargetSupplier extends MultiMethodTest { + + public XLinkTargetSupplier oObj = null; + + /** + * Just calls the method. <p> + * Has <b> OK </b> status if not <code>null</code> value returned. + */ + public void _getLinks() { + XNameAccess links = oObj.getLinks(); + links.getElementNames(); + tRes.tested("getLinks()", true); + } + +} diff --git a/qadevOOo/tests/java/ifc/document/_XMimeTypeInfo.java b/qadevOOo/tests/java/ifc/document/_XMimeTypeInfo.java new file mode 100644 index 0000000000..81b39942ba --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_XMimeTypeInfo.java @@ -0,0 +1,80 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.document; + + +import lib.MultiMethodTest; + +import com.sun.star.document.XMimeTypeInfo; + +/** + * Testing <code>com.sun.star.document.XMimeTypeInfo</code> + * interface methods : + * <ul> + * <li><code> supportsMimeType()</code></li> + * <li><code> getSupportedMimeTypeNames()</code></li> + * </ul> <p> + * + * @see com.sun.star.document.XMimeTypeInfo + */ +public class _XMimeTypeInfo extends MultiMethodTest { + + public XMimeTypeInfo oObj = null; + public String[] smi = null; + + /** + * Gets supported types and stores them. <p> + * Has <b> OK </b> status if at least one type exists. + */ + public void _getSupportedMimeTypeNames() { + smi = oObj.getSupportedMimeTypeNames(); + tRes.tested("getSupportedMimeTypeNames()", smi.length>0) ; + } + + /** + * Calls the method for one supported type retrieved by + * <code>getSupportedMimeTypeNames</code> method and for + * bad type. <p> + * + * Has <b> OK </b> status if <code>true</code> returned for + * supported type and <code>false</code> for bad type. + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getSupportedMimeTypeNames </code> : to have a list of + * supported types. </li> + * </ul> + */ + public void _supportsMimeType() { + requiredMethod("getSupportedMimeTypeNames()"); + boolean pos = false; + pos = oObj.supportsMimeType(smi[0]); + if (!pos) { + log.println("Method returns false for existing MimeType"); + } + boolean neg = true; + neg = oObj.supportsMimeType("NoRealMimeType"); + if (neg) { + log.println("Method returns true for non existing MimeType"); + } + tRes.tested("supportsMimeType()", (pos && !neg)) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/document/_XTypeDetection.java b/qadevOOo/tests/java/ifc/document/_XTypeDetection.java new file mode 100644 index 0000000000..8aa1f5cdb5 --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_XTypeDetection.java @@ -0,0 +1,115 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.document; + +import lib.MultiMethodTest; +import util.utils; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.document.XTypeDetection; + +/** + * Testing <code>com.sun.star.document.XTypeDetection</code> + * interface methods : + * <ul> + * <li><code> queryTypeByURL()</code></li> + * <li><code> queryTypeByDescriptor()</code></li> + * </ul> <p> + * + * The following predefined files needed to complete the test: + * <ul> + * <li> <code>XTypeDetection.sxw</code> : <b>Calc</b> + * document which extension is <b>sxw</b>. </li> + * <ul> <p> + * + * @see com.sun.star.document.XTypeDetection + */ +public class _XTypeDetection extends MultiMethodTest { + public XTypeDetection oObj = null; + + private String docURL = null; + private String bookmarkURL = null; + + /** + * Get the document URL. + */ + @Override + public void before() { + docURL = utils.getFullTestURL("XTypeDetection.sxw"); + bookmarkURL = (String) tEnv.getObjRelation("XTypeDetection.bookmarkDoc"); + } + + /** + * Tries to detect type by writer document URL. <p> + * + * Has <b> OK </b> status if type returned contains + * 'writer' as substring. + */ + public void _queryTypeByURL() { + + boolean result = true ; + String type = oObj.queryTypeByURL(docURL) ; + result &= type.indexOf("writer") > -1; + + tRes.tested("queryTypeByURL()", result) ; + } + + /** + * Tries to detect type of the document using <i>flat</i> + * and <i>deep</i> detection. For flat detection a writer type + * must be returned (file has writer extension), but deep + * detection must return calc type (document has calc contents)<p> + * + * Has <b> OK </b> status if for the first case type contains + * 'writer' string and for the second 'calc' string. + */ + public void _queryTypeByDescriptor() { + boolean result = true ; + boolean ok = true; + log.println("test document with wrong extension"); + log.println("the document '" + docURL + "' is not what it seems to be ;-)"); + PropertyValue[][] mediaDescr = new PropertyValue[1][1]; + mediaDescr[0][0] = new PropertyValue(); + mediaDescr[0][0].Name = "URL"; + mediaDescr[0][0].Value = docURL; + + String type = oObj.queryTypeByDescriptor(mediaDescr, false); + ok = type.indexOf("writer") > -1; + result &= ok; + log.println("flat detection should detect a writer and has detected '"+ type +"': " + ok); + + type = oObj.queryTypeByDescriptor(mediaDescr, true); + ok = type.indexOf("calc") > -1; + result &= ok; + log.println("deep detection should detect a calc and has detected '"+ type +"': " + ok); + + log.println("test document with bookmark: " + bookmarkURL); + mediaDescr = new PropertyValue[1][1]; + mediaDescr[0][0] = new PropertyValue(); + mediaDescr[0][0].Name = "URL"; + mediaDescr[0][0].Value = bookmarkURL; + type = oObj.queryTypeByDescriptor(mediaDescr, true); + ok = type.indexOf("writer") > -1; + result &= ok; + log.println("deep detection should detect a writer and has detected '"+ type +"': " + ok); + + tRes.tested("queryTypeByDescriptor()", result) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/document/_XViewDataSupplier.java b/qadevOOo/tests/java/ifc/document/_XViewDataSupplier.java new file mode 100644 index 0000000000..81a92e7c3e --- /dev/null +++ b/qadevOOo/tests/java/ifc/document/_XViewDataSupplier.java @@ -0,0 +1,109 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.document; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XIndexContainer; +import com.sun.star.document.XViewDataSupplier; +import com.sun.star.uno.UnoRuntime; +import lib.MultiMethodTest; +import lib.Status; + +/** + * Check the XViewDataSupplier interface. + * Test idea: take the property values from the index access, change one + * property value, put this into the index access and write it back. + * Get the property value again and check that the change made it. + */ +public class _XViewDataSupplier extends MultiMethodTest { + public XViewDataSupplier oObj = null; + XIndexAccess xAccess = null; + PropertyValue[] newProps = null; + PropertyValue[] oldProps = null; + String myview = "myview1"; + + public void _getViewData() { + xAccess = oObj.getViewData(); + if (xAccess != null) { + setViewID(xAccess, myview); + } + tRes.tested("getViewData()", true); + } + + public void _setViewData() { + if (xAccess == null) { + log.println("No view data to change available"); + tRes.tested("setViewData()", Status.skipped(true)); + } + else { + // 2do: provide an own implementation of the XIndexAccess to set. + // this will work without "setViewData()", it just checks that a + // setViewData can be done. + oObj.setViewData(xAccess); + XIndexAccess xAccess2 = oObj.getViewData(); + String newView = getViewID(xAccess2); + tRes.tested("setViewData()", newView != null && newView.equals(myview)); + } + } + + private void setViewID(XIndexAccess xAccess, String value) { + XIndexContainer xIndexContainer = UnoRuntime.queryInterface(XIndexContainer.class, xAccess); + int count = xAccess.getCount(); + try { + if (count > 0) { + oldProps = (PropertyValue[])xAccess.getByIndex(0); + newProps = new PropertyValue[oldProps.length]; + for (int j=0; j<oldProps.length; j++) { + newProps[j] = new PropertyValue(); + newProps[j].Name = oldProps[j].Name; + newProps[j].Handle = oldProps[j].Handle; + newProps[j].State = oldProps[j].State; + if (oldProps[j].Name.equals("ViewId")) { + newProps[j].Value = value; + } + + } + xIndexContainer.insertByIndex(0, newProps); + } + } + catch(Exception e) { + e.printStackTrace(log); + } + } + + private String getViewID(XIndexAccess xAccess) { + String retValue = null; + int count = xAccess.getCount(); + try { + if (count > 0) { + oldProps = (PropertyValue[])xAccess.getByIndex(0); + for (int j=0; j<oldProps.length; j++) { + if (oldProps[j].Name.equals("ViewId")) { + retValue = (String)newProps[j].Value; + } + + } + } + } + catch(Exception e) { + e.printStackTrace(log); + } + return retValue; + } +} diff --git a/qadevOOo/tests/java/ifc/drawing/_AreaShapeDescriptor.java b/qadevOOo/tests/java/ifc/drawing/_AreaShapeDescriptor.java new file mode 100644 index 0000000000..1bee620985 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_AreaShapeDescriptor.java @@ -0,0 +1,109 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +public class _AreaShapeDescriptor extends MultiPropertyTest { + + @Override + protected boolean compare(Object ob1, Object ob2) { + + return super.compare(ob1, ob2); + + } + + protected PropertyTester URLTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + if (oldValue.equals(util.utils.getFullTestURL("space-metal.jpg"))) + return util.utils.getFullTestURL("crazy-blue.jpg"); else + return util.utils.getFullTestURL("space-metal.jpg"); + } + } ; + + protected PropertyTester StringTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + if (oldValue.equals(str1)) + return str2; else + return str1; + } + } ; + + public void _FillBitmapURL() { + log.println("Testing with custom Property tester") ; + testProperty("FillBitmapURL", URLTester) ; + } + + public String str1 = ""; + public String str2 = ""; + + public void _FillGradientName() { + log.println("Testing with custom Property tester") ; + str1 = "Gradient 1"; + str2 = "Gradient 3"; + testProperty("FillGradientName", StringTester) ; + } + + public void _FillBitmapName() { + log.println("Testing with custom Property tester") ; + str1 = "Sky"; + str2 = "Blank"; + testProperty("FillBitmapName", StringTester) ; + } + + public void _FillTransparenceGradientName() { + log.println("Testing with custom Property tester") ; + str1 = "Standard 1"; + str2 = "Standard 2"; + testProperty("FillTransparenceGradientName", StringTester) ; + } + + public void _FillHatchName() { + log.println("Testing with custom Property tester") ; + str1 = "Black 0 degrees"; + str2 = "Black 45 degrees"; + testProperty("FillHatchName", StringTester) ; + } + + public void _FillBitmapMode() { + log.println("Testing with custom Property tester") ; + try { + Object getting = oObj.getPropertyValue("FillBitmapMode"); + if (! (getting instanceof com.sun.star.drawing.BitmapMode)) { + log.println("getting the property 'FillBitmapMode'"); + log.println("return "+ oObj.getClass().getName()); + log.println("Expected was 'com.sun.star.drawing.BitmapMode'"); + tRes.tested("FillBitmapMode",false); + } else testProperty("FillBitmapMode"); + } + catch (Exception ex) { + log.println("Exception while checking 'FillBitmapMode'"); + ex.printStackTrace(log); + tRes.tested("FillBitmapMode",false); + } + + } + +} + + diff --git a/qadevOOo/tests/java/ifc/drawing/_ConnectorProperties.java b/qadevOOo/tests/java/ifc/drawing/_ConnectorProperties.java new file mode 100644 index 0000000000..1cbe9f0772 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_ConnectorProperties.java @@ -0,0 +1,39 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.drawing.ConnectorProperties</code> +* service properties : +* <ul> +* <li><code> EdgeKind</code></li> +* <li><code> EdgeNode1HorzDist</code></li> +* <li><code> EdgeNode1VertDist</code></li> +* <li><code> EdgeNode2HorzDist</code></li> +* <li><code> EdgeNode2VertDist</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.ConnectorProperties +*/ +public class _ConnectorProperties extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_ConnectorShape.java b/qadevOOo/tests/java/ifc/drawing/_ConnectorShape.java new file mode 100644 index 0000000000..d338126d7f --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_ConnectorShape.java @@ -0,0 +1,70 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +import com.sun.star.drawing.XShape; +/** +* Testing <code>com.sun.star.drawing.ConnectorShape</code> +* service properties : +* <ul> +* <li><code> EdgeLine1Delta</code></li> +* <li><code> EdgeLine2Delta</code></li> +* <li><code> EdgeLine3Delta</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.ConnectorShape +*/ +public class _ConnectorShape extends MultiPropertyTest { + public XShape[] conShapes = null; + + @Override + protected void before() { + conShapes = (XShape[]) tEnv.getObjRelation("XConnectorShape.Shapes"); + } + + public void _EndShape() { + Object oldProp = null; + try { + oldProp = oObj.getPropertyValue("EndShape"); + } catch (com.sun.star.beans.UnknownPropertyException e) { + e.printStackTrace(); + } catch (com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(); + } + testProperty("EndShape",oldProp,conShapes[0]); + } + + public void _StartShape() { + Object oldProp = null; + log.println("Special for StartShape"); + try { + oldProp = oObj.getPropertyValue("StartShape"); + } catch (com.sun.star.beans.UnknownPropertyException e) { + e.printStackTrace(); + } catch (com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(); + } + testProperty("StartShape",oldProp,conShapes[1]); + } + + +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_ConnectorShapeDescriptor.java b/qadevOOo/tests/java/ifc/drawing/_ConnectorShapeDescriptor.java new file mode 100644 index 0000000000..99f974b494 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_ConnectorShapeDescriptor.java @@ -0,0 +1,35 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +public class _ConnectorShapeDescriptor extends MultiPropertyTest { + + @Override + protected boolean compare(Object ob1, Object ob2) { + + return super.compare(ob1, ob2); + + } + +} // finish class _ConnectorShapeDescriptor + + + diff --git a/qadevOOo/tests/java/ifc/drawing/_DimensioningShapeDescriptor.java b/qadevOOo/tests/java/ifc/drawing/_DimensioningShapeDescriptor.java new file mode 100644 index 0000000000..ef55d860e7 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_DimensioningShapeDescriptor.java @@ -0,0 +1,39 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + + +public class _DimensioningShapeDescriptor extends MultiPropertyTest { + +/* + protected PropertyTester lengthTester = new PropertyTester() { + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + + int val = ((Integer)oldValue).intValue() ; + return Integer.valueOf(val + 100) ; + } + } ; +*/ + +} // finish class _ParagraphProperties + + diff --git a/qadevOOo/tests/java/ifc/drawing/_DrawingDocument.java b/qadevOOo/tests/java/ifc/drawing/_DrawingDocument.java new file mode 100644 index 0000000000..a0df35bcb5 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_DrawingDocument.java @@ -0,0 +1,36 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.drawing.DrawingDocument</code> +* service properties : +* <ul> +* <li><code> TabStop</code></li> +* <li><code> CharLocale</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.DrawingDocument +*/ +public class _DrawingDocument extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_DrawingDocumentDrawView.java b/qadevOOo/tests/java/ifc/drawing/_DrawingDocumentDrawView.java new file mode 100644 index 0000000000..597e44cee0 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_DrawingDocumentDrawView.java @@ -0,0 +1,172 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +import com.sun.star.container.XNamed; +import com.sun.star.drawing.XDrawPage; +import com.sun.star.uno.UnoRuntime; +import util.ValueChanger; + +/** +* Testing <code>com.sun.star.drawing.DrawingDocumentDrawView</code> +* service properties : +* <ul> +* <li><code> IsMasterPageMode</code></li> +* <li><code> IsLayerMode</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'DrawPage'</code> (of type <code>XDrawPage</code>): +* a draw page which will be current page. </li> +* <ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.DrawingDocumentDrawView +*/ +public class _DrawingDocumentDrawView extends MultiPropertyTest { + + XDrawPage drawPage = null; + static String test_name = "For DrawingDocumentDrawView"; + + @Override + protected void before() { + drawPage = (XDrawPage)tEnv.getObjRelation("DrawPage"); + XNamed xNamed = UnoRuntime.queryInterface(XNamed.class, drawPage); + xNamed.setName(test_name); + } + + /** + * Property tester which returns new <code>XDrawPage</code> object + * and compares draw pages. + */ + protected PropertyTester CurPageTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + return drawPage; + } + + @Override + protected boolean compare(Object obj1, Object obj2) { + XNamed named1 = UnoRuntime.queryInterface(XNamed.class, obj1); + XNamed named2 = UnoRuntime.queryInterface(XNamed.class, obj2); + boolean res = false; + + if (named1 != null && named2 != null) { + String name1 = named1.getName(); + String name2 = named2.getName(); + res = name1.equals(name2); + } else { + log.println("Interface XNamed not supported"); + } + + return res; + } + + @Override + protected String toString(Object obj) { + XNamed named = UnoRuntime.queryInterface(XNamed.class, obj); + String res = (named == null) ? "null" : named.getName(); + return res; + } + } ; + + public void _CurrentPage() { + log.println("Testing with custom Property tester"); + Object oldCurPage = null; + try { + oldCurPage = oObj.getPropertyValue("CurrentPage"); + } catch(com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + } catch(com.sun.star.beans.UnknownPropertyException e) { + e.printStackTrace(log); + } + + testProperty("CurrentPage", CurPageTester); + + try { + log.println("Back old current page"); + oObj.setPropertyValue("CurrentPage", oldCurPage); + } catch(com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + } catch(com.sun.star.beans.UnknownPropertyException e) { + e.printStackTrace(log); + } catch(com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log); + } catch(com.sun.star.beans.PropertyVetoException e) { + e.printStackTrace(log); + } + } + + public void _IsMasterPageMode() { + testProperty("IsMasterPageMode"); + try { + oObj.setPropertyValue("IsMasterPageMode", Boolean.FALSE); + } catch(com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + } catch(com.sun.star.beans.UnknownPropertyException e) { + e.printStackTrace(log); + } catch(com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log); + } catch(com.sun.star.beans.PropertyVetoException e) { + e.printStackTrace(log); + } + } + + public void _IsLayerMode() { + testProperty("IsLayerMode"); + try { + oObj.setPropertyValue("IsLayerMode", Boolean.FALSE); + } catch(com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + } catch(com.sun.star.beans.UnknownPropertyException e) { + e.printStackTrace(log); + } catch(com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log); + } catch(com.sun.star.beans.PropertyVetoException e) { + e.printStackTrace(log); + } + } + + public void _ZoomType() { + Object oldValue=null; + Object newValue=null; + try { + oldValue = oObj.getPropertyValue("ZoomValue"); + Object oldZoom = oObj.getPropertyValue("ZoomType"); + Object newZoom = ValueChanger.changePValue(oldZoom); + oObj.setPropertyValue("ZoomType", newZoom); + newValue = oObj.getPropertyValue("ZoomValue"); + } catch(com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + } catch(com.sun.star.beans.UnknownPropertyException e) { + e.printStackTrace(log); + } catch(com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log); + } catch(com.sun.star.beans.PropertyVetoException e) { + e.printStackTrace(log); + } + log.println("oldZoomValue: "+oldValue); + log.println("newZoomValue: "+newValue); + if (oldValue != null) + tRes.tested("ZoomType",(!oldValue.equals(newValue))); + } + +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_EllipseShape.java b/qadevOOo/tests/java/ifc/drawing/_EllipseShape.java new file mode 100644 index 0000000000..7cc84ea128 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_EllipseShape.java @@ -0,0 +1,37 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.drawing.EllipseShape</code> +* service properties : +* <ul> +* <li><code> CircleKind</code></li> +* <li><code> CircleStartAngle</code></li> +* <li><code> CircleEndAngle</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.EllipseShape +*/ +public class _EllipseShape extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_EllipseShapeDescriptor.java b/qadevOOo/tests/java/ifc/drawing/_EllipseShapeDescriptor.java new file mode 100644 index 0000000000..d291a9e9c0 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_EllipseShapeDescriptor.java @@ -0,0 +1,27 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + + +public class _EllipseShapeDescriptor extends MultiPropertyTest { + +} // finish class _EllipseShapeDescriptor + diff --git a/qadevOOo/tests/java/ifc/drawing/_FillProperties.java b/qadevOOo/tests/java/ifc/drawing/_FillProperties.java new file mode 100644 index 0000000000..f4e64d7b55 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_FillProperties.java @@ -0,0 +1,213 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.drawing; + +import com.sun.star.beans.XPropertySetInfo; +import lib.MultiPropertyTest; + +import com.sun.star.awt.XBitmap; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; + +/** + * Testing <code>com.sun.star.drawing.FillProperties</code> + * service properties : + * <ul> + * <li><code> FillStyle</code></li> + * <li><code> FillColor</code></li> + * <li><code> FillTransparence</code></li> + * <li><code> FillTransparenceGradientName</code></li> + * <li><code> FillTransparenceGradient</code></li> + * <li><code> FillGradientName</code></li> + * <li><code> FillGradient</code></li> + * <li><code> FillHatchName</code></li> + * <li><code> FillHatch</code></li> + * <li><code> FillBitmapName</code></li> + * <li><code> FillBitmap</code></li> + * <li><code> FillBitmapURL</code></li> + * <li><code> FillBitmapOffsetX</code></li> + * <li><code> FillBitmapOffsetY</code></li> + * <li><code> FillBitmapPositionOffsetX</code></li> + * <li><code> FillBitmapPositionOffsetY</code></li> + * <li><code> FillBitmapRectanglePoint</code></li> + * <li><code> FillBitmapLogicalSize</code></li> + * <li><code> FillBitmapSizeX</code></li> + * <li><code> FillBitmapSizeY</code></li> + * <li><code> FillBitmapMode</code></li> + * <li><code> FillBackground</code></li> + * </ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.drawing.FillProperties + */ +public class _FillProperties extends MultiPropertyTest { + + XBitmap the_bitmap = null; + XBitmap the_secondBitmap = null; + /** + * Property tester which changes URL. + */ + protected PropertyTester URLTester = new PropertyTester() { + + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + if (oldValue.equals(util.utils.getFullTestURL("space-metal.jpg"))) { + return util.utils.getFullTestURL("crazy-blue.jpg"); + } else { + return util.utils.getFullTestURL("space-metal.jpg"); + } + } + }; + /** + * Property tester which switches two strings. + */ + protected PropertyTester StringTester = new PropertyTester() { + + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + if (oldValue.equals(str1)) { + return str2; + } else { + return str1; + } + } + }; + /** + * Property tester which switches two XBitmap objects. + */ + protected PropertyTester BitmapTester = new PropertyTester() { + + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + if (util.ValueComparer.equalValue(oldValue, the_bitmap)) { + return the_secondBitmap; + } else { + return the_bitmap; + } + } + }; + + /** + * This property must have a URL format + */ + public void _FillBitmapURL() { + log.println("Testing with custom Property tester"); + testProperty("FillBitmapURL", URLTester); + } + public String str1 = ""; + public String str2 = ""; + + /** + * This property must have predefined values + */ + public void _FillGradientName() { + log.println("Testing with custom Property tester"); + str1 = "Gradient 1"; + str2 = "Gradient 3"; + testProperty("FillGradientName", StringTester); + } + + /** + * This property must have predefined values + */ + public void _FillBitmapName() { + log.println("Testing with custom Property tester"); + str1 = "Sky"; + str2 = "Blank"; + testProperty("FillBitmapName", StringTester); + } + + /** + * This property must have predefined values + */ + public void _FillTransparenceGradientName() { + log.println("Testing with custom Property tester"); + str1 = "Transparency 2"; + str2 = "Transparency 1"; + testProperty("FillTransparenceGradientName", StringTester); + } + + /** + * This property must have predefined values + */ + public void _FillHatchName() { + log.println("Testing with custom Property tester"); + str1 = "Black 0 degrees"; + str2 = "Black 45 degrees"; + testProperty("FillHatchName", StringTester); + } + + /** + * This property is very interesting. After setting URL of bitmap you get + * <code>XBitmap</code> interface of the image file specified. + * The method first gets two different bitmaps and then tests the property. + */ + public void _FillBitmap() { + + String propName = "FillBitmap"; + + XPropertySetInfo info = oObj.getPropertySetInfo(); + + if (!info.hasPropertyByName(propName)) { + if (isOptional(propName)) { + // skipping optional property test + log.println("Property '" + propName + "' is optional and not supported"); + tRes.tested(propName, true); + return; + } + } else { + + try { + + oObj.setPropertyValue("FillBitmapURL", util.utils.getFullTestURL("crazy-blue.jpg")); + + the_bitmap = (XBitmap) AnyConverter.toObject( + new Type(XBitmap.class), oObj.getPropertyValue("FillBitmap")); + + oObj.setPropertyValue("FillBitmapURL", util.utils.getFullTestURL("space-metal.jpg")); + + the_secondBitmap = (XBitmap) AnyConverter.toObject( + new Type(XBitmap.class), oObj.getPropertyValue("FillBitmap")); + + testProperty("FillBitmap", BitmapTester); + + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("Couldn't change Bitmap"); + e.printStackTrace(log); + tRes.tested("FillBitmap", false); + + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Couldn't change Bitmap"); + e.printStackTrace(log); + tRes.tested("FillBitmap", false); + + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Couldn't change Bitmap"); + e.printStackTrace(log); + tRes.tested("FillBitmap", false); + + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Couldn't change Bitmap"); + e.printStackTrace(log); + tRes.tested("FillBitmap", false); + } + } + } + } diff --git a/qadevOOo/tests/java/ifc/drawing/_GenericDrawPage.java b/qadevOOo/tests/java/ifc/drawing/_GenericDrawPage.java new file mode 100644 index 0000000000..71cfb5688f --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_GenericDrawPage.java @@ -0,0 +1,87 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + + +/** +* Testing <code>com.sun.star.drawing.GenericDrawPage</code> +* service properties : +* <ul> +* <li><code> BorderBottom</code></li> +* <li><code> BorderLeft</code></li> +* <li><code> BorderRight</code></li> +* <li><code> BorderTop</code></li> +* <li><code> Height</code></li> +* <li><code> Width</code></li> +* <li><code> Number</code></li> +* <li><code> Orientation</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.GenericDrawPage +*/ +public class _GenericDrawPage extends MultiPropertyTest { + + public void _Number() { + log.println("Number started"); + boolean res = false; + log.println("trying to get the value"); + try { + Short wat = (Short) oObj.getPropertyValue("Number"); + if (wat == null) { + log.println("it is null"); + } else { + log.println("it isn't null"); + res=true; + } + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("an UnknownPropertyException occurred"); + + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("an WrappedTargetException occurred"); + } + + tRes.tested("Number",res); + } + + public void _UserDefinedAttributes() { + log.println("Userdefined started"); + boolean res = false; + log.println("trying to get the value"); + try { + Object wat = oObj.getPropertyValue("UserDefinedAttributes"); + if (wat == null) { + log.println("it is null"); + } else { + log.println("it isn't null"); + res=true; + } + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("an UnknownPropertyException occurred"); + + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("an WrappedTargetException occurred"); + } + + tRes.tested("UserDefinedAttributes",res); + } + +} // end of GenericDrawPage + diff --git a/qadevOOo/tests/java/ifc/drawing/_GenericDrawingDocument.java b/qadevOOo/tests/java/ifc/drawing/_GenericDrawingDocument.java new file mode 100644 index 0000000000..2e72d03d8e --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_GenericDrawingDocument.java @@ -0,0 +1,25 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +public class _GenericDrawingDocument extends MultiPropertyTest { + +} diff --git a/qadevOOo/tests/java/ifc/drawing/_GraphicObjectShape.java b/qadevOOo/tests/java/ifc/drawing/_GraphicObjectShape.java new file mode 100644 index 0000000000..dfbde7de19 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_GraphicObjectShape.java @@ -0,0 +1,157 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +import com.sun.star.awt.XBitmap; +import com.sun.star.container.XIndexContainer; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.drawing.GraphicObjectShape</code> +* service properties : +* <ul> +* <li><code> GraphicURL</code></li> +* <li><code> GraphicStreamURL</code></li> +* <li><code> GraphicObjectFillBitmap</code></li> +* <li><code> AdjustLuminance</code></li> +* <li><code> AdjustContrast</code></li> +* <li><code> AdjustRed</code></li> +* <li><code> AdjustGreen</code></li> +* <li><code> AdjustBlue</code></li> +* <li><code> Gamma</code></li> +* <li><code> Transparency</code></li> +* <li><code> GraphicColorMode</code></li> +* <li><code> ImageMap</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'Bitmap1', 'Bitmap2'</code> (of type <code>XBitmap</code>): +* values to be set for property GraphicObjectFillBitmap </li> +* <li> <code>'IMAP'</code> +* (<code>com.sun.star.image.ImageMapRectangleObject</code> service instance): +* is used to be added to ImageMap container.</li> +* <ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.GraphicObjectShape +*/ +public class _GraphicObjectShape extends MultiPropertyTest { + + /** + * Property tester which changes URL. + */ + protected PropertyTester URLTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (oldValue.equals(util.utils.getFullTestURL("space-metal.jpg"))) + return util.utils.getFullTestURL("crazy-blue.jpg"); else + return util.utils.getFullTestURL("space-metal.jpg"); + } + } ; + + /** + * Property tester which switches two XBitmap objects. + * It also uses two object relations with bitmaps. + */ + protected PropertyTester BitmapTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue){ + XBitmap aBitmap1=(XBitmap) tEnv.getObjRelation("Bitmap1"); + XBitmap aBitmap2=(XBitmap) tEnv.getObjRelation("Bitmap2"); + if (oldValue.equals(aBitmap1)) return aBitmap2; + else return aBitmap1; + } + } ; + + /** + * This property must have URL format + */ + public void _GraphicURL() { + log.println("Testing with custom Property tester") ; + testProperty("GraphicURL", URLTester) ; + } + + public void _GraphicStreamURL() { + log.println("Testing with custom Property tester") ; + testProperty("GraphicStreamURL", URLTester) ; + } + + public void _GraphicObjectFillBitmap() { + log.println("Testing with custom Property tester") ; + testProperty("GraphicObjectFillBitmap", BitmapTester) ; + } + + /** + * The test first retrieves ImageMap relation, then inserts it + * to the current container. + */ + public void _ImageMap() { + if (! util.utils.hasPropertyByName(oObj,"ImageMap")) { + log.println("optional property 'ImageMap' isn't available"); + tRes.tested("ImageMap",true); + return; + } + try { + boolean result = true; + Object imapObject = tEnv.getObjRelation("ImapObject"); + + if ( imapObject == null){ + System.out.println("ERROR: object relation 'ImapObject' isn't available"); + tRes.tested("ImageMap", false); + return; + } + + Object o = oObj.getPropertyValue("ImageMap"); + XIndexContainer xIndexContainer = UnoRuntime.queryInterface(XIndexContainer.class, o); + util.dbg.printInterfaces(xIndexContainer); + int elementCountFirst = xIndexContainer.getCount(); + xIndexContainer.insertByIndex(elementCountFirst, imapObject); + + // this does not really change the property: the implementation + // behind "ImageMap" stays the same, but for a real change a C++ + // implementation is needed. See css.lang.XUnoTunnel + oObj.setPropertyValue("ImageMap", xIndexContainer); + Object newObject = oObj.getPropertyValue("ImageMap"); + xIndexContainer = UnoRuntime.queryInterface(XIndexContainer.class, newObject); + + int elementCountSecond = xIndexContainer.getCount(); + result = (elementCountFirst + 1 == elementCountSecond); + + tRes.tested("ImageMap", result); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception while checking 'ImageMap'"); + e.printStackTrace(log); + tRes.tested("ImageMap",false); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception while checking 'ImageMap'"); + e.printStackTrace(log); + tRes.tested("ImageMap",false); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while checking 'ImageMap'"); + e.printStackTrace(log); + tRes.tested("ImageMap",false); + } + catch(Exception e) { + e.printStackTrace(log); + } + } + +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_GraphicObjectShapeDescriptor.java b/qadevOOo/tests/java/ifc/drawing/_GraphicObjectShapeDescriptor.java new file mode 100644 index 0000000000..830a065d4e --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_GraphicObjectShapeDescriptor.java @@ -0,0 +1,65 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +import com.sun.star.awt.XBitmap; + +public class _GraphicObjectShapeDescriptor extends MultiPropertyTest { + + @Override + protected boolean compare(Object ob1, Object ob2) { + + return super.compare(ob1, ob2); + + } + + protected PropertyTester URLTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + if (oldValue.equals(util.utils.getFullTestURL("space-metal.jpg"))) + return util.utils.getFullTestURL("crazy-blue.jpg"); else + return util.utils.getFullTestURL("space-metal.jpg"); + } + } ; + + protected PropertyTester BitmapTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + XBitmap aBitmap1=(XBitmap) tEnv.getObjRelation("Bitmap1"); + XBitmap aBitmap2=(XBitmap) tEnv.getObjRelation("Bitmap2"); + if (oldValue.equals(aBitmap1)) return aBitmap2; else return aBitmap1; + } + } ; + + public void _GraphicURL() { + log.println("Testing with custom Property tester") ; + testProperty("GraphicURL", URLTester) ; + } + + public void _GraphicObjectFillBitmap() { + log.println("Testing with custom Property tester") ; + testProperty("GraphicObjectFillBitmap", BitmapTester) ; + } + +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_Layer.java b/qadevOOo/tests/java/ifc/drawing/_Layer.java new file mode 100644 index 0000000000..c11b39cd49 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_Layer.java @@ -0,0 +1,38 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.drawing.Layer</code> +* service properties : +* <ul> +* <li><code> Name</code></li> +* <li><code> IsVisible</code></li> +* <li><code> IsPrintable</code></li> +* <li><code> IsLocked</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.Layer +*/ +public class _Layer extends MultiPropertyTest { + +}// end of _Layer.java + diff --git a/qadevOOo/tests/java/ifc/drawing/_LineProperties.java b/qadevOOo/tests/java/ifc/drawing/_LineProperties.java new file mode 100644 index 0000000000..d37d6506dd --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_LineProperties.java @@ -0,0 +1,77 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import com.sun.star.drawing.LineDash; +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.drawing.LineProperties</code> +* service properties : +* <ul> +* <li><code> LineStyle</code></li> +* <li><code> LineDash</code></li> +* <li><code> LineColor</code></li> +* <li><code> LineTransparence</code></li> +* <li><code> LineWidth</code></li> +* <li><code> LineJoint</code></li> +* <li><code> LineStartName</code></li> +* <li><code> LineStart</code></li> +* <li><code> LineEnd</code></li> +* <li><code> LineStartCenter</code></li> +* <li><code> LineStartWidth</code></li> +* <li><code> LineEndCenter</code></li> +* <li><code> LineEndWidth</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.LineProperties +*/ +public class _LineProperties extends MultiPropertyTest { + + /** + * Tester used for property LineStartName which can have + * only predefined String values. + */ + protected PropertyTester LineTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + if (oldValue.equals("Arrow")) + return "Square"; else + return "Arrow"; + } + } ; + + /** + * The property switched between 'Square' and 'Arrow' values. + */ + public void _LineStartName() { + log.println("Testing with custom Property tester"); + testProperty("LineStartName", LineTester) ; + } + + public void _LineDash() { + LineDash aLineDash = new LineDash(); + LineDash aLineDash2 = new LineDash(); + aLineDash.DashLen = 5; + aLineDash2.DashLen = 1; + testProperty("LineDash",aLineDash,aLineDash2); + } +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_LineShapeDescriptor.java b/qadevOOo/tests/java/ifc/drawing/_LineShapeDescriptor.java new file mode 100644 index 0000000000..a619b952f2 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_LineShapeDescriptor.java @@ -0,0 +1,137 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; +import util.ValueChanger; + +import com.sun.star.awt.Point; +import com.sun.star.beans.XPropertySet; +import com.sun.star.lang.XServiceInfo; +import com.sun.star.uno.UnoRuntime; + + +public class _LineShapeDescriptor extends MultiMethodTest { + + public XPropertySet oObj = null; // oObj filled by MultiMethodTest + + + public void _LineColor() { + XServiceInfo xInfo = UnoRuntime.queryInterface(XServiceInfo.class, oObj); + if ( ! xInfo.supportsService + ("com.sun.star.drawing.LineShapeDescriptor")) { + log.println("Service not available !!!!!!!!!!!!!"); + tRes.tested("Supported", false); + } + changeProp("LineColor"); + } + + public void _LineDash() { + changeProp("LineDash"); + } + public void _LineEnd() { + changeProp("LineEnd"); + } + public void _LineEndCenter() { + changeProp("LineEndCenter"); + } + public void _LineEndWidth() { + changeProp("LineEndWidth"); + } + public void _LineJoint() { + changeProp("LineJoint"); + } + public void _LineStart() { + changeProp("LineStart"); + } + public void _LineStartCenter() { + changeProp("LineStartCenter"); + } + public void _LineStartWidth() { + changeProp("LineStartWidth"); + } + public void _LineStyle() { + changeProp("LineStyle"); + } + public void _LineTransparence() { + changeProp("LineTransparence"); + } + public void _LineWidth() { + changeProp("LineWidth"); + } + + public void changeProp(String name) { + + Object gValue = null; + Object sValue = null; + Object ValueToSet = null; + + try { + gValue = oObj.getPropertyValue(name); + if ( (name.equals("LineEnd")) || (name.equals("LineStart")) ) { + if (gValue == null) gValue = newPoints(null); + ValueToSet = newPoints( (Point[]) gValue); + } + else { + ValueToSet = ValueChanger.changePValue(gValue); + } + oObj.setPropertyValue(name,ValueToSet); + sValue = oObj.getPropertyValue(name); + + + //check get-set methods + if (gValue.equals(sValue)) { + log.println("Value for '"+name+"' hasn't changed"); + tRes.tested(name, false); + } + else { + log.println("Property '"+name+"' OK"); + tRes.tested(name, true); + } + } catch (Exception e) { + log.println("Exception occurred while testing property '" + + name + "'"); + e.printStackTrace(log); + tRes.tested(name, false); + } + + + } // end of ChangeProp + + public Point[] newPoints(Point[] old) { + + Point [] newP = new Point[3]; + + if (old == null) { + newP[0] = new Point(0, 2); + newP[1] = new Point(2, 0); + newP[2] = new Point(0, -2); + } + else { + newP = old; + newP[0].X += 1; + newP[1].X += 1; + newP[2].X += 1; + } + return newP; + } + +} + + diff --git a/qadevOOo/tests/java/ifc/drawing/_MeasureProperties.java b/qadevOOo/tests/java/ifc/drawing/_MeasureProperties.java new file mode 100644 index 0000000000..9bc3d2aa25 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_MeasureProperties.java @@ -0,0 +1,51 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.drawing.MeasureProperties</code> +* service properties : +* <ul> +* <li><code> MeasureBelowReferenceEdge</code></li> +* <li><code> MeasureHelpLine1Length</code></li> +* <li><code> MeasureHelpLine2Length</code></li> +* <li><code> MeasureHelpLineDistance</code></li> +* <li><code> MeasureHelpLineOverhang</code></li> +* <li><code> MeasureKind</code></li> +* <li><code> MeasureLineDistance</code></li> +* <li><code> MeasureOverhang</code></li> +* <li><code> MeasureShowUnit</code></li> +* <li><code> MeasureTextAutoAngle</code></li> +* <li><code> MeasureTextAutoAngleView</code></li> +* <li><code> MeasureTextFixedAngle</code></li> +* <li><code> MeasureTextHorizontalPosition</code></li> +* <li><code> MeasureTextVerticalPosition</code></li> +* <li><code> MeasureTextIsFixedAngle</code></li> +* <li><code> MeasureTextRotate90</code></li> +* <li><code> MeasureTextUpsideDown</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.MeasureProperties +*/ +public class _MeasureProperties extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_MeasureShape.java b/qadevOOo/tests/java/ifc/drawing/_MeasureShape.java new file mode 100644 index 0000000000..bbac993d65 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_MeasureShape.java @@ -0,0 +1,37 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.drawing.MeasureShape</code> +* service properties : +* <ul> +* <li><code> StartPosition</code></li> +* <li><code> EndPosition</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.MeasureShape +*/ +public class _MeasureShape extends MultiPropertyTest { + + +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_PolyPolygonBezierDescriptor.java b/qadevOOo/tests/java/ifc/drawing/_PolyPolygonBezierDescriptor.java new file mode 100644 index 0000000000..340e7978fc --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_PolyPolygonBezierDescriptor.java @@ -0,0 +1,38 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.drawing.PolyPolygonBezierDescriptor</code> +* service properties : +* <ul> +* <li><code> PolygonKind</code></li> +* <li><code> PolyPolygonBezier</code></li> +* <li><code> Geometry</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.PolyPolygonBezierDescriptor +*/ +public class _PolyPolygonBezierDescriptor extends MultiPropertyTest { + +} // finish class _PolyPolygonBezierDescriptor + + diff --git a/qadevOOo/tests/java/ifc/drawing/_PolyPolygonDescriptor.java b/qadevOOo/tests/java/ifc/drawing/_PolyPolygonDescriptor.java new file mode 100644 index 0000000000..ba9e8b097e --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_PolyPolygonDescriptor.java @@ -0,0 +1,38 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.drawing.PolyPolygonDescriptor</code> +* service properties : +* <ul> +* <li><code> PolygonKind</code></li> +* <li><code> PolyPolygon</code></li> +* <li><code> Geometry</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.PolyPolygonDescriptor +*/ +public class _PolyPolygonDescriptor extends MultiPropertyTest { + +} // finish class _PolyPolygonDescriptor + + diff --git a/qadevOOo/tests/java/ifc/drawing/_RotationDescriptor.java b/qadevOOo/tests/java/ifc/drawing/_RotationDescriptor.java new file mode 100644 index 0000000000..85db87e12c --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_RotationDescriptor.java @@ -0,0 +1,94 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; +import lib.Status; + +/** +* Testing <code>com.sun.star.drawing.RotationDescriptor</code> +* service properties : +* <ul> +* <li><code> RotateAngle</code></li> +* <li><code> ShearAngle</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.RotationDescriptor +*/ +public class _RotationDescriptor extends MultiPropertyTest { + + /** + * Custom tester which increases value by 200 + */ + protected PropertyTester drawMeasureTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + int val = ((Integer)oldValue).intValue() ; + return Integer.valueOf(val + 200) ; + } + } ; + + /** + * !!! DEPRECATED !!! + */ + public void _RotationPointX() { + log.println("Testing with custom Property tester") ; + testProperty("RotationPointX", drawMeasureTester) ; + } + + /** + * !!! DEPRECATED !!! + */ + public void _RotationPointY() { + log.println("Testing with custom Property tester") ; + testProperty("RotationPointY", drawMeasureTester) ; + } + + /** + * Tests the property with custom tester + */ + public void _ShearAngle() { + + Object noShear = tEnv.getObjRelation("NoShear"); + + if (noShear != null) { + log.println("This shape type doesn't support shear, see #85556#"); + tRes.tested("ShearAngle",Status.skipped(true)); + return; + } + + try { + oObj.setPropertyValue("RotateAngle",Short.valueOf((short) 0)); + } catch (Exception e) { + } + log.println("Testing with custom Property tester") ; + testProperty("ShearAngle", drawMeasureTester) ; + } + + /** + * Tests the property with custom tester + */ + public void _RotateAngle() { + log.println("Testing with custom Property tester") ; + testProperty("RotateAngle", drawMeasureTester) ; + } + +} // finish class _RotationDescriptor + + diff --git a/qadevOOo/tests/java/ifc/drawing/_ShadowDescriptor.java b/qadevOOo/tests/java/ifc/drawing/_ShadowDescriptor.java new file mode 100644 index 0000000000..ec95fea716 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_ShadowDescriptor.java @@ -0,0 +1,35 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +public class _ShadowDescriptor extends MultiPropertyTest { + + @Override + protected boolean compare(Object ob1, Object ob2) { + + return super.compare(ob1, ob2); + + } + +} // finish class _ShadowDescriptor + + + diff --git a/qadevOOo/tests/java/ifc/drawing/_ShadowProperties.java b/qadevOOo/tests/java/ifc/drawing/_ShadowProperties.java new file mode 100644 index 0000000000..b1c039a8c8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_ShadowProperties.java @@ -0,0 +1,39 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.drawing.ShadowProperties</code> +* service properties : +* <ul> +* <li><code> Shadow</code></li> +* <li><code> ShadowColor</code></li> +* <li><code> ShadowTransparence</code></li> +* <li><code> ShadowXDistance</code></li> +* <li><code> ShadowYDistance</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.ShadowProperties +*/ +public class _ShadowProperties extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_Shape.java b/qadevOOo/tests/java/ifc/drawing/_Shape.java new file mode 100644 index 0000000000..9ef654283b --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_Shape.java @@ -0,0 +1,151 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +import com.sun.star.style.XStyle; + +/** +* Testing <code>com.sun.star.drawing.Shape</code> +* service properties : +* <ul> +* <li><code> ZOrder</code></li> +* <li><code> LayerID</code></li> +* <li><code> LayerName</code></li> +* <li><code> Printable</code></li> +* <li><code> MoveProtect</code></li> +* <li><code> Name</code></li> +* <li><code> SizeProtect</code></li> +* <li><code> Style</code></li> +* <li><code> Transformation</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'Style1', 'Style2'</code> +* (of type <code>com.sun.star.style.XStyle</code>): +* relations used to change property 'Style'</li> +* <ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.Shape +*/ +public class _Shape extends MultiPropertyTest { + + XStyle style1 = null; + XStyle style2 = null; + + /** + * Custom tester which switches between two styles. + */ + protected PropertyTester StyleTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + if (util.ValueComparer.equalValue(oldValue,style1)) + return style2; else + return style1; + } + } ; + + /** + * Custom tester for 'LayerName' property which switches two + * Strings ('layout' and 'controls'). + */ + protected PropertyTester StringTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + if (util.ValueComparer.equalValue(oldValue,"layout")) + return "controls"; else + return "layout"; + } + } ; + + /** + * Tested with custom StyleTester which switches between two + * styles. + */ + public void _Style() { + log.println("Testing with custom Property tester") ; + style1 = (XStyle) tEnv.getObjRelation("Style1"); + style2 = (XStyle) tEnv.getObjRelation("Style2"); + testProperty("Style", StyleTester) ; + } + + /** + * Tested with custom StringTester which switches two + * Strings ('layout' and 'controls') + */ + public void _LayerName() { + if (tEnv.getTestCase().getObjectName().equals("SwXShape")) { + log.println("There is only one Layer for SwXShape"); + log.println("Therefore this property can't be changed"); + tRes.tested("LayerName",true); + } else if (tEnv.getTestCase().getObjectName().equals("ScShapeObj")) { + log.println("There is only one Layer for ScShapeObj"); + log.println("Therefore this property can't be changed"); + tRes.tested("LayerName",true); + } else if (tEnv.getTestCase().getObjectName().equals("ScAnnotationShapeObj")) { + log.println("There is only one Layer for ScAnnotationShapeObj"); + log.println("Therefore this property can't be changed"); + String aName = null; + try { + aName = (String) oObj.getPropertyValue ("LayerName"); + log.println("LayerName: '"+aName+"'"); + } catch (Exception e) { + e.printStackTrace (log); + } + tRes.tested("LayerName",aName != null); + } else { + log.println("Testing with custom Property tester") ; + testProperty("LayerName", StringTester) ; + } + } + + public void _ZOrder() { + if (tEnv.getTestCase().getObjectName().equals("ScAnnotationShapeObj")) { + log.println("There is only one Layer for ScAnnotationShapeObj"); + log.println("Therefore this property can't be changed"); + tRes.tested("ZOrder",true); + } else { + testProperty("ZOrder", Integer.valueOf(0), Integer.valueOf(1)); + } + } + + public void _LayerID() { + if (tEnv.getTestCase().getObjectName().equals("ScAnnotationShapeObj")) { + log.println("There is only one Layer for ScAnnotationShapeObj"); + log.println("Therefore this property can't be changed"); + Short aID = null; + try { + aID = (Short) oObj.getPropertyValue ("LayerID"); + log.println("LayerID: '"+aID.intValue ()+"'"); + } catch (Exception e) { + e.printStackTrace (log); + } + tRes.tested("LayerID",aID != null); + } else { + log.println("Testing with custom Property tester") ; + testProperty("LayerID"); + } + } + + +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_ShapeDescriptor.java b/qadevOOo/tests/java/ifc/drawing/_ShapeDescriptor.java new file mode 100644 index 0000000000..1ffc66ee26 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_ShapeDescriptor.java @@ -0,0 +1,134 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; +import util.ValueChanger; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.style.XStyle; +import com.sun.star.uno.UnoRuntime; + + +public class _ShapeDescriptor extends MultiMethodTest { + + public XPropertySet oObj = null; // oObj filled by MultiMethodTest + public boolean ro = false; + + public void _LayerID() { + com.sun.star.lang.XServiceInfo xInfo = UnoRuntime.queryInterface + (com.sun.star.lang.XServiceInfo.class, oObj); + if ( ! xInfo.supportsService("com.sun.star.drawing.ShapeDescriptor")) { + log.println("Service not available !!!!!!!!!!!!!"); + tRes.tested("Supported", false); + } + ro = true; + changeProp("LayerID"); + ro = false; + } + public void _LayerName() { + ro = true; + changeProp("LayerName"); + ro = false; + } + public void _MoveProtect() { + changeProp("MoveProtect"); + } + public void _Name() { + changeProp("Name"); + } + public void _Printable() { + changeProp("Printable"); + } + public void _SizeProtect() { + changeProp("SizeProtect"); + } + public void _Style() { + changeProp("Style"); + } + + public void _Transformation() { + changeProp("Transformation"); + } + + public void changeProp(String name) { + + Object gValue = null; + Object sValue = null; + Object ValueToSet = null; + + + try { + gValue = oObj.getPropertyValue(name); + if (!ro) { + ValueToSet = ValueChanger.changePValue(gValue); + if ( name.equals("Style") ) { + ValueToSet = newStyle(gValue); + } + oObj.setPropertyValue(name,ValueToSet); + sValue = oObj.getPropertyValue(name); + } + + //check get-set methods + if (gValue.equals(sValue)) { + log.println("Value for '"+name+"' hasn't changed"); + tRes.tested(name, false); + } else { + log.println("Property '"+name+"' OK"); + tRes.tested(name, true); + } + } catch (com.sun.star.beans.UnknownPropertyException ex) { + if (isOptional(name)) { + log.println("Property '"+name+ + "' is optional and not supported"); + tRes.tested(name,true); + } else { + log.println("Exception occurred while testing property '" + + name + "'"); + ex.printStackTrace(log); + tRes.tested(name, false); + } + } + catch (Exception e) { + log.println("Exception occurred while testing property '" + + name + "'"); + e.printStackTrace(log); + tRes.tested(name, false); + } + + + }// end of changeProp + + public XStyle newStyle(Object oldStyle) { + XStyle Style1 = (XStyle) tEnv.getObjRelation("Style1"); + XStyle Style2 = (XStyle) tEnv.getObjRelation("Style2"); + XStyle back = null; + if ( (Style1!=null) && (Style2!=null) ) { + if ( ((XStyle) oldStyle).equals(Style1) ) { + back = Style2; + } else { + back = Style1; + } + } + return back; + } + +} + + diff --git a/qadevOOo/tests/java/ifc/drawing/_Text.java b/qadevOOo/tests/java/ifc/drawing/_Text.java new file mode 100644 index 0000000000..9ffffab6ee --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_Text.java @@ -0,0 +1,61 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +public class _Text extends MultiPropertyTest { + + @Override + protected boolean compare(Object ob1, Object ob2) { + + return super.compare(ob1, ob2); + + } + + public void _NumberingRules() { + //This property is readOnly + boolean bResult = false; + + try { + Object theRules2 = oObj.getPropertyValue( "NumberingRules" ); + if (!(theRules2 instanceof com.sun.star.container.XIndexReplace)) { + log.println("Property 'NumberingRules' is an instance of "+ + theRules2.getClass().getName()); + log.println("Expected was an instance of "+ + "com.sun.star.container.XIndexReplace"); + } + log.println("Trying to cast property 'NumberingRules' "+ + "to XIndexReplace"); + oObj.getPropertyValue( "NumberingRules" ); + bResult = true; + } catch( Exception e ) { + log.println("Error occurred while trying to get property"+ + " 'NumberingRules'"); + e.printStackTrace( log ); + bResult = false; + } + + tRes.tested( "NumberingRules", bResult); + } + +} // finish class _Text + + + diff --git a/qadevOOo/tests/java/ifc/drawing/_TextProperties.java b/qadevOOo/tests/java/ifc/drawing/_TextProperties.java new file mode 100644 index 0000000000..29f40c01a5 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_TextProperties.java @@ -0,0 +1,58 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.drawing.TextProperties</code> +* service properties : +* <ul> +* <li><code> IsNumbering</code></li> +* <li><code> NumberingRules</code></li> +* <li><code> TextAutoGrowHeight</code></li> +* <li><code> TextAutoGrowWidth</code></li> +* <li><code> TextContourFrame</code></li> +* <li><code> TextFitToSize</code></li> +* <li><code> HorizontalAdjust</code></li> +* <li><code> VerticalAdjust</code></li> +* <li><code> TextLeftDistance</code></li> +* <li><code> TextRightDistance</code></li> +* <li><code> TextUpperDistance</code></li> +* <li><code> TextLowerDistance</code></li> +* <li><code> TextMaximumFrameHeight</code></li> +* <li><code> TextMaximumFrameWidth</code></li> +* <li><code> TextMinimumFrameHeight</code></li> +* <li><code> TextMinimumFrameWidth</code></li> +* <li><code> TextAnimationAmount</code></li> +* <li><code> TextAnimationCount</code></li> +* <li><code> TextAnimationDelay</code></li> +* <li><code> TextAnimationDirection</code></li> +* <li><code> TextAnimationKind</code></li> +* <li><code> TextAnimationStartInside</code></li> +* <li><code> TextAnimationStopInside</code></li> +* <li><code> TextWritingMode</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.TextProperties +*/ +public class _TextProperties extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_TextShape.java b/qadevOOo/tests/java/ifc/drawing/_TextShape.java new file mode 100644 index 0000000000..e2a5c8a22f --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_TextShape.java @@ -0,0 +1,35 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.drawing.TextShape</code> +* service properties : +* <ul> +* <li><code> CornerRadius</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.drawing.TextShape +*/ +public class _TextShape extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_TextShapeDescriptor.java b/qadevOOo/tests/java/ifc/drawing/_TextShapeDescriptor.java new file mode 100644 index 0000000000..3a4012399a --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_TextShapeDescriptor.java @@ -0,0 +1,27 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiPropertyTest; + + +public class _TextShapeDescriptor extends MultiPropertyTest { + +} // finish class _TextShapeDescriptor + diff --git a/qadevOOo/tests/java/ifc/drawing/_XConnectorShape.java b/qadevOOo/tests/java/ifc/drawing/_XConnectorShape.java new file mode 100644 index 0000000000..ef9395f33c --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XConnectorShape.java @@ -0,0 +1,139 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.drawing.ConnectionType; +import com.sun.star.drawing.XConnectableShape; +import com.sun.star.drawing.XConnectorShape; +import com.sun.star.drawing.XShape; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.drawing.XConnectorShape</code> +* interface methods : +* <ul> +* <li><code> connectStart()</code></li> +* <li><code> connectEnd()</code></li> +* <li><code> disconnectBegin()</code></li> +* <li><code> disconnectEnd()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XConnectorShape.Shapes'</code> +* (of type <code>com.sun.star.drawing.XShape[]</code>): +* an array of two shapes which <b>must</b> implement +* <code>com.sun.star.drawing.XConnectableShape</code> +* interface and are used for being connected by +* connector shape.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XConnectorShape +*/ +public class _XConnectorShape extends MultiMethodTest { + + public XConnectorShape oObj = null; //oObj filled by MultiMethodTest + private XConnectableShape shape1 = null, + shape2 = null ; + + /** + * Retrieves object relation. + * @throw StatusException If the relation is not found or shapes don't + * support <code>XConnectableShape</code> interface. + */ + @Override + public void before() { + log.println("No shapes implementing XConnectableShape still found."); + XShape[] shapes = (XShape[]) + tEnv.getObjRelation("XConnectorShape.Shapes") ; + if (shapes == null) throw new StatusException(Status.failed + ("Relation not found.")) ; + shape1 = UnoRuntime.queryInterface + (XConnectableShape.class, shapes[0]) ; + shape2 = UnoRuntime.queryInterface + (XConnectableShape.class, shapes[1]) ; + if (shape1 == null || shape2 == null) throw new StatusException + (Status.failed("Shapes don't implement XConnectableShape"+ + " interface.")) ; + } + + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _connectStart() { + oObj.connectStart(shape1, ConnectionType.AUTO); + + tRes.tested("connectStart()", true) ; + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _connectEnd() { + oObj.connectEnd(shape2, ConnectionType.AUTO); + + tRes.tested("connectEnd()", true) ; + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> connectStart() </code> : first shape needs to be + * connected. </li> + * </ul> + */ + public void _disconnectBegin() { + requiredMethod("connectStart()"); + + oObj.disconnectBegin(shape1); + + tRes.tested("disconnectBegin()", true) ; + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> connectEnd() </code> : first shape needs to be + * connected. </li> + * </ul> + */ + public void _disconnectEnd() { + requiredMethod("connectEnd()"); + + oObj.disconnectEnd(shape2); + + tRes.tested("disconnectEnd()", true) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/drawing/_XControlShape.java b/qadevOOo/tests/java/ifc/drawing/_XControlShape.java new file mode 100644 index 0000000000..fadf945a86 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XControlShape.java @@ -0,0 +1,96 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; +import util.FormTools; + +import com.sun.star.awt.XControlModel; +import com.sun.star.drawing.XControlShape; +import com.sun.star.lang.XComponent; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Testing <code>com.sun.star.drawing.XControlShape</code> +* interface methods : +* <ul> +* <li><code> getControl()</code></li> +* <li><code> setControl()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'xDoc'</code> (of type <code>XComponent</code>): +* the document where shape tested is situated. This document +* must also implement <code>XMultiServiceFactory</code> interface +* to create some control model. </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XControlShape +*/ +public class _XControlShape extends MultiMethodTest { + + public XControlShape oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _getControl() { + oObj.getControl(); + tRes.tested("getControl()", true) ; + } + + /** + * With the help of document passed as relation, a new button control + * model is created and set as a control. <p> + * Has <b> OK </b> status if <code>getControl()</code> method returns + * the same control as was set. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getControl() </code> </li> + * </ul> + */ + public void _setControl() + throws com.sun.star.uno.Exception + { + requiredMethod("getControl()") ; + + XInterface oNewControl = FormTools.createControl + ((XComponent)tEnv.getObjRelation("xDoc"), "ComboBox") ; + + XControlModel xControl = UnoRuntime.queryInterface + (XControlModel.class, oNewControl) ; + + oObj.setControl(xControl) ; + + XControlModel gControl = oObj.getControl() ; + + if (oNewControl.equals(gControl)) + tRes.tested("setControl()", true) ; + else { + log.println("Control set is not equal to control get") ; + tRes.tested("setControl()", false) ; + } + } + +} // finish class _XControlShape + + diff --git a/qadevOOo/tests/java/ifc/drawing/_XDrawPageDuplicator.java b/qadevOOo/tests/java/ifc/drawing/_XDrawPageDuplicator.java new file mode 100644 index 0000000000..75073765b3 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XDrawPageDuplicator.java @@ -0,0 +1,81 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; + +import com.sun.star.drawing.XDrawPage; +import com.sun.star.drawing.XDrawPageDuplicator; +import com.sun.star.drawing.XDrawPages; +import com.sun.star.drawing.XDrawPagesSupplier; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + + +/** +* Testing <code>com.sun.star.drawing.XDrawPageDuplicator</code> +* interface methods : +* <ul> +* <li><code> duplicate()</code></li> +* </ul> <p> +* The object tested <b> must implement </b> +* <code>XDrawPagesSupplier</code> interface to have access to draw +* pages collection. <p> +* Test is <b> NOT </b> multithread compliant. <p> +* After test completion object environment has to be recreated. +* @see com.sun.star.drawing.XDrawPageDuplicator +*/ +public class _XDrawPageDuplicator extends MultiMethodTest { + public XDrawPageDuplicator oObj = null; + + /** + * First queries object tested for <code>XDrawPagesSupplier</code> + * interface and obtains one draw page from document. Then it + * tries to duplicate it.<p> + * Has <b> OK </b> status if the method returns not null value and + * this value is not equal to the page which was duplicated. <p> + */ + public void _duplicate(){ + boolean result = false; + XInterface testobj = tEnv.getTestObject(); + XDrawPagesSupplier PS = UnoRuntime.queryInterface(XDrawPagesSupplier.class, testobj); + XDrawPages DPs = PS.getDrawPages(); + XDrawPage DP = null; + try { + DP = (XDrawPage) AnyConverter.toObject( + new Type(XDrawPage.class),DPs.getByIndex(0)); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while testing: " + e); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception occurred while testing: " + e); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception occurred while testing: " + e); + } + + if (DP != null) { + XDrawPage newPage = oObj.duplicate(DP); + result = (newPage != null) && !(newPage.equals(DP)); + } + tRes.tested("duplicate()", result); + } + +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_XDrawPageSupplier.java b/qadevOOo/tests/java/ifc/drawing/_XDrawPageSupplier.java new file mode 100644 index 0000000000..dd4b20601e --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XDrawPageSupplier.java @@ -0,0 +1,35 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.drawing; + +import com.sun.star.drawing.XDrawPage; +import com.sun.star.drawing.XDrawPageSupplier; +import lib.MultiMethodTest; + +/** + * + */ +public class _XDrawPageSupplier extends MultiMethodTest { + public XDrawPageSupplier oObj = null; + + public void _getDrawPage() { + XDrawPage xPage = oObj.getDrawPage(); + log.println("xPage: " + util.utils.getImplName(xPage)); + tRes.tested("getDrawPage()", xPage != null); + } +} diff --git a/qadevOOo/tests/java/ifc/drawing/_XDrawPages.java b/qadevOOo/tests/java/ifc/drawing/_XDrawPages.java new file mode 100644 index 0000000000..a2cf2c3b3c --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XDrawPages.java @@ -0,0 +1,85 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; + +import com.sun.star.drawing.XDrawPage; +import com.sun.star.drawing.XDrawPages; + +/** +* Testing <code>com.sun.star.drawing.XDrawPages</code> +* interface methods : +* <ul> +* <li><code> insertNewByIndex()</code></li> +* <li><code> remove()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XDrawPages +*/ +public class _XDrawPages extends MultiMethodTest { + public XDrawPages oObj = null; + public XDrawPage DrawPage; + + /** + * Inserts a draw page at index 0. Number of pages is obtained + * before and after insertion.<p> + * Has <b> OK </b> status if the value returned is not null and + * number of pages increases by one after insertion. <p> + */ + public void _insertNewByIndex(){ + boolean result = true; + log.println("testing insertNewByIndex() ... "); + + int cntBefore = oObj.getCount(); + DrawPage = oObj.insertNewByIndex(0); + int cntAfter = oObj.getCount(); + result = DrawPage != null && + cntAfter == cntBefore + 1 ; + + tRes.tested("insertNewByIndex()", result); + } // end InsertNewByIndex + + /** + * Removes the draw page inserted before. Number of pages is obtained + * before and after removing.<p> + * Has <b> OK </b> status if the number of pages decreases by one + * after removing. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> insertByIndex() </code> : the page to be removed must + * be inserted first.</li> + * </ul> + */ + public void _remove(){ + requiredMethod("insertNewByIndex()") ; + + boolean result = true; + log.println("removing DrawPage..."); + + int cntBefore = oObj.getCount(); + oObj.remove(DrawPage); + int cntAfter = oObj.getCount(); + result = cntAfter + 1 == cntBefore ; + + tRes.tested("remove()", result); + } // end remove() + +} // end XDrawPages + diff --git a/qadevOOo/tests/java/ifc/drawing/_XDrawPagesSupplier.java b/qadevOOo/tests/java/ifc/drawing/_XDrawPagesSupplier.java new file mode 100644 index 0000000000..8350f665db --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XDrawPagesSupplier.java @@ -0,0 +1,55 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; + +import com.sun.star.drawing.XDrawPages; +import com.sun.star.drawing.XDrawPagesSupplier; + +/** +* Testing <code>com.sun.star.drawing.XDrawPagesSupplier</code> +* interface methods : +* <ul> +* <li><code> getDrawPages()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XDrawPagesSupplier +*/ +public class _XDrawPagesSupplier extends MultiMethodTest { + public XDrawPagesSupplier oObj = null; + + /** + * Gets draw page collection. <p> + * Has <b> OK </b> status if the value returned is not null. <p> + */ + public void _getDrawPages(){ + boolean result = true; + XDrawPages DrawPages = null; + + log.println("testing getDrawPages() ... "); + + DrawPages = oObj.getDrawPages(); + result = DrawPages != null; + + tRes.tested("getDrawPages()", result); + } + +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_XDrawView.java b/qadevOOo/tests/java/ifc/drawing/_XDrawView.java new file mode 100644 index 0000000000..30f54f67da --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XDrawView.java @@ -0,0 +1,104 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; + +import com.sun.star.drawing.XDrawPage; +import com.sun.star.drawing.XDrawPages; +import com.sun.star.drawing.XDrawView; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; + +/** +* Testing <code>com.sun.star.drawing.XDrawView</code> +* interface methods : +* <ul> +* <li><code> setCurrentPage()</code></li> +* <li><code> getCurrentPage()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'Pages'</code> (of type <code>XDrawPages</code>): +* needed to have the access to pages collection.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XDrawView +*/ +public class _XDrawView extends MultiMethodTest { + + public XDrawView oObj = null; + public XDrawPage the_page = null; + + /** + * This methods gets the current DrawPage.<p> + * Has <b> OK </b> status if the returned DrawPage + * isn't empty. + */ + public void _getCurrentPage(){ + the_page = oObj.getCurrentPage(); + tRes.tested("getCurrentPage()",the_page != null); + } // end getCurrentPage + + /** + * This methods sets the current DrawPage<br> + * First a new DrawPage is inserted in the document. + * Then this DrawPage is set as current Page. + * Has <b> OK </b> status if the getCurrentPage() method returns + * the DrawPage that was previously set. + * @see ifc.drawing._XDrawPages + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getCurrentPage() </code> </li> + * </ul> + */ + public void _setCurrentPage(){ + requiredMethod("getCurrentPage()"); + try { + XDrawPages the_pages = (XDrawPages) tEnv.getObjRelation("Pages"); + the_pages.insertNewByIndex(0); + XDrawPage newPage = (XDrawPage) AnyConverter.toObject( + new Type(XDrawPage.class),the_pages.getByIndex(1)); + oObj.setCurrentPage(newPage); + XDrawPage getting = oObj.getCurrentPage(); + boolean eq = newPage.equals(getting); + if (!eq) { + log.println("Getting: "+getting.hasElements()); + log.println("Expected: "+newPage.hasElements()); + } + //back to the previous page + oObj.setCurrentPage(the_page); + tRes.tested("setCurrentPage()",eq); + } catch (com.sun.star.lang.WrappedTargetException ex) { + log.println("Exception occurred while checking 'setCurrentPage()'"); + ex.printStackTrace(log); + tRes.tested("setCurrentPage()",false); + } catch (com.sun.star.lang.IndexOutOfBoundsException ex) { + log.println("Exception occurred while checking 'setCurrentPage()'"); + ex.printStackTrace(log); + tRes.tested("setCurrentPage()",false); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception occurred while checking 'setCurrentPage()'"); + ex.printStackTrace(log); + tRes.tested("setCurrentPage()",false); + } + } // end setCurrentPage + +} // end DrawView + diff --git a/qadevOOo/tests/java/ifc/drawing/_XGluePointsSupplier.java b/qadevOOo/tests/java/ifc/drawing/_XGluePointsSupplier.java new file mode 100644 index 0000000000..c29963f5d7 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XGluePointsSupplier.java @@ -0,0 +1,55 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; + +import com.sun.star.container.XIndexContainer; +import com.sun.star.drawing.XGluePointsSupplier; + +/** +* Testing <code>com.sun.star.drawing.XGluePointsSupplier</code> +* interface methods : +* <ul> +* <li><code> getGluePoints()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XGluePointsSupplier +*/ +public class _XGluePointsSupplier extends MultiMethodTest { + public XGluePointsSupplier oObj = null; + + /** + * Gets gluepoints collection. <p> + * Has <b> OK </b> status if the value returned is not null. <p> + */ + public void _getGluePoints(){ + boolean result = true; + XIndexContainer points = null; + + log.println("testing getDrawPages() ... "); + + points = oObj.getGluePoints(); + result = points != null; + + tRes.tested("getGluePoints()", result); + } + +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_XLayerManager.java b/qadevOOo/tests/java/ifc/drawing/_XLayerManager.java new file mode 100644 index 0000000000..b44ce0fa70 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XLayerManager.java @@ -0,0 +1,157 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; +import util.ValueComparer; +import util.XInstCreator; + +import com.sun.star.drawing.XLayer; +import com.sun.star.drawing.XLayerManager; +import com.sun.star.drawing.XShape; +import com.sun.star.drawing.XShapes; +import com.sun.star.uno.XInterface; + +/** +* Testing <code>com.sun.star.drawing.XLayerManager</code> +* interface methods : +* <ul> +* <li><code> insertNewByIndex()</code></li> +* <li><code> remove()</code></li> +* <li><code> attachShapeToLayer()</code></li> +* <li><code> getLayerForShape()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'Shape'</code> (of type <code>util.XInstCreator</code>): +* instance creator which can create shapes.</li> +* <li> <code>'Shapes'</code> +* (of type <code>com.sun.star.drawing.XShapes</code>): +* The collection of shapes in the document. Is used +* to add new created shapes.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XLayerManager +*/ +public class _XLayerManager extends MultiMethodTest { + + public XLayerManager oObj = null; // oObj filled by MultiMethodTest + XInstCreator shape = null; + public XInterface oShape = null; + public XLayer oL = null; + + /** + * Inserts a new layer into collection. <p> + * Has <b> OK </b> status if the value returned is not null. <p> + */ + public void _insertNewByIndex(){ + log.println("insertNewByName() ... "); + oL = oObj.insertNewByIndex(0); + tRes.tested("insertNewByIndex()", oL != null); + } + + /** + * First a shape created and inserted into the document using + * relations retrieved. Attaches this shape to layer created before. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> insertNewByIndex </code> : to have a layer attach to.</li> + * </ul> + */ + public void _attachShapeToLayer() { + requiredMethod("insertNewByIndex()"); + shape = (XInstCreator)tEnv.getObjRelation("Shape"); + oShape = shape.createInstance(); + XShape oSh = (XShape) oShape; + XShapes oShapes = (XShapes) tEnv.getObjRelation("Shapes"); + oShapes.add(oSh); + boolean result = false; + + log.println("attachShapeToLayer() ... "); + + oObj.attachShapeToLayer((XShape) oShape,oL); + result = true; + + tRes.tested("attachShapeToLayer()", result); + } + + /** + * Gets the layer for shape which was attached before. <p> + * Has <b> OK </b> status if the names of layer get and + * the layer attached before are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> attachShapeToLayer() </code> </li> + * </ul> + */ + public void _getLayerForShape() { + requiredMethod("attachShapeToLayer()"); + log.println("getLayerForShape() ... "); + XLayer Lay1 = oL; + XLayer Lay2 = oObj.getLayerForShape((XShape)oShape); + Object Obj1 = null; + Object Obj2 = null; + + try { + Obj1 = Lay1.getPropertyValue("Name"); + Obj2 = Lay2.getPropertyValue("Name"); + } catch (com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + } catch (com.sun.star.beans.UnknownPropertyException e) { + e.printStackTrace(log); + } + + tRes.tested("getLayerForShape()",ValueComparer.equalValue(Obj1,Obj2)); + } + + /** + * Test removes the layer added before. Number of layers are get before + * and after removing.<p> + * Has <b> OK </b> status if number of layers decreases by one. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getLayerForShape() </code> </li> + * </ul> + */ + public void _remove () { + requiredMethod("getLayerForShape()"); + boolean result = true ; + // get the current thread's holder + log.println("removing the Layer..."); + + int cntBefore = oObj.getCount(); + + try { + oObj.remove(oL); + } catch (com.sun.star.container.NoSuchElementException e) { + e.printStackTrace(log); + result = false; + } + + int cntAfter = oObj.getCount(); + + result = cntBefore == cntAfter + 1; + + tRes.tested("remove()", result); + } +} + + diff --git a/qadevOOo/tests/java/ifc/drawing/_XLayerSupplier.java b/qadevOOo/tests/java/ifc/drawing/_XLayerSupplier.java new file mode 100644 index 0000000000..ced5953eea --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XLayerSupplier.java @@ -0,0 +1,60 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; + +import com.sun.star.container.XNameAccess; +import com.sun.star.drawing.XLayerManager; +import com.sun.star.drawing.XLayerSupplier; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.drawing.XLayerSupplier</code> +* interface methods : +* <ul> +* <li><code> getLayerManager()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XLayerSupplier +*/ +public class _XLayerSupplier extends MultiMethodTest{ + public XLayerSupplier oObj = null; + + /** + * Gets the manager and it is queried for <code>XLayerManager</code>. <p> + * Has <b> OK </b> status if returned value is successfully + * queried for <code>XLayerManager</code>. <p> + */ + public void _getLayerManager(){ + XNameAccess oNA =null; + XLayerManager oLM = null; + boolean result = true; + + log.println("testing getLayerManager() ... "); + + oNA = oObj.getLayerManager(); + oLM = UnoRuntime.queryInterface ( XLayerManager.class, oNA); + result = oLM != null; + + tRes.tested("getLayerManager()", result); + } // finished test + +} // end XLayerSupplier + diff --git a/qadevOOo/tests/java/ifc/drawing/_XMasterPageTarget.java b/qadevOOo/tests/java/ifc/drawing/_XMasterPageTarget.java new file mode 100644 index 0000000000..a1716bbe57 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XMasterPageTarget.java @@ -0,0 +1,99 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; + +import com.sun.star.drawing.XDrawPage; +import com.sun.star.drawing.XDrawPages; +import com.sun.star.drawing.XMasterPageTarget; + +/** +* Testing <code>com.sun.star.drawing.XMasterPageTarget</code> +* interface methods : +* <ul> +* <li><code> getMasterPage()</code></li> +* <li><code> setMasterPage()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'MasterPageSupplier'</code> +* (of type <code>XDrawPages</code>): +* the relation is used to create a new draw page. </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XMasterPageTarget +*/ +public class _XMasterPageTarget extends MultiMethodTest{ + + public XMasterPageTarget oObj = null; + public XDrawPage DrawPage = null; + + /** + * Gets the master page and stores. <p> + * Has <b> OK </b> status if the value returned is not null. <p> + */ + public void _getMasterPage(){ + boolean result = false; + log.println("get the MasterPage"); + + DrawPage = oObj.getMasterPage(); + result = DrawPage != null ; + + tRes.tested("getMasterPage()",result); + } + + /** + * Gets the pages supplier from relation. Then a new page is created, + * inserted and set as master page.<p> + * Has <b> OK </b> status if the master page get is equal to page + * which was set. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getMasterPage() </code> : to get old master page.</li> + * </ul> + */ + public void _setMasterPage() { + requiredMethod("getMasterPage()") ; + + boolean result = true; + XDrawPage oNewPage = null; + + XDrawPages oPages = (XDrawPages) tEnv.getObjRelation("MasterPageSupplier"); + log.println("inserting new MasterPage"); + oNewPage = oPages.insertNewByIndex(oPages.getCount()); + + // save the old MasterPage + XDrawPage oOldPage = DrawPage; + + // set the new Page as MasterPage + log.println("set the new MasterPage"); + oObj.setMasterPage(oNewPage); + + // get the new MasterPage + DrawPage = oObj.getMasterPage(); + + // test the different MasterPages + if (DrawPage.equals(oOldPage)) result = false; + + tRes.tested("setMasterPage()",result); + } + +} // end of XMasterPageTarget + diff --git a/qadevOOo/tests/java/ifc/drawing/_XMasterPagesSupplier.java b/qadevOOo/tests/java/ifc/drawing/_XMasterPagesSupplier.java new file mode 100644 index 0000000000..313f0f1425 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XMasterPagesSupplier.java @@ -0,0 +1,54 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; + +import com.sun.star.drawing.XDrawPages; +import com.sun.star.drawing.XMasterPagesSupplier; + +/** +* Testing <code>com.sun.star.drawing.XMasterPagesSupplier</code> +* interface methods : +* <ul> +* <li><code> getMasterPages()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XMasterPagesSupplier +*/ +public class _XMasterPagesSupplier extends MultiMethodTest{ + public XMasterPagesSupplier oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the value returned is not null. + */ + public void _getMasterPages(){ + boolean result = false; + XDrawPages DrawPages = null; + + log.println("get the MasterPages"); + + DrawPages = oObj.getMasterPages(); + result = DrawPages != null; + + tRes.tested("getMasterPages()",result); + } +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_XShape.java b/qadevOOo/tests/java/ifc/drawing/_XShape.java new file mode 100644 index 0000000000..8f6b5d791e --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XShape.java @@ -0,0 +1,186 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; + +import com.sun.star.awt.Point; +import com.sun.star.awt.Size; +import com.sun.star.drawing.XShape; + +/** +* Testing <code>com.sun.star.drawing.XShape</code> +* interface methods : +* <ul> +* <li><code> getPosition()</code></li> +* <li><code> setPosition()</code></li> +* <li><code> getSize()</code></li> +* <li><code> setSize()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'NoPos'</code> <b>optional</b> +* (of type <code>Object</code>): +* if this relation exists then position setting is +* not supported by the object.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XShape +*/ +public class _XShape extends MultiMethodTest { + + public XShape oObj = null; //oObj filled by MultiMethodTest + + Size sOld = new Size(); + Point pOld = new Point(); + Size sNew = new Size(); + Point pNew = new Point(); + + /** + * Gets the size and stores it. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _getSize(){ + + boolean result = false; + + log.println("get the size"); + + sOld = oObj.getSize(); + result = true; + + tRes.tested("getSize()", result); + } + + /** + * Gets the current position and stores it if the object + * supports position setting. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown or object doesn't + * support position setting. <p> + */ + public void _getPosition(){ + boolean result = false; + + String obj = (String) tEnv.getObjRelation("NoPos"); + if (obj != null) { + log.println("Can't be used with "+obj); + result = true; + tRes.tested("getPosition()", result); + return; + } + + log.println("get the position"); + pOld = oObj.getPosition(); + result = true; + + tRes.tested("getPosition()", result); + } + + /** + * Sets a new size different from the size get before. <p> + * Has <b> OK </b> status if the size returned by <code>getSize()</code> + * is equal to the size which was set. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getSize() </code> : to set the original size changed.</li> + * </ul> + */ + public void _setSize(){ + requiredMethod("getSize()"); + + boolean result = true; + + String obj = (String) tEnv.getObjRelation("NoSetSize"); + if (obj != null) { + log.println("Can't be used with " + obj); + tRes.tested("setSize()", true); + return; + } + // get the current thread's holder + sNew = new Size(sOld.Width + 10,sOld.Height + 10) ; + + //set new size + log.println("change the size"); + try { + oObj.setSize(sNew); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("Exception while calling the method :" + e); + result = true ; + } + + Size gSize = oObj.getSize() ; + + log.println("Previously: "+sOld.Height+";"+sOld.Width); + log.println("Expected: "+sNew.Height+";"+sNew.Width); + log.println("Getting: "+gSize.Height+";"+gSize.Width); + + //errors in calculation from points/twips less than 1 are acceptable + result &= (sNew.Height-gSize.Height <= 2) && (sNew.Width-gSize.Width <= 2); + + if (result && ((sNew.Height-gSize.Height != 0) || (sNew.Width-gSize.Width != 0))){ + log.println("NOTE: there is a difference between the expected and the gotten value. " + + "This might be ok because of problems in calculation from points <-> twips"); + } + tRes.tested("setSize()", result); + } + + /** + * If object doesn't support position setting the test does nothing. + * Else a new position is created and set.<p> + * Has <b> OK </b> status if get position is equal to set position or + * if the position setting isn't supported. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getPosition() </code> : to change old position. </li> + * </ul> + */ + public void _setPosition(){ + requiredMethod("getPosition()"); + + boolean result = true; + + String obj = (String) tEnv.getObjRelation("NoPos"); + if (obj != null) { + log.println("Can't be used with " + obj); + tRes.tested("setPosition()", true); + return; + } + + // get the current thread's holder + pNew = new Point(pOld.X + 100, pOld.Y + 100) ; + oObj.setPosition(pNew); + + Point gPos = oObj.getPosition() ; + + log.println("Previously: "+pOld.X+";"+pOld.Y); + log.println("Expected: "+pNew.X+";"+pNew.Y); + log.println("Getting: "+gPos.X+";"+gPos.Y); + + result = !util.ValueComparer.equalValue(pOld, gPos) ; + + tRes.tested("setPosition()", result); + } + + +} // finish class _XShape + + + diff --git a/qadevOOo/tests/java/ifc/drawing/_XShapeBinder.java b/qadevOOo/tests/java/ifc/drawing/_XShapeBinder.java new file mode 100644 index 0000000000..5ebe37e1ca --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XShapeBinder.java @@ -0,0 +1,100 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; + +import com.sun.star.drawing.XDrawPage; +import com.sun.star.drawing.XShape; +import com.sun.star.drawing.XShapeBinder; +import com.sun.star.drawing.XShapes; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.drawing.XShapeBinder</code> +* interface methods : +* <ul> +* <li><code> bind()</code></li> +* <li><code> unbind()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'DrawPage'</code> (must implement <code>XShapes</code>): +* the collection of shapes in a document which used to create a group.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XShapeBinder +*/ +public class _XShapeBinder extends MultiMethodTest { + + public XShapeBinder oObj = null; + XShape group = null; + int countBeforeBind = 0; + XShapes oShapes = null; + + /** + * Retrieves draw page collection from relation and binds them. <p> + * + * Has <b> OK </b> status if the shape group returned is not null + * number of shapes in collection is 1 (shapes are bound into a single + * shape). <p> + */ + public void _bind () { + XDrawPage dp = (XDrawPage) tEnv.getObjRelation("DrawPage"); + oShapes = UnoRuntime.queryInterface( XShapes.class, dp ); + boolean result = false; + log.println("testing bind() ... "); + countBeforeBind = oShapes.getCount(); + log.println("Count before bind:" + countBeforeBind); + group = oObj.bind(oShapes); + int countAfterBind = oShapes.getCount(); + log.println("Count after bind:" + countAfterBind); + result = group != null && countAfterBind == 1; + + tRes.tested("bind()", result); + + } + + /** + * Unbinds the group created before. <p> + * + * Has <b> OK </b> status if number of shapes in collection + * increases after the method call. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> bind() </code> : to create a shape group </li> + * </ul> + */ + public void _unbind () { + requiredMethod("bind()"); + boolean result = false; + + // get the current thread's holder + log.println("unbinding the shape..."); + + oObj.unbind(group); + int countAfterUnbind = oShapes.getCount(); + log.println("Count after unbind:" + countAfterUnbind); + result = countAfterUnbind >= countBeforeBind; + + tRes.tested("unbind()", result); + } +} + diff --git a/qadevOOo/tests/java/ifc/drawing/_XShapeCombiner.java b/qadevOOo/tests/java/ifc/drawing/_XShapeCombiner.java new file mode 100644 index 0000000000..8cc1cf754b --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XShapeCombiner.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 ifc.drawing; + +import lib.MultiMethodTest; + +import com.sun.star.drawing.XDrawPage; +import com.sun.star.drawing.XShape; +import com.sun.star.drawing.XShapeCombiner; +import com.sun.star.drawing.XShapes; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.drawing.XShapeCombiner</code> +* interface methods : +* <ul> +* <li><code> combine()</code></li> +* <li><code> split()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'DrawPage'</code> (must implement <code>XShapes</code>): +* the collection of shapes in a document which used to create a group.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XShapeCombiner +*/ +public class _XShapeCombiner extends MultiMethodTest { + + public XShapeCombiner oObj = null; //filled by MultiMethodTest + protected XShape oGroup = null; + int countBeforeComb = 0; + XShapes oShapes = null; + + /** + * Retrieves draw page collection from relation and combines them. <p> + * Has <b> OK </b> status if the shape group returned is not null nd + * number of shapes in collection is 1 (shapes are combined into a single + * shape). <p> + */ + public void _combine () { + XDrawPage dp = (XDrawPage) tEnv.getObjRelation("DrawPage"); + oShapes = UnoRuntime.queryInterface( XShapes.class, dp ); + + boolean result = false; + + log.println("testing combine() ... "); + countBeforeComb = oShapes.getCount(); + log.println("Count before combining:" + countBeforeComb); + oGroup = oObj.combine(oShapes); + int countAfterComb = oShapes.getCount(); + log.println("Count after combining:" + countAfterComb); + result = oGroup != null && countAfterComb == 1; + + tRes.tested("combine()", result); + } + + /** + * Splits the group created before. <p> + * + * Has <b> OK </b> status if number of shapes in collection after + * <code>split</code> is the same as before <code>combine</code>. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> combine() </code> : to create a shape group </li> + * </ul> + */ + public void _split() { + requiredMethod("combine()"); + + boolean result = false; + + log.println("splitting the shape..."); + + oObj.split(oGroup); + int countAfterSplit = oShapes.getCount(); + log.println("Count after split:" + countAfterSplit); + result = countAfterSplit == countBeforeComb; + + tRes.tested("split()", result); + } // end of split + +} // end of XShapeCombiner + diff --git a/qadevOOo/tests/java/ifc/drawing/_XShapeDescriptor.java b/qadevOOo/tests/java/ifc/drawing/_XShapeDescriptor.java new file mode 100644 index 0000000000..ef088b91c3 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XShapeDescriptor.java @@ -0,0 +1,87 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; + +import com.sun.star.drawing.XShapeDescriptor; +import com.sun.star.lang.XServiceInfo; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.drawing.XShapeDescriptor</code> +* interface methods : +* <ul> +* <li><code> getShapeType()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XShapeDescriptor +*/ +public class _XShapeDescriptor extends MultiMethodTest { + + public XShapeDescriptor oObj = null; + boolean result = true; + + /** + * Gets the type of shape. This type must be a service name which + * is supported by object (except of ChartObject and Frame shapes). + * The object is queried for <code>XServiceInfo</code> and + * the type is checked to be among supported service names.<p> + * + * Has <b> OK </b> status if the type is found among supported + * services. Or if the object represents a text frame.<p> + */ + public void _getShapeType() { + result = false; + + String stype = oObj.getShapeType(); + log.println("Current Shape Type is " + stype); + + XServiceInfo SI = UnoRuntime.queryInterface(XServiceInfo.class, oObj); + + String[] serviceNames = SI.getSupportedServiceNames(); + + log.println("Supported services :"); + for (int i = 0; i < serviceNames.length; i++) { + log.println(" " + serviceNames[i]); + if (serviceNames[i].equals(stype)) + result = true; + } + + //remark: we should provide the expected name as ObjRelation + + //Chart has its own behaviour it always return 'ChartObject' + if (stype.equals("com.sun.star.chart.ChartObject")) result=true; + if (stype.equals("com.sun.star.drawing.ControlShape")) result=true; + if (stype.equals("com.sun.star.drawing.ClosedBezierShape")) result=true; + if (stype.equals("com.sun.star.drawing.CaptionShape")) result=true; + + //Writer has its own behaviour it returns a 'FrameShape' + if (stype.equals("FrameShape")) result=true; + + if (!result) { + log.println("Service " + stype + " not supported in the object."); + } + + tRes.tested("getShapeType()", result); + } + +} + + diff --git a/qadevOOo/tests/java/ifc/drawing/_XShapeGroup.java b/qadevOOo/tests/java/ifc/drawing/_XShapeGroup.java new file mode 100644 index 0000000000..883bd1481f --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XShapeGroup.java @@ -0,0 +1,61 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; + +import com.sun.star.drawing.XShapeGroup; + +/** +* Testing <code>com.sun.star.drawing.XShapeGroup</code> +* interface methods : +* <ul> +* <li><code> enterGroup()</code></li> +* <li><code> leaveGroup()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XShapeGroup +*/ +public class _XShapeGroup extends MultiMethodTest { + public XShapeGroup oObj = null; + + /** + * The method called. + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _enterGroup() { + log.println("Testing enterGroup()..."); + oObj.enterGroup(); + tRes.tested("enterGroup()", true); + } + + /** + * The method called. + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _leaveGroup() { + log.println("Testing leaveGroup()..."); + oObj.leaveGroup(); + tRes.tested("leaveGroup()", true); + } + +} // end of _XShapeGroup + diff --git a/qadevOOo/tests/java/ifc/drawing/_XShapeGrouper.java b/qadevOOo/tests/java/ifc/drawing/_XShapeGrouper.java new file mode 100644 index 0000000000..26b5045d1a --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XShapeGrouper.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 ifc.drawing; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.drawing.XShape; +import com.sun.star.drawing.XShapeGroup; +import com.sun.star.drawing.XShapeGrouper; +import com.sun.star.drawing.XShapes; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.drawing.XShapeGrouper</code> +* interface methods : +* <ul> +* <li><code> group()</code></li> +* <li><code> ungroup()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'DrawPage'</code> (must implement <code>XShapes</code>): +* the collection of shapes in a document which used to create a group.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XShapeGrouper +*/ +public class _XShapeGrouper extends MultiMethodTest { + + public XShapeGrouper oObj = null; // oObj filled by MultiMethodTest + XShape oGroup = null; + int countAfterGr = 0; + XShapes oShapes = null; + + /** + * Retrieves draw page collection from relation and groups them. <p> + * Has <b> OK </b> status if the shape group returned is not null. <p> + */ + public void _group() { + Object dp = tEnv.getObjRelation("DrawPage"); + if (dp == null) + throw new StatusException(Status.failed("Relation not found")) ; + + oShapes = UnoRuntime.queryInterface( XShapes.class, dp ); + boolean result = false; + log.println("Grouping " + oShapes.getCount() + " shapes ... "); + + int countBeforeGr = oShapes.getCount(); + oGroup = oObj.group(oShapes); + countAfterGr = oShapes.getCount(); + log.println("Number of shapes after grouping: " + countAfterGr); + result = oGroup != null ; + result &= countAfterGr < countBeforeGr; + + tRes.tested("group()", result); + } + + /** + * Ungroups the group created before. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> group() </code> : to create a shape group </li> + * </ul> + */ + public void _ungroup() { + requiredMethod("group()"); + boolean result = false; + log.println("ungrouping the shape..."); + + oObj.ungroup((XShapeGroup)oGroup); + int countAfterUnGr = oShapes.getCount(); + log.println("Number of shapes after ungrouping: " + countAfterUnGr); + + result = countAfterUnGr != countAfterGr; + + tRes.tested("ungroup()", result); + } +} + + + diff --git a/qadevOOo/tests/java/ifc/drawing/_XShapes.java b/qadevOOo/tests/java/ifc/drawing/_XShapes.java new file mode 100644 index 0000000000..fc23687b88 --- /dev/null +++ b/qadevOOo/tests/java/ifc/drawing/_XShapes.java @@ -0,0 +1,100 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.drawing; + +import lib.MultiMethodTest; +import util.XInstCreator; + +import com.sun.star.drawing.XShape; +import com.sun.star.drawing.XShapes; +import com.sun.star.uno.XInterface; + + +/** +* Testing <code>com.sun.star.drawing.XShapes</code> +* interface methods : +* <ul> +* <li><code> add()</code></li> +* <li><code> remove()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'Shape'</code> (of type <code>XShape</code>): +* a shape which can be inserted into shape collection. </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.drawing.XShapes +*/ +public class _XShapes extends MultiMethodTest { + + public XShapes oObj = null; // oObj filled by MultiMethodTest + XInstCreator shape = null; + XInterface oShape = null; + + + /** + * Retrieves a shape from relation and adds it to the collection. + * Number of shapes is checked before and after adding.<p> + * Has <b> OK </b> status if after adding number of shapes increases by + * 1. <p> + */ + public void _add () { + + boolean result = false; + shape = (XInstCreator)tEnv.getObjRelation("Shape"); + oShape = shape.createInstance(); + XShape oSh = (XShape) oShape; + + log.println("testing add() ... "); + + int cntBefore = oObj.getCount(); + oObj.add(oSh); + int cntAfter = oObj.getCount(); + result = cntBefore + 1 == cntAfter ; + + tRes.tested("add()", result); + } + + /** + * Removes the shape added before from the collection. + * Number of shapes is checked before and after removing.<p> + * Has <b> OK </b> status if after removing number of shapes decreases by + * 1. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> add() </code> : a shape added. </li> + * </ul> + */ + public void _remove () { + requiredMethod("add()"); + boolean result = false; + + log.println("removing the shape..."); + + int cntBefore = oObj.getCount(); + oObj.remove((XShape) oShape); + int cntAfter = oObj.getCount(); + result = cntBefore == cntAfter + 1; + + tRes.tested("remove()", result); + } + +} + + diff --git a/qadevOOo/tests/java/ifc/form/_DataAwareControlModel.java b/qadevOOo/tests/java/ifc/form/_DataAwareControlModel.java new file mode 100644 index 0000000000..60dcd7f631 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_DataAwareControlModel.java @@ -0,0 +1,163 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form; + +import lib.MultiPropertyTest; +import util.utils; + +import com.sun.star.form.XLoadable; +import com.sun.star.uno.XInterface; + +/** +* Testing <code>com.sun.star.form.DataAwareControlModel</code> +* service properties : +* <ul> +* <li><code> DataField</code></li> +* <li><code> BoundField</code></li> +* <li><code> LabelControl</code></li> +* </ul> <p> +* This test need the following object relations : +* <ul> +* <li> <code>'FL'</code> as <code>com.sun.star.form.XLoadable</code> +* implementation : used to connect control to data source. </li> +* <li> <code>'LC'</code> as <code>com.sun.star.uno.XInterface</code> +* implementation : as value for LabelControl property (see property +* documentation). </li> +* <li> <code>'DataAwareControlModel.NewFieldName'</code> : +* <b>optional</b> <code>String</code> relation which is used +* for new value of DataField property.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* After test completion object environment has to be recreated. +* @see com.sun.star.form.DataAwareControlModel +*/ +public class _DataAwareControlModel extends MultiPropertyTest { + + /** + * First checks if <code>com.sun.star.form.DataAwareControlModel</code> + * service is supported by the object. Then <code>load</code> method + * of <code>'FL'</code> relation is called to connect control model + * to data source. Because the property is READONLY its value is + * just checked to be non null. After that model is disconnected. <p> + * Has <b> OK </b> status if the property has non null value. <p> + * The following property tests are to be completed successfully before : + * <ul> + * <li> <code> DataField </code> : to bind the control to some database + * field.</li> + * </ul> + */ + public void _BoundField() { + requiredMethod("DataField") ; + + // This property is TRANSIENT and READONLY. + boolean bResult = true; + Object gValue = null; + + // get the loader to load the form + XLoadable loader = (XLoadable) tEnv.getObjRelation("FL"); + + try { + if (loader.isLoaded()) { + loader.unload() ; + } + loader.load(); + gValue = oObj.getPropertyValue("BoundField"); + loader.unload(); + bResult &= gValue != null; + } catch(com.sun.star.beans.UnknownPropertyException e) { + e.printStackTrace(log) ; + bResult = false; + } catch(com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log) ; + bResult = false; + } + tRes.tested("BoundField", bResult); + } + + /** + * Sets the property to a Database field name, and then checks + * if it was properly set. If <code>'DataAwareControlModel.NewFieldName' + * </code> relation is not found, then new property value is + * 'Address'. <p> + * Has <b> OK </b> status if the property was properly set + * and no exceptions were thrown. If old and new values are equal + * the test is OK if no exceptions occurred and the value remains + * the same.<p> + */ + public void _DataField() { + String relVal = (String) tEnv.getObjRelation + ("DataAwareControlModel.NewFieldName") ; + final String newVal = relVal == null ? "Address" : relVal ; + testProperty("DataField", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object oldVal) { + return newVal ; + } + @Override + protected void checkResult(String propName, Object oldValue, + Object newValue, Object resValue, Exception exception) + throws java.lang.Exception{ + + if (exception == null && oldValue.equals(newValue)) { + boolean res = true ; + if (newValue.equals(resValue)) { + log.println("Old value is equal to new value ('" + + oldValue + "'). Possibly no other suitable fields found.") ; + } else { + log.println("The value was '" + oldValue + "', set to the" + + " same value, but result is '" + resValue + "' : FAILED") ; + res = false ; + } + + tRes.tested(propName, res) ; + } else { + super.checkResult(propName, oldValue, newValue, + resValue, exception); + } + } + }) ; + } + + /** + * Sets the new value (<code>'LC'</code> relation if <code>null</code> + * was before, and <code> null </code> otherwise and then checks if + * the value have successfully changed. <p> + * Has <b>OK</b> status if the value successfully changed. + */ + public void _LabelControl() { + final XInterface xTextLabel = (XInterface)tEnv.getObjRelation("LC"); + + testProperty("LabelControl", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object oldVal) { + if (utils.isVoid(oldVal)) return xTextLabel ; + else return super.getNewValue("LabelControl",oldVal); + } + }) ; + } + + /** + * Forces environment recreation. + */ + @Override + public void after() { + disposeEnvironment() ; + } +} + diff --git a/qadevOOo/tests/java/ifc/form/_FormComponent.java b/qadevOOo/tests/java/ifc/form/_FormComponent.java new file mode 100644 index 0000000000..99cdfc6837 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_FormComponent.java @@ -0,0 +1,34 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.form.FormComponent</code> +* service properties : +* <ul> +* <li><code> Name</code></li> +* </ul> +* @see com.sun.star.form.FormComponent +*/ +public class _FormComponent extends MultiPropertyTest { + +} // finish class _FormComponent + diff --git a/qadevOOo/tests/java/ifc/form/_FormControlModel.java b/qadevOOo/tests/java/ifc/form/_FormControlModel.java new file mode 100644 index 0000000000..36c48dd305 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_FormControlModel.java @@ -0,0 +1,36 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.form.FormControlModel</code> +* service properties : +* <ul> +* <li><code> ClassId</code></li> +* <li><code> TabIndex</code></li> +* <li><code> Tag</code></li> +* </ul> +* @see com.sun.star.form +*/ +public class _FormControlModel extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/form/_XApproveActionBroadcaster.java b/qadevOOo/tests/java/ifc/form/_XApproveActionBroadcaster.java new file mode 100644 index 0000000000..f02f025162 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XApproveActionBroadcaster.java @@ -0,0 +1,102 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.form.XApproveActionBroadcaster; +import com.sun.star.form.XApproveActionListener; +import com.sun.star.lang.EventObject; + +/** +* Testing <code>com.sun.star.form.XApproveActionBroadcaster</code> +* interface methods: +* <ul> +* <li><code> addApproveActionListener() </code></li> +* <li><code> removeApproveActionListener() </code></li> +* </ul><p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.form.XApproveActionBroadcaster +*/ +public class _XApproveActionBroadcaster extends MultiMethodTest { + public XApproveActionBroadcaster oObj = null; + + /** + * Class we need to test methods. + */ + protected class TestListener implements XApproveActionListener { + public boolean approve = false ; + + public void init() { + approve = false ; + } + public void disposing(EventObject ev) {} + public boolean approveAction(EventObject ev) { + log.println("XApproveActionListener: ActionListener was called"); + return approve ; + } + + } + + private final TestListener listener = new TestListener(); + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _addApproveActionListener() { + oObj.addApproveActionListener(listener) ; + tRes.tested("addApproveActionListener()", true); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addApproveActionListener() </code> : adds listener to an + * object </li> + * </ul> + */ + public void _removeApproveActionListener() { + requiredMethod("addApproveActionListener()"); + listener.init() ; + listener.approve = true ; + oObj.removeApproveActionListener(listener); + tRes.tested("removeApproveActionListener()", true); + } + + + /** + * Just log output + */ + @Override + protected void after() { + log.println("Skipping all XApproveActionBroadcaster methods, since they" + + " need user interaction"); + throw new StatusException(Status.skipped(true)); + } + +} + + diff --git a/qadevOOo/tests/java/ifc/form/_XBoundComponent.java b/qadevOOo/tests/java/ifc/form/_XBoundComponent.java new file mode 100644 index 0000000000..3f38ba6893 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XBoundComponent.java @@ -0,0 +1,49 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form; + +import lib.MultiMethodTest; + +import com.sun.star.form.XBoundComponent; + +/** +* Testing <code>com.sun.star.form.XBoundComponent</code> +* interface methods : +* <ul> +* <li><code> commit()</code></li> +* </ul> <p> +* More deep tests of this interface are made in +* <code>com.sun.star.form.XUpdateBroadcaster</code> interface +* test as it is the ancestor of <code>XBoundComponent</code> +* interface. +* @see com.sun.star.form.XBoundComponent +*/ +public class _XBoundComponent extends MultiMethodTest { + + public XBoundComponent oObj = null; + + public void _commit() { + oObj.commit() ; + + tRes.tested("commit()",true); + } + +} //EOF of XBoundComponent + + diff --git a/qadevOOo/tests/java/ifc/form/_XBoundControl.java b/qadevOOo/tests/java/ifc/form/_XBoundControl.java new file mode 100644 index 0000000000..2d6bb8c739 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XBoundControl.java @@ -0,0 +1,73 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form; + +import lib.MultiMethodTest; + +import com.sun.star.form.XBoundControl; + +/** +* Testing <code>com.sun.star.form.XBoundControl</code> +* interface methods: +* <ul> +* <li><code> getLock() </code></li> +* <li><code> setLock() </code></li> +* </ul><p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.form.XBoundControl +*/ +public class _XBoundControl extends MultiMethodTest { + public XBoundControl oObj = null; + public boolean defaultState = false; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _getLock() { + boolean res = false; + defaultState = oObj.getLock(); + res = true; + tRes.tested("getLock()",res); + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if method locks input (set and gotten values are + * equal). <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getLock() </code>: determines whether the input is + * currently locked or not </li> + * </ul> + */ + public void _setLock() { + boolean res = false; + boolean toSet = !defaultState; + + requiredMethod("getLock()"); + oObj.setLock(toSet); + res = (oObj.getLock() != defaultState); + oObj.setLock(defaultState); + tRes.tested("setLock()", res); + } + +} //EOF of XBoundControl + diff --git a/qadevOOo/tests/java/ifc/form/_XChangeBroadcaster.java b/qadevOOo/tests/java/ifc/form/_XChangeBroadcaster.java new file mode 100644 index 0000000000..7583ca6ec1 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XChangeBroadcaster.java @@ -0,0 +1,179 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.awt.XTextComponent; +import com.sun.star.awt.XWindow; +import com.sun.star.form.XChangeBroadcaster; +import com.sun.star.form.XChangeListener; +import com.sun.star.lang.EventObject; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.form.XChangeBroadcaster</code> +* interface methods: +* <ul> +* <li><code> addChangeListener() </code></li> +* <li><code> removeChangeListener() </code></li> +* </ul><p> +* This test needs the following object relations : +* <ul> +* <li> <code>'Win1'</code> (of type <code>XWindow</code>): +* used to change context when testing interface methods</li> +* <li> <code>'Win2'</code> (of type <code>XWindow</code>): +* used to change context when testing interface methods </li> +* <li> <code>'CONTROL'</code> (of type <code>XControl</code> and +* must implement <code>XTextComponent</code> interface): +* used to change context when testing interface methods </li> +* <li> <code>'XChangeBroadcaster.Changer'</code> +* (of type <code>ifc.form._XChangeBroadcaster.Changer</code>) +* <b>optional</b> : this relation <b>must be specified</b> when +* <code>XTextComponent</code> is not supported by the tested +* component. It is used to change some component content +* which must cause listener call. </li> +* </ul> <p> +* +* <b>Prerequisites:</b> component must implement <code>XTextComponent</code> +* interface for changing component's text which must cause listener call. +* If the component can't support the interface, then the relation +* <code>'XChangeBroadcaster.Changer'</code> must be passed. <p> +* +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.form.XChangeBroadcaster +*/ +public class _XChangeBroadcaster extends MultiMethodTest { + public static XChangeBroadcaster oObj = null; + protected boolean changed = false; + + /** + * This interface must be implemented by component and passed + * in relation if it doesn't support <code>XTextComponent</code> + * interface. It used to change the content of component. + */ + public interface Changer { + /** + * The method must change the component's content to + * cause a listener call. + */ + void change() ; + } + + /** + * Class we need to test methods + */ + protected class MyChangeListener implements XChangeListener { + public void disposing ( EventObject oEvent ) {} + public void changed ( EventObject oEvent ) { + System.out.println("Listener called"); + changed = true; + } + } + + protected XChangeListener listener = new MyChangeListener(); + protected XTextComponent xText = null ; + protected Changer changer = null ; + + /** + * Tries to query the tested component for <code>XTextComponent</code> + * interface and retrieves a relation + * <code>'XChangeBroadcaster.Changer'</code>. + * @throw StatusException If neither relation is found nor interface + * is queried. + */ + @Override + public void before() { + xText = UnoRuntime.queryInterface(XTextComponent.class,oObj); + changer = (Changer) tEnv.getObjRelation("XChangeBroadcaster.Changer") ; + + if (xText == null && changer == null) + throw new StatusException(Status.failed + ("Neither 'XChangeBroadcaster.Changer' relation found " + + "nor XTextComponent is supported")) ; + } + + /** + * Test calls the method, then object relations 'Win1', 'Win2', 'CONTROL' + * are obtained, and context is changed.<p> + * Has <b> OK </b> status if listener was called after context has changed. + */ + public void _addChangeListener() { + log.println("Testing addChangeListener ..."); + oObj.addChangeListener( listener ); + XWindow win1 = (XWindow) tEnv.getObjRelation("Win1"); + XWindow win2 = (XWindow) tEnv.getObjRelation("Win2"); + win1.setFocus(); + + changeContent() ; + waitForEventIdle(); + + win2.setFocus(); + XTextComponent TC = UnoRuntime.queryInterface + (XTextComponent.class,tEnv.getObjRelation("CONTROL")); + TC.setText("NOXChangeBroadcaster"); + waitForEventIdle(); + tRes.tested("addChangeListener()", changed); + } + + /** + * Test calls the method, then object relations 'Win1', 'Win2', 'CONTROL' + * are obtained, and context is changed.<p> + * Has <b> OK </b> status if listener was not called after context has + * changed.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addChangeListener() </code> : adds the specified listener + * to receive the "changed" event</li> + * </ul> + */ + public void _removeChangeListener() { + requiredMethod("addChangeListener()"); + changed = false; + log.println("Testing removeChangeListener ..."); + oObj.addChangeListener( listener ); + XWindow win2 = (XWindow) tEnv.getObjRelation("Win2"); + win2.setFocus(); + + changeContent() ; + + win2.setFocus(); + waitForEventIdle(); + tRes.tested("removeChangeListener()", !changed); + } + + /** + * Changes the content of the component depending on whether + * <code>XTextComponent</code> is supported or not. If yes + * then the text is changed, if not the relation <code>change()</code> + * method is used. + */ + protected void changeContent() { + if (xText != null) { + xText.setText("XChangeBroadcaster".equals(xText.getText()) ? + "NoXChangeBroadcaster" : "XChangeBroadcaster") ; + } else { + changer.change(); + } + } + +} // finished class _XChangeBroadcaster + diff --git a/qadevOOo/tests/java/ifc/form/_XConfirmDeleteBroadcaster.java b/qadevOOo/tests/java/ifc/form/_XConfirmDeleteBroadcaster.java new file mode 100644 index 0000000000..496227c9b0 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XConfirmDeleteBroadcaster.java @@ -0,0 +1,64 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form; + +import com.sun.star.form.XConfirmDeleteBroadcaster; +import com.sun.star.form.XConfirmDeleteListener; +import com.sun.star.lang.EventObject; +import com.sun.star.sdb.RowChangeEvent; +import lib.MultiMethodTest; + +/** +* Testing <code>com.sun.star.util.XConfirmDeleteBroadcaster</code> +* interface methods : +* <ul> +* <li><code>addConfirmDeleteListener()</code></li> +* <li><code>removeConfirmDeleteListener()</code></li> +* </ul> <p> +* +* Result checking is not performed. Confirm delete +* listeners are called only in case of +* interaction with UI. <p> +* +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.util.XConfirmDeleteBroadcaster +*/ +public class _XConfirmDeleteBroadcaster extends MultiMethodTest { + public XConfirmDeleteBroadcaster oObj = null; + protected XConfirmDeleteListener mxConfirmDeleteListener = + new ConfirmDeleteImpl(); + + private static class ConfirmDeleteImpl implements XConfirmDeleteListener { + public boolean confirmDelete(RowChangeEvent rowChangeEvent) { + return true; + } + public void disposing(EventObject eventObject) { + } + } + + protected void addConfirmDeleteListener() { + oObj.addConfirmDeleteListener(mxConfirmDeleteListener); + tRes.tested("addConfirmDeleteListener()", true); + } + + protected void removeConfirmDeleteListener() { + oObj.removeConfirmDeleteListener(mxConfirmDeleteListener); + tRes.tested("removeConfirmDeleteListener()", true); + } +} diff --git a/qadevOOo/tests/java/ifc/form/_XDatabaseParameterBroadcaster.java b/qadevOOo/tests/java/ifc/form/_XDatabaseParameterBroadcaster.java new file mode 100644 index 0000000000..384493d588 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XDatabaseParameterBroadcaster.java @@ -0,0 +1,93 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.form; + +import com.sun.star.form.XDatabaseParameterBroadcaster; +import com.sun.star.form.XDatabaseParameterListener; +import com.sun.star.sdbc.XRowSet; +import com.sun.star.uno.UnoRuntime; +import java.io.PrintWriter; +import lib.MultiMethodTest; + +/** + * + */ +public class _XDatabaseParameterBroadcaster extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XDatabaseParameterBroadcaster oObj = null ; + private CheckParameterListener listenerChecker = null; + + /** + * Interface to implement so the call of the listener can be checked. + */ + public interface CheckParameterListener extends XDatabaseParameterListener { + /** + * Set a log of the listener, so messages of the listener get printed + * into the file of the interface + */ + void setLog(PrintWriter log); + /** + * Return True, when the listener was called correctly. + */ + boolean checkListener(); + } + + /** + * Get the object relation 'ParameterListenerChecker' and + * set the log inside of the implementation. + */ + @Override + protected void before() { + listenerChecker = (CheckParameterListener) + tEnv.getObjRelation("ParameterListenerChecker"); + listenerChecker.setLog(log); + } + + /** + */ + public void _addParameterListener() { + oObj.addParameterListener(listenerChecker); + tRes.tested("addParameterListener()", true); + } + + /** + */ + public void _removeParameterListener() { + requiredMethod("addParameterListener()"); + + // trigger the action. + try { + XRowSet xRowSet = UnoRuntime.queryInterface(XRowSet.class, oObj); + xRowSet.execute(); + } + catch(com.sun.star.sdbc.SQLException e) { + log.println("Exception in XDatabaseParameterBroadcaster test."); + log.println("This does not let the test fail, but should be inquired."); + e.printStackTrace(log); + } + // was the listener called? + oObj.removeParameterListener(listenerChecker); + tRes.tested("removeParameterListener()", listenerChecker.checkListener()); + } + + @Override + protected void after() { + disposeEnvironment(); + } +} diff --git a/qadevOOo/tests/java/ifc/form/_XFormController.java b/qadevOOo/tests/java/ifc/form/_XFormController.java new file mode 100644 index 0000000000..339610c325 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XFormController.java @@ -0,0 +1,151 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form; + +import lib.MultiMethodTest; + +import com.sun.star.awt.XControl; +import com.sun.star.awt.XWindow; +import com.sun.star.form.XFormController; +import com.sun.star.form.XFormControllerListener; +import com.sun.star.lang.EventObject; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.form.XFormController</code> +* interface methods : +* <ul> +* <li><code> getCurrentControl()</code></li> +* <li><code> addActivateListener()</code></li> +* <li><code> removeActivateListener()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'otherWindow'</code> +* (of type <code>com.sun.star.awt.XWindow</code>): +* The another window is used to activate it, causing deactivating +* of the component tested. </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.form.XFormController +*/ +public class _XFormController extends MultiMethodTest { + + public static XFormController oObj = null; + + /** + * Listener which determines and stores events occurred. + */ + protected static class MyListener implements XFormControllerListener { + public boolean activated = false ; + public boolean deactivated = false ; + public void disposing ( EventObject oEvent ) {} + + public void init() { + activated = false; + deactivated = false; + } + + public void formActivated(EventObject ev) { + activated = true ; + } + + public void formDeactivated(EventObject ev) { + deactivated = true ; + } + } + + MyListener listener = new MyListener() ; + + /** + * Adds a listener, then switches focus between two windows. + * The current controller must be deactivated and activated.<p> + * + * Has <b> OK </b> status if listener <code>deactivate</code> + * and <code>activate</code> methods was called. <p> + */ + public void _addActivateListener() { + requiredMethod("getCurrentControl()"); + oObj.addActivateListener(listener) ; + + XWindow wind = UnoRuntime.queryInterface(XWindow.class, cntrl); + wind.setFocus(); + waitForEventIdle(); + XWindow otherWind = (XWindow)tEnv.getObjRelation("otherWindow"); + otherWind.setFocus(); + waitForEventIdle(); + log.println("activated = " + listener.activated + + ", deactivated = " + listener.deactivated) ; + + tRes.tested("addActivateListener()", + listener.deactivated && listener.activated) ; + } + + /** + * Removes the listener added before, then switches focus between two windows. + * + * Has <b> OK </b> status if no listener methods were called. <p> + */ + public void _removeActivateListener() { + requiredMethod("addActivateListener()") ; + + oObj.removeActivateListener(listener); + log.println("ActiveListener removed"); + listener.init(); + + XWindow wind = UnoRuntime.queryInterface(XWindow.class, cntrl); + wind.setFocus(); + waitForEventIdle(); + XWindow otherWind = (XWindow)tEnv.getObjRelation("otherWindow"); + otherWind.setFocus(); + waitForEventIdle(); + log.println("activated = " + listener.activated + + ", deactivated = " + listener.deactivated) ; + + tRes.tested("removeActivateListener()", + !listener.activated && !listener.deactivated); + } + + XControl cntrl; + + /** + * Retrieves current control and searches for it among child controls. + * + * Has <b>OK</b> status if the current control was found among component + * children. + */ + public void _getCurrentControl() { + cntrl = oObj.getCurrentControl(); + XControl[] children = oObj.getControls() ; + + boolean res = false; + for(int i = 0; i < children.length; i++) { + if (children[i].equals(cntrl)) { + log.println("Current control is equal to the object control" + + " #" + i + ":"); + log.println(cntrl); + res = true; + break; + } + } + + tRes.tested("getCurrentControl()", res) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/form/_XFormsSupplier.java b/qadevOOo/tests/java/ifc/form/_XFormsSupplier.java new file mode 100644 index 0000000000..6a67b0920d --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XFormsSupplier.java @@ -0,0 +1,35 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form; + +import com.sun.star.container.XNameContainer; + +public class _XFormsSupplier extends lib.MultiMethodTest { + + public com.sun.star.form.XFormsSupplier oObj = null; + + public void _getForms() { + XNameContainer forms = oObj.getForms(); + if (!forms.hasElements()) { + log.println("NameContainer doesn't contain forms"); + } + tRes.tested("getForms()",forms.hasElements()); + } + +} diff --git a/qadevOOo/tests/java/ifc/form/_XGrid.java b/qadevOOo/tests/java/ifc/form/_XGrid.java new file mode 100644 index 0000000000..f241af55af --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XGrid.java @@ -0,0 +1,74 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form; + +import lib.MultiMethodTest; + +import com.sun.star.form.XGrid; + +/** +* Testing <code>com.sun.star.form.XGrid</code> +* interface methods : +* <ul> +* <li><code> getCurrentColumnPosition()</code></li> +* <li><code> setCurrentColumnPosition(short nPos)</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.form.XGrid +*/ +public class _XGrid extends MultiMethodTest { + public XGrid oObj = null; + public short positionValue; + + /** + * The method called. Then CurrentColumnPosition is obtained and + * compared with previously changed value. + * Has <b> OK </b> status if the method successfully returns + * and the returned value is correct. + */ + public void _getCurrentColumnPosition() { + boolean result; + + requiredMethod("setCurrentColumnPosition()"); + log.println("Testing getCurrentColumnPosition()..."); + if (oObj.getCurrentColumnPosition() == positionValue) { + result = true; + } else { + result = false; + } + tRes.tested("getCurrentColumnPosition()", result); + } + + /** + * The method called. Then CurrentColumnPosition is obtained, changed + * and saved. + * Has <b> OK </b> status if no exception has occurred. + */ + public void _setCurrentColumnPosition() { + log.println("Testing setCurrentColumnPosition()..."); + if (oObj.getCurrentColumnPosition() != 0) { + positionValue = 0; + } else { + positionValue = 1; + } + oObj.setCurrentColumnPosition(positionValue); + tRes.tested("setCurrentColumnPosition()", true); + } + +} diff --git a/qadevOOo/tests/java/ifc/form/_XGridColumnFactory.java b/qadevOOo/tests/java/ifc/form/_XGridColumnFactory.java new file mode 100644 index 0000000000..376bdbf8c8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XGridColumnFactory.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 ifc.form; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.form.XGridColumnFactory; + + +/** +* Testing <code>com.sun.star.form.XGridColumnFactory</code> +* interface methods : +* <ul> +* <li><code> createColumn()</code></li> +* <li><code> getColumnTypes()</code></li> +* </ul> +* Test is multithread compliant. <p> +* @see com.sun.star.form.XGridColumnFactory +*/ +public class _XGridColumnFactory extends MultiMethodTest { + + public XGridColumnFactory oObj = null; + + + /** + * Test calls the method and checks return value. <p> + * Has <b> OK </b> status if the method returns + * non null value. + */ + public void _getColumnTypes() { + + String[] types = oObj.getColumnTypes(); + tRes.tested("getColumnTypes()",types!=null); + } + + /** + * Creates column of type 'TextField'. <p> + * Has <b>OK</b> status if non null value returned. + */ + public void _createColumn() { + + try { + XPropertySet column = oObj.createColumn("TextField"); + tRes.tested("createColumn()",column!=null); + } + catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception occurred while creating Column"); + tRes.tested("createColumn()",false); + } + } +} // finish class _XGridColumnFactory + + + diff --git a/qadevOOo/tests/java/ifc/form/_XGridFieldDataSupplier.java b/qadevOOo/tests/java/ifc/form/_XGridFieldDataSupplier.java new file mode 100644 index 0000000000..af1631be2c --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XGridFieldDataSupplier.java @@ -0,0 +1,59 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form; + +import lib.MultiMethodTest; + +import com.sun.star.form.XGridFieldDataSupplier; +import com.sun.star.uno.Type; + +/** +* Testing <code>com.sun.star.form.XGridFieldDataSupplier</code> +* interface methods : +* <ul> +* <li><code>queryFieldDataType()</code></li> +* <li><code>queryFieldData()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.form.XGridFieldDataSupplier +*/ +public class _XGridFieldDataSupplier extends MultiMethodTest { + public XGridFieldDataSupplier oObj = null; + + /** + * Calls the method and checks returned value. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + * and returned value is not null. + */ + public void _queryFieldDataType() { + boolean[] dataType = oObj.queryFieldDataType(new Type(String.class)); + tRes.tested("queryFieldDataType()", dataType != null); + } + + /** + * Calls the method and checks returned value. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + * and returned value is not null. + */ + public void _queryFieldData() { + Object[] data = oObj.queryFieldData(0, new Type(String.class)); + tRes.tested("queryFieldData()", data != null); + } +}// finish class _XGridFieldDataSupplier + diff --git a/qadevOOo/tests/java/ifc/form/_XImageProducerSupplier.java b/qadevOOo/tests/java/ifc/form/_XImageProducerSupplier.java new file mode 100644 index 0000000000..86f2eb0b89 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XImageProducerSupplier.java @@ -0,0 +1,52 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form; + +import lib.MultiMethodTest; + +import com.sun.star.awt.XImageProducer; +import com.sun.star.form.XImageProducerSupplier; + +/** +* Testing <code>com.sun.star.form.XImageProducerSupplier</code> +* interface methods : +* <ul> +* <li><code> getImageProducer()</code></li> +* </ul> +* @see com.sun.star.form.XImageProducerSupplier +*/ +public class _XImageProducerSupplier extends MultiMethodTest { + + public XImageProducerSupplier oObj = null; + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <p> + * Has <b> OK </b> status if the method returns non null value + * and no exceptions were thrown. <p> + */ + public void _getImageProducer() { + boolean bResult = false; + XImageProducer ip = oObj.getImageProducer(); + bResult = ip!=null; + tRes.tested("getImageProducer()", bResult); + } +} + + diff --git a/qadevOOo/tests/java/ifc/form/_XLoadListener.java b/qadevOOo/tests/java/ifc/form/_XLoadListener.java new file mode 100644 index 0000000000..0a64505829 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XLoadListener.java @@ -0,0 +1,85 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form; + +import lib.MultiMethodTest; + +import com.sun.star.form.XLoadListener; + +/** +* Testing <code>com.sun.star.form.XLoadListener</code> +* interface methods : +* <ul> +* <li><code> loaded()</code></li> +* <li><code> unloading()</code></li> +* <li><code> unloaded()</code></li> +* <li><code> reloading()</code></li> +* <li><code> reloaded()</code></li> +* </ul> <p> +* This interface methods are not testable, because their +* behaviour is not documented. +* @see com.sun.star.form.XLoadListener +*/ +public class _XLoadListener extends MultiMethodTest { + + public XLoadListener oObj = null; + + /** + * Always has <b>OK</b> status. + */ + public void _loaded() { + log.println("nothing to test here"); + tRes.tested("loaded()",true); + } + + /** + * Always has <b>OK</b> status. + */ + public void _reloaded() { + log.println("nothing to test here"); + tRes.tested("reloaded()",true); + } + + /** + * Always has <b>OK</b> status. + */ + public void _reloading() { + log.println("nothing to test here"); + tRes.tested("reloading()",true); + } + + /** + * Always has <b>OK</b> status. + */ + public void _unloaded() { + log.println("nothing to test here"); + tRes.tested("unloaded()",true); + } + + /** + * Always has <b>OK</b> status. + */ + public void _unloading() { + log.println("nothing to test here"); + tRes.tested("unloading()",true); + } + +} //EOF of XLoadListener + + diff --git a/qadevOOo/tests/java/ifc/form/_XLoadable.java b/qadevOOo/tests/java/ifc/form/_XLoadable.java new file mode 100644 index 0000000000..a4bf0e78dd --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XLoadable.java @@ -0,0 +1,225 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form; + + +import lib.MultiMethodTest; + +import com.sun.star.form.XLoadable; + +/** +* Testing <code>com.sun.star.form.XLoadable</code> +* interface methods : +* <ul> +* <li><code> load()</code></li> +* <li><code> unload()</code></li> +* <li><code> reload()</code></li> +* <li><code> isLoaded()</code></li> +* <li><code> addLoadListener()</code></li> +* <li><code> removeLoadListener()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.form.XLoadable +*/ +public class _XLoadable extends MultiMethodTest { + + public XLoadable oObj = null; + + /** + * Listener implementation which sets flags on appropriate method calls + */ + protected static class TestLoadListener implements com.sun.star.form.XLoadListener { + public boolean loadedCalled = false ; + public boolean reloadedCalled = false ; + public boolean unloadedCalled = false ; + private final java.io.PrintWriter log; + + public TestLoadListener(java.io.PrintWriter log) { + this.log = log ; + } + + public void disposing(com.sun.star.lang.EventObject e) { + log.println(" disposing was called.") ; + } + + public void loaded(com.sun.star.lang.EventObject e) { + loadedCalled = true ; + log.println(" loaded was called.") ; + } + + public void reloaded(com.sun.star.lang.EventObject e) { + reloadedCalled = true ; + log.println(" reloaded was called.") ; + } + + public void reloading(com.sun.star.lang.EventObject e) { + log.println(" reloading was called.") ; + } + + public void unloaded(com.sun.star.lang.EventObject e) { + unloadedCalled = true ; + log.println(" unloaded was called.") ; + } + + public void unloading(com.sun.star.lang.EventObject e) { + log.println(" unloading was called.") ; + } + } + + TestLoadListener loadListener = null ; + + /** + * Creates new listener. + */ + @Override + public void before() { + loadListener = new TestLoadListener(log) ; + } + + /** + * Loads the form. <p> + * Has <b> OK </b> status if <code>isLoaded()</code> returns + * <code>true</code> and listener method <code>loaded()</code> + * is called. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> isLoaded() </code> : to be sure form is not loaded </li> + * <li> <code> addLoadListener() </code> : to check if this listener method + * is called. </li> + * </ul> + */ + public void _load() { + requiredMethod("isLoaded()") ; + requiredMethod("addLoadListener()") ; + + boolean result = true ; + oObj.load() ; + + waitForEventIdle(); + result = oObj.isLoaded() && loadListener.loadedCalled ; + + tRes.tested("load()", result) ; + } + + /** + * Unloads the form. <p> + * Has <b> OK </b> status if <code>isLoaded()</code> returns + * <code>false</code> and listener method <code>unloaded()</code> + * is called. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> reload() </code> : to be sure the form is loaded </li> + * <li> <code> addLoadListener() </code> : to check if this listener method + * is called. </li> + * </ul> + */ + public void _unload() { + requiredMethod("reload()") ; + requiredMethod("addLoadListener()") ; + + boolean result = true ; + oObj.unload() ; + + waitForEventIdle(); + result = !oObj.isLoaded() && loadListener.unloadedCalled ; + + tRes.tested("unload()", result) ; + } + + /** + * Reloads the form. <p> + * Has <b> OK </b> status if <code>isLoaded()</code> returns + * <code>true</code> and listener method <code>reloaded()</code> + * is called. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> load() </code> : to be sure form is loaded </li> + * <li> <code> addLoadListener() </code> : to check if this listener method + * is called. </li> + * </ul> + */ + public void _reload() { + requiredMethod("load()") ; + requiredMethod("addLoadListener()") ; + + boolean result = true ; + oObj.reload() ; + + waitForEventIdle(); + result = oObj.isLoaded() && loadListener.reloadedCalled; + + tRes.tested("reload()", result) ; + } + + /** + * Checks if the component is already loaded. If yes it unloads + * it <p> + * Has <b> OK </b> status if finally <code>isLoaded()</code> method + * returns <code>false</code>. + */ + public void _isLoaded() { + + boolean isLoaded = oObj.isLoaded() ; + if (isLoaded) oObj.unload(); + isLoaded = oObj.isLoaded() ; + + tRes.tested("isLoaded()", !isLoaded) ; + } + + /** + * Adds a listener. If its methods are called or not is checked + * in other object methods. <p> + * Has <b> OK </b> status if no runtime exceptions occurred. + */ + public void _addLoadListener() { + + boolean result = true ; + oObj.addLoadListener(loadListener) ; + + tRes.tested("addLoadListener()", result) ; + } + + /** + * Removes the listener added before. <p> + * Has <b> OK </b> status if after <code>load()</code> call no + * listener methods were called. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> unload() </code> : to make this test run finally.</li> + * </ul> + */ + public void _removeLoadListener() { + requiredMethod("unload()") ; + + boolean result = true ; + oObj.removeLoadListener(loadListener) ; + loadListener.loadedCalled = false ; + oObj.load(); + + result = ! loadListener.loadedCalled ; + + tRes.tested("removeLoadListener()", result) ; + } + + @Override + protected void after() { + disposeEnvironment(); + } +} + diff --git a/qadevOOo/tests/java/ifc/form/_XReset.java b/qadevOOo/tests/java/ifc/form/_XReset.java new file mode 100644 index 0000000000..b3afa18df5 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XReset.java @@ -0,0 +1,170 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form; + +import lib.MultiMethodTest; + +import com.sun.star.form.XReset; +import com.sun.star.form.XResetListener; +import com.sun.star.lang.EventObject; + +/** +* Testing <code>com.sun.star.form.XReset</code> +* interface methods : +* <ul> +* <li><code> reset()</code></li> +* <li><code> addResetListener()</code></li> +* <li><code> removeResetListener()</code></li> +* </ul> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.form.XReset +*/ +public class _XReset extends MultiMethodTest { + + public static XReset oObj = null; + + /** + * Indicates if listeners must approve reset requests or not. + */ + protected boolean approve = true; + /** + * Array of two elements, each of them indicates <code>reset</code> + * call of appropriate listener. + */ + protected boolean resetted[] = new boolean[2]; + /** + * Array of two elements, each of them indicates + * <code>approveReset</code> call of appropriate listener. + */ + protected boolean approveReset[] = new boolean[2]; + + /** + * The listener which sets flags (in array elements with index 0) + * on <code>reset</code> and + * <code>approveReset</code> events. It approves reset request + * depending on <code>approve</code> field. + */ + protected class MyResetListener implements XResetListener { + public void disposing ( EventObject oEvent ) {} + public boolean approveReset ( EventObject oEvent ) { + approveReset[0] = true; + //cancel the reset action + return approve; + } + public void resetted ( EventObject oEvent ) { + resetted[0] = true; + } + } + + + /** + * The listener which sets flags (in array elements with index 1) + * on <code>reset</code> and + * <code>approveReset</code> events. It approves reset request + * depending on <code>approve</code> field. + */ + protected class MyResetListener2 implements XResetListener { + public void disposing ( EventObject oEvent ) {} + public boolean approveReset ( EventObject oEvent ) { + approveReset[1] = true; + //don't cancel the reset action + return true; + } + public void resetted ( EventObject oEvent ) { + resetted[1] = true; + } + } + + /** + * Listener which is added in test + */ + protected XResetListener listener1 = new MyResetListener(); + /** + * Listener which is added in test + */ + protected XResetListener listener2 = new MyResetListener2(); + + /** + * Just adds two reset listeners. <p> + * Status for it is set later in <code>reset</code> method test. + */ + public void _addResetListener() { + + log.println("Testing addResetListener ..."); + oObj.addResetListener( listener2 ); + oObj.addResetListener( listener1 ); + + } // finished _addResetListener() + + /** + * First calls <code>reset</code> method without approving + * the request, in this case only <code>approveReset</code> + * event must be called. Second calls <code>reset</code> with + * approving the request. In this case both listener's events + * must be called. <p> + * Has <b>OK</b> status for <code>reset</code> method if in + * the first case only <code>approveReset</code> method was + * called. <p> + * Has <b>OK</b> status for <code>addResetListener</code> method + * if in the second case both listener's methods were called.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addResetListener </code> : to have listeners added.</li> + * </ul> + */ + public void _reset() { + + executeMethod("addResetListener()"); + log.println("Testing reset() ..."); + approve = false; + oObj.reset(); + waitForEventIdle(); + tRes.tested("reset()", (approveReset[0] && (! resetted[0]))); + approve = true; + oObj.reset(); + waitForEventIdle(); + tRes.tested("addResetListener()", (approveReset[1] && resetted[1])); + + } // finished _reset + + /** + * Removes the first listener, clears it's call flags, and + * calls <code>reset</code> method.<p> + * Has <b> OK </b> status if no methods of the listener removed + * were called. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> reset </code> : to test this method last. </li> + * </ul> + */ + public void _removeResetListener() { + requiredMethod("reset()"); + log.println("Testing removeResetListener ..."); + approveReset[0] = resetted[0] = false; + oObj.removeResetListener(listener1); + oObj.reset(); + waitForEventIdle(); + tRes.tested("removeResetListener()", !approveReset[0] && !resetted[0]); + //removing the second listener here may avoid crashing the office + } // finished _removeResetListener() + + +} // finished class _XRefresh + + diff --git a/qadevOOo/tests/java/ifc/form/_XSubmit.java b/qadevOOo/tests/java/ifc/form/_XSubmit.java new file mode 100644 index 0000000000..3b33469002 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XSubmit.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 ifc.form; + +import lib.MultiMethodTest; + +import com.sun.star.awt.MouseEvent; +import com.sun.star.awt.XControl; +import com.sun.star.beans.XPropertySet; +import com.sun.star.form.XSubmit; +import com.sun.star.form.XSubmitListener; +import com.sun.star.lang.EventObject; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.form.XSubmit</code> +* interface methods : +* <ul> +* <li><code> submit()</code></li> +* <li><code> addSubmitListener()</code></li> +* <li><code> removeSubmitListener()</code></li> +* </ul> <p> +* +* This test needs the following object relations : +* <ul> +* <li> <code>'XSubmit.Control'</code> <b>optional</b> +* (of type <code>com.sun.star.awt.XControl</code>): +* is used to pass as parameters to <code>submit</code> +* method. <code>null</code> is passed if the relation +* is not found.</li> +* <ul> <p> +* +* Other <b> prerequicity </b> is the object must have +* <code>TargetURL</code> property. <p> +* +* Short description: test adds two listeners, call +* <code> submit </code> method and checks if both listeners +* were called. Then one listener is removed and after +* <code> submit </code> method call it must not be called. <p> +* +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.form.XSubmit +*/ +public class _XSubmit extends MultiMethodTest { + + public static XSubmit oObj = null; + + public static class MySubmitListener implements XSubmitListener { + public int called = 0 ; + public void disposing ( EventObject oEvent ) { + } + public boolean approveSubmit( EventObject oEvent ) { + called += 1; + System.out.println("Listener called"); + return true; + } + } + + + MySubmitListener listener1 = new MySubmitListener(); + MySubmitListener listener2 = new MySubmitListener(); + + /** + * Just adds two submit listeners. <p> + * Status of this method test is defined in <code> + * submit </code> method test. + */ + public void _addSubmitListener() { + log.println("Testing addSubmitListener ..."); + oObj.addSubmitListener( listener1 ); + oObj.addSubmitListener( listener2 ); + } + + /** + * Before submission tries to set 'TargetURL' property + * of component to some value assuming that component + * supports <code>com.sun.star.form.HTMLForm</code> + * service. + * Then calls the <code> submit </code> method and checks + * if listener removed were not called, and other was + * called only once.<p> + * + * Has <b> OK </b> status for <code>submit</code> if + * listener was called at least ones, for + * <code>addSubmitListener</code> method if the remaining + * listener was called only once, for + * <code>removeSubmitListener</code> method if the removed + * listener was not called. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> removeSubmitListener </code> : to have one listener + * added and other removed.</li> + * </ul> + */ + public void _submit() { + executeMethod("removeSubmitListener()"); + log.println("Testing submit() ..."); + XControl cntrl = (XControl) tEnv.getObjRelation("XSubmit.Control") ; + + XPropertySet xPS = UnoRuntime.queryInterface + (XPropertySet.class, oObj) ; + + if (xPS != null) { + try { + xPS.setPropertyValue("TargetURL", "someserver"); + } catch (com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + } catch (com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log); + } catch (com.sun.star.beans.PropertyVetoException e) { + e.printStackTrace(log); + } catch (com.sun.star.beans.UnknownPropertyException e) { + e.printStackTrace(log); + } + } else { + log.println("!!! The tested component doesn't support XPropertySet "); + } + + oObj.submit(cntrl, new MouseEvent()); + waitForEventIdle(); + + log.println("Listener1 called " + listener1.called + " times"); + log.println("Listener2 called " + listener2.called + " times"); + + tRes.tested("addSubmitListener()", listener2.called == 1); + tRes.tested("removeSubmitListener()", listener1.called == 0); + tRes.tested("submit()", listener2.called > 0); + oObj.removeSubmitListener(listener2); + } + + /** + * Just removes one of submit listeners. <p> + * Status of this method test is defined in <code> + * submit </code> method test. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> removeSubmitListener </code> : to have listeners added</li> + * </ul> + */ + public void _removeSubmitListener() { + requiredMethod("addSubmitListener()"); + oObj.removeSubmitListener(listener1); + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + +} + diff --git a/qadevOOo/tests/java/ifc/form/_XUpdateBroadcaster.java b/qadevOOo/tests/java/ifc/form/_XUpdateBroadcaster.java new file mode 100644 index 0000000000..3df9eecd69 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/_XUpdateBroadcaster.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 ifc.form; + +import lib.MultiMethodTest; +import lib.StatusException; + +import com.sun.star.form.XUpdateBroadcaster; +import com.sun.star.form.XUpdateListener; +import com.sun.star.lang.EventObject; + +/** +* Testing <code>com.sun.star.form.XUpdateBroadcaster</code> +* interface methods : +* <ul> +* <li><code> addUpdateListener()</code></li> +* <li><code> removeUpdateListener()</code></li> +* </ul> +* This test needs the following object relations : +* <ul> +* <li> <code>'XUpdateBroadcaster.Checker'</code> : <code> +* _XUpdateBroadcaster.UpdateChecker</code> interface implementation +* which can update, commit data and check if the data was successfully +* committed.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.form.XUpdateBroadcaster +*/ +public class _XUpdateBroadcaster extends MultiMethodTest { + + public XUpdateBroadcaster oObj = null; + UpdateChecker checker = null ; + + /** + * Interface for relation. Updating, committing and checking + * if data was committed is object dependent behaviour. + */ + public interface UpdateChecker { + /** + * Method must make some data update in the object tested. + */ + void update() throws com.sun.star.uno.Exception ; + /** + * Method must commit data change made by method <code>update</code>. + */ + void commit() throws com.sun.star.uno.Exception ; + /** + * Checks if the data committed by <code>commit</code> method + * became permanent in data source. + * @return <code>true</code> if data was committed. + */ + boolean wasCommited() throws com.sun.star.uno.Exception ; + } + + /** + * Retrieves object relations. + * @throws StatusException If one of relations not found. + */ + @Override + public void before() { + checker = (UpdateChecker) + tEnv.getObjRelation("XUpdateBroadcaster.Checker") ; + if (checker == null) { + log.println("Relation not found") ; + throw new StatusException("Relation not found", + new NullPointerException("Relation not found")) ; + } + } + + /** + * Listener implementation, which can accept or reject update + * requests and store event calls. + */ + protected static class TestListener implements XUpdateListener { + /** + * Indicates must listener approve update requests or not. + */ + public boolean approve = false ; + /** + * Indicates that <code>approveUpdate</code> method was called. + */ + public boolean approveCalled = false ; + /** + * Indicates that <code>updated</code> method was called. + */ + public boolean updateCalled = false ; + + /** + * Clears all flags. + */ + public void init() { + approveCalled = false ; + updateCalled = false ; + } + public void disposing(EventObject ev) {} + public boolean approveUpdate(EventObject ev) { + approveCalled = true ; + return approve ; + } + public void updated(EventObject ev) { + updateCalled = true ; + } + } + + private final TestListener listener = new TestListener(); + + /** + * The listener methods calls are checked twice with approving + * and rejecting updates. <p> + * Has <b>OK</b> status if on update rejected only <code> + * approveUpdate</code> listener method was called, and if + * on update approved <code>approveUpdate</code> and + * <code>updated</code> methods called, and data was committed + * to the source. + */ + public void _addUpdateListener() { + boolean bResult = true; + + oObj.addUpdateListener(listener) ; + + try { + checker.update() ; + waitForEventIdle(); + checker.commit() ; + waitForEventIdle(); + boolean committed = checker.wasCommited() ; + + waitForEventIdle(); + + bResult = listener.approveCalled && + ! listener.updateCalled && + ! committed ; + + log.println("Calling with no approving : approveUpdate() was " + + (listener.approveCalled ? "":"NOT")+" called, updated() was "+ + (listener.updateCalled ? "":"NOT")+" called, the value was " + + (committed ? "" : "NOT") + " committed.") ; + + waitForEventIdle(); + + listener.init() ; + listener.approve = true ; + waitForEventIdle(); + checker.update() ; + waitForEventIdle(); + checker.commit() ; + waitForEventIdle(); + committed = checker.wasCommited() ; + + waitForEventIdle(); + + log.println("Calling with approving : approveUpdate() was " + + (listener.approveCalled ? "":"NOT")+" called, updated() was "+ + (listener.updateCalled ? "":"NOT")+" called, the value was "+ + (committed ? "" : "NOT") + " committed.") ; + + bResult = listener.approveCalled && + listener.updateCalled && + committed ; + } catch (com.sun.star.uno.Exception e) { + bResult = false ; + e.printStackTrace(log) ; + } + + tRes.tested("addUpdateListener()", bResult); + } + + /** + * Removes listener, updates data, and checks if no listener + * methods were called. <p> + * Has <b> OK </b> status if after listener removing no of its methods + * were called. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addUpdateListener </code> : to have a listener added.</li> + * </ul> + */ + public void _removeUpdateListener() { + requiredMethod("addUpdateListener()"); + boolean bResult = true; + + listener.init() ; + listener.approve = true ; + + oObj.removeUpdateListener(listener); + + try { + checker.update() ; + waitForEventIdle(); + checker.commit() ; + + waitForEventIdle(); + + bResult = ! listener.approveCalled && + ! listener.updateCalled ; + } + catch (com.sun.star.uno.Exception e) { + log.println("Exception occurred during removeUpdateListener()"); + e.printStackTrace(log); + bResult = false; + } + + tRes.tested("removeUpdateListener()", bResult); + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + +} + + diff --git a/qadevOOo/tests/java/ifc/form/binding/_BindableDatabaseCheckBox.java b/qadevOOo/tests/java/ifc/form/binding/_BindableDatabaseCheckBox.java new file mode 100644 index 0000000000..23d01c1fe9 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/binding/_BindableDatabaseCheckBox.java @@ -0,0 +1,27 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + + +package ifc.form.binding; + +import lib.MultiPropertyTest; + +public class _BindableDatabaseCheckBox extends MultiPropertyTest +{ + +} diff --git a/qadevOOo/tests/java/ifc/form/binding/_BindableDatabaseRadioButton.java b/qadevOOo/tests/java/ifc/form/binding/_BindableDatabaseRadioButton.java new file mode 100644 index 0000000000..dd59dba3f5 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/binding/_BindableDatabaseRadioButton.java @@ -0,0 +1,27 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + + +package ifc.form.binding; + +import lib.MultiPropertyTest; + +public class _BindableDatabaseRadioButton extends MultiPropertyTest +{ + +} diff --git a/qadevOOo/tests/java/ifc/form/binding/_XBindableValue.java b/qadevOOo/tests/java/ifc/form/binding/_XBindableValue.java new file mode 100644 index 0000000000..e0131bb454 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/binding/_XBindableValue.java @@ -0,0 +1,106 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.form.binding; + +import com.sun.star.form.binding.XBindableValue; +import com.sun.star.form.binding.XValueBinding; +import com.sun.star.uno.Type; + +import java.util.ArrayList; + +import lib.MultiMethodTest; + + +public class _XBindableValue extends MultiMethodTest { + public XBindableValue oObj; + protected XValueBinding xValueBinding = null; + + public void _getValueBinding() { + requiredMethod("setValueBinding"); + + boolean res = true; + xValueBinding = oObj.getValueBinding(); + res &= checkValueBinding(xValueBinding); + tRes.tested("getValueBinding()", res); + } + + public void _setValueBinding() { + String rightOne = ""; + + try { + oObj.setValueBinding(new MyValueBinding()); + rightOne = (String) oObj.getValueBinding().getValue(null); + } catch (com.sun.star.form.binding.IncompatibleTypesException e) { + e.printStackTrace(); + } + + boolean res = rightOne.equals("MyValueBinding"); + + if (!res) { + log.println("Expected: MyValueBinding"); + log.println("getting: " + rightOne); + } + + tRes.tested("setValueBinding()", res); + } + + protected boolean checkValueBinding(XValueBinding xValueBinding) { + boolean res = true; + Type[] types = xValueBinding.getSupportedValueTypes(); + log.println("Checking: "); + + for (int i = 0; i < types.length; i++) { + log.println("\t" + types[i].getTypeName()); + + boolean localRes = xValueBinding.supportsType(types[i]); + + if (!localRes) { + log.println("\t\tsupportsType returns false -- FAILED"); + } else { + log.println("\t\tis supported -- OK"); + } + + res &= localRes; + } + + return res; + } + + static class MyValueBinding implements XValueBinding { + private final ArrayList<Type> types = new ArrayList<Type>(); + + public com.sun.star.uno.Type[] getSupportedValueTypes() { + return types.toArray(new Type[types.size()]); + } + + public Object getValue(com.sun.star.uno.Type type) + throws com.sun.star.form.binding.IncompatibleTypesException { + return "MyValueBinding"; + } + + public void setValue(Object obj) + throws com.sun.star.form.binding.IncompatibleTypesException, + com.sun.star.lang.NoSupportException { + } + + public boolean supportsType(com.sun.star.uno.Type type) { + types.add(type); + return true; + } + } +} diff --git a/qadevOOo/tests/java/ifc/form/component/_CheckBox.java b/qadevOOo/tests/java/ifc/form/component/_CheckBox.java new file mode 100644 index 0000000000..9fc401a5a2 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_CheckBox.java @@ -0,0 +1,35 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.form.component.CheckBox</code> +* service properties : +* <ul> +* <li><code> DefaultState</code></li> +* <li><code> RefValue</code></li> +* </ul> <p> +* @see com.sun.star.form.component.CheckBox +*/ +public class _CheckBox extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_ComboBox.java b/qadevOOo/tests/java/ifc/form/component/_ComboBox.java new file mode 100644 index 0000000000..84001ce119 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_ComboBox.java @@ -0,0 +1,34 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.form.component.ComboBox</code> +* service properties : +* <ul> +* <li><code> DefaultText</code></li> +* </ul> <p> +* @see com.sun.star.form.component.ComboBox +*/ +public class _ComboBox extends MultiPropertyTest { + // these properties don't needed in special code. +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_CommandButton.java b/qadevOOo/tests/java/ifc/form/component/_CommandButton.java new file mode 100644 index 0000000000..ac1bfaafd4 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_CommandButton.java @@ -0,0 +1,36 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.form.component.CommandButton</code> +* service properties : +* <ul> +* <li><code> ButtonType</code></li> +* <li><code> TargetFrame</code></li> +* <li><code> TargetURL</code></li> +* </ul> +* @see com.sun.star.form.component.CommandButton +*/ +public class _CommandButton extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_CurrencyField.java b/qadevOOo/tests/java/ifc/form/component/_CurrencyField.java new file mode 100644 index 0000000000..422e447c34 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_CurrencyField.java @@ -0,0 +1,50 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + + +/** +* Testing <code>com.sun.star.form.component.CurrencyField</code> +* service properties : +* <ul> +* <li><code> DefaultValue</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.CurrencyField +*/ +public class _CurrencyField extends MultiPropertyTest { + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _DefaultValue() { + testProperty("DefaultValue", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return util.utils.isVoid(old) ? Double.valueOf(17.5) : + super.getNewValue(p, old) ; + } + }) ; + } +} // finish class _CurrencyField + + diff --git a/qadevOOo/tests/java/ifc/form/component/_DataForm.java b/qadevOOo/tests/java/ifc/form/component/_DataForm.java new file mode 100644 index 0000000000..4ea3e11ce0 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_DataForm.java @@ -0,0 +1,83 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +import com.sun.star.form.TabulatorCycle; +import com.sun.star.uno.Enum; + +/** +* Testing <code>com.sun.star.form.component.DataForm</code> +* service properties : +* <ul> +* <li><code> MasterFields</code></li> +* <li><code> DetailFields</code></li> +* <li><code> Cycle</code></li> +* <li><code> NavigationBarMode</code></li> +* <li><code> AllowInserts</code></li> +* <li><code> AllowUpdates</code></li> +* <li><code> AllowDeletes</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.DataForm +*/ +public class _DataForm extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must be defined. + */ + public void _NavigationBarMode() { + testProperty("NavigationBarMode", new PropertyTester() { + @Override + public String toString(Object obj) { + if (util.utils.isVoid(obj)) { + return "null"; + } else { + return "(" + obj.getClass().toString() + ")" + + ((Enum)obj).getValue(); + } + } + }); + } + + /** + * This property can be VOID, and in case if it is so new + * value must be defined. + */ + public void _Cycle() { + testProperty("Cycle", new PropertyTester() { + @Override + public Object getNewValue(String propName, Object oldValue) { + return TabulatorCycle.CURRENT; + } + @Override + public String toString(Object obj) { + if (util.utils.isVoid(obj)) + return "null"; + else + return "(" + obj.getClass().toString() + ")" + + ((Enum)obj).getValue(); + } + }); + } + +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_DatabaseComboBox.java b/qadevOOo/tests/java/ifc/form/component/_DatabaseComboBox.java new file mode 100644 index 0000000000..cb72ff5ed3 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_DatabaseComboBox.java @@ -0,0 +1,37 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component ; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.form.component.DatabaseComboBox</code> +* service properties : +* <ul> +* <li><code> ConvertEmptyToNull</code></li> +* <li><code> ListSource</code></li> +* <li><code> ListSourceType</code></li> +* </ul> <p> +* All properties are tested by class <code>MultiPropertyTest</code> +* @see com.sun.star.form.component.DatabaseComboBox +*/ +public class _DatabaseComboBox extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_DatabaseForm.java b/qadevOOo/tests/java/ifc/form/component/_DatabaseForm.java new file mode 100644 index 0000000000..887c881a2d --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_DatabaseForm.java @@ -0,0 +1,88 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; +import util.dbg; + +import com.sun.star.form.TabulatorCycle; +import com.sun.star.uno.Enum; +import java.io.UnsupportedEncodingException; + +/** +* Testing <code>com.sun.star.form.component.DatabaseForm</code> +* service properties: +* <ul> +* <li><code> MasterFields</code></li> +* <li><code> DetailFields</code></li> +* <li><code> Cycle</code></li> +* <li><code> NavigationBarMode</code></li> +* <li><code> AllowInserts</code></li> +* <li><code> AllowUpdates</code></li> +* <li><code> AllowDeletes</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.DatabaseForm +*/ +public class _DatabaseForm extends MultiPropertyTest { + + /** + * In this property test only debugging information output + * is customized. + */ + public void _NavigationBarMode() throws UnsupportedEncodingException { + dbg.printPropertyInfo(oObj, "NavigationBarMode"); + testProperty("NavigationBarMode", new PropertyTester() { + @Override + public String toString(Object obj) { + if (obj == null) { + return "null"; + } else { + return "(" + obj.getClass().toString() + ")" + + ((Enum)obj).getValue(); + } + } + }); + } + + /** + * This property new value is always fixed and debugging + * information output is customized. + */ + public void _Cycle() throws UnsupportedEncodingException { + dbg.printPropertyInfo(oObj, "Cycle"); + testProperty("Cycle", new PropertyTester() { + @Override + public Object getNewValue(String propName, Object oldValue) { + return TabulatorCycle.CURRENT; + } + + @Override + public String toString(Object obj) { + if (obj == null) { + return "null"; + } else { + return "(" + obj.getClass().toString() + ")" + + ((Enum)obj).getValue(); + } + } + }); + } +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_DatabaseFormattedField.java b/qadevOOo/tests/java/ifc/form/component/_DatabaseFormattedField.java new file mode 100644 index 0000000000..85b352ef63 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_DatabaseFormattedField.java @@ -0,0 +1,35 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component ; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.form.component.DatabaseFormattedField</code> +* service properties : +* <ul> +* <li><code> ConvertEmptyToNull</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.DatabaseFormattedField +*/ +public class _DatabaseFormattedField extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_DatabaseImageControl.java b/qadevOOo/tests/java/ifc/form/component/_DatabaseImageControl.java new file mode 100644 index 0000000000..ab675911ab --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_DatabaseImageControl.java @@ -0,0 +1,35 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.form.component.DatabaseImageControl</code> +* service properties : +* <ul> +* <li><code> ReadOnly</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.DatabaseImageControl +*/ +public class _DatabaseImageControl extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_DatabaseListBox.java b/qadevOOo/tests/java/ifc/form/component/_DatabaseListBox.java new file mode 100644 index 0000000000..ef82990802 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_DatabaseListBox.java @@ -0,0 +1,37 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +/* +* Testing <code>com.sun.star.form.component.DatabaseListBox</code> +* service properties : +* <ul> +* <li><code> BoundColumn</code></li> +* <li><code> ListSourceType</code></li> +* </ul> <p> +* All properties testing is automated by +* <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.DatabaseListBox +*/ +public class _DatabaseListBox extends MultiPropertyTest { + // these properties don't needed in special code. +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_DatabasePatternField.java b/qadevOOo/tests/java/ifc/form/component/_DatabasePatternField.java new file mode 100644 index 0000000000..184e925113 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_DatabasePatternField.java @@ -0,0 +1,36 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + + +/** +* Testing <code>com.sun.star.form.component.DatabasePatternField</code> +* service properties : +* <ul> +* <li><code> ConvertEmptyToNull</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.DatabasePatternField +*/ +public class _DatabasePatternField extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_DatabaseTextField.java b/qadevOOo/tests/java/ifc/form/component/_DatabaseTextField.java new file mode 100644 index 0000000000..37ff264c69 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_DatabaseTextField.java @@ -0,0 +1,36 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + + +/** +* Testing <code>com.sun.star.form.component.DatabaseTextField</code> +* service properties : +* <ul> +* <li><code> ConvertEmptyToNull</code></li> +* </ul> <p> +* All properties are tested by class <code>MultiPropertyTest</code> +* @see com.sun.star.form.component.DatabaseTextField +*/ +public class _DatabaseTextField extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_DateField.java b/qadevOOo/tests/java/ifc/form/component/_DateField.java new file mode 100644 index 0000000000..4a0688a226 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_DateField.java @@ -0,0 +1,47 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.form.component.DateField</code> +* service properties : +* <ul> +* <li><code> DefaultDate</code></li> +* </ul> +* @see com.sun.star.form.component.DateField +*/ +public class _DateField extends MultiPropertyTest { + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _DefaultDate() { + testProperty("DefaultDate", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return util.utils.isVoid(old) ? Integer.valueOf(20010507) : + super.getNewValue(prop, old) ; + } + }) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_FileControl.java b/qadevOOo/tests/java/ifc/form/component/_FileControl.java new file mode 100644 index 0000000000..2cc5e5292a --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_FileControl.java @@ -0,0 +1,35 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +/* +* Testing <code>com.sun.star.form.component.FileControl</code> +* service properties : +* <ul> +* <li><code> DefaultText</code></li> +* </ul> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.FileControl +*/ +public class _FileControl extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_FormattedField.java b/qadevOOo/tests/java/ifc/form/component/_FormattedField.java new file mode 100644 index 0000000000..37ce620f3f --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_FormattedField.java @@ -0,0 +1,26 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component ; + +import lib.MultiPropertyTest; + +public class _FormattedField extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_GridControl.java b/qadevOOo/tests/java/ifc/form/component/_GridControl.java new file mode 100644 index 0000000000..de773f4d26 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_GridControl.java @@ -0,0 +1,96 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.form.component.GridControl</code> +* service properties : +* <ul> +* <li><code> Border</code></li> +* <li><code> Enabled</code></li> +* <li><code> FontDescriptor</code></li> +* <li><code> RowHeight</code></li> +* <li><code> Tabstop</code></li> +* <li><code> TextColor</code></li> +* </ul> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.GridControl +*/ +public class _GridControl extends MultiPropertyTest { + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _RowHeight() { + testProperty("RowHeight", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return util.utils.isVoid(old) ? Integer.valueOf(11) : + super.getNewValue(prop, old) ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _Tabstop() { + testProperty("Tabstop", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return util.utils.isVoid(old) ? Boolean.TRUE : + super.getNewValue(prop, old) ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return util.utils.isVoid(old) ? Integer.valueOf(342) : + super.getNewValue(prop, old) ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _BorderColor() { + testProperty("BorderColor", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return util.utils.isVoid(old) ? Integer.valueOf(342) : + super.getNewValue(prop, old) ; + } + }) ; + } +} // finish class _GridControl + + diff --git a/qadevOOo/tests/java/ifc/form/component/_HTMLForm.java b/qadevOOo/tests/java/ifc/form/component/_HTMLForm.java new file mode 100644 index 0000000000..a79e2500e4 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_HTMLForm.java @@ -0,0 +1,38 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.form.component.HTMLForm</code> +* service properties : +* <ul> +* <li><code> TargetFrame</code></li> +* <li><code> TargetURL</code></li> +* <li><code> SubmitMethod</code></li> +* <li><code> SubmitEncoding</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.HTMLForm +*/ +public class _HTMLForm extends MultiPropertyTest { + +} // finish class _HTMLForm + diff --git a/qadevOOo/tests/java/ifc/form/component/_HiddenControl.java b/qadevOOo/tests/java/ifc/form/component/_HiddenControl.java new file mode 100644 index 0000000000..eb77e1cd5c --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_HiddenControl.java @@ -0,0 +1,35 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.form.component.HiddenControl</code> +* service properties : +* <ul> +* <li><code> HiddenValue</code></li> +* </ul> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.HiddenControl +*/ +public class _HiddenControl extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_ImageButton.java b/qadevOOo/tests/java/ifc/form/component/_ImageButton.java new file mode 100644 index 0000000000..208defc43b --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_ImageButton.java @@ -0,0 +1,37 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.form.component.ImageButton</code> +* service properties : +* <ul> +* <li><code> ButtonType</code></li> +* <li><code> TargetFrame</code></li> +* <li><code> TargetURL</code></li> +* </ul> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.ImageButton +*/ +public class _ImageButton extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_ListBox.java b/qadevOOo/tests/java/ifc/form/component/_ListBox.java new file mode 100644 index 0000000000..bdcdad7f10 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_ListBox.java @@ -0,0 +1,37 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + + +/** +* Testing <code>com.sun.star.form.component.ListBox</code> +* service properties : +* <ul> +* <li><code> DefaultSelection</code></li> +* <li><code> ListSource</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.ListBox +*/ +public class _ListBox extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_NavigationToolBar.java b/qadevOOo/tests/java/ifc/form/component/_NavigationToolBar.java new file mode 100644 index 0000000000..23e3473c12 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_NavigationToolBar.java @@ -0,0 +1,45 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +public class _NavigationToolBar extends MultiPropertyTest { + + public void _TextColor() { + testProperty("TextColor", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return util.utils.isVoid(old) ? Integer.valueOf(20010507) : + super.getNewValue(prop, old) ; + } + }) ; + } + + public void _TextLineColor() { + testProperty("TextLineColor", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return util.utils.isVoid(old) ? Integer.valueOf(20050507) : + super.getNewValue(prop, old) ; + } + }) ; + } + +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/form/component/_NumericField.java b/qadevOOo/tests/java/ifc/form/component/_NumericField.java new file mode 100644 index 0000000000..987ba4daa3 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_NumericField.java @@ -0,0 +1,49 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + + +/** +* Testing <code>com.sun.star.form.component.NumericField</code> +* service properties : +* <ul> +* <li><code> DefaultValue</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.NumericField +*/ +public class _NumericField extends MultiPropertyTest { + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _DefaultValue() { + testProperty("DefaultValue", new PropertyTester() { + @Override + protected Object getNewValue(String prop, Object old) { + return util.utils.isVoid(old) ? Double.valueOf(111.11) : + super.getNewValue(prop, old) ; + } + }) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_PatternField.java b/qadevOOo/tests/java/ifc/form/component/_PatternField.java new file mode 100644 index 0000000000..67623ddfdd --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_PatternField.java @@ -0,0 +1,35 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.form.component.PatternField</code> +* service properties : +* <ul> +* <li><code> DefaultText</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.PatternField +*/ +public class _PatternField extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_RadioButton.java b/qadevOOo/tests/java/ifc/form/component/_RadioButton.java new file mode 100644 index 0000000000..17a45a46f1 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_RadioButton.java @@ -0,0 +1,37 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + + +/** +* Testing <code>com.sun.star.form.component.RadioButton</code> +* service properties : +* <ul> +* <li><code> DefaultState</code></li> +* <li><code> RefValue</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.RadioButton +*/ +public class _RadioButton extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_RichTextControl.java b/qadevOOo/tests/java/ifc/form/component/_RichTextControl.java new file mode 100644 index 0000000000..4150be3a5d --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_RichTextControl.java @@ -0,0 +1,25 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +public class _RichTextControl extends MultiPropertyTest { + +} diff --git a/qadevOOo/tests/java/ifc/form/component/_ScrollBar.java b/qadevOOo/tests/java/ifc/form/component/_ScrollBar.java new file mode 100644 index 0000000000..d6021c73d0 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_ScrollBar.java @@ -0,0 +1,25 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +public class _ScrollBar extends MultiPropertyTest{ + +} diff --git a/qadevOOo/tests/java/ifc/form/component/_SpinButton.java b/qadevOOo/tests/java/ifc/form/component/_SpinButton.java new file mode 100644 index 0000000000..8d7ae9c11b --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_SpinButton.java @@ -0,0 +1,25 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +public class _SpinButton extends MultiPropertyTest { + +} diff --git a/qadevOOo/tests/java/ifc/form/component/_TextField.java b/qadevOOo/tests/java/ifc/form/component/_TextField.java new file mode 100644 index 0000000000..f6b81a1ea9 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_TextField.java @@ -0,0 +1,35 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.form.component.TextField</code> +* service properties : +* <ul> +* <li><code> DefaultText</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.TextField +*/ +public class _TextField extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/form/component/_TimeField.java b/qadevOOo/tests/java/ifc/form/component/_TimeField.java new file mode 100644 index 0000000000..1faa5d9590 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/component/_TimeField.java @@ -0,0 +1,49 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.component; + +import lib.MultiPropertyTest; +import util.utils; + +/** +* Testing <code>com.sun.star.form.component.TimeField</code> +* service properties : +* <ul> +* <li><code> DefaultTime</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.form.component.TimeField +*/ +public class _TimeField extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must defined. + */ + public void _DefaultTime() { + testProperty("DefaultTime", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return utils.isVoid(old) ? Integer.valueOf(4321) : + super.getNewValue(p, old) ; + } + }) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/form/submission/_XSubmission.java b/qadevOOo/tests/java/ifc/form/submission/_XSubmission.java new file mode 100644 index 0000000000..ce70afb20e --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/submission/_XSubmission.java @@ -0,0 +1,178 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.form.submission; + +import com.sun.star.form.submission.XSubmission; +import com.sun.star.form.submission.XSubmissionVetoListener; + +import lib.MultiMethodTest; + + +public class _XSubmission extends MultiMethodTest { + public XSubmission oObj = null; + + public void _addSubmissionVetoListener() { + log.println( + "submitting with VetoListener ... exception should appear"); + + boolean res = true; + XSubmissionVetoListener aListener = new MyListener(); + + try { + oObj.addSubmissionVetoListener(aListener); + oObj.submit(); + res = false; + log.println( + "the expected exception wasn't thrown ... FAILED"); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println( + "Expected exception was thrown while calling submit() " + + e.getMessage() + "FAILED"); + res = false; + } catch (com.sun.star.lang.NoSupportException e) { + log.println( + "NoSupportExpected exception was thrown while calling submit() " + + e.getMessage() + "FAILED"); + res = false; + } catch (com.sun.star.util.VetoException e) { + log.println( + "VetoException was thrown while calling submit() " + + e.getMessage() + "OK"); + } + + try { + oObj.removeSubmissionVetoListener(aListener); + } catch (com.sun.star.lang.NoSupportException e) { + log.println( + "NoSupportExpected exception was thrown while removing the listener) " + + e.getMessage() + "FAILED"); + res = false; + } + + tRes.tested("addSubmissionVetoListener()", res); + } + + public void _removeSubmissionVetoListener() { + log.println( + "submitting with VetoListener ... exception should appear"); + + boolean res = true; + XSubmissionVetoListener aListener = new MyListener(); + + try { + oObj.addSubmissionVetoListener(aListener); + oObj.submit(); + res = false; + log.println( + "the expected exception wasn't thrown ... FAILED"); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println( + "WrappedTargetException exception was thrown while calling submit() " + + e.getMessage() + "FAILED"); + res = false; + } catch (com.sun.star.lang.NoSupportException e) { + log.println( + "NoSupportExpected exception was thrown while calling submit() " + + e.getMessage() + "FAILED"); + res = false; + } catch (com.sun.star.util.VetoException e) { + log.println( + "VetoException was thrown while calling submit() " + + e.getMessage() + "OK"); + } + + log.println("removing the listener"); + + try { + oObj.removeSubmissionVetoListener(aListener); + } catch (com.sun.star.lang.NoSupportException e) { + log.println( + "NoSupportExpected exception was thrown while removing the listener) " + + e.getMessage() + "FAILED"); + res = false; + } + + log.println("Sleeping 2s"); + + waitForEventIdle(); + + log.println("... done"); + + log.println( + "submitting after VetoListener has been removed... no exception should appear"); + + try { + oObj.submit(); + log.println("No Exception ... OK"); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println( + "WrappedTargetException was thrown while calling submit() " + + e.getMessage() + "FAILED"); + res = false; + } catch (com.sun.star.util.VetoException e) { + log.println( + "VetoException was thrown while calling submit() " + + e.getMessage() + "FAILED"); + res = false; + } + + tRes.tested("removeSubmissionVetoListener()", res); + } + + /** Calls submit and returns true if no exception was thrown + * then adds a SubmissionVetoListener and checks if the + * exception is thrown in case of a veto of this listener. + */ + public void _submit() { + boolean res = true; + log.println( + "submitting without VetoListener ... no exception should appear"); + + try { + oObj.submit(); + log.println("No Exception ... OK"); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println( + "Exception was thrown while calling submit() " + + e.getMessage() + "FAILED"); + res = false; + } catch (com.sun.star.util.VetoException e) { + log.println( + "VetoException was thrown while calling submit() " + + e.getMessage() + "FAILED"); + res = false; + } + + tRes.tested("submit()", res); + } + + public class MyListener implements XSubmissionVetoListener { + public void disposing( + com.sun.star.lang.EventObject eventObject) { + } + + public void submitting( + com.sun.star.lang.EventObject eventObject) + throws com.sun.star.util.VetoException { + log.println("MyVetoListener was called"); + throw new com.sun.star.util.VetoException( + "submission isn't allowed ..."); + } + } + +} diff --git a/qadevOOo/tests/java/ifc/form/submission/_XSubmissionSupplier.java b/qadevOOo/tests/java/ifc/form/submission/_XSubmissionSupplier.java new file mode 100644 index 0000000000..d0fd030af0 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/submission/_XSubmissionSupplier.java @@ -0,0 +1,72 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.form.submission; + +import com.sun.star.form.submission.XSubmission; +import com.sun.star.form.submission.XSubmissionSupplier; +import com.sun.star.form.submission.XSubmissionVetoListener; +import com.sun.star.task.XInteractionHandler; +import lib.MultiMethodTest; + +public class _XSubmissionSupplier extends MultiMethodTest +{ + public XSubmissionSupplier oObj = null; + public boolean submitWasCalled = false; + + public void _Submission() { + XSubmission stub = new MyXSubmission(); + oObj.setSubmission (stub); + XSubmission xSubmission = oObj.getSubmission (); + try { + xSubmission.submit (); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception during submit "+e.getMessage ()); + } + catch (com.sun.star.util.VetoException e) { + log.println("VetoException during submit "+e.getMessage ()); + } + tRes.tested ("Submission()",submitWasCalled); + } + + private class MyXSubmission implements XSubmission { + + public void submit () throws com.sun.star.util.VetoException, com.sun.star.lang.WrappedTargetException + { + submitWasCalled=true; + log.println("MyXSubmission: someone called submit :-)"); + } + + public void submitWithInteraction( XInteractionHandler handler ) throws com.sun.star.util.VetoException, com.sun.star.lang.WrappedTargetException + { + log.println("MyXSubmission: someone called submitWithInteraction :-)"); + } + + public void addSubmissionVetoListener( XSubmissionVetoListener listener ) throws com.sun.star.lang.NoSupportException + { + throw new com.sun.star.lang.NoSupportException(); + } + + public void removeSubmissionVetoListener( XSubmissionVetoListener listener ) throws com.sun.star.lang.NoSupportException + { + throw new com.sun.star.lang.NoSupportException(); + } + + } + +} diff --git a/qadevOOo/tests/java/ifc/form/validation/_XValidatable.java b/qadevOOo/tests/java/ifc/form/validation/_XValidatable.java new file mode 100644 index 0000000000..eec5315ed4 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/validation/_XValidatable.java @@ -0,0 +1,76 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.form.validation; + +import com.sun.star.form.validation.XValidatable; +import com.sun.star.form.validation.XValidator; + +import lib.MultiMethodTest; + + +public class _XValidatable extends MultiMethodTest { + public XValidatable oObj; + + public void _getValidator() { + requiredMethod("setValidator()"); + + XValidator xValidator = oObj.getValidator(); + boolean res = xValidator.isValid(Boolean.FALSE); + tRes.tested("getValidator()", res); + } + + public void _setValidator() { + boolean res = false; + + try { + oObj.setValidator(new MyValidator()); + + XValidator xValidator = oObj.getValidator(); + String getting = xValidator.explainInvalid(null); + res = getting.equals("explainInvalid"); + + if (!res) { + log.println("\tExpected: explainInvalid"); + log.println("\tGetting: " + getting); + log.println("FAILED"); + } + } catch (com.sun.star.util.VetoException e) { + e.printStackTrace(); + } + + tRes.tested("setValidator()", res); + } + + public static class MyValidator implements XValidator { + public void addValidityConstraintListener(com.sun.star.form.validation.XValidityConstraintListener xValidityConstraintListener) + throws com.sun.star.lang.NullPointerException { + } + + public String explainInvalid(Object obj) { + return "explainInvalid"; + } + + public boolean isValid(Object obj) { + return true; + } + + public void removeValidityConstraintListener(com.sun.star.form.validation.XValidityConstraintListener xValidityConstraintListener) + throws com.sun.star.lang.NullPointerException { + } + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/form/validation/_XValidatableFormComponent.java b/qadevOOo/tests/java/ifc/form/validation/_XValidatableFormComponent.java new file mode 100644 index 0000000000..cb1dd831a5 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/validation/_XValidatableFormComponent.java @@ -0,0 +1,229 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.form.validation; + +import com.sun.star.beans.Property; +import com.sun.star.beans.PropertyAttribute; +import com.sun.star.beans.XMultiPropertySet; +import com.sun.star.beans.XPropertySetInfo; +import com.sun.star.form.validation.XFormComponentValidityListener; +import com.sun.star.form.validation.XValidatableFormComponent; +import com.sun.star.uno.UnoRuntime; + +import lib.MultiMethodTest; + +import util.ValueChanger; + +import java.util.StringTokenizer; + + +public class _XValidatableFormComponent extends MultiMethodTest +{ + public XValidatableFormComponent oObj; + protected XFormComponentValidityListener listener = null; + public boolean listenerCalled = false; + private String[] testPropsNames = null; + private int testPropsAmount = 0; + + public void _addFormComponentValidityListener() + { + listener = new MyListener(); + + boolean res = true; + + try + { + oObj.addFormComponentValidityListener(listener); + } + catch (com.sun.star.lang.NullPointerException e) + { + res = false; + e.printStackTrace(); + } + + changeAllProperties(); + res &= listenerCalled; + tRes.tested("addFormComponentValidityListener()", res); + } + + public void _getCurrentValue() + { + oObj.getCurrentValue(); + tRes.tested("getCurrentValue()", true); + } + + public void _isValid() + { + boolean res = oObj.isValid(); + tRes.tested("isValid()", res); + } + + public void _removeFormComponentValidityListener() + { + requiredMethod("isValid()"); + + try + { + oObj.removeFormComponentValidityListener(listener); + } + catch (com.sun.star.lang.NullPointerException e) + { + e.printStackTrace(); + } + + listenerCalled = false; + changeAllProperties(); + tRes.tested("removeFormComponentValidityListener()", true); + } + + protected void changeAllProperties() + { + XMultiPropertySet mProps = + UnoRuntime.queryInterface( + XMultiPropertySet.class, tEnv.getTestObject() + ); + XPropertySetInfo propertySetInfo = mProps.getPropertySetInfo(); + Property[] properties = propertySetInfo.getProperties(); + getPropsToTest(properties); + log.println("Changing all properties"); + + Object[] gValues = mProps.getPropertyValues(testPropsNames); + + for (int i = 0; i < testPropsAmount; i++) + { + Object oldValue = gValues[i]; + + if ( + testPropsNames[i].equals("Value") + || testPropsNames[i].equals("EffectiveValue") + ) + { + oldValue = Integer.valueOf(10); + } + else if (testPropsNames[i].equals("Time")) + { + oldValue = new com.sun.star.util.Time( + 10, (short) 10, (short) 10, (short) 10, false); + } + + Object newValue = ValueChanger.changePValue(oldValue); + gValues[i] = newValue; + } + + try + { + mProps.setPropertyValues(testPropsNames, gValues); + } + catch (com.sun.star.beans.PropertyVetoException e) + { + log.println("Exception occurred while setting properties"); + e.printStackTrace(log); + } + catch (com.sun.star.lang.IllegalArgumentException e) + { + log.println("Exception occurred while setting properties"); + e.printStackTrace(log); + } + catch (com.sun.star.lang.WrappedTargetException e) + { + log.println("Exception occurred while setting properties"); + e.printStackTrace(log); + } + // end of try-catch + } + + //Get the properties being tested + private void getPropsToTest(Property[] properties) + { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < properties.length; i++) + { + Property property = properties[i]; + String name = property.Name; + boolean isWritable = + ((property.Attributes & PropertyAttribute.READONLY) == 0); + boolean isNotNull = + ((property.Attributes & PropertyAttribute.MAYBEVOID) == 0); + //these have values that are interfaces we can't change + if ( + name.equals("TextUserDefinedAttributes") + || name.equals("ReferenceDevice") + || name.equals("ParaUserDefinedAttributes") + ) + { + isWritable = false; + } + + if ( + name.equals("Value") || name.equals("Time") + || name.equals("Date") + ) + { + sb = new StringBuilder(name + ";"); + } + + if ( + isWritable && isNotNull && (name.indexOf("Format") < 0) + && !name.equals("Enabled") + ) + { + sb.append(name + ";"); + } + } + + String bound = sb.toString(); + // endfor + + //get an array of bound properties + if (bound.equals("")) + { + bound = "none"; + } + + if (tEnv.getTestCase().getObjectName().indexOf("Formatted") > 0) + { + bound = "EffectiveValue;"; + } + + StringTokenizer ST = new StringTokenizer(bound, ";"); + int nr = ST.countTokens(); + testPropsNames = new String[nr]; + + for (int i = 0; i < nr; i++) + testPropsNames[i] = ST.nextToken(); + + testPropsAmount = nr; + } + + protected class MyListener implements XFormComponentValidityListener + { + public void componentValidityChanged( + com.sun.star.lang.EventObject eventObject + ) + { + System.out.println("componentValidityChanged called"); + listenerCalled = true; + } + + public void disposing(com.sun.star.lang.EventObject eventObject) + { + System.out.println("Listener Disposed"); + } + } +} diff --git a/qadevOOo/tests/java/ifc/form/validation/_XValidityConstraintListener.java b/qadevOOo/tests/java/ifc/form/validation/_XValidityConstraintListener.java new file mode 100644 index 0000000000..3c43627586 --- /dev/null +++ b/qadevOOo/tests/java/ifc/form/validation/_XValidityConstraintListener.java @@ -0,0 +1,81 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.form.validation; + +import com.sun.star.form.validation.XValidatable; +import com.sun.star.form.validation.XValidator; +import com.sun.star.form.validation.XValidityConstraintListener; +import com.sun.star.uno.UnoRuntime; + +import lib.MultiMethodTest; + + +public class _XValidityConstraintListener extends MultiMethodTest { + public XValidityConstraintListener oObj; + protected boolean ValidatorCalled = false; + + public void _validityConstraintChanged() { + boolean res = false; + try { + XValidatable xValidatable = UnoRuntime.queryInterface( + XValidatable.class, + tEnv.getTestObject()); + + log.println("adding Validator"); + XValidator xValidator = new MyValidator(); + xValidatable.setValidator(xValidator); + ValidatorCalled = false; + + log.println("calling validityConstraintChanged()"); + oObj.validityConstraintChanged( + new com.sun.star.lang.EventObject()); + res = ValidatorCalled; + } catch (com.sun.star.util.VetoException e) { + e.printStackTrace(); + } + tRes.tested("validityConstraintChanged()",res); + } + + /* + * The validator to add this Listener implementation + * + */ + public class MyValidator implements XValidator { + public void addValidityConstraintListener(com.sun.star.form.validation.XValidityConstraintListener xValidityConstraintListener) + throws com.sun.star.lang.NullPointerException { + log.println("\t Validator::addValidityConstraintListener called"); + } + + public String explainInvalid(Object obj) { + log.println("\t Validator::explainInvalid() called"); + + return "explainInvalid"; + } + + public boolean isValid(Object obj) { + log.println("\t Validator::isValid() called"); + ValidatorCalled = true; + return false; + } + + public void removeValidityConstraintListener(com.sun.star.form.validation.XValidityConstraintListener xValidityConstraintListener) + throws com.sun.star.lang.NullPointerException { + log.println("\t Validator::removeValidityConstraintListener called"); + } + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/formula/_FormulaProperties.java b/qadevOOo/tests/java/ifc/formula/_FormulaProperties.java new file mode 100644 index 0000000000..62384ae364 --- /dev/null +++ b/qadevOOo/tests/java/ifc/formula/_FormulaProperties.java @@ -0,0 +1,90 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.formula; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.formula.FormulaProperties</code> +* service properties : +* <ul> +* <li><code> Alignment</code></li> +* <li><code> BaseFontHeight</code></li> +* <li><code> CustomFontNameFixed</code></li> +* <li><code> FontFixedIsItalic</code></li> +* <li><code> FontFixedIsBold</code></li> +* <li><code> CustomFontNameSans</code></li> +* <li><code> FontSansIsItalic</code></li> +* <li><code> FontSansIsBold</code></li> +* <li><code> CustomFontNameSerif</code></li> +* <li><code> FontSerifIsItalic</code></li> +* <li><code> FontSerifIsBold</code></li> +* <li><code> FontNameFunctions</code></li> +* <li><code> FontFunctionsIsItalic</code></li> +* <li><code> FontFunctionsIsBold</code></li> +* <li><code> FontNameNumbers</code></li> +* <li><code> FontNumbersIsItalic</code></li> +* <li><code> FontNumbersIsBold</code></li> +* <li><code> FontNameText</code></li> +* <li><code> FontTextIsItalic</code></li> +* <li><code> FontTextIsBold</code></li> +* <li><code> FontNameVariables</code></li> +* <li><code> FontVariablesIsItalic</code></li> +* <li><code> FontVariablesIsBold</code></li> +* <li><code> Formula</code></li> +* <li><code> IsScaleAllBrackets</code></li> +* <li><code> IsTextMode</code></li> +* <li><code> RelativeFontHeightFunctions</code></li> +* <li><code> RelativeFontHeightIndices</code></li> +* <li><code> RelativeFontHeightLimits</code></li> +* <li><code> RelativeFontHeightOperators</code></li> +* <li><code> RelativeFontHeightText</code></li> +* <li><code> RelativeBracketDistance</code></li> +* <li><code> RelativeBracketExcessSize</code></li> +* <li><code> RelativeFractionBarExcessLength</code></li> +* <li><code> RelativeFractionBarLineWeight</code></li> +* <li><code> RelativeFractionDenominatorDepth</code></li> +* <li><code> RelativeFractionNumeratorHeight</code></li> +* <li><code> RelativeIndexSubscript</code></li> +* <li><code> RelativeIndexSuperscript</code></li> +* <li><code> RelativeLineSpacing</code></li> +* <li><code> RelativeLowerLimitDistance</code></li> +* <li><code> RelativeMatrixColumnSpacing</code></li> +* <li><code> RelativeMatrixLineSpacing</code></li> +* <li><code> RelativeOperatorExcessSize</code></li> +* <li><code> RelativeOperatorSpacing</code></li> +* <li><code> RelativeRootSpacing</code></li> +* <li><code> RelativeScaleBracketExcessSize</code></li> +* <li><code> RelativeSpacing</code></li> +* <li><code> RelativeSymbolMinimumHeight</code></li> +* <li><code> RelativeSymbolPrimaryHeight</code></li> +* <li><code> RelativeUpperLimitDistance</code></li> +* <li><code> TopMargin</code></li> +* <li><code> BottomMargin</code></li> +* <li><code> LeftMargin</code></li> +* <li><code> RightMargin</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.formula.FormulaProperties +*/ +public class _FormulaProperties extends MultiPropertyTest { + + +} // finish class _FormulaProperties + diff --git a/qadevOOo/tests/java/ifc/frame/_Desktop.java b/qadevOOo/tests/java/ifc/frame/_Desktop.java new file mode 100644 index 0000000000..e43ed9850b --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_Desktop.java @@ -0,0 +1,45 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.frame.Desktop</code> +* service properties: +* <ul> +* <li><code> HasBeamer </code></li> +* <li><code> HasCommonTaskBar </code></li> +* <li><code> HasStylist </code></li> +* <li><code> HasExplorer </code></li> +* <li><code> HasFunctionBar </code></li> +* <li><code> HasMacroBar </code></li> +* <li><code> HasNavigator </code></li> +* <li><code> HasObjectBar </code></li> +* <li><code> HasOptionBar </code></li> +* <li><code> HasStatusBar </code></li> +* <li><code> HasToolBar </code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.frame.Desktop +*/ +public class _Desktop extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/frame/_Frame.java b/qadevOOo/tests/java/ifc/frame/_Frame.java new file mode 100644 index 0000000000..e20c16817c --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_Frame.java @@ -0,0 +1,26 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import lib.MultiPropertyTest; + +public class _Frame extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/frame/_FrameLoader.java b/qadevOOo/tests/java/ifc/frame/_FrameLoader.java new file mode 100644 index 0000000000..91c57ae182 --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_FrameLoader.java @@ -0,0 +1,36 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.frame.FrameLoader</code> +* service properties : +* <ul> +* <li><code> Types</code></li> +* <li><code> UIName</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.frame.FrameLoader +*/ +public class _FrameLoader extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/frame/_SynchronousFrameLoader.java b/qadevOOo/tests/java/ifc/frame/_SynchronousFrameLoader.java new file mode 100644 index 0000000000..1826120197 --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_SynchronousFrameLoader.java @@ -0,0 +1,36 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.frame.SynchronousFrameLoader</code> +* service properties : +* <ul> +* <li><code> Types</code></li> +* <li><code> UIName</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.frame.SynchronousFrameLoader +*/ +public class _SynchronousFrameLoader extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/frame/_XComponentLoader.java b/qadevOOo/tests/java/ifc/frame/_XComponentLoader.java new file mode 100644 index 0000000000..afda3657a1 --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XComponentLoader.java @@ -0,0 +1,139 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import lib.MultiMethodTest; + +import com.sun.star.beans.PropertyState; +import com.sun.star.beans.PropertyValue; +import com.sun.star.frame.XComponentLoader; +import com.sun.star.lang.XComponent; + + +/** +* Testing <code>com.sun.star.frame.XComponentLoader</code> +* interface methods: +* <ul> +* <li><code> loadComponentFromURL() </code></li> +* </ul><p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.frame.XComponentLoader +*/ +public class _XComponentLoader extends MultiMethodTest { + public XComponentLoader oObj = null; // oObj filled by MultiMethodTest + + /** + * Method which tests the objects ability to load a + * component from URL. All available components are loaded by turns. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * @see XComponent + */ + public void _loadComponentFromURL() throws Exception { + boolean result = true; + + log.println("testing loadComponentFromURL() ... "); + try { + PropertyValue [] szEmptyArgs = new PropertyValue [0]; + String frameName = "_blank"; + XComponent oDoc = null; + + log.println("load writer doc that contains links"); + PropertyValue [] szArgs = new PropertyValue [1]; + PropertyValue Arg = new PropertyValue(); + Arg.Name = "UpdateDocMode"; + Arg.Value = Short.valueOf(com.sun.star.document.UpdateDocMode.NO_UPDATE); + szArgs[0]=Arg; + String url = util.utils.getFullTestURL("Writer_link.sxw"); + log.println("try to load '" + url + "'"); + oDoc = oObj.loadComponentFromURL( + url, frameName, 0, szArgs); + + waitForEventIdle(); + + oDoc.dispose(); + + url = util.utils.getFullTestURL("Calc_Link.sxc"); + log.println("try to load '" + url + "'"); + oDoc = oObj.loadComponentFromURL( + url, frameName, 0, szArgs); + + waitForEventIdle(); + + oDoc.dispose(); + + + + log.println("load a blank impress doc"); + Arg.Name = "OpenFlags"; + Arg.Value = "S"; + Arg.Handle = -1; + Arg.State = PropertyState.DEFAULT_VALUE; + szArgs[0]=Arg; + oDoc = oObj.loadComponentFromURL( + "private:factory/simpress", frameName, 0, szArgs ); + + log.println("disposing impress doc"); + oDoc.dispose(); + + log.println("load a blank writer doc"); + oDoc = oObj.loadComponentFromURL( + "private:factory/swriter", frameName, 0, szEmptyArgs ); + + log.println("disposing writer doc"); + oDoc.dispose(); + + log.println("load a blank calc doc"); + oDoc = oObj.loadComponentFromURL( + "private:factory/scalc", frameName, 0, szEmptyArgs ); + + log.println("disposing calc doc"); + oDoc.dispose(); + + log.println("load a blank draw doc"); + oDoc = oObj.loadComponentFromURL( + "private:factory/sdraw", frameName, 0, szEmptyArgs ); + + log.println("disposing draw doc"); + oDoc.dispose(); + + log.println("load a blank math doc"); + oDoc = oObj.loadComponentFromURL( + "private:factory/smath", frameName, 0, szEmptyArgs ); + + log.println("disposing math doc"); + oDoc.dispose(); + + } + catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception occurred while loading"); + e.printStackTrace(log); + result=false; + } + catch (com.sun.star.io.IOException e) { + log.println("Exception occurred while loading"); + e.printStackTrace(log); + result=false; + } + + tRes.tested("loadComponentFromURL()", result); + } + +} + diff --git a/qadevOOo/tests/java/ifc/frame/_XController.java b/qadevOOo/tests/java/ifc/frame/_XController.java new file mode 100644 index 0000000000..48ecad772f --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XController.java @@ -0,0 +1,218 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import lib.MultiMethodTest; + +import com.sun.star.frame.XController; +import com.sun.star.frame.XFrame; +import com.sun.star.frame.XModel; +import com.sun.star.util.XModifiable; + + +/** +* Testing <code>com.sun.star.frame.XController</code> +* interface methods: +* <ul> +* <li><code> getFrame() </code></li> +* <li><code> attachFrame() </code></li> +* <li><code> getModel() </code></li> +* <li><code> attachModel() </code></li> +* <li><code> getViewData() </code></li> +* <li><code> restoreViewData() </code></li> +* <li><code> suspend() </code></li> +* </ul><p> +* This test needs the following object relations : +* <ul> +* <li> <code>'Frame'</code> (of type <code>XFrame</code>): +* any other frame, used for tests</li> +* <li> <code>'FirstModel'</code> (of type <code>XModel</code>): +* model of a controller tested</li> +* <li> <code>'SecondModel'</code> (of type <code>XModel</code>): +* other model, used for tests </li> +* <li> <code>'HasViewData'</code> (of type <code>Boolean</code>): +* (optional relation) if it exists, so controller has no view data</li> +* <li> <code>'SecondController'</code> (of type <code>XController</code>): +* other controller, used for tests </li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.frame.XController +*/ +public class _XController extends MultiMethodTest { + public XController oObj = null; + public XModel firstModel = null; + public XModel secondModel = null; + public XFrame frame = null; + public Object ViewData = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns object, that's equal to + * previously obtained object relation 'Frame'. + * The following method tests are to be completed successfully before: + * <ul> + * <li> <code> attachFrame() </code> : attaches frame obtained object + * relation 'Frame' </li> + * </ul> + */ + public void _getFrame() { + requiredMethod("attachFrame()"); + XFrame getting = oObj.getFrame(); + boolean eq = getting.equals(frame); + if ( !eq ) { + log.println("Getting: " + getting.toString()); + log.println("Expected: " + frame.toString()); + } + tRes.tested("getFrame()", eq); + } + + /** + * After obtaining a corresponding object relation test calls the method. + * Has <b> OK </b> status if no exceptions were thrown. <p> + */ + public void _attachFrame() { + frame = (XFrame) tEnv.getObjRelation("Frame"); + oObj.attachFrame(frame); + tRes.tested("attachFrame()", true); + } + + /** + * At first object relation 'FirstModel' is gotten. Then test calls the + * method. <p> + * Has <b> OK </b> status if string representation of an object, returned by + * the method is equal to string representation of corresponding object + * relation. + */ + public void _getModel() { + firstModel = (XModel) tEnv.getObjRelation("FirstModel"); + XModel getting = oObj.getModel(); + String out1 = ""; + String out2 = ""; + if ( (firstModel == null) ) out1="none"; + else out1 = firstModel.toString(); + if ( (getting == null) ) out2="none"; else out2 = getting.toString(); + boolean eq = out1.equals(out2); + if ( !eq ) { + log.println("Getting: " + out2); + log.println("Expected: " + out1); + } + tRes.tested("getModel()", eq); + } + + /** + * At first, we obtain an object relation 'SecondModel'. Then test calls + * the method and check result. <p> + * Has <b> OK </b> status if method returns true and attached model is + * equal to a model 'SecondModel' obtained before. + * <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getModel() </code> : returns model (XModel) of the + * XController object</li> + * </ul> + */ + public void _attachModel() { + boolean result = false; + + requiredMethod("getModel()"); + secondModel = (XModel) tEnv.getObjRelation("SecondModel"); + XModel gotBefore = oObj.getModel(); + boolean attached = oObj.attachModel(secondModel); + XModel gotAfter = oObj.getModel(); + if ( attached ) { + if ( ! gotBefore.equals(gotAfter) ) { + if ( gotAfter.equals(secondModel) ) { + result = true; + } else { + log.println("Attached and gotten models are not equal"); + log.println("Getting: " + gotAfter.toString()); + log.println("Expected: " + secondModel.toString()); + } + } else { + log.println("method did not change model"); + } + } else { + result=true; + log.println("attachModel() returns false"); + log.println("as expected, see #82938"); + } + tRes.tested("attachModel()", result); + boolean bResult = oObj.attachModel(firstModel); + log.println("attachModel() --> " + bResult); + } + + /** + * At first gotten object relation 'HasViewData' is checked. Then if + * 'HasViewData' is null, test calls the method. <p> + * Has <b> OK </b> status if obtained object relation is not null, or if + * the method does not return null. + */ + public void _getViewData() { + if (tEnv.getObjRelation("HasViewData") != null) { + log.println("This Object has no View Data"); + tRes.tested("getViewData()", true); + return; + } + ViewData = oObj.getViewData(); + tRes.tested( "getViewData()", ViewData != null ); + } + + /** + * If obtained object relation 'HasViewData' is null, test calls the method. + * <p>Has <b> OK </b> status if obtained object relation is not null, or + * if no exceptions were thrown while method call.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getViewData() </code> : gets view data of an object. </li> + * </ul> + */ + public void _restoreViewData() { + requiredMethod("getViewData()"); + if (tEnv.getObjRelation("HasViewData") != null) { + log.println("This Object has no View Data"); + tRes.tested("restoreViewData()", true); + return; + } + oObj.restoreViewData(ViewData); + tRes.tested( "restoreViewData()", true ); + } + + /** + * Has <b> OK </b> status if the method returns true.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> restoreViewData() </code> : restores view status of an + * object </li> + * </ul> + */ + public void _suspend() { + requiredMethod("restoreViewData()"); + XModifiable modify = (XModifiable) tEnv.getObjRelation("Modifiable"); + if (modify != null) { + try { + modify.setModified(false); + } catch (com.sun.star.beans.PropertyVetoException pve) { + log.println("PropertyVetoException, couldn't change Modify flag"); + } + } + tRes.tested( "suspend()", oObj.suspend(true) ); + } + +} + diff --git a/qadevOOo/tests/java/ifc/frame/_XDesktop.java b/qadevOOo/tests/java/ifc/frame/_XDesktop.java new file mode 100644 index 0000000000..ac1457197c --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XDesktop.java @@ -0,0 +1,120 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import lib.MultiMethodTest; + +import com.sun.star.container.NoSuchElementException; +import com.sun.star.container.XEnumeration; +import com.sun.star.container.XEnumerationAccess; +import com.sun.star.frame.XDesktop; +import com.sun.star.lang.WrappedTargetException; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.uno.XInterface; + +/** +* Testing <code>com.sun.star.frame.XDesktop</code> +* interface methods: +* <ul> +* <li><code> getComponents() </code></li> +* <li><code> terminate() </code></li> +* <li><code> addTerminateListener() </code></li> +* <li><code> removeTerminateListener() </code></li> +* <li><code> getCurrentComponent() </code></li> +* <li><code> getCurrentFrame() </code></li> +* </ul><p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.frame.XDesktop +*/ +public class _XDesktop extends MultiMethodTest { + public XDesktop oObj = null; // oObj filled by MultiMethodTest + + /** + * Test calls the method. Then elements enumeration is created and tested.<p> + * Has <b> OK </b> status if no exceptions were thrown. + */ + public void _getComponents() { + XEnumerationAccess xComps = oObj.getComponents(); + XEnumeration xEnum = xComps.createEnumeration(); + boolean result = false; + + try { + while (xEnum.hasMoreElements()) { + try { + AnyConverter.toObject( + new Type(XInterface.class), xEnum.nextElement()); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + log.println("Can't convert any"); + } + } + result = true; + } catch (WrappedTargetException e) { + log.println("Couldn't get a component : " + e.getMessage()); + e.printStackTrace(); + } catch (NoSuchElementException e) { + log.println("Couldn't get a component : " + e.getMessage()); + e.printStackTrace(); + } + tRes.tested("getComponents()", result); + } + + /** + * Cannot test the method because it requires + * terminating StarOffice. Will add real test later. + */ + public void _terminate() { + tRes.tested("terminate()", true); + } + + /** + * Cannot test the method because of terminate(). + * Will add real test later. + */ + public void _addTerminateListener() { + tRes.tested("addTerminateListener()", true); + } + + /** + * Cannot test the method because of terminate(). + * Will add real test later. + */ + public void _removeTerminateListener() { + tRes.tested("removeTerminateListener()", true); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method does not return null. + */ + public void _getCurrentComponent() { + tRes.tested("getCurrentComponent()", + oObj.getCurrentComponent() != null); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method does not return null. + */ + public void _getCurrentFrame() { + tRes.tested("getCurrentFrame()", oObj.getCurrentFrame() != null); + } + +} + diff --git a/qadevOOo/tests/java/ifc/frame/_XDispatch.java b/qadevOOo/tests/java/ifc/frame/_XDispatch.java new file mode 100644 index 0000000000..3cc536f7a3 --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XDispatch.java @@ -0,0 +1,221 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + + +import com.sun.star.beans.PropertyValue; +import com.sun.star.frame.XDispatch; +import com.sun.star.util.URL; +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import com.sun.star.frame.XNotifyingDispatch; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.frame.DispatchResultEvent; + +/** +* Testing <code>com.sun.star.frame.XDispatch</code> +* interface methods : +* <ul> +* <li><code> dispatch()</code></li> +* <li><code> addStatusListener()</code></li> +* <li><code> removeStatusListener()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XDispatch.URL'</code> (of type <code>com.sun.star.util.URL +* </code>): URL for passing to <code>dispatch()</code> method. </li> +* <ul> <p> +* @see com.sun.star.frame.XDispatch +* @see com.sun.star.frame.XNotifyingDispatch +* @see ifc.frame._XDispatch +* @see ifc.frame._XNotifyingDispatch +*/ + +public class _XDispatch extends MultiMethodTest { + + public XDispatch oObj = null; + + /** + * Listener implementation which sets flags on appropriate method calls + */ + protected static class TestStatusListener implements + com.sun.star.frame.XStatusListener { + public boolean statusChangedCalled = false ; + private final java.io.PrintWriter log; + + public TestStatusListener(java.io.PrintWriter log) { + this.log = log ; + } + + public void disposing(com.sun.star.lang.EventObject e) { + log.println(" disposing was called.") ; + } + + public void statusChanged(com.sun.star.frame.FeatureStateEvent e) { + statusChangedCalled = true ; + log.println(" statusChanged was called.") ; + log.println(" FeatureURL = '" + e.FeatureURL + "'"); + log.println(" FeatureDescriptor = '" + e.FeatureDescriptor + "'"); + log.println(" IsEnabled = " + e.IsEnabled); + log.println(" Requery = " + e.Requery); + log.println(" State = '" + e.State.toString() + "'"); + } + + } + + /** + * Listener implementation which sets flags on appropriate method calls + */ + protected static class TestNotificationListener implements + com.sun.star.frame.XDispatchResultListener { + public boolean finishedDispatch = false ; + private final java.io.PrintWriter log; + + public TestNotificationListener(java.io.PrintWriter log) { + this.log = log ; + } + + public void disposing(com.sun.star.lang.EventObject e) { + log.println(" disposing was called.") ; + } + + public void dispatchFinished( DispatchResultEvent e) { + finishedDispatch = true ; + log.println(" dispatchFinished was called.") ; + } + + } + + TestStatusListener listener = null ; + TestNotificationListener notificationListener = null; + URL url = null ; + + /** + * Not all implementations could call the + * <code>com.sun.star.frame.XStatusListener</code>. For this purposes the + * <code>com.sun.star.frame.XDispatchWithNotification</code> was designed. + * If <code>com.sun.star.frame.XStatusListener</code> was not called and + * <code>com.sun.star.frame.XStatusListener</code> is present, it was used + * to check listeners. + */ + private boolean checkXDispatchWithNotification() + { + XNotifyingDispatch xND = UnoRuntime.queryInterface(XNotifyingDispatch.class, oObj); + if ( xND != null) { + log.println(" XNotifyingDispatch found:"); + PropertyValue[] arguments = (PropertyValue[]) + tEnv.getObjRelation("XNotifyingDispatchArgument"); + + notificationListener = new TestNotificationListener(log) ; + xND.dispatchWithNotification(url, arguments, notificationListener); + + waitForEventIdle(); + + log.println(" Listener called: "+ notificationListener.finishedDispatch); + + return notificationListener.finishedDispatch; + } else { + return false; + } + + } + /** + * Retrieves object relations and creates new listeners. + * @throws StatusException If one of relations not found. + */ + @Override + public void before() { + listener = new TestStatusListener(log) ; + url = (URL) tEnv.getObjRelation("XDispatch.URL") ; + + if (url == null) throw new StatusException + (Status.failed("Relation not found.")) ; + } + + /** + * Calls the method using URL from relation. <p> + * Has <b> OK </b> status if one listener (not removed) is called, and + * another (removed) is not. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code>addStatusListener</code> : + * to check that the listener is called + * </li> + * </ul> + */ + public void _dispatch() { + requiredMethod("addStatusListener()") ; + + boolean result = true ; + + oObj.dispatch(url, new PropertyValue[0]) ; + + waitForEventIdle(); + + log.println("Listener called: "+ listener.statusChangedCalled); + + result = listener.statusChangedCalled; + + if (!result) { + result = checkXDispatchWithNotification(); + } + + tRes.tested("dispatch()", result) ; + } + + /** + * Adds two listeners. <p> + * Has <b> OK </b> status if no runtime exceptions occurred. + */ + public void _addStatusListener() { + + boolean result = true ; + oObj.addStatusListener(listener, url) ; + + tRes.tested("addStatusListener()", result) ; + } + + /** + * Removes the listener added before. <p> + * Has <b> OK </b> status if the dispatch call doesn't call the listener. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> dispatch() </code> : to have a listener to remove + * </li> + * </ul> + */ + public void _removeStatusListener() { + requiredMethod("dispatch()") ; + listener.statusChangedCalled = false; + boolean result = true ; + oObj.removeStatusListener(listener, url) ; + + oObj.dispatch(url, new PropertyValue[0]) ; + + waitForEventIdle(); + + System.out.println("Listener called: "+ listener.statusChangedCalled); + + result = ! listener.statusChangedCalled; + + tRes.tested("removeStatusListener()", result) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/frame/_XDispatchProvider.java b/qadevOOo/tests/java/ifc/frame/_XDispatchProvider.java new file mode 100644 index 0000000000..3cc7c17186 --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XDispatchProvider.java @@ -0,0 +1,155 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import lib.MultiMethodTest; +import util.utils; + +import com.sun.star.frame.DispatchDescriptor; +import com.sun.star.frame.FrameSearchFlag; +import com.sun.star.frame.XDispatch; +import com.sun.star.frame.XDispatchProvider; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.URL; +import com.sun.star.util.XURLTransformer; + +/** +* Testing <code>com.sun.star.frame.XDispatchProvider</code> +* interface methods: +* <ul> +* <li><code> queryDispatch() </code></li> +* <li><code> queryDispatches() </code></li> +* </ul><p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XDispatchProvider.URL'</code> (of type <code>String</code>): +* used to obtain unparsed url of DispatchProvider </li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.frame.XDispatchProvider +*/ +public class _XDispatchProvider extends MultiMethodTest { + public static XDispatchProvider oObj = null; + private String dispatchUrl = null ; + + /** + * Retrieves object relation. + */ + @Override + public void before() { + dispatchUrl = (String) tEnv.getObjRelation("XDispatchProvider.URL") ; + if (dispatchUrl == null) { + dispatchUrl = utils.getFullTestDocName("index.html"); + } + log.println("Using URL: '" + dispatchUrl + "'"); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method does not return null. + */ + public void _queryDispatch() { + URL url = new URL(); + String frameName = "_top"; + + url.Complete = dispatchUrl; + try { + XURLTransformer xParser=UnoRuntime.queryInterface(XURLTransformer.class, + tParam.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 = dispatchUrl; + xParser.parseStrict(aParseURL); + url = aParseURL[0]; + } catch (com.sun.star.uno.Exception e) { + log.println("Couldn't parse URL"); + } + XDispatch xDispatch = oObj.queryDispatch(url, + frameName, FrameSearchFlag.ALL); + tRes.tested("queryDispatch()", xDispatch != null); + } + + /** + * Before test calls the method, DispatchDescriptor sequence is defined.<p> + * Has <b> OK </b> status if the method does not return null, returned + * sequence length is equal to a number of DispatchDescriptors + * and returned sequence consists of non-null elements. + */ + public void _queryDispatches() { + String name1 = "_self"; + String name2 = "_top"; + URL url1 = new URL(); + URL url2 = new URL(); + + url1.Complete = dispatchUrl; + url2.Complete = dispatchUrl; + try { + log.println("Parsing URL"); + XURLTransformer xParser = UnoRuntime.queryInterface(XURLTransformer.class, + tParam.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 = dispatchUrl; + xParser.parseStrict(aParseURL); + url1 = aParseURL[0]; + url2 = aParseURL[0]; + } catch (com.sun.star.uno.Exception e) { + log.println("Couldn't parse URL"); + } + DispatchDescriptor descs[] = new DispatchDescriptor[] { + new DispatchDescriptor(url1, name1, FrameSearchFlag.ALL), + new DispatchDescriptor(url2, name2, FrameSearchFlag.ALL) + }; + XDispatch[] xDispatches = oObj.queryDispatches(descs); + + if (xDispatches == null) { + log.println("queryDispatches() returned null"); + tRes.tested("queryDispatches()", false); + return; + } + + if (xDispatches.length != descs.length) { + log.println("queryDispatches() returned " + + xDispatches.length + + " amount of XDispatch instead of " + + descs.length); + tRes.tested("queryDispatches()", false); + return; + } + + for (int i = 0; i < xDispatches.length; i++) { + if (xDispatches[i] == null) { + log.println("queryDispatches() result contains" + + " null object"); + tRes.tested("queryDispatches()", false); + return; + } + } + + tRes.tested("queryDispatches()", true); + } + +} + diff --git a/qadevOOo/tests/java/ifc/frame/_XDispatchProviderInterception.java b/qadevOOo/tests/java/ifc/frame/_XDispatchProviderInterception.java new file mode 100644 index 0000000000..ada2a936c0 --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XDispatchProviderInterception.java @@ -0,0 +1,134 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import java.io.PrintWriter; + +import lib.MultiMethodTest; + +import com.sun.star.frame.DispatchDescriptor; +import com.sun.star.frame.XDispatch; +import com.sun.star.frame.XDispatchProvider; +import com.sun.star.frame.XDispatchProviderInterception; +import com.sun.star.frame.XDispatchProviderInterceptor; +import com.sun.star.util.URL; + +/** +* Testing <code>com.sun.star.frame.XDispatchProviderInterception</code> +* interface methods : +* <ul> +* <li><code> registerDispatchProviderInterceptor()</code></li> +* <li><code> releaseDispatchProviderInterceptor()</code></li> +* </ul> <p> +* @see com.sun.star.frame.XDispatchProviderInterception +*/ +public class _XDispatchProviderInterception extends MultiMethodTest { + + public XDispatchProviderInterception oObj = null; + + /** + * Implementation of <code>XDispatchProviderInterceptor</code> interface + * which writes info about method calls to log, stores master and + * slave interceptors, and redirect all dispatch queries to the master + * provider. + */ + public static class TestInterceptor implements XDispatchProviderInterceptor { + private final PrintWriter log; + public XDispatchProvider master = null, slave = null ; + + public TestInterceptor(PrintWriter log) { + this.log = log ; + } + + public XDispatchProvider getSlaveDispatchProvider() { + log.println("getSlaveDispatchProvider() called.") ; + return slave; + } + public XDispatchProvider getMasterDispatchProvider() { + log.println("getMasterDispatchProvider() called.") ; + return master; + } + public void setSlaveDispatchProvider(XDispatchProvider prov) { + log.println("setSlaveDispatchProvider(" + prov + ") called.") ; + slave = prov ; + } + public void setMasterDispatchProvider(XDispatchProvider prov) { + log.println("setMasterDispatchProvider(" + prov + ") called.") ; + master = prov ; + } + + public XDispatch queryDispatch(URL url, String frame, int flags) { + log.println("my queryDispatch('" + url.Complete + "', '" + + frame + "', " + flags + ") called.") ; + return slave.queryDispatch(url, frame, flags) ; + } + public XDispatch[] queryDispatches(DispatchDescriptor[] desc) { + log.println("my queryDispatches() called.") ; + return slave.queryDispatches(desc) ; + } + } + + + TestInterceptor interceptor = null ; + /** + * Creates new interceptor implementation. + */ + @Override + public void before() { + interceptor = new TestInterceptor(log) ; + } + + /** + * Registers new interceptor implementation. <p> + * Has <b> OK </b> status if during registering interceptor's + * <code>setMasterDispatchProvider</code> method with non null + * parameter was called. <p> + */ + public void _registerDispatchProviderInterceptor() { + + boolean result = true ; + oObj.registerDispatchProviderInterceptor(interceptor) ; + + result = interceptor.master != null ; + + tRes.tested("registerDispatchProviderInterceptor()", result) ; + } + + /** + * Releases interceptor. <p> + * Has <b> OK </b> status if during method call interceptor's + * <code>setMasterDispatchProvider</code> method with <code>null</code> + * parameter was called. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerDispatchProviderInterceptor </code> </li> + * </ul> + */ + public void _releaseDispatchProviderInterceptor() { + requiredMethod("registerDispatchProviderInterceptor()") ; + + boolean result = true ; + oObj.releaseDispatchProviderInterceptor(interceptor) ; + + result = interceptor.master == null ; + + tRes.tested("releaseDispatchProviderInterceptor()", result) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/frame/_XDispatchRecorder.java b/qadevOOo/tests/java/ifc/frame/_XDispatchRecorder.java new file mode 100644 index 0000000000..b48d11ff87 --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XDispatchRecorder.java @@ -0,0 +1,208 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import util.utils; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.frame.XDispatch; +import com.sun.star.frame.XDispatchProvider; +import com.sun.star.frame.XDispatchRecorder; +import com.sun.star.frame.XFrame; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.URL; + +/** +* Testing <code>com.sun.star.frame.XDispatchRecorder</code> +* interface methods: +* <ul> +* <li><code> startRecording() </code></li> +* <li><code> recordDispatch() </code></li> +* <li><code> recordDispatchAsComment() </code></li> +* <li><code> endRecording() </code></li> +* <li><code> getRecordedMacro() </code></li> +* </ul><p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.frame.XDispatchRecorder +*/ +public class _XDispatchRecorder extends MultiMethodTest { + public static XDispatchRecorder oObj = null; + + XFrame xFrame = null; + URL dispURL = null; + PropertyValue[] dispArgs = new PropertyValue[0]; + + @Override + protected void before() { + xFrame = (XFrame) tEnv.getObjRelation("XDispatchRecorder.Frame"); + + if (xFrame == null) { + throw new StatusException(Status.failed("Relation not found")); + } + } + + public void _startRecording() { + + oObj.startRecording(xFrame); + oObj.endRecording(); + tRes.tested("startRecording()", true); + } + + public void _getRecordedMacro() throws Exception { + + clearBuffer(); + + oObj.startRecording(xFrame); + + log.println("dispatch calls via API must be recorded"); + dispURL = utils.parseURL(tParam.getMSF(), ".uno:InsertText"); + + PropertyValue prop = new PropertyValue(); + prop.Name = "Text"; + prop.Value = "XDispatchRecorder.endRecording()"; + dispArgs = new PropertyValue[] {prop}; + + log.println("Dispatching event for frame ..."); + XDispatchProvider xDispProv = UnoRuntime.queryInterface(XDispatchProvider.class, xFrame); + XDispatch xDisp = xDispProv.queryDispatch(dispURL, "", 0); + xDisp.dispatch(dispURL, dispArgs); + + waitForEventIdle(); + + log.println("Getting macro ... :"); + String macro = oObj.getRecordedMacro(); + log.println(macro); + + log.println("Ending record ..."); + oObj.endRecording(); + + boolean res = macro != null + && macro.indexOf(dispURL.Complete) > -1; + if (!res) log.println("Dispatch URL '" + dispURL.Complete + + "' was NOT found in macro - FAILED"); + + tRes.tested("getRecordedMacro()", res); + } + + public void _endRecording() { + + oObj.startRecording(xFrame); + oObj.endRecording(); + String macro = oObj.getRecordedMacro(); + boolean res = true; + if (macro.length() != 0){ + log.println("'endRecording()' was called but macro buffer is not cleared: FALSE"); + log.println(macro); + res = false; + } + + tRes.tested("endRecording()", res); + } + + public void _recordDispatch() { + clearBuffer(); + + oObj.startRecording(xFrame); + + // positive test + dispURL = utils.parseURL(tParam.getMSF(), ".uno:InsertText"); + + PropertyValue prop = new PropertyValue(); + prop.Name = "Text"; + prop.Value = "XDispatchRecorder.recordDispatch()"; + dispArgs = new PropertyValue[] {prop}; + + log.println("Recording dispatch ..."); + oObj.recordDispatch(dispURL, dispArgs); + + log.println("Getting macro ... :"); + String macro = oObj.getRecordedMacro(); + log.println(macro); + + oObj.endRecording(); + + boolean res = macro != null + && macro.indexOf(dispURL.Complete) > -1 + && macro.indexOf((String)dispArgs[0].Value) > -1; + if (!res) log.println("Dispatch URL '" + dispURL.Complete + + "' or its argument '" + dispArgs[0].Value + + "' was not found in macro returned - FAILED"); + + tRes.tested("recordDispatch()", res); + } + + public void _recordDispatchAsComment() { + clearBuffer(); + + oObj.startRecording(xFrame); + + dispURL = utils.parseURL(tParam.getMSF(), ".uno:InsertText"); + + PropertyValue prop = new PropertyValue(); + prop.Name = "Text"; + prop.Value = "XDispatchRecorder.recordDispatchAsComment()"; + dispArgs = new PropertyValue[] {prop}; + + log.println("Recording dispatch ..."); + oObj.recordDispatchAsComment(dispURL, dispArgs); + + log.println("Getting macro ... :"); + String macro = oObj.getRecordedMacro(); + log.println(macro); + + oObj.endRecording(); + + boolean res = macro != null + && macro.indexOf(dispURL.Complete) > -1 + && macro.indexOf((String)dispArgs[0].Value) > -1; + if (!res) log.println("Dispatch URL '" + dispURL.Complete + + "' or its argument '" + dispArgs[0].Value + + "' was not found in macro returned - FAILED"); + + log.println("Checking if macro is commented ..."); + int idx = macro.indexOf((String)dispArgs[0].Value); + int lineStartIdx = macro.lastIndexOf("\n", idx); + String lineStart = macro.substring(lineStartIdx + 1, idx).toLowerCase(); + log.println("Line start is '" + lineStart + "'"); + + if (lineStart.startsWith("'") || lineStart.startsWith("rem")) { + log.println("Line is commented : OK"); + } else { + log.println("Line is not commented : FAILED"); + res =false; + } + + tRes.tested("recordDispatchAsComment()", res); + } + + + private void clearBuffer() { + oObj.startRecording(xFrame); + oObj.endRecording(); + String macro = oObj.getRecordedMacro(); + if (macro.length() != 0){ + log.println("ERROR: 'endRecording()' was called but macro buffer is not cleared!"); + log.println(macro); + } + } + +} diff --git a/qadevOOo/tests/java/ifc/frame/_XDispatchRecorderSupplier.java b/qadevOOo/tests/java/ifc/frame/_XDispatchRecorderSupplier.java new file mode 100644 index 0000000000..00e8f6ba4e --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XDispatchRecorderSupplier.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 ifc.frame; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.frame.XDesktop; +import com.sun.star.frame.XDispatch; +import com.sun.star.frame.XDispatchProvider; +import com.sun.star.frame.XDispatchRecorder; +import com.sun.star.frame.XModel; +import com.sun.star.frame.XDispatchRecorderSupplier; +import com.sun.star.frame.XFrame; +import com.sun.star.lang.XComponent; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.URL; +import lib.MultiMethodTest; +import lib.StatusException; +import util.SOfficeFactory; +import util.utils; + +/** +* Testing <code>com.sun.star.frame.XDispatchRecorderSupplier</code> +* interface methods: +* <ul> +* <li><code> setDispatchRecorder() </code></li> +* <li><code> getDispatchRecorder() </code></li> +* <li><code> dispatchAndRecord() </code></li> +* </ul><p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.frame.XDispatchRecorderSupplier +*/ +public class _XDispatchRecorderSupplier extends MultiMethodTest { + public static XDispatchRecorderSupplier oObj = null; + + XComponent xTextDoc = null; + XDispatchRecorder recorder = null; + + /** + * Simple <code>XDispatchRecorder</code> implementation + * which method <code>getRecordedMacro</code> returns a fixed + * string. + */ + private static class MyRecorder implements XDispatchRecorder { + public void startRecording(XFrame p0) {} + public void recordDispatch(URL p0, PropertyValue[] p1) {} + public void recordDispatchAsComment(URL p0, PropertyValue[] p1) {} + public void endRecording(){} + public String getRecordedMacro() { + return "MyRecorder implementation"; + } + } + + /** + * Creates a new document which supplies a frame. + * Also a <code>com.sun.star.frame.Desktop</code> + * service created for obtaining document's frame. + */ + @Override + protected void before() throws Exception { + SOfficeFactory SOF = SOfficeFactory.getFactory(tParam.getMSF()); + + log.println( "creating a text document" ); + xTextDoc = SOF.createTextDoc(null); + + Object inst = tParam.getMSF().createInstance + ("com.sun.star.frame.Desktop"); + UnoRuntime.queryInterface(XDesktop.class, inst); + } + + /** + * Creates an instance of <code>MyRecorder</code> and set if, + * then get the current recorder. Second case is setting + * recorder to null. Finally restores the old macro recorder. <p> + * + * Has <b>OK</b> status if in the first case custom recorder + * was successfully returned, and in second case current + * recorder is null. + */ + public void _setDispatchRecorder() { + requiredMethod("getDispatchRecorder()"); + + boolean res = true, + locRes = true; + log.print("Setting custom macro recorder ..."); + oObj.setDispatchRecorder(new MyRecorder()); + XDispatchRecorder rec = oObj.getDispatchRecorder(); + + locRes = rec != null && + "MyRecorder implementation".equals(rec.getRecordedMacro()); + if (locRes) log.println("OK"); + else log.println("FAILED"); + res &= locRes; + + log.print("Setting null dispatch recorder ..."); + oObj.setDispatchRecorder(null); + locRes = oObj.getDispatchRecorder() == null; + if (locRes) log.println("OK"); + else log.println("FAILED"); + res &= locRes; + + log.println("Setting old macro recorder ..."); + oObj.setDispatchRecorder(recorder); + + tRes.tested("setDispatchRecorder()", res); + } + + /** + * Just gets the current recorder and stores it. + * + * Has <b>OK</b> status. + */ + public void _getDispatchRecorder() { + recorder = oObj.getDispatchRecorder(); + tRes.tested("getDispatchRecorder()", true); + } + + /** + * First sets the current dispatch recorder to new + * <code>DispatchRecorder</code> instance if the current one + * is null. The a <code>Dispatch</code> instance is created + * which inserts some text into text document. + * A number of cases is checked : + * <ul> + * <li> A valid call : here the recorded macro must contain + * inserted string and URL </li> + * <li> Call with invalid URL : the macro recorded must not + * contain this URL </li> + * <li> Call with null dispatcher : checking for GPF </li> + * <li> Call with the current recorder set to null : + * checking for GPF </li> + * </ul> + * + * Has <b>OK</b> status if all cases are OK. + */ + public void _dispatchAndRecord() throws Exception { + requiredMethod("getDispatchRecorder()"); + + boolean res = true; + if (recorder == null) { + try { + Object inst = tParam.getMSF().createInstance + ("com.sun.star.comp.framework.DispatchRecorder"); + recorder = UnoRuntime.queryInterface + (XDispatchRecorder.class, inst); + oObj.setDispatchRecorder(recorder); + } catch (com.sun.star.uno.Exception e) { + throw new StatusException("Couldn't create recorder", e); + } + } + + waitForEventIdle(); + + XModel model = UnoRuntime.queryInterface(XModel.class, xTextDoc); + XFrame fr = model.getCurrentController().getFrame(); + + XDispatchProvider xDispProv = UnoRuntime.queryInterface(XDispatchProvider.class, fr); + + URL dispURL = utils.parseURL(tParam.getMSF(), ".uno:InsertText"); + + XDispatch xDisp = xDispProv.queryDispatch(dispURL,"",0); + + PropertyValue[] args = new PropertyValue[1]; + args[0] = new PropertyValue(); + args[0].Name = "Text"; + args[0].Value = "XDispatchRecorderSupplier"; + + log.print("Dispatching and recording ..."); + oObj.dispatchAndRecord(dispURL, args, xDisp); + + String macro = recorder.getRecordedMacro(); + boolean locRes = macro != null && + macro.indexOf("XDispatchRecorderSupplier")>-1 && + macro.indexOf(".uno:InsertText")>-1; + if (locRes) log.println("OK"); + else log.println("FAILED"); + res &= locRes; + log.println("Recorder macro :\n" + macro); + + log.print("Trying to set dispatch with null Dispatcher ..."); + try { + oObj.dispatchAndRecord(dispURL, args, null); + log.println("OK"); + } catch (java.lang.Exception e){ + log.println("Exception is OK: " + e); + } + + log.print("Trying to set dispatch recorder to null and record ..."); + oObj.setDispatchRecorder(null); + try { + oObj.dispatchAndRecord(dispURL, args, xDisp); + log.println("OK"); + } catch (java.lang.Exception e){ + log.println("Exception is OK: " + e); + } + + oObj.setDispatchRecorder(recorder); + + tRes.tested("dispatchAndRecord()", res); + } + + /** + * Disposes the document created in <code>before()</code> + */ + @Override + protected void after() { + xTextDoc.dispose(); + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/frame/_XDocumentTemplates.java b/qadevOOo/tests/java/ifc/frame/_XDocumentTemplates.java new file mode 100644 index 0000000000..0a7f7f8bba --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XDocumentTemplates.java @@ -0,0 +1,267 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import lib.MultiMethodTest; +import util.utils; + +import com.sun.star.beans.Property; +import com.sun.star.frame.XDocumentTemplates; +import com.sun.star.frame.XStorable; +import com.sun.star.sdbc.XResultSet; +import com.sun.star.sdbc.XRow; +import com.sun.star.ucb.Command; +import com.sun.star.ucb.OpenCommandArgument2; +import com.sun.star.ucb.XCommandProcessor; +import com.sun.star.ucb.XContent; +import com.sun.star.ucb.XContentAccess; +import com.sun.star.ucb.XDynamicResultSet; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +/** +* Testing <code>com.sun.star.frame.XDesktop</code> +* interface methods: +* <ul> +* <li><code> getContent() </code></li> +* <li><code> storeTemplate() </code></li> +* <li><code> addTemplate() </code></li> +* <li><code> removeTemplate() </code></li> +* <li><code> renameTemplate() </code></li> +* <li><code> addGroup() </code></li> +* <li><code> removeGroup() </code></li> +* <li><code> renameGroup() </code></li> +* <li><code> update() </code></li> +* </ul><p> +*/ +public class _XDocumentTemplates extends MultiMethodTest { + public XDocumentTemplates oObj = null; // oObj filled by MultiMethodTest + protected XContent content = null; + /** + * Test calls the method and prints contents list to log.<p> + * Has <b> OK </b> status if the XContent isn't empty. + */ + public void _getContent() { + content = oObj.getContent(); + log.println("Content list:" + getContentList(content)); + tRes.tested("getContent()", content != null); + } + + /** + * Test calls the method and checks that new group was added. <p> + * Has <b> OK </b> status if method returns true and new group was added. + */ + public void _addGroup() { + requiredMethod("getContent()"); + if (getSubContent(content, "XDocumentTemplatesTemp") != null ) { + oObj.removeGroup("XDocumentTemplatesTemp"); + } + if (getSubContent(content, "XDocumentTemplates") != null ) { + oObj.removeGroup("XDocumentTemplates"); + } + boolean res = oObj.addGroup("XDocumentTemplatesTemp"); + log.println("Method returned: " + res); + res &= getSubContent(content, "XDocumentTemplatesTemp") != null; + tRes.tested("addGroup()", res); + } + + XContent groupContent = null; + /** + * Test calls the method and checks that content has no group with old name + * and that content has group with new name. <p> + * Has <b> OK </b> status if method returns true, content has no group with + * old name and content has group with new name.<p> + */ + public void _renameGroup() { + requiredMethod("addGroup()"); + boolean res = oObj.renameGroup("XDocumentTemplatesTemp", + "XDocumentTemplates"); + log.println("Method returned: " + res); + groupContent = getSubContent(content, "XDocumentTemplates"); + res &= getSubContent(content, "XDocumentTemplatesTemp") == null; + res &= groupContent != null; + tRes.tested("renameGroup()", res); + } + + /** + * Test calls the method and checks that group content has new template. <p> + * Has <b> OK </b> status if method returns true and group content has new + * template.<p> + */ + public void _addTemplate() { + requiredMethod("renameGroup()"); + String testDoc = utils.getFullTestURL("report.stw"); + log.println("Adding template from " + testDoc); + boolean res = oObj.addTemplate("XDocumentTemplates", + "ANewTemplateTemp",testDoc); + log.println("Method returned: " + res); + res &= getSubContent(groupContent, "ANewTemplateTemp") != null; + tRes.tested("addTemplate()", res); + } + + /** + * Test calls the method and checks that group content has no template with + * old name and that group content has template with new name. <p> + * Has <b> OK </b> status if method returns true, group content has no + * template with old name and group content has template with new name.<p> + */ + public void _renameTemplate() { + requiredMethod("addTemplate()"); + boolean res = oObj.renameTemplate("XDocumentTemplates", + "ANewTemplateTemp", + "ANewTemplate"); + log.println("Method returned: " + res); + res &= getSubContent(groupContent, "ANewTemplateTemp") == null; + res &= getSubContent(groupContent, "ANewTemplate") != null; + + tRes.tested("renameTemplate()", res); + } + + /** + * Test calls the method and checks that group content has new template. <p> + * Has <b> OK </b> status if method returns true and new template was created.<p> + */ + public void _storeTemplate() { + requiredMethod("renameGroup()"); + XStorable store = (XStorable) tEnv.getObjRelation("Store"); + boolean res = oObj.storeTemplate("XDocumentTemplates", + "NewStoreTemplate", + store); + log.println("Method returned: " + res); + res &= getSubContent(groupContent, "NewStoreTemplate") != null; + tRes.tested("storeTemplate()", res); + } + + /** + * Test calls the method and checks that group content has no deleted template. <p> + * Has <b> OK </b> status if method returns true and group content has no + * deleted template.<p> + */ + public void _removeTemplate() { + requiredMethod("renameTemplate()"); + boolean res = oObj.removeTemplate("XDocumentTemplates", "ANewTemplate"); + log.println("Method returned: " + res); + res &= getSubContent(groupContent, "ANewTemplate") == null; + tRes.tested("removeTemplate()", res); + } + + /** + * Test calls the method and checks that content has no deleted group. <p> + * Has <b> OK </b> status if method returns true and content has no deleted + * group.<p> + */ + public void _removeGroup() { + requiredMethod("renameGroup()"); + executeMethod("renameTemplate()"); + boolean res = oObj.removeGroup("XDocumentTemplates"); + log.println("Method returned: " + res); + res &= getSubContent(content, "XDocumentTemplates") == null; + tRes.tested("removeGroup()", res); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if no exception occurs.<p> + */ + public void _update() { + oObj.update(); + tRes.tested("update()",true); + } + + /** + * Returns the string representation of content passed as parameter. + */ + protected String getContentList(XContent content) { + StringBuilder ret = new StringBuilder(); + XResultSet statRes = getStatResultSet(content); + if (statRes != null) { + try { + statRes.first(); + XRow row = UnoRuntime.queryInterface(XRow.class, statRes); + while(! statRes.isAfterLast()) { + ret.append("\n ").append(row.getString(1)); + statRes.next(); + } + } catch (com.sun.star.sdbc.SQLException e) { + log.println("Exception occurred:" + e); + } + } + return ret.toString(); + } + + protected XResultSet getStatResultSet(XContent content) { + XResultSet statResSet = null; + try { + statResSet = getDynaResultSet(content).getStaticResultSet(); + } catch(com.sun.star.ucb.ListenerAlreadySetException e) { + log.println("Exception occurred:" + e); + } + return statResSet; + } + + protected XDynamicResultSet getDynaResultSet(XContent content) { + Command command = new Command(); + OpenCommandArgument2 comArg = new OpenCommandArgument2(); + Property[] comProps = new Property[1]; + comArg.Mode = com.sun.star.ucb.OpenMode.ALL; + comProps[0] = new Property(); + comProps[0].Name = "Title"; + comArg.Properties = comProps; + + command.Name = "open"; + command.Handle = -1; + command.Argument = comArg; + + XCommandProcessor comProc = UnoRuntime.queryInterface(XCommandProcessor.class, content); + + XDynamicResultSet DynResSet = null; + try { + DynResSet = (XDynamicResultSet) AnyConverter.toObject( + new Type(XDynamicResultSet.class),comProc.execute(command, 0, null)); + } catch(com.sun.star.ucb.CommandAbortedException e) { + log.println("Couldn't execute command:" + e); + } catch(com.sun.star.uno.Exception e) { + log.println("Couldn't execute command:" + e); + } + + return DynResSet; + } + + protected XContent getSubContent(XContent content, String subName) { + XResultSet statRes = getStatResultSet(content); + XRow row = UnoRuntime.queryInterface(XRow.class, statRes); + XContentAccess contAcc = UnoRuntime.queryInterface(XContentAccess.class, statRes); + XContent subContent = null; + if (statRes != null) { + try { + statRes.first(); + while(!statRes.isAfterLast()) { + if ( subName.equals(row.getString(1)) ) { + subContent = contAcc.queryContent(); + } + statRes.next(); + } + } catch(com.sun.star.sdbc.SQLException e) { + log.println("Exception occurred:" + e); + } + } + return subContent; + } +} + diff --git a/qadevOOo/tests/java/ifc/frame/_XFrame.java b/qadevOOo/tests/java/ifc/frame/_XFrame.java new file mode 100644 index 0000000000..9536cdb2b6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XFrame.java @@ -0,0 +1,571 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import com.sun.star.awt.XWindow; +import com.sun.star.frame.FrameAction; +import com.sun.star.frame.FrameActionEvent; +import com.sun.star.frame.XController; +import com.sun.star.frame.XFrame; +import com.sun.star.frame.XFrameActionListener; +import com.sun.star.frame.XFramesSupplier; +import com.sun.star.lang.EventObject; +import java.io.PrintWriter; +import lib.MultiMethodTest; +import lib.TestEnvironment; + +/** +* Testing <code>com.sun.star.frame.XFrame</code> +* interface methods: +* <ul> +* <li><code> getName() </code></li> +* <li><code> setName() </code></li> +* <li><code> activate() </code></li> +* <li><code> deactivate() </code></li> +* <li><code> isActive() </code></li> +* <li><code> addFrameActionListener() </code></li> +* <li><code> removeFrameActionListener() </code></li> +* <li><code> getCreator() </code></li> +* <li><code> getComponentWindow() </code></li> +* <li><code> getContainerWindow() </code></li> +* <li><code> getController() </code></li> +* <li><code> isTop() </code></li> +* <li><code> findFrame() </code></li> +* <li><code> contextChanged() </code></li> +* <li><code> setCreator() </code></li> +* <li><code> setComponent() </code></li> +* <li><code> initialize() </code></li> +* </ul><p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XFrame'</code> (of type <code>XFrame</code>) +* <b>optional</b>: any frame named 'XFrame'. +* Could be used by <code>findFrame</code> method to try +* to find other frame than itself.</li> +* +* <li> <code>'Desktop'</code> (of type <code>Object</code>): +* if exists, then desktop component is tested</li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.frame.XFrame +*/ +public class _XFrame extends MultiMethodTest { + final FrameAction[] actionEvent = new FrameAction[1] ; + final boolean[] listenerCalled = new boolean[] {false} ; + final boolean[] activatedCalled = new boolean[] {false} ; + final boolean[] deactivatedCalled = new boolean[] {false} ; + final TestFrameActionListener listener = + new TestFrameActionListener() ; + public static XFrame oObj = null; + + /** + * Class used to test listeners. + */ + private class TestFrameActionListener + implements XFrameActionListener { + + public void frameAction(FrameActionEvent e) { + listenerCalled[0] = true ; + activatedCalled[0] |= e.Action == FrameAction.FRAME_ACTIVATED; + deactivatedCalled[0] |= e.Action == FrameAction.FRAME_DEACTIVATING; + actionEvent[0] = e.Action; + } + + public void disposing(EventObject e) {} + + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method does not return null. + */ + public void _getName() { + String name = oObj.getName() ; + if (name == null) + log.println("getName() returned null: FAILED") ; + + tRes.tested("getName()", name!=null) ; + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if set and gotten names are equal. + */ + public void _setName() { + String sName = "XFrame" ; + + oObj.setName(sName); + String gName = oObj.getName(); + boolean res = sName.equals(gName); + if (! res) + log.println("setName('" + sName + + "'), but getName() return '" + gName + "'") ; + tRes.tested("setName()", res); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _activate() { + oObj.activate() ; + tRes.tested("activate()", true) ; + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _deactivate() { + oObj.deactivate() ; + oObj.activate() ; + tRes.tested("deactivate()", true) ; + } + + /** + * Test calls the method. Then frame is deactivated and method called + * again. <p> + * Has <b> OK </b> status if isDesktop() returns true or if the method + * always display real status of a frame during activation/deactivation. + */ + public void _isActive() { + boolean result = true; + + if (tEnv.getTestCase().getObjectName().equals("Desktop")) { + log.println("Desktop is always active"); + tRes.tested("isActive()", oObj.isActive()) ; + return; + } + + oObj.deactivate(); + result &= !oObj.isActive(); + if (oObj.isActive()) + log.println("after deactivate() method call, isActive() returned true"); + oObj.activate(); + result &= oObj.isActive(); + if (!oObj.isActive()) + log.println("after activate() method call, isActive() returned false") ; + boolean res = isDesktop(log,tEnv,"isActive()"); + if (res) result=res; + + tRes.tested("isActive()", result) ; + } + + /** + * Test calls the method. Then frame status (activated/deactivated) is + * changed, and the listener is checked.<p> + * Has <b> OK </b> status if isDesktop() method returns true, or if the + * listener was called and frame was activated. + */ + public void _addFrameActionListener() throws Exception { + boolean result = true ; + + oObj.addFrameActionListener(listener) ; + oObj.activate() ; + oObj.deactivate() ; + oObj.activate() ; + + if (tEnv.getTestCase().getObjectName().equals("Desktop")) { + log.println("No actions supported by Desktop"); + tRes.tested("addFrameActionListener()", true) ; + return; + } + + waitForEventIdle(); + + if (!listenerCalled[0]) { + log.println("listener was not called.") ; + result = false ; + } else { + if (!activatedCalled[0]) { + log.println("Listener was called, FRAME_ACTIVATED was not") ; + result = false ; + } + if (!deactivatedCalled[0]) { + log.println("Listener was called, FRAME_DEACTIVATING was not") ; + result = false ; + } + } + + boolean res = isDesktop(log, tEnv, "addFrameActionListener()"); + if (res) result=res; + + tRes.tested("addFrameActionListener()", result) ; + } + + /** + * Test calls the method. Then frame status (activated/deactivated) is + * changed, and the listener is checked.<p> + * Has <b> OK </b> status if isDesktop() method returns true, or if the + * method actually removes listener so it does not react on + * activate/deactivate events. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addFrameActionListener() </code>: adds action listener + * to a frame </li> + * </ul> + */ + public void _removeFrameActionListener() { + boolean result = true; + + requiredMethod("addFrameActionListener()"); + listenerCalled[0] = false; + oObj.removeFrameActionListener(listener); + oObj.activate(); + oObj.deactivate(); + oObj.activate(); + if (tEnv.getTestCase().getObjectName().equals("Desktop")) { + log.println("No actions supported by Desktop"); + tRes.tested("removeFrameActionListener()", true) ; + return; + } + + if (listenerCalled[0]) + log.println("Listener wasn't removed, and was called"); + boolean res = isDesktop(log, tEnv, "removeFrameActionListener()"); + if (res) result=res; else result = (!listenerCalled[0]); + + tRes.tested("removeFrameActionListener()", result); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if isDesktop() method returns true or if the method + * does not return null. + */ + public void _getCreator() { + boolean result = true; + + if (tEnv.getTestCase().getObjectName().equals("Desktop")) { + log.println("Desktop has no creator"); + tRes.tested("getCreator()", true) ; + return; + } + + XFramesSupplier creator = oObj.getCreator() ; + if (creator == null) + log.println("getCreator() returns null") ; + boolean res = isDesktop(log,tEnv,"getCreator()"); + if (res) result=res; else result = (creator != null); + tRes.tested("getCreator()", result) ; + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if isDesktop() method returns true or if the method + * does not return null. + */ + public void _getComponentWindow() { + boolean result = true; + + XWindow win = oObj.getComponentWindow() ; + + if (tEnv.getTestCase().getObjectName().equals("Desktop")) { + log.println("Desktop has no component window"); + tRes.tested("getComponentWindow()", true) ; + return; + } + + if (win == null) + log.println("getComponentWindow() returns null") ; + boolean res = isDesktop(log,tEnv,"getComponentWindow()"); + if (res) result=res; else result = (win != null); + tRes.tested("getComponentWindow()", result) ; + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if isDesktop() method returns true or if the method + * does not return null. + */ + public void _getContainerWindow() { + boolean result = true; + + if (tEnv.getTestCase().getObjectName().equals("Desktop")) { + log.println("Desktop has no container window"); + tRes.tested("getContainerWindow()", true) ; + return; + } + + XWindow win = oObj.getContainerWindow() ; + if (win == null) + log.println("getContainerWindow() returns null") ; + boolean res = isDesktop(log,tEnv,"getContainerWindow()"); + if (res) result=res; else result = (win != null); + tRes.tested("getContainerWindow()", result) ; + } + + /** + * Test calls the method. Then returned controller is checked. <p> + * Has <b> OK </b> status if isDesktop() method returns true or + * if the method returns non-null controller, having frame that's equal to + * a (XFrame) oObj. + */ + public void _getController() { + boolean result = true; + XController ctrl = oObj.getController(); + + if (tEnv.getTestCase().getObjectName().equals("Desktop")) { + log.println("Desktop has no controller"); + tRes.tested("getController()", true) ; + return; + } + + if (ctrl == null) { + log.println("getController() returns null"); + result = false; + } else { + XFrame frm = ctrl.getFrame(); + if (!oObj.equals(frm)) { + log.println("Frame returned by controller not " + + "equals to frame testing"); + result = false; + } + } + boolean res = isDesktop(log, tEnv, "getController()"); + if (res) result=res; + tRes.tested("getController()", result) ; + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _isTop() { + log.println("isTop() = " + oObj.isTop()); + tRes.tested("isTop()", true) ; + } + + /** + * After obtaining an object relation 'XFrame', test tries to find a frame + * named 'XFrame'. <p> + * Has <b> OK </b> status if the method returns non-null object that's equal + * to previously obtained object relation. + */ + public void _findFrame() { + boolean result = true ; + + XFrame aFrame = (XFrame) tEnv.getObjRelation("XFrame"); + + if (aFrame != null) { + log.println("Trying to find a frame with name 'XFrame' ..."); + XFrame frame = oObj.findFrame("XFrame", + com.sun.star.frame.FrameSearchFlag.GLOBAL) ; + if (frame == null) { + log.println("findFrame(\"XFrame,com.sun.star.frame.FrameSearchFlag.GLOBAL\") returns null") ; + result = false ; + } else if ( !aFrame.equals(frame) ) { + log.println("findFrame(\"XFrame,com.sun.star.frame.FrameSearchFlag.GLOBAL\") " + + " returns frame which is not equal to passed in relation") ; + result = false ; + } + } + + log.println("Trying to find a frame with name '_self' ..."); + XFrame frame = oObj.findFrame("_self", + com.sun.star.frame.FrameSearchFlag.AUTO) ; + if (frame == null) { + log.println("findFrame(\"_self\") returns null") ; + result = false ; + } else if ( !oObj.equals(frame) ) { + log.println("findFrame(\"_self\") " + + " returns frame which is not equal to tested") ; + result = false ; + } + + tRes.tested("findFrame()", result) ; + } + + /** + * At first new listener is added, then test calls the method and result + * is checked. <p> + * Has <b> OK </b> status if isDesktop() method returns true or if the + * listener was called and proper event past to listener. + */ + public void _contextChanged() { + boolean result = true; + TestFrameActionListener listener = new TestFrameActionListener(); + + if (tEnv.getTestCase().getObjectName().equals("Desktop")) { + log.println("Desktop can't change context"); + tRes.tested("contextChanged()", true) ; + return; + } + + listenerCalled[0] = false; + oObj.addFrameActionListener(listener); + try { + oObj.contextChanged(); + if ( !listenerCalled[0] ) { + log.println("listener was not called on contextChanged() call.") ; + result = false; + } else if (actionEvent[0] != FrameAction.CONTEXT_CHANGED) { + log.println("listener was called, but Action != CONTEXT_CHANGED") ; + result = false; + } + } finally { + oObj.removeFrameActionListener(listener); + } + + boolean res = isDesktop(log, tEnv, "contextChanged()"); + if (res) result = res; + tRes.tested("contextChanged()", result); + } + + + /** + * Test calls the method. Remembered old creator is restored at the end. <p> + * Has <b> OK </b> status if the method successfully set new value to (XFrame) + * oObj object. + */ + public void _setCreator() { + if (tEnv.getTestCase().getObjectName().equals("Desktop")) { + log.println("Desktop has no creator"); + tRes.tested("setCreator()", true) ; + return; + } + + XFramesSupplier oldCreator = oObj.getCreator() ; + oObj.setCreator(null) ; + tRes.tested("setCreator()", oObj.getCreator() == null) ; + oObj.setCreator(oldCreator) ; + } + + /** + * Test calls the method, then result is checked.<p> + * Has <b> OK </b> status if method returns true, and values, set by the + * method are nulls, or if method returns false, and values are not changed. + * This method destroy the object. Therefore all other methods have to be + * executed before : + * <ul> + * <li> <code> getName() </code> + * <li> <code> setName() </code> + * <li> <code> activate() </code> + * <li> <code> deactivate() </code> + * <li> <code> isActive() </code> + * <li> <code> addFrameActionListener() </code> + * <li> <code> getComponentWindow() </code> + * <li> <code> getContainerWindow() </code> + * <li> <code> getController() </code> + * <li> <code> isTop() </code> + * <li> <code> findFrame() </code> + * <li> <code> contextChanged() </code> + * <li> <code> setCreator() </code> + * object</li> + * </ul> + */ + public void _setComponent() { + // setComponent() destr + requiredMethod("getName()") ; + requiredMethod("setName()") ; + requiredMethod("activate()") ; + requiredMethod("deactivate()") ; + requiredMethod("isActive()") ; + requiredMethod("addFrameActionListener()") ; + requiredMethod("getComponentWindow()") ; + requiredMethod("getContainerWindow()") ; + requiredMethod("getController()") ; + requiredMethod("isTop()") ; + requiredMethod("findFrame()") ; + requiredMethod("contextChanged()") ; + requiredMethod("setCreator()") ; + + boolean result = true; + + XWindow oldWindow = oObj.getComponentWindow(); + XController oldController = oObj.getController(); + boolean rs = oObj.setComponent(null, null); + if (rs) { // component must be changed + result &= oObj.getComponentWindow() == null; + result &= oObj.getController() == null; + if (!result) + log.println("setComponent() returns true, but component is " + + "not changed."); + } else { // frame is not allowed to change component + result &= oObj.getComponentWindow() == oldWindow ; + result &= oObj.getController() == oldController ; + if (!result) + log.println("setComponent() returns false, but component is" + + "changed."); + } + tRes.tested("setComponent()", result); + + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns. + * In case a frame should initialised twice, a + * <CODE>com.sun.star.uno.RuntimeException</CODE> was thrown. This is ok. But since + * a com.sun.star.uno.RuntimeException could thrown in any state the message of + * the exception must contain a defined string. In this case the test get an + * <CODE>OK</CODE> status. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setComponent() </code> : sets window and controller to the + * object</li> + * </ul> + */ + public void _initialize() { + requiredMethod("setComponent()") ; + XWindow win = oObj.getContainerWindow() ; + boolean bOK = true; + try { + oObj.initialize(win) ; + } catch (com.sun.star.uno.RuntimeException e){ + String message="Frame::initialized() is called more than once, which is not useful nor allowed."; + if (e.toString().indexOf(message) != -1){ + log.println(e.toString()); + log.println("methods throws exception, but it's OK"); + }else{ + log.println(e.toString()); + bOK=false; + } + + } + tRes.tested("initialize()", bOK) ; + } + + /** + * Checks does relation 'Desktop' exist. Returns true if exist. + */ + public static boolean isDesktop(PrintWriter log, + TestEnvironment env, String method) { + Object isD = env.getObjRelation("Desktop"); + if (isD != null) { + log.println("The Desktop doesn't support the method " + method); + log.println("It will always return true"); + return true; + } + else { + return false; + } + } + + /** + * Forces environment recreation. + */ + @Override + public void after() { + disposeEnvironment(); + } +} diff --git a/qadevOOo/tests/java/ifc/frame/_XFrameActionListener.java b/qadevOOo/tests/java/ifc/frame/_XFrameActionListener.java new file mode 100644 index 0000000000..d225e86f78 --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XFrameActionListener.java @@ -0,0 +1,35 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import com.sun.star.frame.FrameActionEvent; +import com.sun.star.frame.XFrameActionListener; +import lib.MultiMethodTest; + +public class _XFrameActionListener extends MultiMethodTest { + + public XFrameActionListener oObj = null; + + + public void _frameAction() { + FrameActionEvent event = new FrameActionEvent(); + oObj.frameAction(event); + tRes.tested("frameAction()", true); + } +} diff --git a/qadevOOo/tests/java/ifc/frame/_XFrameLoader.java b/qadevOOo/tests/java/ifc/frame/_XFrameLoader.java new file mode 100644 index 0000000000..987605480c --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XFrameLoader.java @@ -0,0 +1,192 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import util.SOfficeFactory; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.frame.XDesktop; +import com.sun.star.frame.XFrame; +import com.sun.star.frame.XFrameLoader; +import com.sun.star.frame.XLoadEventListener; +import com.sun.star.lang.EventObject; +import com.sun.star.lang.XComponent; +import com.sun.star.uno.UnoRuntime; + + +/** +* Testing <code>com.sun.star.frame.XFrameLoader</code> +* interface methods : +* <ul> +* <li><code> load()</code></li> +* <li><code> cancel()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'FrameLoader.URL'</code> (of type <code>String</code>): +* a url or component to be loaded </li> +* <li> <code>'FrameLoader.Frame'</code> <b>(optional)</b> +* (of type <code>com.sun.star.frame.XFrame</code>): +* a target frame where component to be loaded. If this +* relation is omitted then a text document created and its +* frame is used. </li> +* <li> <code>'FrameLoader.args'</code> <b>(optional)</b> +* (of type <code>Object[]</code>): +* necessary arguments for loading a component. If omitted +* then zero length array is passed as parameter</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.frame.XFrameLoader +*/ +public class _XFrameLoader extends MultiMethodTest { + + public XFrameLoader oObj = null; // oObj filled by MultiMethodTest + private String url = null ; + private XFrame frame = null ; + private PropertyValue[] args = new PropertyValue[0] ; + + /** + * Implementation of load listener which registers all its calls. + */ + protected static class TestListener implements XLoadEventListener { + public boolean finished = false ; + public boolean cancelled = false ; + + public void loadFinished(XFrameLoader l) { + finished = true ; + } + public void loadCancelled(XFrameLoader l) { + cancelled = true ; + } + public void disposing(EventObject e) {} + } + + TestListener listener = new TestListener() ; + XComponent frameSup = null ; + + /** + * Retrieves all relations. If optional ones are not found + * creates their default values. <p> + * @throws StatusException If one of required relations not found. + */ + @Override + public void before() { + url = (String) tEnv.getObjRelation("FrameLoader.URL") ; + frame = (XFrame) tEnv.getObjRelation("FrameLoader.Frame") ; + + if (frame == null) { + SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() ); + + try { + log.println( "creating a textdocument" ); + frameSup = SOF.createTextDoc( null ); + + Object oDsk = tParam.getMSF() + .createInstance("com.sun.star.frame.Desktop") ; + XDesktop dsk = UnoRuntime.queryInterface(XDesktop.class, oDsk) ; + + util.utils.shortWait(); + frame = dsk.getCurrentFrame() ; + } catch ( com.sun.star.uno.Exception e ) { + // Some exception occurs.FAILED + e.printStackTrace( log ); + throw new StatusException( "Couldn't create a frame.", e ); + } + } + + Object args = tEnv.getObjRelation("FrameLoader.args") ; + if (args != null) this.args = (PropertyValue[]) args ; + + if (url == null /*|| frame == null*/) { + throw new StatusException + (Status.failed("Some relations not found")) ; + } + } + + private boolean loaded = false ; + + /** + * First <code>cancel</code> method test is called. + * If in that test loading process was interrupted by + * <code>cancel</code> call then <code>load</code> test + * executes. It loads a component, waits some moment to + * listener have a chance to be called and then checks + * if the load listener was called.<p> + * Has <b>OK</b> status if <code>cancel</code> method test + * didn't interrupt loading and it was successful, or + * if in this method it loads successful and listener's + * <code>finished</code> method was called. + * The following method tests are to be executed before: + * <ul> + * <li> <code> cancel() </code> </li> + * </ul> + */ + public void _load() throws Exception { + executeMethod("cancel()") ; + + if (!loaded) { + oObj.load(frame, url, args, listener) ; + + waitForEventIdle(); + + loaded = listener.finished ; + } + + tRes.tested("load()", loaded) ; + } + + /** + * Starts to load a component and then immediately tries to + * cancel the process. <p> + * Has <b>OK</b> status if the process was cancelled or + * finished (appropriate listener methods were called). + */ + public void _cancel() throws Exception { + boolean result = true ; + + oObj.load(frame, url, args, listener) ; + oObj.cancel() ; + + waitForEventIdle(); + + if (listener.cancelled) { + log.println("Loading was canceled.") ; + } + if (listener.finished) { + log.println("Loading was finished.") ; + loaded = true ; + } + if (!listener.cancelled && !listener.finished) { + log.println("Loading was not canceled and not finished") ; + result = false ; + } + + tRes.tested("cancel()", result) ; + } + + @Override + public void after() { + if (frameSup != null) frameSup.dispose() ; + frame.dispose(); + } +} + diff --git a/qadevOOo/tests/java/ifc/frame/_XFramesSupplier.java b/qadevOOo/tests/java/ifc/frame/_XFramesSupplier.java new file mode 100644 index 0000000000..a54718b704 --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XFramesSupplier.java @@ -0,0 +1,204 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import lib.MultiMethodTest; + +import com.sun.star.container.XIndexAccess; +import com.sun.star.frame.XFrame; +import com.sun.star.frame.XFramesSupplier; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; + +/** +* Testing <code>com.sun.star.frame.XFramesSupplier</code> +* interface methods: +* <ul> +* <li><code> getActiveFrame() </code></li> +* <li><code> getFrames() </code></li> +* <li><code> setActiveFrame() </code></li> +* </ul><p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.frame.XFramesSupplier +*/ +public class _XFramesSupplier extends MultiMethodTest { + public static XFramesSupplier oObj = null; + protected XIndexAccess frames = null ; + protected XFrame active = null ; + protected int activeIdx = -1 ; + + /** + * Test calls the method, then result is checked. Also active frame index + * is saved in activeIdx variable.<p> + * + * Has <b> OK </b> status if the method does not return null and the object + * contains returned frame. Or if no frames available and the method + * returns null.<p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getFrames() </code> : obtains frames from the object </li> + * </ul> + */ + public void _getActiveFrame() { + boolean result = true ; + + requiredMethod("getFrames()") ; + active = oObj.getActiveFrame() ; + if (active == null) { + // if no child frames then no active frame could be + result = oObj.getFrames().getCount() == 0; + log.println("getActiveFrame() returned null") ; + } + else { + boolean hasActiveFrame = false ; + for (int i = 0; i < frames.getCount(); i++) { + XFrame fr = null ; + try { + try { + fr = (XFrame) AnyConverter.toObject( + new Type(XFrame.class),frames.getByIndex(i)); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + log.println("Can't convert any"); + } + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while calling getByIndex() method :") ; + e.printStackTrace(log) ; + return; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception occurred while calling getByIndex() method :") ; + e.printStackTrace(log) ; + return; + } + if (active.equals(fr)) { + hasActiveFrame = true ; + activeIdx = i ; + } + } + if (!hasActiveFrame) { + log.println("getActiveFrame() isn't contained " + + "in getFrames() collection") ; + result = false ; + } + } + + tRes.tested("getActiveFrame()", result) ; + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if the method does not return null, + * number of returned frames is not zero and each of them is not null too. + */ + public void _getFrames() { + boolean result = true ; + int cnt = 0; + + frames = oObj.getFrames() ; + if (frames != null) { + cnt = frames.getCount() ; + log.println("There are " + cnt + " frames.") ; + } else { + log.println("getFrames() returned null !!!") ; + result = false ; + } + for (int i = 0; i < cnt; i++) { + try { + if (frames.getByIndex(i) == null) { + log.println("Frame(" + i + ") == null") ; + result = false ; + } + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while calling getByIndex() method :") ; + e.printStackTrace(log) ; + return; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception occurred while calling getByIndex() method :") ; + e.printStackTrace(log) ; + return; + } + } + + tRes.tested("getFrames()", result) ; + } + + /** + * After selecting frame to be activated, test calls the method. <p> + * + * Has <b> OK </b> status if set and gotten active frames are equal.<p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getActiveFrame() </code> : gets active frame </li> + * </ul> + */ + public void _setActiveFrame() { + XFrame sFrame = null ; + + requiredMethod("getActiveFrame()") ; + if (frames.getCount() > 1) { + try { + if (activeIdx != 0) + try { + sFrame = (XFrame) AnyConverter.toObject( + new Type(XFrame.class),frames.getByIndex(0)); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + log.println("Can't convert any"); + } + else + try { + sFrame = (XFrame) AnyConverter.toObject( + new Type(XFrame.class),frames.getByIndex(1)); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + log.println("Can't convert any"); + } + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while calling getByIndex() method :") ; + e.printStackTrace(log) ; + return; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception occurred while calling getByIndex() method :") ; + e.printStackTrace(log) ; + return; + } + } else if (frames.getCount() > 0) { + sFrame = active ; + } + + oObj.setActiveFrame(sFrame) ; + XFrame gFrame = oObj.getActiveFrame() ; + + boolean result; + if (gFrame == null && sFrame == null) + result = true; + else if (gFrame != null && sFrame != null) + result = sFrame.equals(gFrame); + else + result = false; + + if (!result) { + log.println("Active frame set is not equal frame get: FAILED"); + result = false ; + } + + tRes.tested("setActiveFrame()", result) ; + } + +} // finished class _XFramesSupplier + diff --git a/qadevOOo/tests/java/ifc/frame/_XLayoutManager.java b/qadevOOo/tests/java/ifc/frame/_XLayoutManager.java new file mode 100644 index 0000000000..7f2a40c6b6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XLayoutManager.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 ifc.frame; + +import com.sun.star.awt.Point; +import com.sun.star.frame.XFrame; +import com.sun.star.frame.XLayoutManager; +import com.sun.star.awt.Rectangle; +import com.sun.star.awt.Size; +import com.sun.star.ui.DockingArea; +import com.sun.star.ui.XUIElement; +import lib.MultiMethodTest; +import util.utils; + +public class _XLayoutManager extends MultiMethodTest { + public XLayoutManager oObj = null; + + private XFrame xFrame = null; + private static final String sElementName = "private:resource/menubar/myMenu"; + + @Override + public void before() { + xFrame = (XFrame)tEnv.getObjRelation("XLayoutManager.Frame"); + } + + public void _attachFrame() { + oObj.attachFrame(xFrame); + tRes.tested("attachFrame()", true); + } + + public void _createElement() { + requiredMethod("attachFrame()"); + oObj.createElement(sElementName); + tRes.tested("createElement()", true); + } + + public void _destroyElement() { + requiredMethod("getElement()"); + requiredMethod("getElements()"); + oObj.destroyElement(sElementName); + tRes.tested("destroyElement()", true); + } + + public void _doLayout() { + oObj.doLayout(); + tRes.tested("doLayout()", true); + } + + public void _dockWindow() { + requiredMethod("createElement()"); + Point p = new Point(); + p.X = 0; + p.Y = 0; + oObj.dockWindow(sElementName, DockingArea.DOCKINGAREA_TOP, p); + tRes.tested("dockWindow()", true); + } + + public void _floatWindow() { + requiredMethod("createElement()"); + oObj.floatWindow(sElementName); + tRes.tested("floatWindow()", true); + } + + public void _getCurrentDockingArea() { + requiredMethod("attachFrame()"); + Rectangle rect = oObj.getCurrentDockingArea(); + tRes.tested("getCurrentDockingArea()", rect != null); + } + + public void _getElement() { + requiredMethod("createElement()"); + oObj.getElement(sElementName); + tRes.tested("getElement()", true); + } + + public void _getElementPos() { + Point p = oObj.getElementPos(sElementName); + tRes.tested("getElementPos()", p != null); + } + + public void _getElementSize() { + Size s = oObj.getElementSize(sElementName); + tRes.tested("getElementSize()", s != null); + } + + public void _getElements() { + requiredMethod("createElement()"); + XUIElement[] xElements = oObj.getElements(); + for (int i=0; i<xElements.length; i++) { + Object o = xElements[i].getRealInterface(); + log.println("Element " + i + ": " + o.toString() + " " + utils.getImplName(o)); + } + tRes.tested("getElements()", true); + } + + public void _hideElement() { + oObj.hideElement(sElementName); + tRes.tested("hideElement()", true); + } + + public void _isElementDocked() { + oObj.isElementDocked(sElementName); + tRes.tested("isElementDocked()", true); + } + + public void _isElementFloating() { + oObj.isElementFloating(sElementName); + tRes.tested("isElementFloating()", true); + } + + public void _isElementVisible() { + oObj.isElementVisible(sElementName); + tRes.tested("isElementVisible()", true); + } + + public void _lock() { + oObj.lock(); + tRes.tested("lock()", true); + } + + public void _reset() { + oObj.reset(); + tRes.tested("reset()", true); + } + + public void _setDockingAreaAcceptor() { + oObj.setDockingAreaAcceptor(null); + tRes.tested("setDockingAreaAcceptor()", true); + } + + public void _setElementPos() { + requiredMethod("createElement()"); + Point p = new Point(); + p.X = 0; + p.Y = 150; + oObj.setElementPos(sElementName, p); + tRes.tested("setElementPos()", true); + } + + public void _setElementPosSize() { + requiredMethod("createElement()"); + Point p = new Point(); + p.X = 150; + p.Y = 0; + Size size = new Size(); + size.Height = 50; + size.Width = 80; + oObj.setElementPosSize(sElementName, p, size); + tRes.tested("setElementPosSize()", true); + } + + public void _setElementSize() { + requiredMethod("createElement()"); + Size size = new Size(); + size.Height = 80; + size.Width = 50; + oObj.setElementSize(sElementName, size); + tRes.tested("setElementSize()", true); + } + + public void _showElement() { + requiredMethod("createElement()"); + oObj.showElement(sElementName); + tRes.tested("showElement()", true); + + } + + public void _unlock() { + requiredMethod("lock()"); + oObj.unlock(); + tRes.tested("unlock()", true); + } + +} diff --git a/qadevOOo/tests/java/ifc/frame/_XModel.java b/qadevOOo/tests/java/ifc/frame/_XModel.java new file mode 100644 index 0000000000..320570b5fa --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XModel.java @@ -0,0 +1,249 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.frame; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.frame.XController; +import com.sun.star.frame.XModel; +import com.sun.star.view.XSelectionSupplier; + +import lib.MultiMethodTest; + + +/** +* Testing <code>com.sun.star.frame.XModel</code> +* interface methods: +* <ul> +* <li><code> attachResource() </code></li> +* <li><code> connectController() </code></li> +* <li><code> disconnectController() </code></li> +* <li><code> getArgs() </code></li> +* <li><code> getCurrentController() </code></li> +* <li><code> getCurrentSelection() </code></li> +* <li><code> getURL() </code></li> +* <li><code> hasControllersLocked() </code></li> +* <li><code> lockControllers() </code></li> +* <li><code> setCurrentController() </code></li> +* <li><code> unlockControllers() </code></li> +* </ul><p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CONT2'</code> (of type <code>XController</code>): +* a controller used as an argument for several test methods </li> +* <li> <code>'TOSELECT'</code> (of type <code>Object</code>): +* something, we want to select from document </li> +* <li> <code>'SELSUPP'</code> (of type <code>XSelectionSupplier</code>): +* supplier, we use to select something in a document </li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.frame.XModel +*/ +public class _XModel extends MultiMethodTest { + public XModel oObj = null; + boolean result = true; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns true. + */ + public void _attachResource() { + log.println("opening DataSourceBrowser"); + + PropertyValue[] noArgs = new PropertyValue[0]; + result = oObj.attachResource(".component:DB/DataSourceBrowser", noArgs); + tRes.tested("attachResource()", result); + } + + /** + * After obtaining object relation 'CONT2' and storing old controller, + * test calls the method, then result is checked.<p> + * Has <b> OK </b> status if controller, gotten after method call is not + * equal to a previous controller. + */ + public void _connectController() { + XController cont2 = (XController) tEnv.getObjRelation("CONT2"); + XController old = oObj.getCurrentController(); + result = false; + + if (cont2 == null) { + log.println("No controller no show"); + } else { + oObj.connectController(cont2); + + String oldFrame = old.getFrame().getName(); + String newFrame = cont2.getFrame().getName(); + result = (!oldFrame.equals(newFrame)); + } + + tRes.tested("connectController()", result); + } + + /** + * After obtaining object relation 'CONT2', test calls the method, + * then result is checked.<p> + * Has <b> OK </b> status if controller, gotten after method call is not + * equal to a controller we use as an argument to method. + */ + public void _disconnectController() { + XController cont2 = (XController) tEnv.getObjRelation("CONT2"); + result = false; + + if (cont2 == null) { + log.println("No controller no show"); + } else { + oObj.disconnectController(cont2); + result = (oObj.getCurrentController() != cont2); + } + + tRes.tested("disconnectController()", result); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method does not return null. + */ + public void _getArgs() { + tRes.tested("getArgs()", oObj.getArgs() != null); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method does not return null. + */ + public void _getCurrentController() { + XController ctrl = oObj.getCurrentController(); + tRes.tested("getCurrentController()", ctrl != null); + } + + /** + * After obtaining object relations 'SELSUPP' and 'TOSELECT', test prepares + * selection and calls the method. <p> + * Has <b> OK </b> status if the method does not return null. + */ + public void _getCurrentSelection() { + XSelectionSupplier selsupp = (XSelectionSupplier) tEnv.getObjRelation( + "SELSUPP"); + Object toSelect = tEnv.getObjRelation("TOSELECT"); + result = false; + + if (selsupp == null) { + log.println("No Selection Supplier no show"); + } else { + try { + selsupp.select(toSelect); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception occurred while select:"); + e.printStackTrace(log); + + return; + } + + Object sel = oObj.getCurrentSelection(); + result = (sel != null); + } + + tRes.tested("getCurrentSelection()", result); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method does not return null. + */ + public void _getURL() { + String url = oObj.getURL(); + log.println("The url: " + url); + tRes.tested("getURL()", url != null); + } + + /** + * if controller is not locked, test calls the method. <p> + * Has <b> OK </b> status if the method returns true. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> lockControllers() </code> : locks controllers </li> + * </ul> + */ + public void _hasControllersLocked() { + requiredMethod("lockControllers()"); + tRes.tested("hasControllersLocked()", oObj.hasControllersLocked()); + } + + /** + * Test calls the method, then result is checked.<p> + * Has <b> OK </b> status if method locks controllers. + */ + public void _lockControllers() { + oObj.lockControllers(); + result = oObj.hasControllersLocked(); + tRes.tested("lockControllers()", result); + } + + /** + * After obtaining object relation 'CONT2' and storing old controller, + * controller cont2 is connected, then this controller is + * setting as current. + * Sets the old controller as current. + * <p>Has <b> OK </b> status if set and gotten controllers are not equal. + */ + public void _setCurrentController() { + XController cont2 = (XController) tEnv.getObjRelation("CONT2"); + XController old = oObj.getCurrentController(); + result = false; + + if (cont2 == null) { + log.println("No controller no show"); + } else { + oObj.connectController(cont2); + + try { + oObj.setCurrentController(cont2); + } catch (com.sun.star.container.NoSuchElementException e) { + log.print("Cannot set current controller:"); + e.printStackTrace(log); + } + + result = (oObj.getCurrentController() != old); + + try { + oObj.setCurrentController(old); + } catch (com.sun.star.container.NoSuchElementException e) { + log.print("Cannot set current controller:"); + e.printStackTrace(log); + } + } + + tRes.tested("setCurrentController()", result); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if method unlocks controllers. + * <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> hasControllersLocked() </code> : checks if controllers are + * locked </li> + * </ul> + */ + public void _unlockControllers() { + requiredMethod("hasControllersLocked()"); + oObj.unlockControllers(); + result = !oObj.hasControllersLocked(); + tRes.tested("unlockControllers()", result); + } +} diff --git a/qadevOOo/tests/java/ifc/frame/_XModuleManager.java b/qadevOOo/tests/java/ifc/frame/_XModuleManager.java new file mode 100644 index 0000000000..d870589c3c --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XModuleManager.java @@ -0,0 +1,153 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import com.sun.star.beans.PropertyValue; + +import com.sun.star.frame.XModuleManager; +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.lang.IllegalArgumentException; +import com.sun.star.frame.UnknownModuleException; + + +/** +* Testing <code>com.sun.star.frame.XModuleManager</code> +* interface methods: +* <ul> +* <li><code> identify() </code></li> +* </ul><p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XModuleManager.XFrame'</code> (of type <code>PropertyValue[]</code>): +* PropertyValue[n].Value : a XFrame +* PropertyValue[n].Name : the expected return value of <code>identify()</code></li> +* <li> <code>'XModuleManager.XController'</code> (of type <code>PropertyValue[]</code>): +* PropertyValue[n].Value : a XController +* PropertyValue[n].Name : the expected return value of <code>identify()</code></li> +* <li> <code>'XModuleManager.XModel'</code> (of type <code>PropertyValue[]</code>): +* PropertyValue[n].Value : a XFrame +* PropertyValue[n].Name : the expected return value of <code>identify()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.frame.XModuleManager +*/ +public class _XModuleManager extends MultiMethodTest { + /** Test calls the method. <p> + * The object relations <CODE>XModuleManager.XFrame</CODE>, + * <CODE>XModuleManager.XController</CODE> and <CODE>XModuleManager.XModel</CODE> + * are sequences of <CODE>PropertyValue</CODE>. The value of a PropertyValue + * contains a <CODE>XFrame</CODE>, <CODE>XController</CODE> or a + * <CODE>XModel</CODE>. The name of the PropertyValue contains the expected return + * value of method <CODE>indetify()</CODE> if the method was called with + * corresponding value.<p> + * As enhancement the method <CODE>identify()</CODE> was called with invalid + * parameter. In this case the thrown exceptions were caught. + */ + public XModuleManager oObj = null; + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns expected values, that's equal to + * previously obtained object relation 'Frame'. + * The following method tests are to be completed successfully before: + * <ul> + * <li> <code> attachFrame() </code> : attaches frame obtained object + * relation 'Frame' </li> + * </ul> + */ + + private PropertyValue[] xFrameSeq = null; + private PropertyValue[] xControllerSeq = null; + private PropertyValue[] xModelSeq = null; + /** Retrieves object relations. */ + + @Override + public void before() { + + xFrameSeq = (PropertyValue[]) tEnv.getObjRelation("XModuleManager.XFrame") ; + + if (xFrameSeq == null) throw new StatusException + (Status.failed("Relation 'xFrameSeq' not found.")) ; + + + xControllerSeq = (PropertyValue[]) tEnv.getObjRelation("XModuleManager.XController") ; + + if (xControllerSeq == null) throw new StatusException + (Status.failed("Relation 'xControllerSeq' not found.")) ; + + + xModelSeq = (PropertyValue[]) tEnv.getObjRelation("XModuleManager.XModel") ; + + if (xModelSeq == null) throw new StatusException + (Status.failed("Relation 'xModelSeq' not found.")) ; + } + + /* The method <CODE>identify()</CODE> was used for every entry in sequence of + * object relations. + */ + public void _identify() { + boolean ok = true; + log.println("testing frame sequence..."); + ok &= testSequence(xFrameSeq); + log.println("testing controller sequence..."); + ok &= testSequence(xControllerSeq); + log.println("testing model sequence..."); + ok &= testSequence(xModelSeq); + tRes.tested("identify()", ok); + + log.println("testing invalid objects..."); + try{ + oObj.identify(oObj); + } catch (IllegalArgumentException e){ + log.println("expected exception."); + } catch (UnknownModuleException e){ + log.println("expected exception."); + } + } + + private boolean testSequence(PropertyValue[] sequence){ + boolean ok = true; + for (int i = 0 ; i < sequence.length; i++){ + try{ + log.println("testing '" + sequence[i].Name + "'"); + if (!oObj.identify(sequence[i].Value).equals( + sequence[i].Name)) { + log.println("failure: returned value: '" + + oObj.identify(sequence[i].Value) + + "' ,expected value: '" + sequence[i].Name + "'"); + ok = false; + } + } catch (IllegalArgumentException e){ + log.println("Could not get value of sequence '" + + sequence[i].Name + "'"); + return false; + + } catch (UnknownModuleException e){ + log.println("Could not indetify value of sequence '" + + sequence[i].Name + "'"); + return false; + } + } + return ok; + } + +} + diff --git a/qadevOOo/tests/java/ifc/frame/_XNotifyingDispatch.java b/qadevOOo/tests/java/ifc/frame/_XNotifyingDispatch.java new file mode 100644 index 0000000000..b214364f0e --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XNotifyingDispatch.java @@ -0,0 +1,118 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + + +import com.sun.star.beans.PropertyValue; +import com.sun.star.util.URL; +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import com.sun.star.frame.XNotifyingDispatch; +import com.sun.star.frame.DispatchResultEvent; + +/** +* Testing <code>com.sun.star.frame.XNotifyingDispatch</code> +* interface methods : +* <ul> +* <li><code> dispatchWithNotification()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XDispatch.URL'</code> (of type <code>com.sun.star.util.URL +* </code>): URL for passing to <code>dispatch()</code> method. </li> +* <li> <code>[OPTIONAL] 'XNotifyingDispatchArgument'</code> +* (of type sequence<code>com::sun::star::beans::PropertyValue +* </code>): arguments for <code>dispatchWithNotification()</code> method. </li> +* <ul> <p> +* @see com.sun.star.frame.XDispatch +* @see com.sun.star.frame.XNotifyingDispatch +* @see ifc.frame._XDispatch +*/ +public class _XNotifyingDispatch extends MultiMethodTest { + + public XNotifyingDispatch oObj = null; + + + /** + * Listener implementation which sets flags on appropriate method calls + */ + protected static class TestNotificationListener implements + com.sun.star.frame.XDispatchResultListener { + public boolean finishedDispatch = false ; + private final java.io.PrintWriter log; + + public TestNotificationListener(java.io.PrintWriter log) { + this.log = log ; + } + + public void disposing(com.sun.star.lang.EventObject e) { + log.println(" disposing was called.") ; + } + + public void dispatchFinished( DispatchResultEvent e) { + finishedDispatch = true ; + log.println(" dispatchFinished was called.") ; + } + + } + + TestNotificationListener notificationListener = null; + PropertyValue[] arguments = null; + URL url = null ; + + /** + * Retrieves object relations and creates new listeners. + * @throws StatusException If one of relations not found. + */ + @Override + public void before() { + notificationListener = new TestNotificationListener(log) ; + url = (URL) tEnv.getObjRelation("XDispatch.URL") ; + + if (url == null) throw new StatusException + (Status.failed("Relation not found.")) ; + + arguments = (PropertyValue[]) + tEnv.getObjRelation("XNotifyingDispatchArgument"); + } + + /** + * Calls the method using URL and arguments from relation. <p> + * Has <b> OK </b> status if listener is called. + * The following method tests are to be completed successfully before : + */ + public void _dispatchWithNotification() { + + boolean result = true ; + + oObj.dispatchWithNotification(url, arguments, notificationListener); + + waitForEventIdle(); + + log.println("Listener called: "+ notificationListener.finishedDispatch); + + result = notificationListener.finishedDispatch; + + + tRes.tested("dispatchWithNotification()", result) ; + } + +} + diff --git a/qadevOOo/tests/java/ifc/frame/_XPopupMenuController.java b/qadevOOo/tests/java/ifc/frame/_XPopupMenuController.java new file mode 100644 index 0000000000..8a6d0e3979 --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XPopupMenuController.java @@ -0,0 +1,218 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import com.sun.star.graphic.XGraphic; +import com.sun.star.awt.XPopupMenu; +import com.sun.star.awt.KeyEvent; +import com.sun.star.frame.XPopupMenuController; +import lib.MultiMethodTest; + +public class _XPopupMenuController extends MultiMethodTest { + public XPopupMenuController oObj = null; + + @Override + public void before() { + + } + + public void _setPopupMenu() { + XPopupMenu xMenu = new PopupMenuImpl(); + oObj.setPopupMenu(xMenu); + tRes.tested("setPopupMenu()", true); + } + + public void _updatePopupMenu() { + oObj.updatePopupMenu(); + tRes.tested("updatePopupMenu()", true); + } + + private static class PopupMenuImpl implements XPopupMenu { + + public void addMenuListener(com.sun.star.awt.XMenuListener xMenuListener) { + System.out.println("addMenuListener called."); + } + + public void checkItem(short param, boolean param1) { + System.out.println("checkItemListener called."); + } + + public void enableItem(short param, boolean param1) { + System.out.println("enableItem called."); + } + + public short execute(com.sun.star.awt.XWindowPeer xWindowPeer, com.sun.star.awt.Rectangle pos, short param) { + System.out.println("execute called."); + return 0; + } + + public short getDefaultItem() { + System.out.println("getDefaultItem called."); + return 0; + } + + public short getItemCount() { + System.out.println("getItemCount called."); + return 0; + } + + public short getItemId(short param) { + System.out.println("getItemId called."); + return 0; + } + + public short getItemPos(short param) { + System.out.println("getItemPos called."); + return 0; + } + + public String getItemText(short param) { + System.out.println("getItemText called."); + return "Hi."; + } + + public com.sun.star.awt.XPopupMenu getPopupMenu(short param) { + System.out.println("getPopupMenu called."); + return this; + } + + public void insertItem(short param, String str, short param2, short param3) { + System.out.println("insertItem called."); + } + + public void insertSeparator(short param) { + System.out.println("insertSeparator called."); + } + + public boolean isItemChecked(short param) { + System.out.println("isItemChecked called."); + return false; + } + + public boolean isItemEnabled(short param) { + System.out.println("isItemEnabled called."); + return false; + } + + public void removeItem(short param, short param1) { + System.out.println("removeItem called."); + } + + public void removeMenuListener(com.sun.star.awt.XMenuListener xMenuListener) { + System.out.println("removeMenuListener called."); + } + + public void setDefaultItem(short param) { + System.out.println("setDefaultItem called."); + } + + public void setItemText(short param, String str) { + System.out.println("setItemText called."); + } + + public void setPopupMenu(short param, com.sun.star.awt.XPopupMenu xPopupMenu) { + System.out.println("setPopupMenu called."); + } + + public XGraphic getItemImage(short param ) { + System.out.println("getItemImage called."); + return null; + } + + public void setItemImage(short param, XGraphic param1, boolean param2 ) { + System.out.println("setItemImage called."); + } + + public KeyEvent getAcceleratorKeyEvent(short param ) { + System.out.println("getAcceleratorKeyEvent called."); + return new KeyEvent(); + } + + public void setAcceleratorKeyEvent(short param, KeyEvent param1 ) { + System.out.println("setAcceleratorKeyEvent called."); + } + + public void endExecute() { + System.out.println("endExecute called."); + } + + public boolean isInExecute() { + System.out.println("isInExecute called."); + return false; + } + + public boolean isPopupMenu() { + System.out.println("isPopupMenu called."); + return true; + } + + public String getTipHelpText(short param ) { + System.out.println("getTipHelpText called."); + return null; + } + + public void setTipHelpText(short param, String param1 ) { + System.out.println("setTipHelpText called."); + } + + public String getHelpText(short param ) { + System.out.println("getHelpText called."); + return null; + } + + public void setHelpText(short param, String param1 ) { + System.out.println("setHelpText called."); + } + + public String getHelpCommand(short param ) { + System.out.println("getHelpCommand called."); + return null; + } + + public void setHelpCommand(short param, String param1 ) { + System.out.println("setHelpCommand called."); + } + + public String getCommand(short param ) { + System.out.println("getCommand called."); + return null; + } + + public void setCommand(short param, String param1 ) { + System.out.println("setCommand called."); + } + + public void enableAutoMnemonics(boolean param ) { + System.out.println("enableAutoMnemonics called."); + } + + public void hideDisabledEntries(boolean param ) { + System.out.println("hideDisabledEntries called."); + } + + public com.sun.star.awt.MenuItemType getItemType(short param ) { + System.out.println("getItemType called."); + return com.sun.star.awt.MenuItemType.DONTKNOW; + } + + public void clear() { + System.out.println("clear called."); + } + } +} diff --git a/qadevOOo/tests/java/ifc/frame/_XStatusListener.java b/qadevOOo/tests/java/ifc/frame/_XStatusListener.java new file mode 100644 index 0000000000..393c0a205b --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XStatusListener.java @@ -0,0 +1,40 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import com.sun.star.frame.FeatureStateEvent; +import com.sun.star.frame.XStatusListener; +import lib.MultiMethodTest; + +public class _XStatusListener extends MultiMethodTest { + public XStatusListener oObj = null; + + + @Override + public void before() { + + } + + public void _statusChanged() { + FeatureStateEvent event = new FeatureStateEvent(); + oObj.statusChanged(event); + tRes.tested("statusChanged()", true); + } + +} diff --git a/qadevOOo/tests/java/ifc/frame/_XStorable.java b/qadevOOo/tests/java/ifc/frame/_XStorable.java new file mode 100644 index 0000000000..c61a438025 --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XStorable.java @@ -0,0 +1,218 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import lib.MultiMethodTest; +import util.utils; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.frame.XStorable; +import com.sun.star.io.IOException; + +/** +* Testing <code>com.sun.star.frame.XStorable</code> +* interface methods: +* <ul> +* <li><code> getLocation() </code></li> +* <li><code> hasLocation() </code></li> +* <li><code> isReadonly() </code></li> +* <li><code> storeAsURL() </code></li> +* <li><code> storeToURL() </code></li> +* <li><code> store() </code></li> +* </ul><p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.frame.XStorable +*/ +public class _XStorable extends MultiMethodTest { + public XStorable oObj = null; // oObj filled by MultiMethodTest + String storeUrl; + boolean stored; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status in three cases: + * <ol> + * <li>An object has location stored in. Then if method does not return + * null, it has <b> OK </b> status</li> + * <li>An object has no location stored in. Then method storeAsURL() is + * called, and if url is not null and equals to a url where component + * was stored, method has <b> OK </b> status</li> + * <li>An object has no location stored in. Then method storeAsURL() is + * called, and if url is null and method returns null too, method + * has <b> OK </b> status </li> + * </ol><p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> storeAsURL() </code> : stores the object's persistent data + * to a URL and lets the object become the representation of this new + * URL</li> + * </ul> + */ + public void _getLocation() { + if (oObj.hasLocation()) { + // if it has location it should know it + tRes.tested("getLocation()", oObj.getLocation() != null); + } else { + // else try to obtain location + requiredMethod("storeAsURL()"); + if (storeUrl != null) { + // if stored successfully - check location + log.println(oObj.getLocation() + "--" + storeUrl); + tRes.tested("getLocation()", + storeUrl.equals(oObj.getLocation())); + } else { + // if not - it should not have a location + tRes.tested("getLocation()", oObj.getLocation() == null); + } + } + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if stored url is not null and method does not + * return null or if stored url is null and the method returns null.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> storeAsURL() </code>: stores the object's persistent data + * to a URL and lets the object become the representation of this new + * URL</li> + * </ul> + */ + public void _hasLocation() { + requiredMethod("storeAsURL()"); + if (storeUrl != null) { + // if stored successfully - it should have a location + tRes.tested("hasLocation()", oObj.hasLocation()); + } else { + // if not - it should not + tRes.tested("hasLocation()", !oObj.hasLocation()); + } + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if value, returned by the method is not equal to + * 'stored' variable. ( If it's readonly it should not have been stored. ) + * <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> store() </code> : stores data to the URL from which it + * was loaded </li> + * </ul> + */ + public void _isReadonly() { + requiredMethod("store()"); + tRes.tested("isReadonly()", oObj.isReadonly() != stored); + } + + /** + * Object is stored into temporary directory. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _storeAsURL() { + // getting a url to store + String url = utils.getOfficeTemp( + tParam.getMSF()); + + if (url != null) { + url += "xstorable.store.as.test"; + log.println("store as '" + url + "'"); + try { + oObj.storeAsURL(url, new PropertyValue[0]); + storeUrl = url; + tRes.tested("storeAsURL()", true); + } catch (IOException e) { + log.println("Couldn't store as "+url+" : "+e.getMessage()); + e.printStackTrace(log); + storeUrl = null; + tRes.tested("storeAsURL()", false); + } + } else { + log.println("a url to store is not found"); + } + } + + /** + * Object is stored into temporary directory. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _storeToURL() { + // getting a url to store + String url = utils.getOfficeTemp( + tParam.getMSF()); + + if (url != null) { + url += "xstorable.store.as.test"; + log.println("store to '" + url + "'"); + try { + oObj.storeToURL(url, new PropertyValue[0]); + tRes.tested("storeToURL()", true); + } catch (IOException e) { + log.println("Couldn't store to "+url+" : "+e.getMessage()); + e.printStackTrace(log); + tRes.tested("storeToURL()", false); + } + } else { + log.println("a url to store is not found"); + } + } + + /** + * Test calls the method. Then result is checked.<p> + * Has <b> OK </b> status if: + * <ol> + * <li>component was stored, object is not readonly and has location</li> + * <li>exception occurred because of component is readonly + * and wasn't stored</li> + * </ol> + */ + public void _store() { + IOException ioE = null; + + try { + oObj.store(); + stored = true; + } catch (IOException e) { + stored = false; + ioE = e; + } + if (oObj.hasLocation() && !oObj.isReadonly()) { + tRes.tested("store()", stored); + if (!stored) { + log.println("Couldn't store : " + ioE.getMessage()); + ioE.printStackTrace(log); + } + } else { + tRes.tested("store()", !stored); + if (stored) { + if (!oObj.hasLocation()) { + log.println("Shouldn't store successfully" + + " a document without location"); + } else { + log.println("Shouldn't store successfully" + + " a read-only document"); + } + } + } + } + +}// finished class _XStorable + diff --git a/qadevOOo/tests/java/ifc/frame/_XSynchronousFrameLoader.java b/qadevOOo/tests/java/ifc/frame/_XSynchronousFrameLoader.java new file mode 100644 index 0000000000..b56d9d89d2 --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XSynchronousFrameLoader.java @@ -0,0 +1,172 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import util.SOfficeFactory; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.frame.XDesktop; +import com.sun.star.frame.XFrame; +import com.sun.star.frame.XSynchronousFrameLoader; +import com.sun.star.lang.XComponent; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.URL; +import com.sun.star.util.XURLTransformer; + +/** + * Testing <code>com.sun.star.frame.XSynchronousFrameLoader</code> + * interface methods : + * <ul> + * <li><code> load()</code></li> + * <li><code> cancel()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'FrameLoader.URL'</code> (of type <code>String</code>): + * a url of component to be loaded </li> + * <li> <code>'FrameLoader.Frame'</code> <b>(optional)</b> + * (of type <code>com.sun.star.frame.XFrame</code>): + * a target frame where component to be loaded. If this + * relation is omitted then a text document created and its + * frame is used. </li> + * <ul> <p> + * + * @see com.sun.star.frame.XSynchronousFrameLoader + */ +public class _XSynchronousFrameLoader extends MultiMethodTest { + + public XSynchronousFrameLoader oObj = null; // oObj filled by MultiMethodTest + private XFrame frame = null ; + private XComponent frameSup = null ; + private PropertyValue[] descr = null; + + /** + * Retrieves all relations. If optional relation + * <code>FrameLoader.Frame</code> not found + * creates a new document and obtains its frame for loading. <p> + * + * Also <code>MediaDescriptor</code> is created using + * URL from <code>FrameLoader.URL</code> relation. + * + * @throws StatusException If one of required relations not found. + */ + @Override + public void before() { + String url = (String) tEnv.getObjRelation("FrameLoader.URL") ; + frame = (XFrame) tEnv.getObjRelation("FrameLoader.Frame") ; + + if (url == null) { + throw new StatusException(Status.failed("Some relations not found")) ; + } + + SOfficeFactory SOF = SOfficeFactory.getFactory( + tParam.getMSF() ); + + XURLTransformer xURLTrans = null; + + // if frame is not contained in relations the writer frame will be used. + if (frame == null) { + try { + log.println( "creating a textdocument" ); + frameSup = SOF.createTextDoc( null ); + + Object oDsk = tParam.getMSF().createInstance + ("com.sun.star.frame.Desktop") ; + XDesktop dsk = UnoRuntime.queryInterface + (XDesktop.class, oDsk) ; + frame = dsk.getCurrentFrame() ; + + Object o = tParam.getMSF().createInstance + ("com.sun.star.util.URLTransformer") ; + xURLTrans = UnoRuntime.queryInterface + (XURLTransformer.class, o) ; + + } catch ( com.sun.star.uno.Exception e ) { + // Some exception occurs.FAILED + e.printStackTrace( log ); + throw new StatusException( "Couldn't create a document.", e ); + } + } + + URL[] urlS = new URL[1]; + urlS[0] = new URL(); + urlS[0].Complete = url; + if (xURLTrans == null) + throw new IllegalStateException("xURLTrans unexpected null"); + boolean res = xURLTrans.parseStrict(urlS); + log.println("Parsing URL '" + url + "': " + res); + descr = new PropertyValue[1] ; + descr[0] = new PropertyValue(); + descr[0].Name = "URL" ; + descr[0].Value = urlS[0] ; + } + + + /** + * Tries to load component to a frame. <p> + * Has <b> OK </b> status if <code>true</code> is returned. + */ + public void _load() { + boolean result = oObj.load(descr, frame) ; + + tRes.tested("load()", result) ; + } + + /** + * Tries to load component to a frame in separate thread to + * avoid blocking of the current thread and immediately + * cancels loading. <p> + * + * Has <b> OK </b> status if <code>flase</code> is returned, + * i.e. loading was not completed. + */ + public void _cancel() { + requiredMethod("load()") ; + + final boolean[] result = new boolean[1] ; + + (new Thread() { + @Override + public void run() { + result[0] = oObj.load(descr, frame); + } + }).start(); + + oObj.cancel() ; + + waitForEventIdle(); + + tRes.tested("cancel()", !result[0]) ; + } + + /** + * Disposes document if it was created for frame supplying. + */ + @Override + protected void after() { + if (frameSup != null) { + frameSup.dispose(); + } + } +} + + diff --git a/qadevOOo/tests/java/ifc/frame/_XTasksSupplier.java b/qadevOOo/tests/java/ifc/frame/_XTasksSupplier.java new file mode 100644 index 0000000000..9409cf36c8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XTasksSupplier.java @@ -0,0 +1,62 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import lib.MultiMethodTest; + +import com.sun.star.frame.XTasksSupplier; + + +/** +* Testing <code>com.sun.star.frame.XTasksSupplier</code> +* interface methods: +* <ul> +* <li><code> getActiveTask() </code></li> +* <li><code> getTasks() </code></li> +* </ul><p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.frame.XTasksSupplier +*/ +public class _XTasksSupplier extends MultiMethodTest { + public static XTasksSupplier oObj = null; + + /** + * DEPRECATED. <p> + * Has <b> OK </b> status . + */ + public void _getActiveTask() { + log.println("DEPRECATED"); + + tRes.tested("getActiveTask()", true) ; + } // finished _getTasks() + + /** + * DEPRECATED. <p> + * Has <b> OK </b> status. + */ + @Deprecated + public void _getTasks() { + log.println("DEPRECATED"); + + tRes.tested("getTasks()", true); + + } // finished _removeResetListener() + +} // finished class _XTaskSupplier + diff --git a/qadevOOo/tests/java/ifc/frame/_XUIControllerRegistration.java b/qadevOOo/tests/java/ifc/frame/_XUIControllerRegistration.java new file mode 100644 index 0000000000..e42b9be240 --- /dev/null +++ b/qadevOOo/tests/java/ifc/frame/_XUIControllerRegistration.java @@ -0,0 +1,55 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.frame; + +import com.sun.star.frame.XUIControllerRegistration; +import lib.MultiMethodTest; + +public class _XUIControllerRegistration extends MultiMethodTest { + public XUIControllerRegistration oObj = null; + private String aRegisteredController = null; + private static final String aController = ".uno:MySecondController"; + + @Override + public void before() { + aRegisteredController = (String)tEnv.getObjRelation("XUIControllerRegistration.RegisteredController"); + } + + + public void _registerController() { + oObj.registerController(aController, "", "com.sun.star.comp.framework.FooterMenuController"); + oObj.registerController(aRegisteredController, "", "com.sun.star.comp.framework.HeaderMenuController"); + tRes.tested("registerController()", true); + } + + public void _deregisterController() { + requiredMethod("registerController()"); + oObj.deregisterController(aController, ""); + tRes.tested("deregisterController()", true); + } + + public void _hasController() { + requiredMethod("registerController()"); + requiredMethod("deregisterController()"); + boolean res = oObj.hasController(aRegisteredController, ""); + res &= !oObj.hasController(aController, ""); + tRes.tested("hasController()", res); + } + +} diff --git a/qadevOOo/tests/java/ifc/i18n/_XBreakIterator.java b/qadevOOo/tests/java/ifc/i18n/_XBreakIterator.java new file mode 100644 index 0000000000..d33165fd78 --- /dev/null +++ b/qadevOOo/tests/java/ifc/i18n/_XBreakIterator.java @@ -0,0 +1,679 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.i18n; + +import java.util.ArrayList; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.i18n.Boundary; +import com.sun.star.i18n.LineBreakHyphenationOptions; +import com.sun.star.i18n.LineBreakResults; +import com.sun.star.i18n.LineBreakUserOptions; +import com.sun.star.i18n.ScriptType; +import com.sun.star.i18n.WordType; +import com.sun.star.i18n.XBreakIterator; +import com.sun.star.lang.Locale; + +/** +* Testing <code>com.sun.star.i18n.XBreakIterator</code> +* interface methods : +* <ul> +* <li><code> nextCharacters()</code></li> +* <li><code> previousCharacters()</code></li> +* <li><code> nextWord()</code></li> +* <li><code> previousWord()</code></li> +* <li><code> getWordBoundary()</code></li> +* <li><code> getWordType()</code></li> +* <li><code> isBeginWord()</code></li> +* <li><code> isEndWord()</code></li> +* <li><code> beginOfSentence()</code></li> +* <li><code> endOfSentence()</code></li> +* <li><code> getLineBreak()</code></li> +* <li><code> beginOfScript()</code></li> +* <li><code> endOfScript()</code></li> +* <li><code> nextScript()</code></li> +* <li><code> previousScript()</code></li> +* <li><code> getScriptType()</code></li> +* <li><code> beginOfCharBlock()</code></li> +* <li><code> endOfCharBlock()</code></li> +* <li><code> nextCharBlock()</code></li> +* <li><code> previousCharBlock()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'Locale'</code> +* (of type <code>com.sun.star.lang.Locale</code>): +* this locale is used as locale argument for tested methods. +* </li> +* <li> <code>'UnicodeString'</code> +* (of type <code>String</code>): Unicode string which is passed +* to methods except 'CharacterBlock' methods. +* </li> +* <ul> <p> +* @see com.sun.star.i18n.XBreakIterator +*/ +public class _XBreakIterator extends MultiMethodTest { + + public XBreakIterator oObj = null; + + Locale locale = null; + String UnicodeString = null; + + short wordType = WordType.ANYWORD_IGNOREWHITESPACES; + + /** + * Retrieves object relations. + * @throws StatusException If one of relations not found. + */ + @Override + protected void before() { + locale = (Locale)tEnv.getObjRelation("Locale"); + if (locale == null) { + throw new StatusException + (Status.failed("Relation 'Locale' not found")) ; + } + + UnicodeString = (String)tEnv.getObjRelation("UnicodeString"); + if (UnicodeString == null) { + throw new StatusException(Status.failed + ("Relation 'UnicodeString' not found")) ; + } + } + + /** + * Compares returned next character positions with expected values. <p> + * + * Has <b>OK</b> status if position after travel and traveled length + * has expected values. + */ + public void _nextCharacters() { + short nCharacterIteratorMode = + com.sun.star.i18n.CharacterIteratorMode.SKIPCHARACTER; + + int strLength = UnicodeString.length(); + + //Start from position : Travel ... chars : + // Actual position after : How many chars traveled + int[][] nextCharacters = { + { 1, 5000, strLength , strLength - 1 }, + { 10, 6, 16, 6}}; + + boolean bRes = true; + + for(int i = 0; i < nextCharacters.length; i++) { + int[] lDone = new int[1]; + long lRes = oObj.nextCharacters(UnicodeString, nextCharacters[i][0], + locale, nCharacterIteratorMode, nextCharacters[i][1], lDone); + log.println("Expected result is: lRes = " + nextCharacters[i][2] + + "; lDone = " + nextCharacters[i][3] ); + log.println("Actual result is: lRes = " + lRes + + "; lDone = " + lDone[0] ); + + bRes = bRes && lRes == nextCharacters[i][2]; + bRes = bRes && lDone[0] == nextCharacters[i][3]; + } + + tRes.tested("nextCharacters()", bRes); + } + + /** + * Compares returned previous character positions with expected values. <p> + * + * Has <b>OK</b> status if position after travel and traveled length + * has expected values. + */ + public void _previousCharacters() { + short nCharacterIteratorMode = + com.sun.star.i18n.CharacterIteratorMode.SKIPCHARACTER; + + + //Start from position : Travel ... chars : Actual position after : + //How many chars traveled + int[][] previousCharacters = { + {5, 5000, 0, 5}, + {10, 6, 4, 6}}; + + boolean bRes = true; + for(int i = 0; i < previousCharacters.length; i++) { + int[] lDone = new int[1]; + int lRes = oObj.previousCharacters(UnicodeString, + previousCharacters[i][0], + locale, nCharacterIteratorMode, + previousCharacters[i][1], lDone); + log.println("Expected result is: lRes = " + previousCharacters[i][2] + + "; lDone = " + previousCharacters[i][3] ); + log.println("Actual result is: lRes = " + lRes + + "; lDone = " + lDone[0]); + + bRes = bRes && lRes == previousCharacters[i][2]; + bRes = bRes && lDone[0] == previousCharacters[i][3]; + } + + tRes.tested("previousCharacters()", bRes); + } + + ArrayList<Boundary> vBounds = new ArrayList<Boundary>(); + + /** + * Saves bounds of all returned words for the future tests. <p> + * Has <b>OK</b> status. + */ + public void _nextWord() { + int i = 0; + + while( i < UnicodeString.length() - 1 ) { + Boundary bounds = oObj.nextWord + (UnicodeString, i, locale, wordType); + if (bounds.endPos - bounds.startPos > 3) { + vBounds.add( bounds ); + log.println("Word " + vBounds.size() + "(" + + bounds.startPos + "," + bounds.endPos + "): '" + + UnicodeString.substring(bounds.startPos, + bounds.endPos) + "'"); + } + i = bounds.endPos - 1; + } + log.println("In text there are " + vBounds.size() + + " words, if count from left to right"); + tRes.tested("nextWord()", true); + } + + /** + * Compares number of word bounds with number of word bounds saved + * by the method _nextWord().<p> + * Has <b>OK</b> status if number of word bounds are equal. + */ + public void _previousWord() { + requiredMethod("nextWord()"); + + int i = UnicodeString.length() - 1; + ArrayList<Boundary> vPrevBounds = new ArrayList<Boundary>(); + while( i > 0 ) { + Boundary bounds = + oObj.previousWord(UnicodeString, i, locale, wordType); + if (bounds.endPos - bounds.startPos > 3) { + vPrevBounds.add( bounds ); + log.println("Word " + vPrevBounds.size() + "(" + + bounds.startPos + "," + bounds.endPos + "): '" + + UnicodeString.substring(bounds.startPos, bounds.endPos) + + "'"); + } + i = bounds.startPos; + } + log.println("In text there are " + vPrevBounds.size() + + " words, if count from right to left"); + tRes.tested("previousWord()", vPrevBounds.size() == vBounds.size() ); + } + + /** + * For every word in array obtained by <code>nextWord</code> method test + * computes bounds of the word, passing its internal character position.<p> + * + * Has <b>OK</b> status if bounds calculated by <code>getWordBoundary()</code> + * method are the same as bounds obtained by <code>nextWord</code> method. + */ + public void _getWordBoundary() { + requiredMethod("nextWord()"); + + boolean bRes = true; + + for(int i = 0; i < vBounds.size(); i++) { + // calculate middle of the word + Boundary iBounds = vBounds.get(i); + int iPos = (iBounds.endPos - iBounds.startPos) / 2 + + iBounds.startPos; + Boundary bounds = oObj.getWordBoundary(UnicodeString, iPos, + locale, wordType, true); + log.println("Expected result is: startPos = " + iBounds.startPos + + "; endPos = " + iBounds.endPos); + log.println("Actual result is: startPos = " + bounds.startPos + + "; endPos = " + bounds.endPos + " Word is: '" + + UnicodeString.substring(bounds.startPos, bounds.endPos) + "'"); + + bRes = bRes && iBounds.startPos == bounds.startPos; + bRes = bRes && iBounds.endPos == bounds.endPos; + } + + tRes.tested("getWordBoundary()", bRes); + } + + /** + * For every word in array obtained by <code>nextWord</code> method test + * get its type, passing its internal character position.<p> + * + * Has <b>OK</b> status if every word has type <code>WordType.ANY_WORD</code> + */ + public void _getWordType() { + requiredMethod("nextWord()"); + + boolean bRes = true; + + for(int i = 0; i < vBounds.size(); i++) { + // calculate middle of the word + Boundary iBounds = vBounds.get(i); + int iPos = (iBounds.endPos - iBounds.startPos) / 2 + + iBounds.startPos; + + short type = oObj.getWordType(UnicodeString, iPos, locale); + + bRes = bRes && type == WordType.ANY_WORD; + } + + tRes.tested("getWordType()", bRes); + } + + /** + * For every word in array obtained by <code>nextWord</code> method test + * tries to determine if the character at a position starts a word. + * First word starting position is passed, then internal character + * position is passed. <p> + * Has <b>OK</b> status if in the first case <code>true</code> + * returned and in the second - <code>false</code> for every word. + */ + public void _isBeginWord() { + requiredMethod("nextWord()"); + + boolean bRes = true; + + for(int i = 0; i < vBounds.size(); i++) { + Boundary iBounds = vBounds.get(i); + boolean isBegin = oObj.isBeginWord(UnicodeString, iBounds.startPos, + locale, WordType.ANY_WORD); + bRes = bRes && isBegin; + boolean isNotBegin = !oObj.isBeginWord(UnicodeString, + iBounds.startPos + 1, locale, WordType.ANY_WORD); + bRes = bRes && isNotBegin; + + log.println("At position + " + iBounds.startPos + + " isBeginWord? " + isBegin); + log.println("At position + " + (iBounds.startPos + 1) + + " isBeginWord? " + !isNotBegin); + } + + tRes.tested("isBeginWord()", bRes); + } + + /** + * For every word in array obtained by <code>nextWord</code> method test + * tries to determine if the character at a position ends a word. + * First word ending position is passed, then internal character + * position is passed. <p> + * + * Has <b>OK</b> status if in the first case <code>true</code> + * returned and in the second - <code>false</code> for every word. + */ + public void _isEndWord() { + requiredMethod("nextWord()"); + + boolean bRes = true; + + for(int i = 0; i < vBounds.size(); i++) { + Boundary iBounds = vBounds.get(i); + boolean isEnd = oObj.isEndWord(UnicodeString, iBounds.endPos, + locale, WordType.ANY_WORD); + bRes = bRes && isEnd; + boolean isNotEnd = !oObj.isEndWord(UnicodeString, + iBounds.endPos - 1, locale, WordType.ANY_WORD); + bRes = bRes && isNotEnd; + + log.println("At position + " + iBounds.endPos + + " isEndWord? " + isEnd); + log.println("At position + " + (iBounds.endPos - 1) + + " isEndWord? " + !isNotEnd); + } + + tRes.tested("isEndWord()", bRes); + } + + ArrayList<Integer> vSentenceStart = new ArrayList<Integer>(); + /** + * Tries to find all sentences starting positions passing every character + * as position parameter and stores them. Then tries to pass invalid + * position parameters. + * + * Has <b>OK</b> status if -1 is returned for wrong position arguments. + */ + public void _beginOfSentence() { + int iPos = 0; + while( iPos < UnicodeString.length() ) { + Integer start = Integer.valueOf( oObj.beginOfSentence(UnicodeString, + iPos, locale) ); + if (start.intValue() >= 0 && !vSentenceStart.contains(start) ) { + vSentenceStart.add( start ); + log.println("Sentence " + vSentenceStart.size() + + " : start from position " + start); + } + iPos++; + } + + //test for invalid nStartPosition + boolean bRes = oObj.beginOfSentence(UnicodeString, -10, locale) == -1; + bRes &= oObj.beginOfSentence(UnicodeString, + UnicodeString.length() + 1, locale) == -1; + + if (!bRes) { + log.println("When invalid position, returned value isn't equal to -1"); + } + + tRes.tested("beginOfSentence()", bRes); + } + + /** + * For every sentence starting position found in + * <code>beginOfSentence()</code> test tries to compute end + * position of a sentence and checks that the end position is + * greater than starting. + * Then wrong position arguments are passed. + * + * Has <b>OK</b> status if the end position of every sentence + * greater than starting and -1 returned for invalid arguments. + */ + public void _endOfSentence() { + boolean bRes = true; + for(int i = 0; i < vSentenceStart.size(); i++) { + int start = vSentenceStart.get(i).intValue(); + int end = oObj.endOfSentence(UnicodeString, start, locale); + bRes &= end > start; + log.println("Sentence " + i + " range is [" + start + ", " + + end + "]"); + } + + //test for invalid nStartPosition + boolean bInvRes = oObj.endOfSentence(UnicodeString, -10, locale) == -1; + bInvRes &= oObj.endOfSentence(UnicodeString, + UnicodeString.length() + 1, locale) == -1; + + if (!bInvRes) { + log.println("When invalid position, returned value isn't equal to -1"); + } + + tRes.tested("endOfSentence()", bRes && bInvRes); + } + + /** + * Tries to break a string in position other than 0 iterating characters + * from the string beginning (Hyphenation is not used for a while). <p> + * + * Has <b>OK</b> status if non-zero break position was found and it is + * less or equal than position we trying to break. + */ + public void _getLineBreak() { + boolean bRes = true; + LineBreakResults lineBreakResults; + LineBreakHyphenationOptions lineBreakHyphenationOptions = + new LineBreakHyphenationOptions(); + LineBreakUserOptions lineBreakUserOptions = new LineBreakUserOptions(); + + lineBreakUserOptions.applyForbiddenRules = false; + lineBreakUserOptions.allowHyphenateEnglish = false; + + int breakPos = 0; + int pos = 0; + + while(breakPos == 0 && pos < UnicodeString.length() ) { + lineBreakResults = oObj.getLineBreak(UnicodeString, pos, + locale, 0, lineBreakHyphenationOptions, lineBreakUserOptions); + breakPos = lineBreakResults.breakIndex; + pos++; + } + + // finally the position of break must be found in the middle and + // it must be before the break position specified + bRes = breakPos <= pos && breakPos > 0; + + if (!bRes) { + log.println("The last position was: " + pos + + ", and the break position was: " + breakPos); + } + + tRes.tested("getLineBreak()", bRes); + } + + // Asian type script + private static String katakana = new String(new char[] {0x30A1, 0x30A2}) ; + // Weak type script + private static String arrows = new String(new char[] {0x2190, 0x2191}) ; + // Complex type script + private static String arabic = new String(new char[] {0x0641, 0x0642}) ; + + /** + * Tries to find the beginning of the nearest script specified + * relatively to position passed. <p> + * Has <b>OK</b> status if the starting position of script is returned. + */ + public void _beginOfScript() { + String multiScript = "ab" + katakana ; + + int pos = oObj.beginOfScript(multiScript, 3, ScriptType.ASIAN) ; + + log.println("Position = " + pos) ; + + tRes.tested("beginOfScript()", pos == 2) ; + } + + /** + * Tries to find the end of the nearest script specified + * relatively to position passed. <p> + * Has <b>OK</b> status if the end position of script is returned. + */ + public void _endOfScript() { + String multiScript = "ab" + katakana + "cd" ; + + int pos = oObj.endOfScript(multiScript, 2, ScriptType.ASIAN) ; + + log.println("Position = " + pos) ; + + tRes.tested("endOfScript()", pos == 4) ; + } + + /** + * Tries to find the next script starting position specified + * relatively to position passed. <p> + * Has <b>OK</b> status if the appropriate position is returned. + */ + public void _nextScript() { + String multiScript = "ab" + katakana + "cd" ; + + int pos = oObj.nextScript(multiScript, 0, ScriptType.LATIN) ; + + log.println("Position = " + pos) ; + + tRes.tested("nextScript()", pos == 4) ; + } + + /** + * Tries to find the previous script starting position specified + * relatively to position passed. <p> + * Has <b>OK</b> status if the appropriate position is returned. + */ + public void _previousScript() { + String multiScript = "ab" + katakana + "cd" ; + + int pos = oObj.previousScript(multiScript, 5, ScriptType.ASIAN) ; + + log.println("Position = " + pos) ; + + tRes.tested("previousScript()", pos == 2) ; + } + + /** + * Tries to determine script type (of all four types). <p> + * Has <b>OK</b> status if <code>LATIN</code> type returned + * for ASCII character, <code>ASIAN</code> for Katakana Unicode + * codepoints, <code>COMPLEX</code> for Arabic Unicode + * codepoints and <code>WEAK</code> for codepoints from Arrows + * Unicode block. + */ + public void _getScriptType() { + boolean res = true ; + + res &= oObj.getScriptType("abcd", 0) == ScriptType.LATIN ; + res &= oObj.getScriptType(katakana, 0) == ScriptType.ASIAN; + res &= oObj.getScriptType(arabic, 0) == ScriptType.COMPLEX ; + res &= oObj.getScriptType(arrows, 0) == ScriptType.WEAK ; + + tRes.tested("getScriptType()", res) ; + } + + boolean bCharBlockRes = true; + + protected short getCharBlockType(int pos) { + short i = 1; + short cType = 0; + while (i < 31) { + if (oObj.beginOfCharBlock(UnicodeString, pos, locale, i) != -1) { + cType = i; + i = 100; + } + i++; + } + + return cType; + } + + ArrayList<Boundary> vCharBlockBounds = new ArrayList<Boundary>(); + ArrayList<Short> vCharBlockTypes = new ArrayList<Short>(); + + /** + * Creates array of all char blocks with their boundaries and + * types using <code>beginOfCharBlock()</code> and + * <code>endOfCharBlock()</code> methods. <p> + * + * Has <b>OK</b> status if the end of each boundary is the same + * as start of the next one and if the start of the first block + * has position 0 and the end of the last block is at the end + * of the whole string. + */ + public void _beginOfCharBlock() { + int iPos = 0; + + while( iPos < UnicodeString.length() && iPos > -1) { + short charType = getCharBlockType(iPos); + int startPos = oObj.beginOfCharBlock(UnicodeString, iPos, + locale, charType); + int endPos = oObj.endOfCharBlock(UnicodeString, iPos, + locale, charType); + iPos = endPos; + vCharBlockBounds.add(new Boundary(startPos, endPos)); + log.println(vCharBlockBounds.size() + "). Bounds: [" + + startPos + "," + endPos + "]; Type = " + charType); + vCharBlockTypes.add(Short.valueOf(charType)); + } + + for(int i = 0; i < vCharBlockBounds.size() - 1; i++) { + int endPos = vCharBlockBounds.get(i).endPos; + int startPos = vCharBlockBounds.get(i + 1).startPos; + if (endPos != startPos) { + bCharBlockRes = false; + } + } + + log.println("Testing for no intersections : " + bCharBlockRes); + int startPos = vCharBlockBounds.get(0).startPos; + if (startPos != 0) { + bCharBlockRes = false; + } + int endPos = vCharBlockBounds.get + (vCharBlockBounds.size() - 1).endPos; + if (endPos != UnicodeString.length()) { + bCharBlockRes = false; + } + log.println("Regions should starts with 0 and ends with " + + UnicodeString.length()); + + tRes.tested("beginOfCharBlock()", bCharBlockRes); + } + + /** + * Testing of this method is performed in <code>beginOfCharBlock()</code> + * method test. <p> + * + * Has the status same as <code>beginOfCharBlock()</code> method status. + */ + public void _endOfCharBlock() { + requiredMethod("beginOfCharBlock()"); + tRes.tested("endOfCharBlock()", bCharBlockRes); + } + + /** + * For every character block obtained in <code>beginOfCharBlock()</code> + * method test (except the first) tries to find its starting position + * by mean of <code>nextCharBlock()</code> method passing as position + * argument the position before the start of a block. <p> + * + * Has <b>OK</b> status if the start of every block was found and it's + * equal to this block boundary start. + */ + public void _nextCharBlock() { + requiredMethod("beginOfCharBlock()"); + + boolean bRes = true; + for(int i = 0; i < vCharBlockBounds.size(); i++) { + Boundary bounds = vCharBlockBounds.get(i); + Short type = vCharBlockTypes.get(i); + if (bounds.startPos - 1 < 0) continue; + int iPos = oObj.nextCharBlock(UnicodeString, bounds.startPos - 1, + locale, type.shortValue()); + if (iPos != bounds.startPos) { + bRes = false; + log.println("nextCharBlock(UnicodeString, " + + (bounds.startPos - 1) + ", locale, " + type + + ") should return " + bounds.startPos); + log.println("... and actual value is " + iPos); + } + } + + tRes.tested("nextCharBlock()", bRes); + } + + /** + * For every character block obtained in <code>beginOfCharBlock()</code> + * method test (except the first) tries to find its starting position + * by mean of <code>previousCharBlock()</code> method passing as position + * argument the position after the end of a block. <p> + * + * Has <b>OK</b> status if the start of every block was found and it's + * equal to this block boundary start. + */ + public void _previousCharBlock() { + requiredMethod("beginOfCharBlock()"); + + boolean bRes = true; + for(int i = 0; i < vCharBlockBounds.size(); i++) { + Boundary bounds = vCharBlockBounds.get(i); + Short type = vCharBlockTypes.get(i); + int iPos = oObj.previousCharBlock(UnicodeString, + bounds.endPos + 1, locale, type.shortValue()); + if (iPos != bounds.startPos) { + bRes = false; + log.println("previousCharBlock(UnicodeString, " + + (bounds.endPos + 1) + ", locale, " + type + + ") should return " + bounds.startPos); + log.println("... and actual value is " + iPos); + } + } + + tRes.tested("previousCharBlock()", bRes); + } + +} + diff --git a/qadevOOo/tests/java/ifc/i18n/_XCalendar.java b/qadevOOo/tests/java/ifc/i18n/_XCalendar.java new file mode 100644 index 0000000000..d24f201229 --- /dev/null +++ b/qadevOOo/tests/java/ifc/i18n/_XCalendar.java @@ -0,0 +1,523 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.i18n; + +import lib.MultiMethodTest; + +import com.sun.star.i18n.CalendarDisplayIndex; +import com.sun.star.i18n.CalendarFieldIndex; +import com.sun.star.i18n.CalendarItem; +import com.sun.star.i18n.XCalendar; +import com.sun.star.i18n.XLocaleData; +import com.sun.star.lang.Locale; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.i18n.XCalendar</code> +* interface methods : +* <ul> +* <li><code> loadDefaultCalendar()</code></li> +* <li><code> loadCalendar()</code></li> +* <li><code> getLoadedCalendar()</code></li> +* <li><code> getAllCalendars()</code></li> +* <li><code> getUniqueID()</code></li> +* <li><code> setDateTime()</code></li> +* <li><code> getDateTime()</code></li> +* <li><code> setValue()</code></li> +* <li><code> getValue()</code></li> +* <li><code> isValid()</code></li> +* <li><code> addValue()</code></li> +* <li><code> getFirstDayOfWeek()</code></li> +* <li><code> setFirstDayOfWeek()</code></li> +* <li><code> setMinimumNumberOfDaysForFirstWeek()</code></li> +* <li><code> getMinimumNumberOfDaysForFirstWeek()</code></li> +* <li><code> getNumberOfMonthsInYear()</code></li> +* <li><code> getNumberOfDaysInWeek()</code></li> +* <li><code> getMonths()</code></li> +* <li><code> getDays()</code></li> +* <li><code> getDisplayName()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.i18n.XCalendar +*/ +public class _XCalendar extends MultiMethodTest { + private boolean debug = false; + public XCalendar oObj = null; + public String[][] calendars; + public int[] count; + public double newDTime = 1000.75; + public short newValue = 2; + public short firstDay = 2; + public short mdfw = 3; + double aOriginalDTime = 0; + Locale[] installed_locales; + + @Override + public void before() { + XLocaleData locData = null; + try { + locData = UnoRuntime.queryInterface( + XLocaleData.class, + tParam.getMSF().createInstance( + "com.sun.star.i18n.LocaleData")); + + installed_locales = locData.getAllInstalledLocaleNames(); + calendars = new String[installed_locales.length][]; + count = new int[installed_locales.length]; + } catch (com.sun.star.uno.Exception e) { + + } + + oObj.loadDefaultCalendar(installed_locales[0]); + aOriginalDTime = oObj.getDateTime(); + debug = tParam.getBool("DebugIsActive"); + } + + /** + * Restore the changed time during the test to the original value of the + * machine: has to be correct for the following interface tests. + */ + @Override + public void after() { + oObj.loadDefaultCalendar(installed_locales[0]); + oObj.setDateTime(aOriginalDTime); + } + + /** + * Loads default calendar for different locales. <p> + * Has <b> OK </b> status if method loads calendar, that is + * default for a given locale. + */ + public void _loadDefaultCalendar() { + boolean res = true; + + for (int i=0; i<installed_locales.length; i++) { + String lang = "Language: "+installed_locales[i].Language + + ", Country: "+ installed_locales[i].Country + + ", Variant: "+ installed_locales[i].Country; + oObj.loadDefaultCalendar(installed_locales[i]); + if (!oObj.getLoadedCalendar().Default) { + log.println(lang + " ... FAILED"); + } + res &= oObj.getLoadedCalendar().Default; + } + + tRes.tested("loadDefaultCalendar()", res); + } + + /** + * Tries to obtain calendars for a number of locales. <p> + * Has <b> OK </b> status if the method returns more than zero calendars for + * every locale. + */ + public void _getAllCalendars() { + boolean res = true; + + for (int i=0; i<installed_locales.length; i++) { + String lang = "Language: "+installed_locales[i].Language + + ", Country: "+ installed_locales[i].Country + + ", Variant: "+ installed_locales[i].Country; + calendars[i] = oObj.getAllCalendars(installed_locales[i]); + count[i] = calendars[i].length-1; + if (calendars[i].length <= 0) { + log.println(lang + " ... FAILED"); + } + res &= (calendars[i].length > 0); + } + tRes.tested("getAllCalendars()", res); + } + + /** + * Loads calendars for a number of locales. <p> + * Has <b> OK </b> status if loaded calendar names are equal to gotten + * calendar names after loading.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getAllCalendars() </code> : gets all calendars for a given + * locale </li> + * </ul> + */ + public void _loadCalendar() { + boolean res = true; + requiredMethod("getAllCalendars()"); + + for (int i=0; i<installed_locales.length; i++) { + String lang = "Language: "+installed_locales[i].Language + + ", Country: "+ installed_locales[i].Country + + ", Variant: "+ installed_locales[i].Country; + oObj.loadCalendar(calendars[i][0], installed_locales[i]); + if (!calendars[i][0].equals(oObj.getLoadedCalendar().Name)) { + log.println(lang + " ... FAILED"); + } + res &= calendars[i][0].equals(oObj.getLoadedCalendar().Name); + } + + tRes.tested("loadCalendar()", res); + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if loaded calendar names are equal to gotten + * calendar names after loading.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> loadCalendar() </code> : loads calendar using a given name + * and locale </li> + * </ul> + */ + public void _getLoadedCalendar() { + boolean res = true; + + requiredMethod("loadCalendar()"); + for (int i=0; i<installed_locales.length; i++) { + String lang = "Language: "+installed_locales[i].Language + + ", Country: "+ installed_locales[i].Country + + ", Variant: "+ installed_locales[i].Country; + oObj.loadCalendar(calendars[i][0], installed_locales[i]); + if (!calendars[i][0].equals(oObj.getLoadedCalendar().Name)) { + log.println(lang + " ... FAILED"); + } + res &= calendars[i][0].equals(oObj.getLoadedCalendar().Name); + } + tRes.tested("getLoadedCalendar()", res); + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if the method returns value that's equal to a + * calendar name. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> loadCalendar() </code> : loads calendar using a given name + * and locale </li> + * </ul> + */ + public void _getUniqueID() { + boolean res = true; + for (int i=0; i<installed_locales.length; i++) { + String lang = "Language: "+installed_locales[i].Language + + ", Country: "+ installed_locales[i].Country + + ", Variant: "+ installed_locales[i].Country; + oObj.loadCalendar(calendars[i][0], installed_locales[i]); + String uID = oObj.getUniqueID(); + if (!uID.equals(calendars[i][0])) { + log.println(lang + " ... FAILED"); + } + res &= uID.equals(calendars[i][0]); + } + + tRes.tested("getUniqueID()",res); + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if the method returns value, that's equal to + * value set before. <p> + */ + + public void _setDateTime() { + boolean res = true; + + for (int i=0; i<installed_locales.length; i++) { + String lang = "Language: "+installed_locales[i].Language + + ", Country: "+ installed_locales[i].Country + + ", Variant: "+ installed_locales[i].Country; + oObj.setDateTime(newDTime); + double aDTime = oObj.getDateTime(); + if (aDTime != newDTime) { + log.println(lang + " ... FAILED"); + } + res &= (aDTime == newDTime); + } + + tRes.tested("setDateTime()", res); + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if the method returns value, that's equal to + * value set before. <p> + */ + + public void _getDateTime() { + boolean res = true; + + for (int i=0; i<installed_locales.length; i++) { + String lang = "Language: "+installed_locales[i].Language + + ", Country: "+ installed_locales[i].Country + + ", Variant: "+ installed_locales[i].Country; + oObj.setDateTime(newDTime); + double aDTime = oObj.getDateTime(); + if (aDTime != newDTime) { + log.println(lang + " ... FAILED"); + } + res &= (aDTime == newDTime); + } + tRes.tested("getDateTime()", res); + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if the method returns value, that's equal to + * value set before. <p> + */ + public void _setValue() { + boolean res = true; + for (int i = 0; i < installed_locales.length; i++) { + String error = ""; + String lang = "Language: " + installed_locales[i].Language + ", Country: " + installed_locales[i].Country + + ", Variant: " + installed_locales[i].Variant + ", Name: " + calendars[i][count[i]]; + String[] names = new String[] { "DAY_OF_MONTH", "HOUR", "MINUTE", "SECOND", "MILLISECOND", "YEAR", + "MONTH" }; + oObj.loadCalendar(calendars[i][count[i]], installed_locales[i]); + short[] fields = new short[] { CalendarFieldIndex.DAY_OF_MONTH, CalendarFieldIndex.HOUR, + CalendarFieldIndex.MINUTE, CalendarFieldIndex.SECOND, CalendarFieldIndex.MILLISECOND, + CalendarFieldIndex.YEAR, CalendarFieldIndex.MONTH }; + for (int k = 0; k < fields.length; k++) { + + oObj.setDateTime(0.0); + + // save the current values for debug purposes + short[] oldValues = new short[fields.length]; + for (int n = 0; n < oldValues.length; n++) { + oldValues[n] = oObj.getValue(fields[n]); + } + + short set = oObj.getValue(fields[k]); + if (fields[k] == CalendarFieldIndex.MONTH) + set = newValue; + oObj.setValue(fields[k], set); + short get = oObj.getValue(fields[k]); + if (get != set) { + if (debug) + log.println("ERROR occurred: tried to set " + names[k] + " to value " + set); + log.println("list of values BEFORE set " + names[k] + " to value " + set + ":"); + for (int n = 0; n < oldValues.length; n++) { + log.println(names[n] + ":" + oldValues[n]); + } + log.println("list of values AFTER set " + names[k] + " to value " + set + ":"); + for (int n = 0; n < fields.length; n++) { + log.println(names[n] + ":" + oObj.getValue(fields[n])); + } + + error += "failed for " + names[k] + " expected " + set + " gained " + get + " ; \n"; + } + } + if (error.equals("")) { + log.println(lang + " ... OK"); + } else { + log.println("*** " + lang + " ... FAILED ***"); + log.println(error); + } + res &= error.equals(""); + } + + tRes.tested("setValue()", res); + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if the method returns value, that's equal to + * value set before. <p> + */ + + public void _getValue() { + boolean res = true; + + requiredMethod("setValue()"); + short aValue = oObj.getValue(CalendarFieldIndex.MONTH); + res &= (aValue == newValue); + if (!res){ + log.println("the returned value is not the expected value:"); + log.println("expected: " + newValue + " returned value: " + aValue); + } + tRes.tested("getValue()", res); + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if value, added by the method is greater than + * previously defined "newValue". + * <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getValue() </code> : gets the value of a field </li> + * </ul> + */ + public void _addValue() { + boolean res = true; + + requiredMethod("getValue()"); + oObj.addValue(CalendarFieldIndex.MONTH, 1); + short aValue = oObj.getValue(CalendarFieldIndex.MONTH); + res &= (aValue > newValue); + if (!res){ + log.println("the returned value is not the expected value:"); + log.println("expected: " + newValue + " returned value: " + aValue); + } + tRes.tested("addValue()", res); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _setFirstDayOfWeek() { + boolean res = true; + + oObj.setFirstDayOfWeek(firstDay); + res &= true; + tRes.tested("setFirstDayOfWeek()", res); + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if the method returns value that is equal to + * value set before. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setFirstDayOfWeek() </code> : set the first day of a + * week</li> + * </ul> + */ + public void _getFirstDayOfWeek() { + boolean res = true; + + requiredMethod("setFirstDayOfWeek()"); + short aFirstDayOfWeek = oObj.getFirstDayOfWeek(); + res &= (aFirstDayOfWeek == firstDay); + tRes.tested("getFirstDayOfWeek()", res); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. + */ + public void _setMinimumNumberOfDaysForFirstWeek() { + boolean res = true; + + oObj.setMinimumNumberOfDaysForFirstWeek(mdfw); + res &= true; + tRes.tested("setMinimumNumberOfDaysForFirstWeek()", res); + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if the method returns value that is equal to + * value set before. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setMinimumNumberOfDaysForFirstWeek() </code> : sets how + * many days of a week must reside in the first week of a year</li> + * </ul> + */ + public void _getMinimumNumberOfDaysForFirstWeek() { + boolean res = true; + + requiredMethod("setMinimumNumberOfDaysForFirstWeek()"); + short aShort = oObj.getMinimumNumberOfDaysForFirstWeek(); + res &= (aShort == mdfw); + tRes.tested("getMinimumNumberOfDaysForFirstWeek()", res); + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if the method returns 12. + */ + public void _getNumberOfMonthsInYear() { + boolean res = true; + short aShort = oObj.getNumberOfMonthsInYear(); + + res &= (aShort == (short) 12); + tRes.tested("getNumberOfMonthsInYear()", res); + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if the method returns 7. + */ + public void _getNumberOfDaysInWeek() { + boolean res = true; + short aShort = oObj.getNumberOfDaysInWeek(); + + res &= (aShort == (short) 7); + tRes.tested("getNumberOfDaysInWeek()", res); + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if length of array, returned by the method is 12. + */ + public void _getMonths() { + boolean res = true; + CalendarItem[] months = oObj.getMonths(); + + res &= (months.length == 12); + tRes.tested("getMonths()", res); + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if length of array, returned by the method is 7. + */ + public void _getDays() { + boolean res = true; + CalendarItem[] Days = oObj.getDays(); + + res &= (Days.length == 7); + tRes.tested("getDays()", res); + } + + /** + * After loading calendar, test calls the method, then result is checked.<p> + * Has <b> OK </b> status if length of string, returned by the method is 3. + */ + public void _getDisplayName() { + boolean res = true; + + oObj.loadCalendar(calendars[0][0],installed_locales[0]); + String DisplayName = oObj.getDisplayName(CalendarDisplayIndex.MONTH, + newValue, (short) 0); + res &= (DisplayName.length() == 3); + tRes.tested("getDisplayName()", res); + } + + + /** + * The test sets obviously wrong value, then calls a method. After that the + * test sets correct value, and again calls a method. <p> + * Has <b> OK </b> status if the method returns true when valid month is + * set, and if the method returns false when set month is not valid. + */ + public void _isValid() { + boolean res = true; + + oObj.loadDefaultCalendar(installed_locales[0]); + oObj.setValue(CalendarFieldIndex.MONTH, (short) 37); + res &= !oObj.isValid(); + oObj.setValue(CalendarFieldIndex.MONTH, (short) 10); + res &= oObj.isValid(); + + tRes.tested("isValid()", res); + } + +} + diff --git a/qadevOOo/tests/java/ifc/i18n/_XCharacterClassification.java b/qadevOOo/tests/java/ifc/i18n/_XCharacterClassification.java new file mode 100644 index 0000000000..37d5efb9b5 --- /dev/null +++ b/qadevOOo/tests/java/ifc/i18n/_XCharacterClassification.java @@ -0,0 +1,398 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.i18n; + +import lib.MultiMethodTest; + +import com.sun.star.i18n.KParseTokens; +import com.sun.star.i18n.KParseType; +import com.sun.star.i18n.ParseResult; +import com.sun.star.i18n.XCharacterClassification; +import com.sun.star.lang.Locale; + +/** + * Testing <code>com.sun.star.i18n.XCharacterClassification</code> + * interface methods: + * <ul> + * <li><code> toUpper() </code></li> + * <li><code> toLower() </code></li> + * <li><code> toTitle() </code></li> + * <li><code> getType() </code></li> + * <li><code> getCharacterType() </code></li> + * <li><code> getStringType() </code></li> + * <li><code> getCharacterDirection() </code></li> + * <li><code> getScript() </code></li> + * <li><code> parseAnyToken() </code></li> + * <li><code> parsePredefinedToken() </code></li> + * </ul><p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.i18n.XCharacterClassification + */ +public class _XCharacterClassification extends MultiMethodTest { + public XCharacterClassification oObj = null; + public String[] languages = new String[]{"de","en","es","fr","ja","ko","zh"}; + public String[] countries = new String[]{"DE","US","ES","FR","JP","KR","CN"}; + + public String[] charstyles_office = new String[] {"UNASSIGNED","UPPERCASE_LETTER", + "LOWERCASE_LETTER","TITLECASE_LETTER","MODIFIER_LETTER","OTHER_LETTER", + "NON_SPACING_MARK","ENCLOSING_MARK","COMBINING_SPACING_MARK", + "DECIMAL_DIGIT_NUMBER","LETTER_NUMBER","OTHER_NUMBER","SPACE_SEPARATOR", + "LINE_SEPARATOR","PARAGRAPH_SEPARATOR","CONTROL","FORMAT","PRIVATE_USE", + "OTHER_PUNCTUATION","DASH_PUNCTUATION","START_PUNCTUATION","END_PUNCTUATION", + "CONNECTOR_PUNCTUATION", + "OTHER_PUNCTUATION","MATH_SYMBOL","CURRENCY_SYMBOL","MODIFIER_SYMBOL", + "OTHER_SYMBOL","INITIAL_PUNCTUATION","FINAL_PUNCTUATION","GENERAL_TYPES_COUNT"}; + + public String[] unicode_script = new String[] {"U_BASIC_LATIN","U_LATIN_1_SUPPLEMENT", + "U_LATIN_EXTENDED_A","U_LATIN_EXTENDED_B","U_IPA_EXTENSIONS","U_SPACING_MODIFIER_LETTERS", + "U_COMBINING_DIACRITICAL_MARKS","U_GREEK","U_CYRILLIC","U_ARMENIAN","U_HEBREW", + "U_ARABIC","U_SYRIAC","U_THAANA","U_DEVANAGARI","U_BENGALI","U_GURMUKHI", + "U_GUJARATI","U_ORIYA","U_TAMIL","U_TELUGU","U_KANNADA","U_MALAYALAM", + "U_SINHALA","U_THAI","U_LAO","U_TIBETAN","U_MYANMAR","U_GEORGIAN", + "U_HANGUL_JAMO","U_ETHIOPIC","U_CHEROKEE","U_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS", + "U_OGHAM","U_RUNIC","U_KHMER","U_MONGOLIAN","U_LATIN_EXTENDED_ADDITIONAL", + "U_GREEK_EXTENDED","U_GENERAL_PUNCTUATION","U_SUPERSCRIPTS_AND_SUBSCRIPTS", + "U_CURRENCY_SYMBOLS","U_COMBINING_MARKS_FOR_SYMBOLS","U_LETTERLIKE_SYMBOLS", + "U_NUMBER_FORMS","U_ARROWS","U_MATHEMATICAL_OPERATORS","U_MISCELLANEOUS_TECHNICAL", + "U_CONTROL_PICTURES","U_OPTICAL_CHARACTER_RECOGNITION","U_ENCLOSED_ALPHANUMERICS", + "U_BOX_DRAWING","U_BLOCK_ELEMENTS","U_GEOMETRIC_SHAPES","U_MISCELLANEOUS_SYMBOLS", + "U_DINGBATS","U_BRAILLE_PATTERNS","U_CJK_RADICALS_SUPPLEMENT","U_KANGXI_RADICALS", + "U_IDEOGRAPHIC_DESCRIPTION_CHARACTERS","U_CJK_SYMBOLS_AND_PUNCTUATION", + "U_HIRAGANA","U_KATAKANA","U_BOPOMOFO","U_HANGUL_COMPATIBILITY_JAMO","U_KANBUN", + "U_BOPOMOFO_EXTENDED","U_ENCLOSED_CJK_LETTERS_AND_MONTHS","U_CJK_COMPATIBILITY", + "U_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A","U_CJK_UNIFIED_IDEOGRAPHS","U_YI_SYLLABLES", + "U_YI_RADICALS","U_HANGUL_SYLLABLES","U_HIGH_SURROGATES","U_HIGH_PRIVATE_USE_SURROGATES", + "U_LOW_SURROGATES","U_PRIVATE_USE_AREA","U_CJK_COMPATIBILITY_IDEOGRAPHS", + "U_ALPHABETIC_PRESENTATION_FORMS","U_ARABIC_PRESENTATION_FORMS_A","U_COMBINING_HALF_MARKS", + "U_CJK_COMPATIBILITY_FORMS","U_SMALL_FORM_VARIANTS","U_ARABIC_PRESENTATION_FORMS_B", + "U_SPECIALS","U_HALFWIDTH_AND_FULLWIDTH_FORMS","U_CHAR_SCRIPT_COUNT","U_NO_SCRIPT"}; + + /** + * Test calls the method for different locales. Then each result is compared + * with a string, converted to a upper case using + * <code>String</code> method <code>toUpperCase()</code>.<p> + * Has <b> OK </b> status if string, returned by the method is equal to + * a string that is returned by String.toUpperCase() for all locales. + */ + public void _toUpper() { + boolean res = true; + char[] characters = new char[]{586,65,97,498,721,4588,772,8413,3404}; + String toCheck = new String(characters); + String get = ""; + String exp = ""; + + for (int i=0;i<7;i++) { + get = oObj.toUpper(toCheck, 0, toCheck.length(), getLocale(i)); + exp = toCheck.toUpperCase( + new java.util.Locale(languages[i], countries[i])); + res &= get.equals(exp); + if (!res) { + log.println("FAILED for: language=" + languages[i] + + " ; country=" + countries[i]); + log.println("Expected: " + exp); + log.println("Gained : " + get); + } + } + tRes.tested("toUpper()", res); + } + + /** + * Test calls the method for different locales. Then each result is compared + * with a string, converted to a lower case using + * <code>String</code> method <code>toLowerCase()</code>.<p> + * Has <b> OK </b> status if string, returned by the method is equal to + * a string that is returned by String.toLowerCase() for all locales. + */ + public void _toLower() { + boolean res = true; + char[] characters = new char[]{586,65,97,498,721,4588,772,8413,3404}; + String toCheck = new String(characters); + String get = ""; + String exp = ""; + + for (int i=0;i<7;i++) { + get = oObj.toLower(toCheck,0,toCheck.length(),getLocale(i)); + exp = toCheck.toLowerCase( + new java.util.Locale(languages[i],countries[i])); + res &= get.equals(exp); + if (!res) { + log.println("FAILED for: language=" + languages[i] + + " ; country=" + countries[i]); + log.println("Expected: " + exp); + log.println("Gained : " + get); + } + } + tRes.tested("toLower()", res); + } + + /** + * Test calls the method for different locales. Then each result is compared + * with a string, converted to a title case using + * <code>java.lang.Character</code> method <code>toTitleCase()</code>.<p> + * Has <b> OK </b> status if string, returned by the method is equal to + * a string that was converted using Character.toTitleCase() for all locales. + */ + public void _toTitle() { + boolean res = true; + String toCheck = new String(new char[]{8112}); + String get = ""; + String exp = ""; + + for (int i=0;i<7;i++) { + get = oObj.toTitle(toCheck, 0, 1, getLocale(i)); + exp = new String( + new char[]{Character.toTitleCase(toCheck.toCharArray()[0])}); + res &= get.equals(exp); + if (!res) { + log.println("FAILED for: language=" + languages[i] + + " ; country=" + countries[i]); + log.println("Expected: " + exp); + log.println("Gained : " + get); + } + } + tRes.tested("toTitle()", res); + } + + /** + * At first we define <code>int[]</code> and <code>char[]</code> arrays of + * unicode symbol numbers, arranged as sequences, where symbols are sorted + * by type, so the character of <code>i<sup><small>th</small></sup></code> + * type is located on <code>i<sup><small>th</small></sup></code> position.<p> + * Has <b> OK </b> status if for all 30 types the method returns value, that + * is equal to an element number.<p> + * @see com.sun.star.i18n.CharType + */ + public void _getType() { + boolean res = true; + char[] characters = new char[]{586,65,97,498,721,4588,772,8413,3404, + 48,8544,179,32,8232,8233,144,8204,57344,56320,173,40,41,95,3852,247, + 3647,901,3896,171,187}; + int[] charsInt = new int[]{586,65,97,498,721,4588,772,8413,3404,48, + 8544,179,32,8232,8233,144,8204,57344,56320,173,40,41,95,3852,247, + 3647,901,3896,171,187}; + String toCheck = new String(characters); + + for (int i=0;i<characters.length;i++) { + int get = oObj.getType(toCheck, i); + res &= charstyles_office[get].equals(charstyles_office[i]); + if (!res) { + log.println("Code :" + Integer.toHexString(charsInt[i])); + log.println("Gained: " + charstyles_office[get]); + log.println("Expected : " + charstyles_office[i]); + } + } + tRes.tested("getType()", res); + } + + /** + * After defining string to be checked and array of expected types, test + * calls the method for each character of a string and for all locales.<p> + * Has <b> OK </b> status if the method returns type, expected for a given + * character and locale. + */ + public void _getCharacterType() { + boolean res = true; + String toCheck = "Ab0)"; + int[] expected = new int[]{226,228,97,32}; + + for (int i=0;i<toCheck.length();i++) { + for (int j=1;j<7;j++) { + int get = oObj.getCharacterType(toCheck, i, getLocale(j)); + res &= (get == expected[i]); + if (!res) { + log.println("FAILED for: language=" + languages[j] + + " ; country=" + countries[j]); + log.println("Symbol :" + toCheck.toCharArray()[i]); + log.println("Gained: " + get); + log.println("Expected : " + expected[i]); + } + } + } + tRes.tested("getCharacterType()", res); + } + + /** + * After defining array of strings to be checked and array of expected types, + * test calls the method for each string of an array and for all locales.<p> + * Has <b> OK </b> status if the method returns type, expected for a given + * string and locale. + */ + public void _getStringType() { + boolean res = true; + String[] toCheck = new String[]{"01234","AAAAA","bbbbb","AA()bb"}; + int[] exp = new int[]{97,226,228,230}; + + for (int j=0;j<toCheck.length;j++) { + for (int i=0;i<7;i++) { + int get = oObj.getStringType(toCheck[j], 0, + toCheck[j].length(), getLocale(i)); + res &= (get == exp[j]); + if (!res) { + log.println("FAILED for: language=" + languages[i] + + " ; country=" + countries[i]); + log.println("Expected: " + exp[j]); + log.println("Gained : " + get); + } + } + } + tRes.tested("getStringType()", res); + } + + /** + * After string to be checked is initialized (all symbols are sorted + * by direction, so the character of <code>i<sup><small>th</small></sup></code> + * direction is located on <code>i<sup><small>th</small></sup></code> + * position), test calls the method for every character of that string. <p> + * Has <b> OK </b> status if the method returns direction, that's equal to + * a symbol position in the string. + */ + public void _getCharacterDirection() { + boolean res = true; + String toCheck = new String(new char[]{65,1470,48,47,35,1632,44,10, + 9,12,33,8234,8237,1563,8235,8238,8236,768,1}); + for (short i=0;i<19;i++) { + short get = oObj.getCharacterDirection(toCheck, i); + res &= (get == i); + if (!res) { + log.println("Code :" + toCheck.toCharArray()[i]); + log.println("Gained: " + get); + log.println("Expected: " + i); + } + } + tRes.tested("getCharacterDirection()", res); + } + + /** + * At first we define <code>int[]</code> and <code>char[]</code> arrays of + * unicode symbol numbers, arranged as sequences, where symbols are sorted + * by type, so the character of <code>i<sup><small>th</small></sup></code> + * type is located on <code>i<sup><small>th</small></sup></code> position.<p> + * Has <b> OK </b> status if for each character method returns value, that + * is equal to a number where element is located in array. Also method has + * <b> OK </b> status for symbol with code 55296, because it doesn't work + * since it hasn't the right neighborhood.<p> + * @see "http://ppewww.ph.gla.ac.uk/~flavell/unicode/unidata.html" + */ + public void _getScript() { + boolean res = true; + char[] characters = new char[]{65,128,256,384,592,750,773,924,1030,1331,1448, + 1569,1792,1936,2313,2465,2570,2707,2822,2972,3079,3240,3337,3464,3590, + 3745,3906,4097,4274,4357,4621,5040,5200,5776,5806,6030,6155,7683,7943, + 8202,8319,8352,8413,8452,8545,8616,8715,8965,9217,9281,9336,9474,9608,9719, + 9734,9999,10247,11911,12034,12274,12294,12358,12456,12552,12605,12688,12727, + 12806,13065,13312,19968,40964,42152,44032,55296,56192,56320,57344,63744, + 64257,64370,65056,65073,65131,65146,65532,65288}; + int[] charsInt = new int[]{65,128,256,384,592,750,773,924,1030,1331,1448, + 1569,1792,1936,2313,2465,2570,2707,2822,2972,3079,3240,3337,3464,3590, + 3745,3906,4097,4274,4357,4621,5040,5200,5776,5806,6030,6155,7683,7943, + 8202,8319,8352,8413,8452,8545,8616,8715,8965,9217,9281,9336,9474,9608,9719, + 9734,9999,10247,11911,12034,12274,12294,12358,12456,12552,12605,12688,12727, + 12806,13065,13312,19968,40964,42152,44032,55296,56192,56320,57344,63744, + 64257,64370,65056,65073,65131,65146,65532,65288}; + String toCheck = new String(characters); + + for (int i=0;i<characters.length;i++) { + int get = oObj.getScript(toCheck, i); + res &= (get == i); + //The HIGH_SURROGATE 55296 doesn't work since it hasn't the right + //neighborhood + if (toCheck.substring(i, i + 1).hashCode() == 55296) res = true; + if (!res) { + log.println("-- " + toCheck.substring(i, i + 1).hashCode()); + log.println("Code: " + Integer.toHexString(charsInt[i])); + log.println("Gained: " + unicode_script[get]); + log.println("Expected: " + unicode_script[i]); + } + } + tRes.tested("getScript()", res); + } + + /** + * After defining a string to be parsed and parse conditions (flags), test + * calls the method for different locales three times with different parameters, + * checking result after every call. <p> + * Has <b> OK </b> status if the method returns right results all three + * times. + */ + public void _parseAnyToken() { + int nStartFlags = KParseTokens.ANY_ALPHA | KParseTokens.ASC_UNDERSCORE; + int nContFlags = KParseTokens.ANY_ALNUM | KParseTokens.ASC_UNDERSCORE + | KParseTokens.ASC_DOT; + String toCheck = " 18 i18n ^"; + ParseResult pRes = null; + boolean res = true; + + for (int i=0;i<7;i++) { + pRes = oObj.parseAnyToken(toCheck, 1, getLocale(i), + nStartFlags, "", nContFlags, ""); + res = ( (pRes.CharLen==2) + && (pRes.TokenType==32) + && (pRes.Value==18.0) ); + pRes = oObj.parseAnyToken(toCheck, 4, getLocale(i), + nStartFlags, "", nContFlags, ""); + res &= ( (pRes.CharLen==4) + && (pRes.TokenType==4) + && (pRes.Value==0.0) ); + pRes = oObj.parseAnyToken(toCheck, 9, getLocale(i), + nStartFlags, "", nContFlags, ""); + res &= ( (pRes.CharLen==1) + && (pRes.TokenType==1) + && (pRes.Value==0.0) ); + } + tRes.tested("parseAnyToken()", res); + } + + /** + * After defining a string to be parsed and parse conditions (flags), test + * calls the method for different locales two times with different parameters, + * checking result after every call. <p> + * Has <b> OK </b> status if the method returns right results. + */ + public void _parsePredefinedToken() { + int nStartFlags = KParseTokens.ANY_ALPHA | KParseTokens.ASC_UNDERSCORE; + int nContFlags = nStartFlags; + String toCheck = " 18 int"; + ParseResult pRes = null; + boolean res = true; + + for (int i=0;i<7;i++) { + pRes = oObj.parsePredefinedToken(KParseType.IDENTNAME, toCheck, + 1, getLocale(i), nStartFlags, "", nContFlags, ""); + res = (pRes.CharLen==0); + pRes = oObj.parsePredefinedToken(KParseType.IDENTNAME, toCheck, + 4, getLocale(i), nStartFlags, "", nContFlags, ""); + res &= ( (pRes.CharLen==3) + && (pRes.TokenType==4) + && (pRes.Value==0.0) ); + } + tRes.tested("parsePredefinedToken()", res); + } + + + /** + * Method returns locale for a given language and country. + * @param k index of needed locale. + */ + private Locale getLocale(int k) { + return new Locale(languages[k],countries[k],""); + } + + +} // end XCharacterClassification + diff --git a/qadevOOo/tests/java/ifc/i18n/_XCollator.java b/qadevOOo/tests/java/ifc/i18n/_XCollator.java new file mode 100644 index 0000000000..a9eece7f7b --- /dev/null +++ b/qadevOOo/tests/java/ifc/i18n/_XCollator.java @@ -0,0 +1,422 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.i18n; + +import java.text.Collator; + +import lib.MultiMethodTest; + +import com.sun.star.i18n.CollatorOptions; +import com.sun.star.i18n.XCollator; +import com.sun.star.lang.Locale; + +/** +* Testing <code>com.sun.star.i18n.XCollator</code> +* interface methods : +* <ul> +* <li><code> compareSubstring()</code></li> +* <li><code> compareString()</code></li> +* <li><code> loadDefaultCollator()</code></li> +* <li><code> loadCollatorAlgorithm()</code></li> +* <li><code> listCollatorAlgorithms()</code></li> +* <li><code> loadCollatorAlgorithmWithEndUserOption()</code></li> +* <li><code> listCollatorOptions()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.i18n.XCollator +*/ +public class _XCollator extends MultiMethodTest { + public XCollator oObj = null; + private String[] alg = null ; + Locale loc = new Locale("en", "EN", ""); + + /** + * Just retrieves a list of algorithms. <p> + * Has <b>OK</b> status if non-zero length array returned. + */ + public void _listCollatorAlgorithms() { + alg = oObj.listCollatorAlgorithms(loc) ; + log.println("Collator algorithms :"); + if (alg != null) { + for (int i = 0; i < alg.length; i++) { + log.println(" '" + alg[i] + "'") ; + } + tRes.tested("listCollatorAlgorithms()", alg.length > 0) ; + } else { + tRes.tested("listCollatorAlgorithms()", false) ; + } + } + + /** + * Just gets a list of options for some collator. <p> + * Has <b>OK</b> status if not null value returned.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> listCollatorAlgorithms </code> : to have some + * algorithm name. </li> + * </ul> + */ + public void _listCollatorOptions() { + requiredMethod("listCollatorAlgorithms()") ; + int[] opt = oObj.listCollatorOptions(alg[0]) ; + log.println("Collator '" + alg[0] + "' options :"); + if (opt != null) { + for (int i = 0; i < opt.length; i++) { + log.println(" " + opt[i]) ; + } + tRes.tested("listCollatorOptions()", true) ; + } else { + tRes.tested("listCollatorOptions()", false) ; + } + } + + /** + * Calls the method with no options and with options(IGNORE_CASE), + * compares strings.<p> + * Has <b>OK</b> status if compareString() returned correct values. + */ + public void _loadDefaultCollator() { + oObj.loadDefaultCollator(loc, 0); + boolean res = oObj.compareString("A", "a") != 0; + oObj.loadDefaultCollator(loc, + CollatorOptions.CollatorOptions_IGNORE_CASE); + res &= oObj.compareString("a", "A") == 0; + tRes.tested("loadDefaultCollator()", res) ; + } + + /** + * Calls the method with no options and with options(IGNORE_CASE), + * compares strings.<p> + * Has <b>OK</b> status if compareString() returned correct values. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> listCollatorAlgorithms </code> : to have some + * algorithm name. </li> + * </ul> + */ + public void _loadCollatorAlgorithm() { + requiredMethod("listCollatorAlgorithms()"); + oObj.loadCollatorAlgorithm(alg[0], loc, + CollatorOptions.CollatorOptions_IGNORE_CASE); + boolean res = oObj.compareString("A", "a") == 0; + oObj.loadCollatorAlgorithm(alg[0], loc, 0); + res &= oObj.compareString("a", "A") != 0; + tRes.tested("loadCollatorAlgorithm()", res); + } + + /** + * Calls the method with no options and with options(IGNORE_CASE), + * compares strings.<p> + * Has <b>OK</b> status if compareString() returned correct values. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> listCollatorAlgorithms </code> : to have some + * algorithm name. </li> + * </ul> + */ + public void _loadCollatorAlgorithmWithEndUserOption() { + requiredMethod("listCollatorAlgorithms()"); + oObj.loadCollatorAlgorithmWithEndUserOption(alg[0], loc, + new int[] {0}); + boolean res = oObj.compareString("A", "a") != 0; + oObj.loadCollatorAlgorithmWithEndUserOption(alg[0], loc, + new int[] {CollatorOptions.CollatorOptions_IGNORE_CASE}); + res = oObj.compareString("A", "a") == 0; + tRes.tested("loadCollatorAlgorithmWithEndUserOption()", res); + } + + /** + * Test is performed for locales : en, ru, ja, zh, ko. + * Default collator is loaded for each locale. Then collation + * is performed for different combination of symbols from range of + * this locale.<p> + * Has <b>OK</b> status if comparing of different strings + * returns not 0 value, then comparing in the opposite + * order returns value with opposite sign, and comparing + * of two equal strings returns 0. The such comparing is performed + * for one character strings. + */ + public void _compareSubstring() { + boolean result = true ; + char[] chars = new char[2] ; + Collator col = null ; + + log.println(" #### Testing English locale ####") ; + oObj.loadDefaultCollator(loc, 0) ; + col = Collator.getInstance(new java.util.Locale("en", "EN")) ; + for (char ch = 0x0020; ch < 0x007F; ch ++) { + chars[0] = ch ; chars[1] = (char) (ch + 1) ; + result &= testCompareSubstring(chars, col) ; + } + + log.println(" #### Testing Russian locale ####") ; + oObj.loadDefaultCollator( + new com.sun.star.lang.Locale("ru", "RU", ""), 0) ; + col = Collator.getInstance(new java.util.Locale("ru", "RU")) ; + for (char ch = 0x0410; ch < 0x0450; ch ++) { + chars[0] = ch ; chars[1] = (char) (ch + 1) ; + result &= testCompareSubstring(chars, col) ; + } + + log.println(" #### Testing Japan locale ####") ; + oObj.loadDefaultCollator( + new com.sun.star.lang.Locale("ja", "JP", ""), 0) ; + col = Collator.getInstance(new java.util.Locale("ja", "JP")) ; + for (char ch = 0x4E00; ch < 0x4EFD; ch ++) { + chars[0] = ch ; chars[1] = (char) (ch + 1) ; + result &= testCompareSubstring(chars, col) ; + } + + log.println(" #### Testing China locale ####") ; + oObj.loadDefaultCollator(new Locale("zh", "CN", ""), 0) ; + col = Collator.getInstance(new java.util.Locale("zh", "CN")) ; + for (char ch = 0x4E00; ch < 0x4EFD; ch ++) { + chars[0] = ch ; chars[1] = (char) (ch + 1) ; + result &= testCompareSubstring(chars, col) ; + } + + log.println(" #### Testing Korean locale ####") ; + oObj.loadDefaultCollator(new Locale("ko", "KR", ""), 0) ; + col = Collator.getInstance(new java.util.Locale("ko", "KR")) ; + for (char ch = 0x4E00; ch < 0x4EFD; ch ++) { + chars[0] = ch ; chars[1] = (char) (ch + 1) ; + result &= testCompareSubstring(chars, col) ; + } + + tRes.tested("compareSubstring()", result) ; + } + + /** + * Test is performed for locales : en, ru, ja, zh, ko. + * Default collator is loaded for each locale. Then collation + * is performed for different combination of symbols from range of + * this locale.<p> + * Has <b>OK</b> status if comparing of different strings + * returns not 0 value, then comparing in the opposite + * order returns value with opposite sign, and comparing + * of two equal strings returns 0. The such comparing is performed + * for one character strings. + */ + public void _compareString() { + boolean result = true ; + char[] chars = new char[2] ; + Collator col = null ; + log.println(" #### Testing English locale ####") ; + oObj.loadDefaultCollator( + new com.sun.star.lang.Locale("en", "EN", ""), 0) ; + col = Collator.getInstance(new java.util.Locale("en", "EN")) ; + for (char ch = 0x0020; ch < 0x007F; ch ++) { + chars[0] = ch ; chars[1] = (char) (ch + 1) ; + result &= testCompareString(chars, col) ; + } + + log.println(" #### Testing Russian locale ####") ; + oObj.loadDefaultCollator( + new com.sun.star.lang.Locale("ru", "RU", ""), 0) ; + col = Collator.getInstance(new java.util.Locale("ru", "RU")) ; + for (char ch = 0x0410; ch < 0x0450; ch ++) { + chars[0] = ch ; chars[1] = (char) (ch + 1) ; + result &= testCompareString(chars, col) ; + } + + log.println(" #### Testing Japan locale ####") ; + oObj.loadDefaultCollator( + new com.sun.star.lang.Locale("ja", "JP", ""), 0) ; + col = Collator.getInstance(new java.util.Locale("ja", "JP")) ; + for (char ch = 0x4E00; ch < 0x4EFD; ch ++) { + chars[0] = ch ; chars[1] = (char) (ch + 1) ; + result &= testCompareString(chars, col) ; + } + + log.println(" #### Testing China locale ####") ; + oObj.loadDefaultCollator(new Locale("zh", "CN", ""), 0) ; + col = Collator.getInstance(new java.util.Locale("zh", "CN")) ; + for (char ch = 0x4E00; ch < 0x4EFD; ch ++) { + chars[0] = ch ; chars[1] = (char) (ch + 1) ; + result &= testCompareString(chars, col) ; + } + + log.println(" #### Testing Korean locale ####") ; + oObj.loadDefaultCollator(new Locale("ko", "KR", ""), 0) ; + col = Collator.getInstance(new java.util.Locale("ko", "KR")) ; + for (char ch = 0x4E00; ch < 0x4EFD; ch ++) { + chars[0] = ch ; chars[1] = (char) (ch + 1) ; + result &= testCompareString(chars, col) ; + } + + tRes.tested("compareString()", result) ; + } + + + /** + * Testing compareString() method. At first method is testing single chars + * comparing, then strings comparing. + * @param locChar sequence of at list two characters of a given locale + * to be used in comparing. + * @param col Collator for a given locale + * @return true if: + * <ol> + * <li> if comparing of two identical characters returns zero</li> + * <li> if comparing of two different characters returns non zero</li> + * <li> if comparing of two identical strings, composed of given chars + * returns zero</li> + * <li> if comparing of two different strings, composed of given chars + * returns non zero</li> + * </ol> + */ + public boolean testCompareString(char[] locChar, Collator col) { + boolean result = true; + int res; + String msg = ""; + + String char0 = "_"+new String(new char[] {locChar[0]}); + String char1 = "_"+new String(new char[] {locChar[1]}); + res = oObj.compareString(char0 , char0) ; + if (res != 0) { + msg += " Testing collation of single equal characters (" + + toUnicode(char0) + ") ... FAILED\n" ; + } + result &= res == 0 ; + res = oObj.compareString(char0, char1) ; + if (res == 0) { + msg += " Testing collation of single different" + + " characters (" + toUnicode(char0+char1) + + ") ... FAILED (0 returned)\n" ; + msg += " Java collator returned " + + col.compare(char0, char1) + "\n" ; + result = false ; + } else { // opposite order - sum of results must be 0 + res += oObj.compareString(char1, char0) ; + if (res != 0) { + msg += " Testing collation of single different" + + " characters (" + toUnicode(char0+char1) + + ") ... FAILED\n" ; + } + result &= res == 0 ; + } + + String str1 = new String(new char[] {locChar[0], locChar[0], + locChar[1], locChar[1], locChar[1]}) ; + String str2 = new String(new char[] {locChar[0], locChar[0], + locChar[0], locChar[1], locChar[1]}) ; + + res = oObj.compareString(str1 , str1) ; + if (res != 0) { + msg += " Testing collation of equal strings (" + + toUnicode(str1) + ") ... FAILED\n" ; + } + result &= res == 0 ; + res = oObj.compareString(str1, str2) ; + if (res == 0) { + msg += " Testing collation of different strings ((" + + toUnicode(str1) + "),(" + toUnicode(str2) + + ")) ... FAILED (0 returned)\n" ; + msg += " Java collator returned " + + col.compare(str1, str2) + "\n" ; + result = false ; + } else { // opposite order - sum of results must be + res += oObj.compareString(str2, str1) ; + if (res != 0) { + msg += " Testing collation of different strings ((" + + toUnicode(str1) + "),(" + toUnicode(str2) + + ")) ... FAILED\n" ; + } + result &= res == 0 ; + } + + if (!result) { + log.println(msg) ; + } + return result ; + } + + + /** + * Testing compareSubstring() method. Method is testing substrings comparing. + * @param locChar sequence of at list two characters of a given locale + * to be used in comparing. + * @param col Collator for a given locale + * @return true if: + * <ol> + * <li> if comparing of two identical substrings of strings, composed + * of given chars returns zero</li> + * <li> if comparing of two different substrings of strings, composed + * of given chars returns non zero</li> + * </ol> + */ + public boolean testCompareSubstring(char[] locChar, Collator col) { + boolean result = true ; + int res ; + String msg = "" ; + + String str1 = new String(new char[] {locChar[0], locChar[0], + locChar[1], locChar[1], locChar[1]}) ; + String str2 = new String(new char[] {locChar[0], locChar[0], + locChar[0], locChar[1], locChar[1]}) ; + + res = oObj.compareSubstring(str1, 1, 2 , str2, 2, 2) ; + if (res != 0) { + msg += " Testing collation of equal substrings (" + + toUnicode(str1) + ") ... FAILED\n" ; + } + result &= res == 0 ; + res = oObj.compareSubstring(str1, 1, 2, str2, 1, 2) ; + if (res == 0) { + msg += " Testing collation of different strings ((" + + toUnicode(str1.substring(1, 3)) + "),(" + + toUnicode(str2.substring(1, 3)) + + ")) ... FAILED (0 returned)\n" ; + msg += " Java collator returned " + col.compare + (str1.substring(1, 3), str2.substring(1, 3)) + "\n" ; + result = false ; + } else { // opposite order - sum of results must be + res += oObj.compareSubstring(str2, 1, 2, str1, 1, 2) ; + if (res != 0) { + msg += " Testing collation of different strings ((" + + toUnicode(str1) + "),(" + toUnicode(str2) + + ")) ... FAILED\n" ; + } + result &= res == 0 ; + } + + if (!result) { + log.println(msg) ; + } + return result ; + } + + + /** + * Transforms string to unicode hex codes. + * @param str String to be transformed + */ + public String toUnicode(String str) { + char[] chars = str.toCharArray() ; + StringBuilder res = new StringBuilder(); + for (int i = 0; i < chars.length; i++) { + if (i != 0) { + res.append(","); + } + res.append(Integer.toHexString(chars[i])); + } + return res.toString(); + } + +} + diff --git a/qadevOOo/tests/java/ifc/i18n/_XExtendedCalendar.java b/qadevOOo/tests/java/ifc/i18n/_XExtendedCalendar.java new file mode 100644 index 0000000000..bd190241c1 --- /dev/null +++ b/qadevOOo/tests/java/ifc/i18n/_XExtendedCalendar.java @@ -0,0 +1,125 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.i18n; + +import com.sun.star.i18n.CalendarDisplayCode; +import com.sun.star.i18n.NativeNumberMode; +import com.sun.star.i18n.XExtendedCalendar; +import com.sun.star.i18n.XLocaleData; +import com.sun.star.lang.Locale; +import com.sun.star.uno.UnoRuntime; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import lib.MultiMethodTest; + +/** + * + */ +public class _XExtendedCalendar extends MultiMethodTest { + public XExtendedCalendar oObj = null; + boolean useUSENLocale = false; + /** + * Load a calendar + */ + @Override + public void before() throws Exception { + Locale[] installed_locales = null; + XLocaleData locData = UnoRuntime.queryInterface( + XLocaleData.class, + tParam.getMSF().createInstance( + "com.sun.star.i18n.LocaleData")); + + installed_locales = locData.getAllInstalledLocaleNames(); + // use first Locale as fallback, if US-English is not found + Locale lo = installed_locales[0]; + for (int i=0; i<installed_locales.length; i++) { + // search for "en" and "US" + if (installed_locales[i].Language.equals("en") && + installed_locales[i].Country.equals("US")) { + lo = installed_locales[i]; + useUSENLocale = true; + } + } + log.println("Choose Locale: '" + lo.Language + "', '" + lo.Country + "'"); + oObj.loadDefaultCalendar(lo); + } + + + public void _getDisplayString() { + // against regression: the current state is the right one. + boolean result = true; + String[] displayString = new String[6]; + // build the defaults with the Java Calendar functions + String[] expectedStringResult = new String[6]; + Calendar cal = new GregorianCalendar(); + Date actualDate = cal.getTime(); + + SimpleDateFormat sdf = getSDF("yy"); + expectedStringResult[0] = "AD" + sdf.format(actualDate); + + sdf = getSDF("yyyy"); + expectedStringResult[1] = "AD" + sdf.format(actualDate); + + sdf = getSDF("MM"); + expectedStringResult[2] = sdf.format(actualDate); + + int month = cal.get(Calendar.MONTH) + 1; + String quarter = "Q1"; + String longQuarter = "1st quarter"; + if (month > 3 && month < 7) { quarter = "Q2"; longQuarter = "2nd quarter"; } + else if (month > 6 && month < 10) { quarter = "Q3"; longQuarter = "3rd quarter"; } + else if (month > 10 && month < 13) {quarter = "Q4"; longQuarter = "4th quarter"; } + expectedStringResult[3] = quarter; + expectedStringResult[4] = longQuarter; + + sdf = getSDF("MMMM"); + expectedStringResult[5] = sdf.format(actualDate); + + displayString[0] = oObj.getDisplayString(CalendarDisplayCode.SHORT_YEAR_AND_ERA, NativeNumberMode.NATNUM0); + displayString[1] = oObj.getDisplayString(CalendarDisplayCode.LONG_YEAR_AND_ERA, NativeNumberMode.NATNUM0); + displayString[2] = oObj.getDisplayString(CalendarDisplayCode.LONG_MONTH, NativeNumberMode.NATNUM0); + displayString[3] = oObj.getDisplayString(CalendarDisplayCode.SHORT_QUARTER, NativeNumberMode.NATNUM0); + displayString[4] = oObj.getDisplayString(CalendarDisplayCode.LONG_QUARTER, NativeNumberMode.NATNUM0); + displayString[5] = oObj.getDisplayString(CalendarDisplayCode.LONG_MONTH_NAME, NativeNumberMode.NATNUM0); + + for (int i=0; i<displayString.length; i++) { + boolean locResult = false; + if (useUSENLocale) { + locResult = displayString[i].equals(expectedStringResult[i]); + if (!locResult) + log.println("getDisplayString() result " + i + ": '" + displayString[i] + + "', expected: '" + expectedStringResult[i] + "'"); + result &= locResult; + } + else { // no defaults for other locales, just expect a String + locResult &= displayString[i] != null; + if (!locResult) + log.println("getDisplayString() result " + i + " was 'null'"); + result &= locResult; + } + } + tRes.tested("getDisplayString()", result); + } + + private SimpleDateFormat getSDF(String format){ + if (useUSENLocale) return new SimpleDateFormat(format, java.util.Locale.US); + return new SimpleDateFormat(format); + } +} diff --git a/qadevOOo/tests/java/ifc/i18n/_XExtendedIndexEntrySupplier.java b/qadevOOo/tests/java/ifc/i18n/_XExtendedIndexEntrySupplier.java new file mode 100644 index 0000000000..7793a8cddf --- /dev/null +++ b/qadevOOo/tests/java/ifc/i18n/_XExtendedIndexEntrySupplier.java @@ -0,0 +1,311 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.i18n; + +import com.sun.star.i18n.CollatorOptions; +import com.sun.star.i18n.XExtendedIndexEntrySupplier; +import com.sun.star.lang.Locale; + +import java.util.HashMap; + +import lib.MultiMethodTest; + + +public class _XExtendedIndexEntrySupplier extends MultiMethodTest { + public XExtendedIndexEntrySupplier oObj; + protected Locale[] locales = null; + protected HashMap<Integer, String[]> algorithms = new HashMap<Integer, String[]>(); + + public void _compareIndexEntry() { + requiredMethod("getIndexKey()"); + Locale locale = new Locale("zh", "CN", ""); + String val1 = new String(new char[]{UnicodeStringPair.getUnicodeValue(0), UnicodeStringPair.getUnicodeValue(1)}); + String val2 = new String(new char[]{UnicodeStringPair.getUnicodeValue(1), UnicodeStringPair.getUnicodeValue(0)}); + short result1 = oObj.compareIndexEntry(val1, "", locale, val1, "", locale); + short result2 = oObj.compareIndexEntry(val1, "", locale, val2, "", locale); + short result3 = oObj.compareIndexEntry(val2, "", locale, val1, "", locale); + + tRes.tested("compareIndexEntry()", result1 == 0 && result2 + result3 == 0); + } + + /* + * gets the list of all algorithms for each listed language + * is OK if everyone of the returned lists are filled + */ + public void _getAlgorithmList() { + requiredMethod("getLocaleList()"); + + boolean result = true; + + for (int i = 0; i < locales.length; i++) { + String[] algNames = oObj.getAlgorithmList(locales[i]); + algorithms.put(Integer.valueOf(i), algNames); + + boolean locResult = algNames.length > 0; + System.out.println("Locale " + i + ": " + locales[i].Country+","+locales[i].Language); + + for (int j=0; j<algNames.length; j++) { + System.out.println("\tAlgorithm " + j + ": " + algNames[j]); + } + + if (!locResult) { + log.println("No Algorithm found for " + locales[i].Country + + "," + locales[i].Language); + } + + result &= locResult; + } + + tRes.tested("getAlgorithmList()", result); + } + + public void _getIndexKey() { + requiredMethod("loadAlgorithm()"); + char[] characters = new char[] { 19968 }; + String getIndexFor = new String(characters); + for (int i = 0; i < locales.length; i++) { + log.println("Language: " + locales[i].Language); + + for (int j = 0; j < algorithms.size(); j++) { + String[] algs = algorithms.get(Integer.valueOf(j)); + for (int k=0;k<algs.length;k++) { + log.println("\t Algorithm :" + + algs[k]); + oObj.loadAlgorithm(locales[i], algs[k], CollatorOptions.CollatorOptions_IGNORE_CASE); + log.println("\t\t Get: " + + oObj.getIndexKey(getIndexFor, "", locales[i])); + } + } + } + tRes.tested("getIndexKey()", true); + } + + /* + * gets a list of all locales, is OK if this list isn't empty + */ + public void _getLocaleList() { + locales = oObj.getLocaleList(); + tRes.tested("getLocaleList()", locales.length > 0); + } + + /* + * gets one phonetic candidate for the chinese local + * is ok if 'yi' is returned as expected. + */ + public void _getPhoneticCandidate() { + requiredMethod("getLocaleList()"); + + boolean res = true; + + Locale loc = new Locale("zh", "CN", ""); + + for (int i = 0;i<UnicodeStringPair.getValCount();i++) { + + char[] c = new char[]{UnicodeStringPair.getUnicodeValue(i)}; + + String getting = oObj.getPhoneticCandidate(new String(c), loc); + + boolean locResult = getting.equals(UnicodeStringPair.getExpectedPhoneticString(i)); + + if (!locResult) { + log.println("Char: "+ c[0] + " (" + (int)c[0] + ")"); + log.println("Expected " + UnicodeStringPair.getExpectedPhoneticString(i)); + log.println("Getting " + getting); + } + + res &= locResult; + } + tRes.tested("getPhoneticCandidate()", res); + } + + /* + * loads all algorithms available in all language. + * Is OK if no exception occurs and the method returns + * true for each valid algorithm and false otherwise + */ + public void _loadAlgorithm() { + requiredMethod("getAlgorithmList()"); + + boolean res = true; + + for (int i = 0; i < algorithms.size(); i++) { + String[] names = algorithms.get(Integer.valueOf(i)); + log.println("loading algorithms for " + locales[i].Country + + "," + locales[i].Language); + + for (int j = 0; j < names.length; j++) { + log.println("\t Loading " + names[j]); + + boolean localres = oObj.loadAlgorithm(locales[i], names[j], + CollatorOptions.CollatorOptions_IGNORE_CASE); + + if (!localres) { + log.println("\t ... didn't work - FAILED"); + } else { + log.println("\t ... worked - OK"); + } + + res &= localres; + } + } + + tRes.tested("loadAlgorithm()", res); + } + + /* + * checks the method usePhoneticEntry(). Only the languages ja, ko and zh + * should return true. Has OK state if exactly this is the case. + */ + public void _usePhoneticEntry() { + requiredMethod("getLocaleList()"); + + boolean res = true; + + for (int i = 0; i < locales.length; i++) { + boolean expected = false; + + if (locales[i].Language.equals("ja") || + locales[i].Language.equals("ko") || + locales[i].Language.equals("zh")) { + expected = true; + } + + boolean locResult = oObj.usePhoneticEntry(locales[i]) == expected; + + if (!locResult) { + log.println("Failure for language " + locales[i].Language); + log.println("Expected " + expected); + log.println("Getting " + oObj.usePhoneticEntry(locales[i])); + } + + res &= locResult; + } + + tRes.tested("usePhoneticEntry()", res); + } + + /** + * Helper class to handle the phonetic equivalence of unicode characters + * This class delivers an amount of unicode characters and the equivalent phonetics + * for the "getPhoneticCandidate" test. Equivalents are only usable for zh,CN locale. + */ + public static class UnicodeStringPair { + static final int valCount = 78; + static final String[] sStringEquivalence = new String[valCount]; + static final char[] iUnicodeEquivalence = new char[valCount]; + + static { + fillValues(); + } + + public static int getValCount() { + return valCount; + } + + public static String getExpectedPhoneticString(int index) { + if (index >= valCount) return null; + return sStringEquivalence[index]; + } + + public static char getUnicodeValue(int index) { + if (index > valCount) return 0; + return iUnicodeEquivalence[index]; + } + + private static void fillValues() { + iUnicodeEquivalence[0] = 20049; sStringEquivalence[0] = "zhong"; + iUnicodeEquivalence[1] = 19968; sStringEquivalence[1] = "yi"; + iUnicodeEquivalence[2] = 19969; sStringEquivalence[2] = "ding"; + iUnicodeEquivalence[3] = 19970; sStringEquivalence[3] = "kao"; + iUnicodeEquivalence[4] = 19971; sStringEquivalence[4] = "qi"; + iUnicodeEquivalence[5] = 19972; sStringEquivalence[5] = "shang"; + iUnicodeEquivalence[6] = 19973; sStringEquivalence[6] = "xia"; + iUnicodeEquivalence[7] = 19975; sStringEquivalence[7] = "wan"; + iUnicodeEquivalence[8] = 19976; sStringEquivalence[8] = "zhang"; + iUnicodeEquivalence[9] = 19977; sStringEquivalence[9] = "san"; + iUnicodeEquivalence[10] = 19978; sStringEquivalence[10] = "shang"; + iUnicodeEquivalence[11] = 19979; sStringEquivalence[11] = "xia"; + iUnicodeEquivalence[12] = 19980; sStringEquivalence[12] = "ji"; + iUnicodeEquivalence[13] = 19981; sStringEquivalence[13] = "bu"; + iUnicodeEquivalence[14] = 19982; sStringEquivalence[14] = "yu"; + iUnicodeEquivalence[15] = 19983; sStringEquivalence[15] = "mian"; + iUnicodeEquivalence[16] = 19984; sStringEquivalence[16] = "gai"; + iUnicodeEquivalence[17] = 19985; sStringEquivalence[17] = "chou"; + iUnicodeEquivalence[18] = 19986; sStringEquivalence[18] = "chou"; + iUnicodeEquivalence[19] = 19987; sStringEquivalence[19] = "zhuan"; + iUnicodeEquivalence[20] = 19988; sStringEquivalence[20] = "qie"; + iUnicodeEquivalence[21] = 19989; sStringEquivalence[21] = "pi"; + iUnicodeEquivalence[22] = 19990; sStringEquivalence[22] = "shi"; + iUnicodeEquivalence[23] = 19991; sStringEquivalence[23] = "shi"; + iUnicodeEquivalence[24] = 19992; sStringEquivalence[24] = "qiu"; + iUnicodeEquivalence[25] = 19993; sStringEquivalence[25] = "bing"; + iUnicodeEquivalence[26] = 19994; sStringEquivalence[26] = "ye"; + iUnicodeEquivalence[27] = 19995; sStringEquivalence[27] = "cong"; + iUnicodeEquivalence[28] = 19996; sStringEquivalence[28] = "dong"; + iUnicodeEquivalence[29] = 19997; sStringEquivalence[29] = "si"; + iUnicodeEquivalence[30] = 19998; sStringEquivalence[30] = "cheng"; + iUnicodeEquivalence[31] = 19999; sStringEquivalence[31] = "diu"; + iUnicodeEquivalence[32] = 20000; sStringEquivalence[32] = "qiu"; + iUnicodeEquivalence[33] = 20001; sStringEquivalence[33] = "liang"; + iUnicodeEquivalence[34] = 20002; sStringEquivalence[34] = "diu"; + iUnicodeEquivalence[35] = 20003; sStringEquivalence[35] = "you"; + iUnicodeEquivalence[36] = 20004; sStringEquivalence[36] = "liang"; + iUnicodeEquivalence[37] = 20005; sStringEquivalence[37] = "yan"; + iUnicodeEquivalence[38] = 20006; sStringEquivalence[38] = "bing"; + iUnicodeEquivalence[39] = 20007; sStringEquivalence[39] = "sang"; + iUnicodeEquivalence[40] = 20008; sStringEquivalence[40] = "shu"; + iUnicodeEquivalence[41] = 20009; sStringEquivalence[41] = "jiu"; + iUnicodeEquivalence[42] = 20010; sStringEquivalence[42] = "ge"; + iUnicodeEquivalence[43] = 20011; sStringEquivalence[43] = "ya"; + iUnicodeEquivalence[44] = 20012; sStringEquivalence[44] = "qiang"; + iUnicodeEquivalence[45] = 20013; sStringEquivalence[45] = "zhong"; + iUnicodeEquivalence[46] = 20014; sStringEquivalence[46] = "ji"; + iUnicodeEquivalence[47] = 20015; sStringEquivalence[47] = "jie"; + iUnicodeEquivalence[48] = 20016; sStringEquivalence[48] = "feng"; + iUnicodeEquivalence[49] = 20017; sStringEquivalence[49] = "guan"; + iUnicodeEquivalence[50] = 20018; sStringEquivalence[50] = "chuan"; + iUnicodeEquivalence[51] = 20019; sStringEquivalence[51] = "chan"; + iUnicodeEquivalence[52] = 20020; sStringEquivalence[52] = "lin"; + iUnicodeEquivalence[53] = 20021; sStringEquivalence[53] = "zhuo"; + iUnicodeEquivalence[54] = 20022; sStringEquivalence[54] = "zhu"; + iUnicodeEquivalence[55] = 20024; sStringEquivalence[55] = "wan"; + iUnicodeEquivalence[56] = 20025; sStringEquivalence[56] = "dan"; + iUnicodeEquivalence[57] = 20026; sStringEquivalence[57] = "wei"; + iUnicodeEquivalence[58] = 20027; sStringEquivalence[58] = "zhu"; + iUnicodeEquivalence[59] = 20028; sStringEquivalence[59] = "jing"; + iUnicodeEquivalence[60] = 20029; sStringEquivalence[60] = "li"; + iUnicodeEquivalence[61] = 20030; sStringEquivalence[61] = "ju"; + iUnicodeEquivalence[62] = 20031; sStringEquivalence[62] = "pie"; + iUnicodeEquivalence[63] = 20032; sStringEquivalence[63] = "fu"; + iUnicodeEquivalence[64] = 20033; sStringEquivalence[64] = "yi"; + iUnicodeEquivalence[65] = 20034; sStringEquivalence[65] = "yi"; + iUnicodeEquivalence[66] = 20035; sStringEquivalence[66] = "nai"; + iUnicodeEquivalence[67] = 20037; sStringEquivalence[67] = "jiu"; + iUnicodeEquivalence[68] = 20038; sStringEquivalence[68] = "jiu"; + iUnicodeEquivalence[69] = 20039; sStringEquivalence[69] = "tuo"; + iUnicodeEquivalence[70] = 20040; sStringEquivalence[70] = "me"; + iUnicodeEquivalence[71] = 20041; sStringEquivalence[71] = "yi"; + iUnicodeEquivalence[72] = 20043; sStringEquivalence[72] = "zhi"; + iUnicodeEquivalence[73] = 20044; sStringEquivalence[73] = "wu"; + iUnicodeEquivalence[74] = 20045; sStringEquivalence[74] = "zha"; + iUnicodeEquivalence[75] = 20046; sStringEquivalence[75] = "hu"; + iUnicodeEquivalence[76] = 20047; sStringEquivalence[76] = "fa"; + iUnicodeEquivalence[77] = 20048; sStringEquivalence[77] = "le"; + } + } +} diff --git a/qadevOOo/tests/java/ifc/i18n/_XExtendedTransliteration.java b/qadevOOo/tests/java/ifc/i18n/_XExtendedTransliteration.java new file mode 100644 index 0000000000..001936927b --- /dev/null +++ b/qadevOOo/tests/java/ifc/i18n/_XExtendedTransliteration.java @@ -0,0 +1,86 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.i18n; + +import com.sun.star.i18n.TransliterationModules; +import com.sun.star.i18n.XExtendedTransliteration; +import com.sun.star.lang.Locale; +import lib.MultiMethodTest; + +/** + * + */ +public class _XExtendedTransliteration extends MultiMethodTest { + public XExtendedTransliteration oObj = null; + private final Locale loc = new Locale("en", "US", "") ; + + @Override + public void before() { + oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); + } + + /** + * Check lowercase - uppercase conversion of chars + */ + public void _transliterateChar2Char() { + boolean result = true; + char in = 'a'; + char out = ' '; + try { + out = oObj.transliterateChar2Char(in) ; + result &= out == 'A'; + in = '$'; // should not be changed + out = oObj.transliterateChar2Char(in) ; + result &= out == '$'; + } + catch(com.sun.star.i18n.MultipleCharsOutputException e) { + e.printStackTrace(log); + } + tRes.tested("transliterateChar2Char()", result); + } + + /** + * Check lowercase - uppercase conversion of char to string + */ + public void _transliterateChar2String() { + boolean result = true; + char in = 'a'; + String out = null; + out = oObj.transliterateChar2String('a') ; + result &= out.equals("A"); + in = '$'; // should not be changed + out = oObj.transliterateChar2String(in) ; + result &= out.equals("$"); + tRes.tested("transliterateChar2String()", result); + } + + /** + * Check lowercase - uppercase conversion of strings + */ + public void _transliterateString2String() { + boolean result = true; + String in = "aAbBcC"; + String out = null; + out = oObj.transliterateString2String(in, 0, 6) ; + result &= out.equals("AABBCC"); + in = "$"; // should not be changed + out = oObj.transliterateString2String(in, 0, 1) ; + result &= out.equals("$"); + tRes.tested("transliterateString2String()", result); + } +} diff --git a/qadevOOo/tests/java/ifc/i18n/_XIndexEntrySupplier.java b/qadevOOo/tests/java/ifc/i18n/_XIndexEntrySupplier.java new file mode 100644 index 0000000000..31eac7bf64 --- /dev/null +++ b/qadevOOo/tests/java/ifc/i18n/_XIndexEntrySupplier.java @@ -0,0 +1,98 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.i18n; + +import lib.MultiMethodTest; + +import com.sun.star.i18n.XIndexEntrySupplier; +import com.sun.star.lang.Locale; + +/** +* Testing <code>com.sun.star.i18n.XIndexEntrySupplier</code> +* interface methods: +* <ul> +* <li><code> getIndexCharacter() </code></li> +* <li><code> getIndexFollowPageWord() </code></li> +* </ul><p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.i18n.XIndexEntrySupplier +*/ +public class _XIndexEntrySupplier extends MultiMethodTest { + public XIndexEntrySupplier oObj = null; + public String[] languages = new String[]{"de","en","es","fr","ja","ko","zh"}; + public String[] countries = new String[]{"DE","US","ES","FR","JP","KR","CN"}; + public String[] onePage = new String[]{"f.","p."," s."," sv","p.","",""}; + public String[] morePages = new String[]{"ff.","pp."," ss."," sv","pp.","",""}; + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if the method returns right index for several + * locales and word. + */ + public void _getIndexCharacter() { + boolean res = true; + log.println("getIndexCharacter('chapter', getLocale(i), '')"); + for (int i=0; i<7; i++) { + log.print("getIndexCharacter('chapter', " + countries[i] + ") :"); + String get = oObj.getIndexCharacter("chapter", getLocale(i), ""); + log.println(get); + res &= get.equals("C"); + } + tRes.tested("getIndexCharacter()", res); + } + + /** + * Test calls the method with two different parameters: for one page and + * for several pages, after every call result is checked. <p> + * Has <b> OK </b> status if method returns right index for several locales. + */ + public void _getIndexFollowPageWord() { + boolean res = true; + + for (int i=0; i<7; i++) { + String get = oObj.getIndexFollowPageWord(true, getLocale(i)); + if (! get.equals(morePages[i]) ) { + log.println("Language: " + languages[i]); + log.println("Getting: #" + get + "#"); + log.println("Expected: #" + morePages[i] + "#"); + } + res &= get.equals(morePages[i]); + get = oObj.getIndexFollowPageWord(false,getLocale(i)); + if (! get.equals(onePage[i]) ) { + log.println("Language: " + languages[i]); + log.println("Getting: #" + get + "#"); + log.println("Expected: #" + onePage[i] + "#"); + } + res &= get.equals(onePage[i]); + } + tRes.tested("getIndexFollowPageWord()", res); + } + + /** + * Method returns locale for a given language and country. + * @param k index of needed locale. + * @return Locale by the index from arrays defined above + */ + public Locale getLocale(int k) { + return new Locale(languages[k], countries[k], ""); + } + + +} // end XIndexEntrySupplier + diff --git a/qadevOOo/tests/java/ifc/i18n/_XLocaleData.java b/qadevOOo/tests/java/ifc/i18n/_XLocaleData.java new file mode 100644 index 0000000000..e7060dcb2a --- /dev/null +++ b/qadevOOo/tests/java/ifc/i18n/_XLocaleData.java @@ -0,0 +1,467 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.i18n; + +import lib.MultiMethodTest; + +import com.sun.star.i18n.Calendar; +import com.sun.star.i18n.Currency; +import com.sun.star.i18n.ForbiddenCharacters; +import com.sun.star.i18n.FormatElement; +import com.sun.star.i18n.Implementation; +import com.sun.star.i18n.LanguageCountryInfo; +import com.sun.star.i18n.LocaleDataItem; +import com.sun.star.i18n.XLocaleData; +import com.sun.star.lang.Locale; + +/** +* Testing <code>com.sun.star.i18n.XLocaleData</code> +* interface methods: +* <ul> +* <li><code> getLanguageCountryInfo() </code></li> +* <li><code> getLocaleItem() </code></li> +* <li><code> getAllCalendars() </code></li> +* <li><code> getAllCurrencies() </code></li> +* <li><code> getAllFormats() </code></li> +* <li><code> getCollatorImplementations() </code></li> +* <li><code> getSearchOptions() </code></li> +* <li><code> getCollationOptions() </code></li> +* <li><code> getTransliterations() </code></li> +* <li><code> getForbiddenCharacters() </code></li> +* <li><code> getReservedWord() </code></li> +* <li><code> getAllInstalledLocaleNames() </code></li> +* </ul><p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.i18n.XLocaleData +*/ +public class _XLocaleData extends MultiMethodTest { + public XLocaleData oObj = null; + public String[] languages = new String[]{"de","en","es","fr","ja","ko","ko"}; + public String[] countries = new String[]{"DE","US","ES","FR","JP","KR","KR"}; + + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if structure, returned by the method includes + * correct values of fields 'Language' and 'Country' for all given locales. + */ + public void _getLanguageCountryInfo() { + boolean res = true; + LanguageCountryInfo lci = null; + + for (int i=0;i<7;i++) { + lci = oObj.getLanguageCountryInfo(getLocale(i)); + /* For debug purposes + log.println("Using: language="+languages[i]+" ; country="+countries[i]); + log.println("Getting: "); + log.println("\t Language="+lci.Language); + log.println("\t LanguageDefaultName="+lci.LanguageDefaultName); + log.println("\t Country="+lci.Country); + log.println("\t CountryDefaultName="+lci.CountryDefaultName); + boolean lang = ( lci.Language.equals(languages[i]) ); + if (!lang) log.println("getting false for language: "+lci.LanguageDefaultName); + lang = ( lci.Country.equals(countries[i]) ); + if (!lang) log.println("getting false for country: "+lci.CountryDefaultName); + */ + res &= ( ( lci.Language.equals(languages[i]) ) && ( lci.Country.equals(countries[i]) ) ); + } + tRes.tested("getLanguageCountryInfo()",res); + } + + /** + * Test calls the method, then result is checked. <p> + * Has <b> OK </b> status if structure, returned by the method consists of + * non empty strings for all given locales. + */ + public void _getLocaleItem() { + boolean res = true; + LocaleDataItem ldi = null; + + for (int i=0;i<7;i++) { + ldi = oObj.getLocaleItem(getLocale(i)); + + boolean locRes = true ; + + locRes &= (! ldi.dateSeparator.equals("")); + locRes &= (! ldi.decimalSeparator.equals("")); + locRes &= (! ldi.doubleQuotationEnd.equals("")); + locRes &= (! ldi.doubleQuotationStart.equals("")); + locRes &= (! ldi.listSeparator.equals("")); + locRes &= (! ldi.LongDateDayOfWeekSeparator.equals("")); + locRes &= (! ldi.LongDateDaySeparator.equals("")); + locRes &= (! ldi.LongDateMonthSeparator.equals("")); + locRes &= (! ldi.LongDateYearSeparator.equals("")); + locRes &= (! ldi.measurementSystem.equals("")); + locRes &= (! ldi.quotationEnd.equals("")); + locRes &= (! ldi.quotationStart.equals("")); + locRes &= (! ldi.thousandSeparator.equals("")); + locRes &= (! ldi.time100SecSeparator.equals("")); + locRes &= (! ldi.timeAM.equals("")); + locRes &= (! ldi.timePM.equals("")); + locRes &= (! ldi.timeSeparator.equals("")); + locRes &= (! ldi.unoID.equals("")); + + if (!locRes) { + /* for debugging purposes + log.println("FAILED for: language="+languages[i]+" ; country="+countries[i]); + log.println("Getting: "); + log.println("\t DateSeparator="+ldi.dateSeparator); + log.println("\t decimalSeparator="+ldi.decimalSeparator); + log.println("\t doubleQuotationEnd="+ldi.doubleQuotationEnd); + log.println("\t doubleQuotationStart="+ldi.doubleQuotationStart); + log.println("\t listSeparator="+ldi.listSeparator); + log.println("\t LongDateDayOfWeekSeparator="+ldi.LongDateDayOfWeekSeparator+"end"); + log.println("\t LongDateDaySeparator="+ldi.LongDateDaySeparator+"end"); + log.println("\t LongDateMonthSeparator="+ldi.LongDateMonthSeparator+"end"); + log.println("\t LongDateYearSeparator="+ldi.LongDateYearSeparator+"end"); + log.println("\t measurementSystem="+ldi.measurementSystem); + log.println("\t quotationEnd="+ldi.quotationEnd); + log.println("\t quotationStart="+ldi.quotationStart); + log.println("\t thousandSeparator="+ldi.thousandSeparator); + log.println("\t time100SecSeparator="+ldi.time100SecSeparator); + log.println("\t timeAM="+ldi.timeAM); + log.println("\t timePM="+ldi.timePM); + log.println("\t timeSeparator="+ldi.timeSeparator); + log.println("\t unoID="+ldi.unoID); + */ + } + } + tRes.tested("getLocaleItem()",res); + } + + /** + * Test calls the method for several locales; result is checked + * after each call. <p> + * Has <b> OK </b> status if all elements of the returned sequence are + * correct for all given locales. (boolean method goodCalendar() with a + * calendar as an argument returns true) + */ + public void _getAllCalendars() { + boolean res = true; + boolean printit = false; + + for (int i=0;i<7;i++) { + Calendar[] calendar = oObj.getAllCalendars(getLocale(i)); + for (int j=0;j<calendar.length;j++) { + if (! goodCalendar(calendar[j]) ) { + printit = true; + } + res &= goodCalendar(calendar[j]); + } + if (printit) log.println("FAILED for: language="+languages[i]+" ; country="+countries[i]); + printit = false; + } + tRes.tested("getAllCalendars()", res); + } + + /** + * Test calls the method for several locales; result is checked + * after each call. <p> + * Has <b> OK </b> status if all elements of the returned sequence are + * correct for all given locales. (boolean method goodCurrency() with a + * currency as an argument returns true) + */ + public void _getAllCurrencies() { + boolean res = true; + boolean printit = false; + + for (int i=0;i<7;i++) { + Currency[] currency = oObj.getAllCurrencies(getLocale(i)); + for (int j=0;j<currency.length;j++) { + if (! goodCurrency(currency[j]) ) { + printit=true; + } + res &= goodCurrency(currency[j]); + } + if (printit) log.println("FAILED for: language="+languages[i]+" ; country="+countries[i]); + printit =false; + } + tRes.tested("getAllCurrencies()",res); + } + + /** + * Test calls the method for several locales; result is checked + * after each call. <p> + * Has <b> OK </b> status if all elements of the returned sequence are + * correct for all given locales. (boolean method goodFormat() with a + * format as an argument returns true) + */ + public void _getAllFormats() { + boolean res = true; + boolean printit = false; + + for (int i=0;i<7;i++) { + FormatElement[] format = oObj.getAllFormats(getLocale(i)); + for (int j=0;j<format.length;j++) { + if (! goodFormat(format[j]) ) { + printit = true; + } + res &= goodFormat(format[j]); + } + if (printit) log.println("FAILED for: language="+languages[i]+" ; country="+countries[i]); + printit =false; + } + tRes.tested("getAllFormats()",res); + } + + /** + * Test calls the method for several locales; result is checked + * after each call. <p> + * Has <b> OK </b> status if all structs, returned by the method have non + * empty field 'UnoID' for all given locales. + */ + public void _getCollatorImplementations() { + boolean res = true; + boolean printit = false; + + for (int i=0;i<7;i++) { + Implementation[] impl = oObj.getCollatorImplementations(getLocale(i)); + for (int j=0;j<impl.length;j++) { + if (impl[j].unoID.equals("")) { + printit = true; + } + res &= (!impl[j].unoID.equals("")); + } + if (printit) log.println("FAILED for: language=" + languages[i] + + " ; country=" + countries[i]); + printit = false; + } + tRes.tested("getCollatorImplementations()", res); + } + + /** + * Test calls the method for several locales; result is checked + * after each call. <p> + * Has <b> OK </b> status if all strings, returned by the method are not + * empty for all given locales. + */ + public void _getSearchOptions() { + boolean res = true; + boolean printit = false; + + for (int i=0;i<7;i++) { + String[] str = oObj.getSearchOptions(getLocale(i)); + for (int j=0;j<str.length;j++) { + if (str[j].equals("")) { + printit = true; + } + res &= (!str[j].equals("")); + } + if (printit) log.println("FAILED for: language=" + languages[i] + + " ; country=" + countries[i]); + printit = false; + } + tRes.tested("getSearchOptions()",res); + } + + /** + * Test calls the method for several locales; result is checked + * after each call. <p> + * Has <b> OK </b> status if all strings, returned by the method are not + * empty for all given locales. + */ + public void _getCollationOptions() { + boolean res = true; + boolean printit = false; + + for (int i=0;i<7;i++) { + String[] str = oObj.getCollationOptions(getLocale(i)); + for (int j=0;j<str.length;j++) { + if (str[j].equals("")) { + printit = true; + } + res &= (!str[j].equals("")); + } + if (printit) log.println("FAILED for: language=" + languages[i] + + " ; country=" + countries[i]); + printit = false; + } + tRes.tested("getCollationOptions()", res); + } + + /** + * Test calls the method for several locales; result is checked + * after each call. <p> + * Has <b> OK </b> status if all strings, returned by the method are not + * empty for all given locales. + */ + public void _getTransliterations() { + boolean res = true; + boolean printit = false; + + for (int i=0;i<7;i++) { + String[] str = oObj.getTransliterations(getLocale(i)); + for (int j=0;j<str.length;j++) { + if (str[j].equals("")) { + printit = true; + } + res &= (!str[j].equals("")); + } + if (printit) log.println("FAILED for: language=" + languages[i] + + " ; country=" + countries[i]); + printit = false; + } + tRes.tested("getTransliterations()", res); + } + + /** + * Test calls the method for several locales; result is checked + * after each call. <p> + * Has <b> OK </b> status if the method returns structure with non-empty + * fields for all given locales. + */ + public void _getForbiddenCharacters() { + boolean res = true; + ForbiddenCharacters fc = null; + + //the forbidden characters are only available for the asian languages + for (int i=4;i<7;i++) { + fc = oObj.getForbiddenCharacters(getLocale(i)); + res &= !( fc.beginLine.equals("") || fc.endLine.equals("") ); + if ( !res ) { + log.println("FAILED for: language="+languages[i]+" ; country="+countries[i]); + } + } + tRes.tested("getForbiddenCharacters()", res); + } + + + /** + * Test calls the method for several locales; result is checked + * after each call. <p> + * Has <b> OK </b> status if all strings, returned by the method are not + * empty for all given locales. + */ + public void _getReservedWord() { + boolean res = true; + boolean printit = false; + + for (int i=0;i<7;i++) { + String[] str = oObj.getReservedWord(getLocale(i)); + for (int j=0;j<str.length;j++) { + if (str[j].equals("")) { + printit = true; + } + res &= (!str[j].equals("")); + } + if (printit) log.println("FAILED for: language=" + languages[i] + + " ; country=" + countries[i]); + printit = false; + } + tRes.tested("getReservedWord()", res); + } + + + /** + * Test calls the method. Then result is checked for all given locales.<p> + * Has <b> OK </b> status if locale sequence, returned by the method contains + * given locales. + */ + public void _getAllInstalledLocaleNames() { + boolean res = true; + Locale[] locs = oObj.getAllInstalledLocaleNames(); + + //check if the languages used here are part of this array + for (int i=0;i<7;i++) { + res &= contains(locs, getLocale(i)); + } + tRes.tested("getAllInstalledLocaleNames()",res); + } + + + /** + * Method returns locale for a given language and country. + * @param k index of needed locale. + * @return Locale by the index from arrays defined above + */ + public Locale getLocale(int k) { + return new Locale(languages[k],countries[k],""); + } + + /** + * Method checks given calendar for non empty fields. + * @param calendar Calendar to be checked + */ + public boolean goodCalendar(Calendar calendar) { + boolean good = true; + for (int i=0;i<calendar.Days.length;i++) { + good &= (! calendar.Days[i].AbbrevName.equals("") ); + good &= (! calendar.Days[i].FullName.equals("") ); + good &= (! calendar.Days[i].ID.equals("") ); + } + for (int i=0;i<calendar.Months.length;i++) { + good &= (! calendar.Months[i].AbbrevName.equals("") ); + good &= (! calendar.Months[i].FullName.equals("") ); + good &= (! calendar.Months[i].ID.equals("") ); + } + for (int i=0;i<calendar.Eras.length;i++) { + good &= (! calendar.Eras[i].AbbrevName.equals("") ); + good &= (! calendar.Eras[i].FullName.equals("") ); + good &= (! calendar.Eras[i].ID.equals("") ); + } + good &= (! calendar.StartOfWeek.equals("") ); + good &= (! calendar.Name.equals("") ); + return good; + } + + /** + * Method checks given currency for non empty fields. + * @param currency Currency to be checked + */ + public boolean goodCurrency(Currency currency) { + boolean good = true; + good &= (!currency.BankSymbol.equals("")); + good &= (!currency.Name.equals("")); + good &= (!currency.Symbol.equals("")); + return good; + } + + /** + * Method checks given format for non empty fields. + * @param format Format to be checked + */ + public boolean goodFormat(FormatElement format) { + boolean good = true; + good &= (!format.formatCode.equals("")); + good &= (!format.formatKey.equals("")); + good &= (!format.formatType.equals("")); + good &= (!format.formatUsage.equals("")); + return good; + } + + /** + * Method checks that locale sequence contains given locale. + * @param locs Locale sequence + * @param oneLoc given locale + */ + public boolean contains(Locale[] locs, Locale oneLoc) { + boolean cont = false; + for (int j=0;j<locs.length;j++) { + if ( (locs[j].Country.equals(oneLoc.Country)) && + (locs[j].Language.equals(oneLoc.Language)) ) { + cont=true; + break; + } + } + if (!cont) log.println("Not contained: " + oneLoc.Language); + return cont; + } + +} // end XLocaleData + diff --git a/qadevOOo/tests/java/ifc/i18n/_XNumberFormatCode.java b/qadevOOo/tests/java/ifc/i18n/_XNumberFormatCode.java new file mode 100644 index 0000000000..5adddb1892 --- /dev/null +++ b/qadevOOo/tests/java/ifc/i18n/_XNumberFormatCode.java @@ -0,0 +1,154 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.i18n; + +import lib.MultiMethodTest; + +import com.sun.star.i18n.KNumberFormatType; +import com.sun.star.i18n.KNumberFormatUsage; +import com.sun.star.i18n.NumberFormatCode; +import com.sun.star.i18n.NumberFormatIndex; +import com.sun.star.i18n.XNumberFormatCode; +import com.sun.star.lang.Locale; + +/** +* Testing <code>com.sun.star.i18n.XNumberFormatCode</code> +* interface methods: +* <ul> +* <li><code> getDefault() </code></li> +* <li><code> getFormatCode() </code></li> +* <li><code> getAllFormatCode() </code></li> +* <li><code> getAllFormatCodes() </code></li> +* </ul><p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.i18n.XNumberFormatCode +*/ +public class _XNumberFormatCode extends MultiMethodTest { + public XNumberFormatCode oObj = null; + public String[] languages = new String[] + {"de","en","es","fr","ko","ko","zh"}; + public String[] countries = new String[] + {"DE","US","ES","FR","KR","KR","CN"}; + + /** + * Test calls the method twice with two different format types as + * parameters for each locale. Result is checked after every call.<p> + * Has <b> OK </b> status if both times returned structure's field 'Code' + * does not equal to empty string. + */ + public void _getDefault() { + boolean res = true; + NumberFormatCode nfc = null; + + for (int i=0;i<7;i++) { + nfc = oObj.getDefault(KNumberFormatType.SHORT, + KNumberFormatUsage.DATE, getLocale(i)); + String str = nfc.Code; + if (str.equals("")) { + log.println("'NumberFormat.code.equals(\"\") = true' for" + + " language: " + languages[i]); + log.println("Usage: oObj.getDefault(KNumberFormatType.SHORT," + + " KNumberFormatUsage.DATE,new Locale(" + languages[i] + + "," + countries[i] + ",\"\");"); + } + res &= !str.equals(""); + + nfc = oObj.getDefault(KNumberFormatType.LONG, + KNumberFormatUsage.DATE,getLocale(i)); + str = nfc.Code; + if (str.equals("")) { + log.println("'NumberFormat.code.equals(\"\") = true' for " + + "language: " + languages[i]); + log.println("Usage: oObj.getDefault(KNumberFormatType.LONG," + + " KNumberFormatUsage.DATE,new Locale(" + languages[i] + + "," + countries[i] + ",\"\");"); + } + res &= ( ! str.equals("") ); + } + tRes.tested("getDefault()", res); + } + + /** + * Test calls the method twice for each locale with two different arguments. + * After every call result is checked.<p> + * Has <b> OK </b> status if both times returned structure's field 'Code' + * does not equal to an empty string. + */ + public void _getFormatCode() { + boolean res = true; + NumberFormatCode nfc = null; + + for (int i=0;i<7;i++) { + nfc = oObj.getFormatCode + (NumberFormatIndex.DATE_SYSTEM_SHORT,getLocale(i)); + res &= ( ! nfc.Code.equals("") ); + nfc = oObj.getFormatCode + (NumberFormatIndex.DATE_SYSTEM_LONG,getLocale(i)); + res &= ( ! nfc.Code.equals("") ); + } + tRes.tested("getFormatCode()", res); + } + + /** + * Test calls the method twice with two different arguments for each locale. + * After every call result is checked.<p> + * Has <b> OK </b> status if both times returned array's length does not + * equal to zero. + */ + public void _getAllFormatCode() { + boolean res = true; + NumberFormatCode[] nfc = null; + + for (int i=0;i<7;i++) { + nfc = oObj.getAllFormatCode(KNumberFormatUsage.DATE, getLocale(i)); + res &= ( nfc.length != 0 ); + nfc = oObj.getAllFormatCode(KNumberFormatUsage.TIME, getLocale(i)); + res &= ( nfc.length != 0 ); + } + tRes.tested("getAllFormatCode()", res); + } + + /** + * Test calls the method for each locale. <p> + * Has <b> OK </b> status if returned array's length does not equal to zero. + */ + public void _getAllFormatCodes() { + boolean res = true; + NumberFormatCode[] nfc = null; + + for (int i=0;i<7;i++) { + nfc = oObj.getAllFormatCodes(getLocale(i)); + res &= ( nfc.length != 0 ); + } + tRes.tested("getAllFormatCodes()", res); + } + + /** + * Method returns locale for a given language and country. + * @param k index of needed locale. + * @return Locale by the index from arrays defined above + */ + public Locale getLocale(int k) { + return new Locale(languages[k], countries[k], ""); + } + + + +} // end XNumberFormatCode + diff --git a/qadevOOo/tests/java/ifc/i18n/_XTransliteration.java b/qadevOOo/tests/java/ifc/i18n/_XTransliteration.java new file mode 100644 index 0000000000..49ee580d3b --- /dev/null +++ b/qadevOOo/tests/java/ifc/i18n/_XTransliteration.java @@ -0,0 +1,425 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.i18n; + +import lib.MultiMethodTest; + +import com.sun.star.i18n.TransliterationModules; +import com.sun.star.i18n.TransliterationModulesNew; +import com.sun.star.i18n.TransliterationType; +import com.sun.star.i18n.XTransliteration; +import com.sun.star.lang.Locale; + +/** +* Testing <code>com.sun.star.i18n.XTransliteration</code> +* interface methods : +* <ul> +* <li><code> getName()</code></li> +* <li><code> getType()</code></li> +* <li><code> loadModule()</code></li> +* <li><code> loadModuleNew()</code></li> +* <li><code> loadModuleByImplName()</code></li> +* <li><code> loadModulesByImplNames()</code></li> +* <li><code> getAvailableModules()</code></li> +* <li><code> transliterate()</code></li> +* <li><code> folding()</code></li> +* <li><code> equals()</code></li> +* <li><code> transliterateRange()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.i18n.XTransliteration +*/ +public class _XTransliteration extends MultiMethodTest { + + public XTransliteration oObj = null; + private final Locale loc = new Locale("en", "EN", "") ; + + /** + * Gets all available transliteration modules. <p> + * Has <b>OK</b> status if array returned has at least + * one module name. + */ + public void _getAvailableModules() { + String[] mod = oObj.getAvailableModules(loc, TransliterationType.ONE_TO_ONE); + + if (mod != null) { + log.println("Available modules :") ; + for (int i = 0; i < mod.length; i++) { + log.println(" '" + mod[i] + "'") ; + } + } else { + log.println("!!! NULL returned !!!") ; + } + + tRes.tested("getAvailableModules()", mod != null && mod.length > 0) ; + } + + /** + * Calls the method for load IGNORE_CASE module and checks the name returned + * by the method <code>getName</code>. <p> + * Has <b>OK</b> status if the method <code>getName</code> returns the + * string "case ignore (generic)". + */ + public void _loadModule() { + log.println("Load module IGNORE_CASE"); + oObj.loadModule(TransliterationModules.IGNORE_CASE, loc); + + String name = oObj.getName(); + boolean res = name.equals("case ignore (generic)"); + log.println("getName return: " + name); + + tRes.tested("loadModule()", res ); + } + + /** + * Loads <code>LOWERCASE_UPPERCASE</code> module and checks the current + * name of object. <p> + * + * Has <b>OK</b> status if the name of the object is equals to + * 'lower_to_upper(generic)' + */ + public void _loadModuleNew() { + boolean result = true ; + + oObj.loadModuleNew( + new TransliterationModulesNew[] + {TransliterationModulesNew.LOWERCASE_UPPERCASE}, loc); + + String name = oObj.getName(); + result = name.equals("lower_to_upper(generic)"); + log.println("getName return: " + name); + + tRes.tested("loadModuleNew()", result); + } + + /** + * Calls the method for load LOWERCASE_UPPERCASE module and + * checks the name returned by the method <code>getName</code>. <p> + * Has <b>OK</b> status if the method <code>getName</code> returns the + * string "lower_to_upper(generic)". + */ + public void _loadModuleByImplName() { + log.println("Load module LOWERCASE_UPPERCASE"); + oObj.loadModuleByImplName("LOWERCASE_UPPERCASE", loc); + + String name = oObj.getName(); + boolean res = name.equals("lower_to_upper(generic)"); + log.println("getName return: " + name); + + tRes.tested("loadModuleByImplName()", res); + } + + /** + * Calls the method for load UPPERCASE_LOWERCASE module and + * checks the name returned by the method <code>getName</code>. <p> + * Has <b>OK</b> status if the method <code>getName</code> returns the + * string "upper_to_lower(generic)". + */ + public void _loadModulesByImplNames() { + log.println("Load module UPPERCASE_LOWERCASE"); + oObj.loadModulesByImplNames(new String[]{"UPPERCASE_LOWERCASE"}, loc); + + String name = oObj.getName(); + boolean res = name.equals("upper_to_lower(generic)"); + log.println("getName return: " + name); + + tRes.tested("loadModulesByImplNames()", res); + } + + /** + * Loads <code>LOWERCASE_UPPERCASE</code> module and checks current type. + * <p>Has <b>OK</b> status if the type is <code>ONE_TO_ONE</code> + */ + public void _getType() { + oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); + boolean result = oObj.getType() == TransliterationType.ONE_TO_ONE; + tRes.tested("getType()", result); + } + + /** + * Loads UPPERCASE_LOWERCASE module and + * checks the name returned by the method <code>getName</code>. <p> + * + * Has <b>OK</b> status if the method <code>getName</code> returns the + * string "upper_to_lower(generic)". + */ + public void _getName() { + oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); + + String name = oObj.getName(); + boolean res = name.equals("lower_to_upper(generic)"); + log.println("getName return: " + name); + + tRes.tested("getName()", res); + } + + /** + * First loads <code>LOWERCASE_UPPERCASE</code> module. + * Then tries to transliterate (make uppercase) a substring. <p> + * Has <b>OK</b> status if all chars were made uppercase, + * and array returned has size as substring length, and its + * elements are positions of substring characters in the source + * string. + */ + public void _transliterate() { + oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); + + int[][] offs = new int[1][] ; + + String out = oObj.transliterate("AaBbCc", 1, 4, offs) ; + + boolean result = "ABBC".equals(out) && offs[0].length == 4 && + offs[0][0] == 1 && + offs[0][1] == 2 && + offs[0][2] == 3 && + offs[0][3] == 4 ; + + tRes.tested("transliterate()", result) ; + } + + + /** + * First loads <code>LOWERCASE_UPPERCASE</code> module. + * Tries to transliterate a range of two characters. <p> + * Has <b>OK</b> status if the appropriate String array + * returned (not null, length = 4, with two ranges + * (a, i), (A, I) in any order). + */ + public void _transliterateRange() { + oObj.loadModule(TransliterationModules.IGNORE_CASE, loc); + + String[] out = oObj.transliterateRange("a", "i") ; + + log.println("transliterateRange return:"); + for(int i = 0; i < out.length; i++) { + log.println(out[i]); + } + + boolean bOK = out.length == 4 && + ("A".equals(out[0]) && "I".equals(out[1]) && + "a".equals(out[2]) && "i".equals(out[3])) || + ("a".equals(out[0]) && "i".equals(out[1]) && + "A".equals(out[2]) && "I".equals(out[3])) ; + + if (!bOK) { + log.println("Unexpected range returned :"); + for (int i = 0; i < out.length; i++) { + log.print("'" + out[i] +"', "); + } + log.println(); + } + + tRes.tested("transliterateRange()", bOK); + } + + /** + * This method is used internally by <code>equals</code> + * method so it indirectly tested in this method. <p> + * Always has <b>OK</b> status. + */ + public void _folding() { + oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); + + int[][] offs = new int[1][] ; + + String out = oObj.folding("AaBbCc", 1, 4, offs) ; + + boolean result = "ABBC".equals(out) && offs[0].length == 4 && + offs[0][0] == 1 && + offs[0][1] == 2 && + offs[0][2] == 3 && + offs[0][3] == 4 ; + + + tRes.tested("folding()", result) ; + } + + + /** + * First loads <code>LOWERCASE_UPPERCASE</code> module. + * Tries to compare two equal substrings. <p> + * Has <b>OK</b> status if the method returned <code>true</code>. + */ + public void _equals() { + oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); + + int[] match1 = new int[1], + match2 = new int[1] ; + + boolean res = oObj.equals("aAbBcC", 1, 3, match1, "aAbBcC", 1, + 3, match2) ; + + log.println("Returned : " + res + " Match1 = " + match1[0] + + " Match2 = " + match2[0]) ; + + tRes.tested("equals()", res) ; + } + + /** + * Test performed for sets of equal substrings, not equal + * substrings, and without of bounds offset and length + * parameters.<p> + * + * Has <b>OK</b> status if comparings of equal substrings + * always return 0, if comparisons of none equal returns + * proper value according to lexicographical order and if + * comparisons with invalid parameters return none 0 value. + */ + public void _compareSubstring() { + oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); + boolean result = true ; + + // substrings below must be equal + result &= testSubstring("", 0, 0, "", 0, 0, 0) ; + result &= testSubstring("aa", 1, 0, "", 0, 0, 0) ; + result &= testSubstring("aa", 1, 0, "aa", 2, 0, 0) ; + result &= testSubstring("a", 0, 1, "a", 0, 1, 0) ; + result &= testSubstring("ab", 0, 2, "ab", 0, 2, 0) ; + result &= testSubstring("abc", 1, 2, "abc", 1, 2, 0) ; + result &= testSubstring("abcdef", 0, 3, "123abc", 3, 3, 0) ; + result &= testSubstring("abcdef", 1, 1, "123abc", 4, 1, 0) ; + + // substrings below must NOT be equal + result &= testSubstring("a", 0, 1, "a", 0, 0, 1) ; + result &= testSubstring("aaa", 1, 1, "", 0, 0, 1) ; + result &= testSubstring("bbb", 2, 1, "aaa", 2, 1, 1) ; + result &= testSubstring("abc", 0, 3, "abc", 0, 2, 1) ; + result &= testSubstring("bbc", 1, 2, "bbc", 0, 2, 1) ; + + // testing with wrong offsets and lengths + + tRes.tested("compareSubstring()", result) ; + } + + /** + * Performs tesing of two substrings. Also testing of opposite + * substrings order performed. + * @return <code>true</code> if substrings are equal and returned + * value is 0 for both orders, + * if substrings are different and expected value + * returned for direct order and opposite value returned for + * opposite order. + */ + private boolean testSubstring(String str1, int p1, int len1, + String str2, int p2, int len2, int expRes) { + + boolean ret = true ; + + int res = oObj.compareSubstring(str1, p1, len1, str2, p2, len2); + + if (res != expRes) { + log.print("Comparing FAILED; return: " + res + ", expected: " + + expRes + " "); + ret = false ; + } else { + log.print("Comparing OK : "); + } + log.println("('" + str1 + "', " + p1 + ", " + len1 + ", '" + + str2 + "', " + p2 + ", " + len2 + ")"); + + res = oObj.compareSubstring(str2, p2, len2, str1, p1, len1); + + if (res != -expRes) { + log.print("Comparing FAILED; return: " + res + ", expected: " + + -expRes + " "); + ret = false ; + } else { + log.print("Comparing OK :"); + } + log.println("('" + str2 + "', " + p2 + ", " + len2 + ", '" + + str1 + "', " + p1 + ", " + len1 + ")"); + + return ret ; + } + + /** + * Test performed for sets of equal strings and not equal + * strings.<p> + * + * Has <b>OK</b> status if comparings of equal strings + * always return 0 and if comparisons of none equal returns + * proper value according to lexicographical order . + */ + public void _compareString() { + oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); + boolean result = true ; + + result &= testString("", "", 0) ; + result &= testString("a", "", 1) ; + result &= testString("a", "a", 0) ; + result &= testString("A", "a", 0) ; + result &= testString("b", "a", 1) ; + result &= testString("\n", "\n", 0) ; + result &= testString("\n", "\t", 1) ; + result &= testString("aaa", "aaa", 0) ; + result &= testString("aaA", "aaa", 0) ; + result &= testString("aaa", "aa", 1) ; + result &= testString("ab", "aaa", 1) ; + result &= testString("aba", "aa", 1) ; + result &= testString("aaa\t\na", "aaa\t\na", 0) ; + result &= testString("aaa\t\nb", "aaa\t\na", 1) ; + + tRes.tested("compareString()", result) ; + } + + /** + * Performs tesing of two strings. If the expected value is not 0 + * (i.e. strings are not equal), then also testing of opposite + * strings order performed. + * @return <code>true</code> if strings are equal and returned + * value is 0, if strings are different and expected value + * returned for direct order and opposite value returned for + * opposite order. + */ + protected boolean testString(String str1, String str2, int expRes) { + if (expRes == 0) return testString(str1, str2, expRes, false) ; + return testString(str1, str2, expRes, true) ; + } + + private boolean testString(String str1, String str2, int expRes, + boolean testReverse) { + + boolean ret = true ; + + int res = oObj.compareString(str1, str2); + + if (res == expRes) { + log.println("Comparing of '" + str1 + "' and '" + str2 + "' OK" ); + } else { + log.println("Comparing of '" + str1 + "' and '" + str2 + + "' FAILED; return: " + res + ", expected: " + expRes); + ret = false ; + } + + if (!testReverse) return ret ; + + res = oObj.compareString(str2, str1); + + if (res == -expRes) { + log.println("Comparing of '" + str2 + "' and '" + str1 + "' OK" ); + } else { + log.println("Comparing of '" + str2 + "' and '" + str1 + + "' FAILED; return: " + res + ", expected: " + -expRes); + ret = false ; + } + + return ret ; + } +} + diff --git a/qadevOOo/tests/java/ifc/inspection/_XObjectInspector.java b/qadevOOo/tests/java/ifc/inspection/_XObjectInspector.java new file mode 100644 index 0000000000..faf0036f3c --- /dev/null +++ b/qadevOOo/tests/java/ifc/inspection/_XObjectInspector.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 ifc.inspection; + +import com.sun.star.inspection.XObjectInspector; +import com.sun.star.inspection.XObjectInspectorModel; +import com.sun.star.inspection.XObjectInspectorUI; +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + + +/** + * Testing <code>com.sun.star.inspection.XObjectInspector</code> + * interface methods : + * <ul> + * <li><code> inspect()</code></li> + * <li><code> InspectorModel()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * + * This test needs the following object relations : + * <ul> + * <li> <code>'XObjectInspector.toInspect'</code> + * (of type <code>Object []</code>): + * acceptable collection of one or more objects which can be inspected by <code>inspect()</code> </li> + * <ul> <p> + * + */ + +public class _XObjectInspector extends MultiMethodTest { + + /** + * the test object + */ + public XObjectInspector oObj = null; + /** + * This variable was filled with the object relation + * <CODE>XObjectInspector.toInspect</CODE> and was used to + * test the method <CODE>inspect()</CODE> + */ + public Object[] oInspect = null; + /** + * This variable was filled with the object relation + * <CODE>XObjectInspector.InspectorModelToSet</CODE> and was used to + * test the method <CODE>setInspectorModel()</CODE> + */ + public XObjectInspectorModel xSetModel = null; + + /** + * get object relations + * <ul> + * <li>XObjectInspector.toInspect</li> + * </ul> + */ + @Override + public void before() { + + oInspect = (Object[]) tEnv.getObjRelation("XObjectInspector.toInspect"); + + if (oInspect == null) throw new StatusException + (Status.failed("Relation 'XObjectInspector.toInspect' not found.")) ; + + xSetModel = (XObjectInspectorModel) tEnv.getObjRelation("XObjectInspector.InspectorModelToSet"); + + if (xSetModel == null) throw new StatusException + (Status.failed("Relation 'XObjectInspector.InspectorModelToSet' not found.")) ; + } + + /** + * Inspects a new collection of one or more objects given by object relation + * <CODE>XObjectInspector.toInspect</CODE><br> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _inspect() { + + boolean result = true; + + try { + oObj.inspect(oInspect); + + } catch (com.sun.star.util.VetoException e){ + log.println("ERROR:" + e.toString()); + result = false; + } + + tRes.tested("inspect()", result) ; + } + + /** + * First call the method <CODE>getInspectorModel()</CODE> and save the value<br> + * Second call the method <CODE>setInspectorModel()</CODE> with the module variable + * <CODE>xSetModel</CODE> as parameter.<br> Then <CODE>getInspectorModel()</CODE> + * was called and the returned valued was compared to the saved variable + * <CODE>xSetModel</CODE><br> + * Has <CODE>OK</CODE> status if the returned value is equal to + * <CODE>xSetModel</CODE>.and the saved value is not null. + */ + public void _InspectorModel() { + + log.println("testing 'getInspectorModel()'..."); + XObjectInspectorModel xGetModel = oObj.getInspectorModel() ; + + boolean result = xGetModel != null; + + log.println(result? "got a not null object -> OK" : "got a NULL object -> FAILED"); + + log.println("testing 'setInspectorModel()'..."); + oObj.setInspectorModel(xSetModel); + + XObjectInspectorModel xNewModel = oObj.getInspectorModel(); + + if (result) oObj.setInspectorModel(xGetModel); + + result &= xSetModel.equals(xNewModel); + + tRes.tested("InspectorModel()", result) ; + } + + /** + * Calls the method <CODE>getInspectorUI()</CODE> + * Has <b>OK</b> returned value is not null + */ + public void _InspectorUI() { + + XObjectInspectorUI oUI = oObj.getInspectorUI(); + + tRes.tested("InspectorUI()", oUI != null) ; + + } +} + + diff --git a/qadevOOo/tests/java/ifc/inspection/_XObjectInspectorModel.java b/qadevOOo/tests/java/ifc/inspection/_XObjectInspectorModel.java new file mode 100644 index 0000000000..afca1175cc --- /dev/null +++ b/qadevOOo/tests/java/ifc/inspection/_XObjectInspectorModel.java @@ -0,0 +1,151 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.inspection; + +import com.sun.star.inspection.PropertyCategoryDescriptor; +import com.sun.star.inspection.XObjectInspectorModel; +import lib.MultiMethodTest; + + + +/** + * Testing <code>com.sun.star.inspection.XObjectInspectorModel</code> + * interface methods : + * <ul> + * <li><code> describeCategories()</code></li> + * <li><code> getHandlerFactories()</code></li> + * <li><code> getPropertyOrderIndex()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * + */ +public class _XObjectInspectorModel extends MultiMethodTest { + + /** + * the test object + */ + public XObjectInspectorModel oObj = null; + + /** + * calls the method <CODE>getHandlerFactories()</CODE> + * Has <b>OK</b> status if returned value is not null. + */ + public void _HandlerFactories() { + + Object[] HandlerFactories = oObj.getHandlerFactories(); + + tRes.tested("HandlerFactories()", HandlerFactories != null) ; + } + + /** + * Call the method <CODE>getPropertyOrderIndex()</CODE> with an invalid property name. + * Has <CODE>OK</CODE> status if the returned index is "0". + */ + public void _getPropertyOrderIndex() { + + int index = 0; + boolean result = true; + + log.println("try to get index of Invalid property name 'InvalidPropertyName' ..."); + index = oObj.getPropertyOrderIndex("InvalidPropertyName"); + log.println("index is: " + index); + result = (index == 0); + + tRes.tested("getPropertyOrderIndex()", result) ; + } + + /** + * Call the method <CODE>describeCategories()</CODE> + * Has <b>OK</b> status if returned value is not null. + */ + public void _describeCategories() { + + PropertyCategoryDescriptor[] categories = oObj.describeCategories(); + + tRes.tested("describeCategories()", categories != null) ; + } + + /** + * Call the method <CODE>getHasHelpSection()</CODE> + * Has <b>OK</b> status if method returned </CODE>true</CODE> + */ + public void _HasHelpSection() { + + boolean hasHelpSection = oObj.getHasHelpSection(); + + tRes.tested("HasHelpSection()", hasHelpSection) ; + } + + /** + * Call the method <CODE>getMinHelpTextLines()</CODE> + * Has <b>OK</b> status if returned value equals to object relation 'minHelpTextLines' + */ + public void _MinHelpTextLines() { + + Integer minHelpTextLines = (Integer) tEnv.getObjRelation("minHelpTextLines"); + + int getMinHelpTextLines = oObj.getMinHelpTextLines(); + + boolean result = (minHelpTextLines.intValue() == getMinHelpTextLines); + + if (!result) + log.println("FAILED: value:" + minHelpTextLines + " gotten value:" + getMinHelpTextLines); + + tRes.tested("MinHelpTextLines()", result) ; + } + + /** + * Call the method <CODE>getMaxHelpTextLines())</CODE> + * Has <b>OK</b> status if returned value equals to object relation 'maxHelpTextLines' + */ + public void _MaxHelpTextLines() { + + Integer maxHelpTextLines = (Integer) tEnv.getObjRelation("maxHelpTextLines"); + + int getMaxHelpTextLines = oObj.getMaxHelpTextLines(); + + boolean result = (maxHelpTextLines.intValue() == getMaxHelpTextLines); + + if (!result) + log.println("FAILED: expected value:" + maxHelpTextLines + " gotten value:" + getMaxHelpTextLines); + + tRes.tested("MaxHelpTextLines()", result); + } + + public void _IsReadOnly() { + boolean readOnly = oObj.getIsReadOnly(); + + oObj.setIsReadOnly(!readOnly); + + boolean result = (readOnly != oObj.getIsReadOnly()); + if (!result){ + log.println("FAILED: could not change 'IsReadOnly' to value '" + !readOnly + "'"); + } + + oObj.setIsReadOnly(readOnly); + + result &= (readOnly == oObj.getIsReadOnly()); + if (!result){ + log.println("FAILED: could not change back 'IsReadOnly' to value '" + !readOnly + "'"); + } + + tRes.tested("IsReadOnly()", result); + } + +} diff --git a/qadevOOo/tests/java/ifc/io/_XActiveDataControl.java b/qadevOOo/tests/java/ifc/io/_XActiveDataControl.java new file mode 100644 index 0000000000..9ac7c73086 --- /dev/null +++ b/qadevOOo/tests/java/ifc/io/_XActiveDataControl.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 ifc.io; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.io.XActiveDataControl; +import com.sun.star.io.XStreamListener; +import com.sun.star.lang.EventObject; + +/** + * Testing <code>com.sun.star.io.XActiveDataControl</code> + * interface methods : + * <ul> + * <li><code> addListener()</code></li> + * <li><code> removeListener()</code></li> + * <li><code> start()</code></li> + * <li><code> terminate()</code></li> + * </ul> <p> + * + * Tests <code>XActiveDataControl</code> interface. First, it registers a listener + * and performs <code>start()</code> and <code>terminate()</code> calls. The + * events received in the listener are analyzed to verify the result.<p> + * + * @see com.sun.star.io.XActiveDataControl + */ +public class _XActiveDataControl extends MultiMethodTest { + + /** + * Contains the object under test. + */ + public XActiveDataControl oObj = null; + + /** + * Indicates that the <code>XStreamListener.started()</code> method has + * been called. + */ + private boolean startCalled = false; + + /** + * Indicates that the <code>XStreamListener.terminated()</code> method has + * been called. + */ + private boolean terminateCalled = false; + + /** + * Indicates that the <code>XEventListener.closed()</code> method has + * been called. + */ + private boolean closeCalled = false; + + /** + * Indicates that the <code>XStreamListener.error()</code> method has + * been called. + */ + private boolean errorCalled = false; + + /** + * Contains the error, if <code>XStreamListener.error(Object error)</code> + * method was called. + */ + private Object error; + + /** + * Indicates that the <code>XEventListener.disposing()</code> method has + * been called. + */ + private boolean smthngElseCalled = false; + + /** + * The listener is used to verify results of the methods. + */ + private final TestStreamListener listener = new TestStreamListener(); + + /** + * XStreamListener implementation. Sets variables + * (<cod>startedCalled</code>, <code>terminatedCalled</code>, etc.) to + * <tt>true</tt> if the appropriate method was called (for example, if + * <code>started()</code> was called, the <code>startedCalled</code> + * field is set). + */ + private class TestStreamListener implements XStreamListener { + public void started() { + startCalled = true ; + } + public void terminated() { + terminateCalled = true ; + } + public void error(Object e) { + error = e; + errorCalled = true ; + } + public void closed() { + closeCalled = true ; + } + public void disposing(EventObject e) { + smthngElseCalled = true ; + } + + } + + /** + * Tests <code>addListener()</code>. The verification is performed later, in + * <code>_terminate()</code> method. + */ + public void _addListener() { + oObj.addListener(listener); + } + + /** + * Starts the data activity (e.g. data pump). Verification is performed + * later, in <code>_terminate()</code> method. + */ + public void _start() { + executeMethod("addListener()"); + + oObj.start(); + + // waiting a little bit for data transferred + util.utils.pause(200); + try { + Thread.sleep(200); + } catch (InterruptedException e) { + throw new StatusException(e, Status.failed(e.getMessage())); + } + } + + /** + * Tests <code>removeListener()</code>. Before, it ensures that other + * tests are performed and that <code>addListener()</code> is okay. Then, + * calls <code>XActiveDataControl.start()</code> and checks that no method + * of the listener was called. + */ + public void _removeListener() { + // performing other tests before, so, that don't break them + try { + executeMethod("terminate()"); + } catch (StatusException e) { + // the result doesn't matter + } + + // check that addListener() is okay + requiredMethod("addListener()"); + + // clearing previous records + startCalled = false; + terminateCalled = false; + errorCalled = false; + error = null; + smthngElseCalled = false; + + // removing the listener + oObj.removeListener(listener); + + // starting the activity + oObj.start(); + + // wait a little bit to allow for listeners to be called + try { + Thread.sleep(200); + } catch (InterruptedException e) { + throw new StatusException(e, Status.failed(e.getMessage())); + } + + // check that no removed listener's method was called + tRes.tested("removeListener()",!startCalled && + !terminateCalled && !errorCalled && !smthngElseCalled) ; + } + + /** + * Tests <code>terminate()</code>. First, ensures that <code>start()</code> + * has been called. Then, verifies <code>start()</code>, + * <code>addListener()</code> and <code>terminate()</code> results, by + * checking that the appropriate listener's methods have been called. + */ + public void _terminate() { + // ensuring that the activity has been started + executeMethod("start()"); + + // terminating the activity + oObj.terminate(); + + // waiting a little bit for listeners to be called + try { + Thread.sleep(200); + } catch (InterruptedException e) { + throw new StatusException(e, Status.failed(e.getMessage())); + } + + // check, if any error occurred + if (errorCalled) { + log.println("Unexpected error " + error); + ((Exception)error).printStackTrace(log); + } + + // verification of start() method - startedCalled method should be + // called + if (!tRes.tested("start()", startCalled)) { + log.println("XStreamListener.started() was not called()"); + } + + // check that any listener method is called + tRes.tested("addListener()", startCalled || + terminateCalled || errorCalled || smthngElseCalled); + + // checking that terminated() has been called or streams were closed + // before terminate() call, in this case termination has no sense. + tRes.tested("terminate()", terminateCalled || closeCalled); + } + + /** + * Disposes the test environment, since it is used. + */ + @Override + public void after() { + this.disposeEnvironment(); + } +} + + diff --git a/qadevOOo/tests/java/ifc/io/_XActiveDataSink.java b/qadevOOo/tests/java/ifc/io/_XActiveDataSink.java new file mode 100644 index 0000000000..ec1dad4595 --- /dev/null +++ b/qadevOOo/tests/java/ifc/io/_XActiveDataSink.java @@ -0,0 +1,104 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.io; + +import lib.MultiMethodTest; + +import com.sun.star.io.XActiveDataSink; +import com.sun.star.io.XInputStream; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Testing <code>com.sun.star.io.XActiveDataSink</code> +* interface methods : +* <ul> +* <li><code> setInputStream()</code></li> +* <li><code> getInputStream()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* +* This test needs the following object relations : +* <ul> +* <li> <code>'InputStream'</code> +* (of type <code>com.sun.star.io.XInputStream</code>): +* acceptable input stream which can be set by <code>setInputStream</code> </li> +* <ul> <p> +* +* After test completion object environment has to be recreated. +* @see com.sun.star.io.XActiveDataSink +*/ +public class _XActiveDataSink extends MultiMethodTest { + + public XActiveDataSink oObj = null; + + private XInputStream iStream = null; + + /** + * Take the XInputStream from the environment for setting and getting + */ + @Override + public void before() { + XInterface x = (XInterface)tEnv.getObjRelation("InputStream"); + iStream = UnoRuntime.queryInterface + (XInputStream.class, x) ; + } + + /** + * Just sets new input stream. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _setInputStream() { + oObj.setInputStream(iStream) ; + + tRes.tested("setInputStream()", true) ; + } + + /** + * First retrieves current input stream, then sets to new + * input stream (if old was <code>null</code>) or to null. + * Then input stream retrieved again and checked to be not + * equal to the old one. <p> + * Has <b>OK</b> status if old and new streams retrieved are + * not equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setInputStream() </code> : to be sure the method + * works without exceptions. </li> + * </ul> + */ + public void _getInputStream() { + requiredMethod("setInputStream()") ; + + Object oldStream = oObj.getInputStream() ; + XInputStream newStream = oldStream == null ? iStream : null ; + + oObj.setInputStream(newStream) ; + Object getStream = oObj.getInputStream() ; + + tRes.tested("getInputStream()", getStream != oldStream) ; + } + + @Override + public void after() { + this.disposeEnvironment() ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/io/_XActiveDataSource.java b/qadevOOo/tests/java/ifc/io/_XActiveDataSource.java new file mode 100644 index 0000000000..5cd2dd3efa --- /dev/null +++ b/qadevOOo/tests/java/ifc/io/_XActiveDataSource.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 ifc.io; + +import lib.MultiMethodTest; + +import com.sun.star.io.XActiveDataSource; +import com.sun.star.io.XOutputStream; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Testing <code>com.sun.star.io.XActiveDataSource</code> +* interface methods: +* <ul> +* <li><code>setOutputStream()</code></li> +* <li><code>getOutputStream()</code></li> +* </ul> <p> +* +* This test needs the following object relations : +* <ul> +* <li> <code>'OutputStream'</code> +* (of type <code>com.sun.star.io.OutputStream</code>): +* acceptable output stream which can be set by <code>setOutputStream</code> </li> +* <ul> <p> +* +* After test completion object environment has to be recreated. +* @see com.sun.star.io.XActiveDataSource +* @see com.sun.star.io.XOutputStream +*/ +public class _XActiveDataSource extends MultiMethodTest { + + public XActiveDataSource oObj = null; + + private XOutputStream oStream = null; + + /** + * Take the XOutputStream from the environment for setting and getting. + */ + @Override + public void before() { + XInterface x = (XInterface)tEnv.getObjRelation("OutputStream"); + oStream = UnoRuntime.queryInterface + (XOutputStream.class, x) ; + } + + /** + * Test calls the method using interface <code>XOutputStream</code> + * received in method <code>before()</code> as parameter. <p> + * Has <b> OK </b> status if the method successfully returns. <p> + */ + public void _setOutputStream() { + oObj.setOutputStream(oStream); + tRes.tested("setOutputStream()", true); + } + + /** + * Test calls the method and compares returned value with value that was + * set in the method <code>setOutputStream()</code>. <p> + * Has <b> OK </b> status if values are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setOutputStream() </code></li> + * </ul> + */ + public void _getOutputStream() { + requiredMethod("setOutputStream()"); + + tRes.tested("getOutputStream()", + oStream.equals(oObj.getOutputStream())); + } + + /** + * Forces object environment recreation. + */ + @Override + public void after() { + this.disposeEnvironment() ; + } +} + diff --git a/qadevOOo/tests/java/ifc/io/_XConnectable.java b/qadevOOo/tests/java/ifc/io/_XConnectable.java new file mode 100644 index 0000000000..8efb86defe --- /dev/null +++ b/qadevOOo/tests/java/ifc/io/_XConnectable.java @@ -0,0 +1,125 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.io; + +import lib.MultiMethodTest; + +import com.sun.star.io.XConnectable; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Testing <code>com.sun.star.io.XConnectable</code> +* interface methods: +* <ul> +* <li><code>setPredecessor()</code></li> +* <li><code>getPredecessor()</code></li> +* <li><code>setSuccessor()</code></li> +* <li><code>getSuccessor()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'Connectable'</code> (supports the <code>XConnectable</code> +* interface): +* another object to connect </li> +* </ul> +* After test completion object environment has to be recreated. +* @see com.sun.star.io.XConnectable +*/ +public class _XConnectable extends MultiMethodTest { + + public XConnectable oObj = null; + + private XConnectable xConnect = null ; + + /** + * Get another connectable object from object relations. + */ + @Override + public void before() { + XInterface x = (XInterface)tEnv.getObjRelation("Connectable"); + xConnect = UnoRuntime.queryInterface( + XConnectable.class, x) ; + } + + /** + * Test calls the method using interface <code>XConnectable</code> + * received in method <code>before()</code> as parameter. <p> + * Has <b> OK </b> status if the method successfully returns. <p> + */ + public void _setPredecessor() { + oObj.setPredecessor(xConnect) ; + + tRes.tested("setPredecessor()", true) ; + } + + /** + * Test calls the method and compares returned value with value that was + * set in the method <code>setPredecessor()</code>. <p> + * Has <b> OK </b> status if values are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setPredecessor() </code></li> + * </ul> + */ + public void _getPredecessor() { + requiredMethod("setPredecessor()") ; + + XConnectable gConnect = oObj.getPredecessor() ; + + tRes.tested("getPredecessor()", xConnect.equals(gConnect)) ; + } + + /** + * Test calls the method using interface <code>XConnectable</code> + * received in method <code>before()</code> as parameter. <p> + * Has <b> OK </b> status if the method successfully returns. <p> + */ + public void _setSuccessor() { + oObj.setSuccessor(xConnect) ; + + tRes.tested("setSuccessor()", true) ; + } + + /** + * Test calls the method and compares returned value with value that was + * set in the method <code>setSuccessor()</code>. <p> + * Has <b> OK </b> status if values are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setSuccessor() </code></li> + * </ul> + */ + public void _getSuccessor() { + requiredMethod("setSuccessor()") ; + + XConnectable gConnect = oObj.getSuccessor() ; + + tRes.tested("getSuccessor()", xConnect.equals(gConnect)) ; + } + + /** + * Forces object environment recreation. + */ + @Override + public void after() { + this.disposeEnvironment() ; + } +} + diff --git a/qadevOOo/tests/java/ifc/io/_XDataInputStream.java b/qadevOOo/tests/java/ifc/io/_XDataInputStream.java new file mode 100644 index 0000000000..e451b8e7eb --- /dev/null +++ b/qadevOOo/tests/java/ifc/io/_XDataInputStream.java @@ -0,0 +1,414 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.io; + +import java.util.List; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.io.XDataInputStream; +import com.sun.star.io.XDataOutputStream; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Testing <code>com.sun.star.io.XDataInputStream</code> +* interface methods: +* <ul> +* <li><code>readBoolean()</code></li> +* <li><code>readByte()</code></li> +* <li><code>readChar()</code></li> +* <li><code>readShort()</code></li> +* <li><code>readLong()</code></li> +* <li><code>readHyper()</code></li> +* <li><code>readFloat()</code></li> +* <li><code>readDouble()</code></li> +* <li><code>readUTF()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'StreamData'</code> (of type <code>Vector</code>): +* vector of data for comparing with data that obtained from stream </li> +* <li> <code>'StreamWriter'</code> (of type <code>XDataOutputStream</code>): +* a possibility to write values to the stream. </li> +* <ul> <p> +* After test completion object environment has to be recreated. +* @see com.sun.star.io.XDataInputStream +* @see java.util.Vector +*/ +public class _XDataInputStream extends MultiMethodTest { + + public XDataInputStream oObj = null; + public XDataOutputStream oStream = null; + + // values that are written + private boolean writeBoolean; + private byte writeByte; + private char writeChar; + private double writeDouble; + private float writeFloat; + private long writeHyper; + private int writeLong; + private short writeShort; + private String writeUTF; + + + /** + * Retrieves relations. From relation 'StreamData' extracts + * data of different types and fills the appropriate variables. + * @throws StatusException If one of relations not found. + */ + @SuppressWarnings("unchecked") + @Override + public void before(){ + + XInterface x = (XInterface)tEnv.getObjRelation("StreamWriter") ; + oStream = UnoRuntime.queryInterface(XDataOutputStream.class, x); + List<Object> data = (List<Object>) tEnv.getObjRelation("StreamData") ; + if (data == null || oStream == null) { + throw new StatusException(Status.failed("Object relation not found.")); + } + + // extract data from vector + Object dataElem = null ; + for (int i = 0; i < data.size(); i++) { + dataElem = data.get(i) ; + + if (dataElem instanceof Boolean) { + writeBoolean = ((Boolean)dataElem).booleanValue(); + } else + if (dataElem instanceof Byte) { + writeByte = ((Byte)dataElem).byteValue(); + } else + if (dataElem instanceof Character) { + writeChar = ((Character)dataElem).charValue(); + } else + if (dataElem instanceof Short) { + writeShort = ((Short)dataElem).shortValue(); + } else + if (dataElem instanceof Integer) { + writeLong = ((Integer)dataElem).intValue(); + } else + if (dataElem instanceof Long) { + writeHyper = ((Long)dataElem).longValue(); + } else + if (dataElem instanceof Float) { + writeFloat = ((Float)dataElem).floatValue(); + } else + if (dataElem instanceof Double) { + writeDouble = ((Double)dataElem).doubleValue(); + } else + if (dataElem instanceof String) { + writeUTF = (String)dataElem; + } + } + } + + /** + * First writes a value to outStream then reads it from input. <p> + * + * Has <b> OK </b> status if read and written values are equal. <p> + */ + public void _readBoolean() { + boolean res = true ; + try { + oStream.writeBoolean(writeBoolean); + } catch (com.sun.star.io.IOException e) { + e.printStackTrace(log); + throw new StatusException("Can't write data to the stream", e); + } + byte readElem; + try { + readElem = oObj.readBoolean(); + res = ((readElem != 0) == writeBoolean); + + if (!res) + log.println("Must be read " + + writeBoolean + + " but was read " + (readElem != 0)) ; + } catch (com.sun.star.io.IOException e) { + log.println("Couldn't read Boolean from stream"); + e.printStackTrace(log); + res = false; + } + + tRes.tested("readBoolean()", res) ; + } + + /** + * First writes a value to outStream then reads it from input. <p> + * + * Has <b> OK </b> status if read and written values are equal. <p> + */ + public void _readByte() { + boolean res = true ; + try { + oStream.writeByte(writeByte); + } catch (com.sun.star.io.IOException e) { + e.printStackTrace(log); + throw new StatusException("Can't write data to the stream", e); + } + byte readElem; + try { + readElem = oObj.readByte() ; + res = (readElem == writeByte); + + if (!res) + log.println("Must be read " + + writeByte + + " but was read " + readElem); + } catch(com.sun.star.io.IOException e) { + log.println("Couldn't read Byte from stream"); + e.printStackTrace(log); + res = false; + } + + tRes.tested("readByte()", res) ; + } + + /** + * First writes a value to outStream then reads it from input. <p> + * + * Has <b> OK </b> status if read and written values are equal. <p> + */ + public void _readChar() { + boolean res = true ; + try { + oStream.writeChar(writeChar); + } catch (com.sun.star.io.IOException e) { + e.printStackTrace(log); + throw new StatusException("Can't write data to the stream", e); + } + char readElem; + try { + readElem = oObj.readChar() ; + res = (readElem == writeChar); + + if (!res) + log.println("Must be read " + + writeChar + + " but was read " + readElem) ; + } catch( com.sun.star.io.IOException e ) { + log.println("Couldn't read Char from stream"); + e.printStackTrace(log); + res = false; + } + tRes.tested("readChar()", res); + } + + /** + * First writes a value to outStream then reads it from input. <p> + * + * Has <b> OK </b> status if read and written values are equal. <p> + */ + public void _readShort() { + boolean res = true ; + try { + oStream.writeShort(writeShort); + } catch (com.sun.star.io.IOException e) { + e.printStackTrace(log); + throw new StatusException("Can't write data to the stream", e); + } + short readElem; + try { + readElem = oObj.readShort() ; + res = (readElem == writeShort); + + if (!res) + log.println("Must be read " + + writeShort + + " but was read " + readElem) ; + } catch( com.sun.star.io.IOException e ) { + log.println("Couldn't read Short from stream"); + e.printStackTrace(log); + res = false; + } + tRes.tested("readShort()", res); + } + + /** + * First writes a value to outStream then reads it from input. <p> + * + * Has <b> OK </b> status if read and written values are equal. <p> + */ + public void _readLong() { + try { + oStream.writeLong(writeLong); + } catch (com.sun.star.io.IOException e) { + e.printStackTrace(log); + throw new StatusException("Can't write data to the stream", e); + } + boolean res = true ; + int readElem; + try { + readElem = oObj.readLong() ; + res = (readElem == writeLong); + + if (!res) + log.println("Must be read " + + writeLong + + " but was read " + readElem) ; + } catch( com.sun.star.io.IOException e ) { + log.println("Couldn't read Long from stream"); + e.printStackTrace(log); + res = false; + } + tRes.tested("readLong()", res); + } + + /** + * First writes a value to outStream then reads it from input. <p> + * + * Has <b> OK </b> status if read and written values are equal. <p> + */ + public void _readHyper() { + boolean res = true ; + try { + oStream.writeHyper(writeHyper); + } catch (com.sun.star.io.IOException e) { + e.printStackTrace(log); + throw new StatusException("Can't write data to the stream", e); + } + long readElem; + try { + readElem = oObj.readHyper() ; + res = (readElem == writeHyper); + + if (!res) + log.println("Must be read " + + writeHyper + + " but was read " + readElem) ; + } catch( com.sun.star.io.IOException e ) { + log.println("Couldn't read Hyper from stream"); + e.printStackTrace(log); + res = false; + } + tRes.tested("readHyper()", res); + } + + /** + * First writes a value to outStream then reads it from input. <p> + * + * Has <b> OK </b> status if read and written values are equal. <p> + */ + public void _readFloat() { + boolean res = true ; + try { + oStream.writeFloat(writeFloat); + } catch (com.sun.star.io.IOException e) { + e.printStackTrace(log); + throw new StatusException("Can't write data to the stream", e); + } + float readElem; + try { + readElem = oObj.readFloat() ; + res = (readElem == writeFloat); + + if (!res) + log.println("Must be read " + + writeFloat + + " but was read " + readElem) ; + } catch( com.sun.star.io.IOException e ) { + log.println("Couldn't read Float from stream"); + e.printStackTrace(log); + res = false; + } + tRes.tested("readFloat()", res); + } + + /** + * First writes a value to outStream then reads it from input. <p> + * + * Has <b> OK </b> status if read and written values are equal. <p> + */ + public void _readDouble() { + boolean res = true ; + try { + oStream.writeDouble(writeDouble); + } catch (com.sun.star.io.IOException e) { + e.printStackTrace(log); + throw new StatusException("Can't write data to the stream", e); + } + double readElem; + try { + readElem = oObj.readDouble() ; + res = (readElem == writeDouble); + + if (!res) + log.println("Must be read " + + writeDouble + + " but was read " + readElem) ; + } catch( com.sun.star.io.IOException e ) { + log.println("Couldn't read Double from stream"); + e.printStackTrace(log); + res = false; + } + tRes.tested("readDouble()", res); + } + + /** + * First writes a value to outStream then reads it from input. <p> + * + * Has <b> OK </b> status if read and written values are equal. <p> + */ + public void _readUTF() { + boolean res = true ; + try { + oStream.writeUTF(writeUTF); + } catch (com.sun.star.io.IOException e) { + e.printStackTrace(log); + throw new StatusException("Can't write data to the stream", e); + } + String readElem; + try { + readElem = oObj.readUTF() ; + res = writeUTF.equals(readElem) ; + + if (!res) + log.println("Must be read '" + + writeUTF + + "' but was read '" + readElem + "'") ; + } catch( com.sun.star.io.IOException e ) { + log.println("Couldn't read String from stream"); + e.printStackTrace(log); + res = false; + } + tRes.tested("readUTF()", res); + } + + /** + * Forces object environment recreation. + */ + @Override + public void after() { + try { + oStream.flush(); + } catch (com.sun.star.io.NotConnectedException e) { + e.printStackTrace(log); + } catch (com.sun.star.io.BufferSizeExceededException e) { + e.printStackTrace(log); + } catch (com.sun.star.io.IOException e) { + e.printStackTrace(log); + } + this.disposeEnvironment() ; + } +} + diff --git a/qadevOOo/tests/java/ifc/io/_XDataOutputStream.java b/qadevOOo/tests/java/ifc/io/_XDataOutputStream.java new file mode 100644 index 0000000000..3395ba9d61 --- /dev/null +++ b/qadevOOo/tests/java/ifc/io/_XDataOutputStream.java @@ -0,0 +1,246 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.io; + +import java.util.List; + +import lib.MultiMethodTest; + +import com.sun.star.io.XDataOutputStream; + +/** +* Testing <code>com.sun.star.io.XDataOutputStream</code> +* interface methods: +* <ul> +* <li><code>writeBoolean()</code></li> +* <li><code>writeByte()</code></li> +* <li><code>writeChar()</code></li> +* <li><code>writeShort()</code></li> +* <li><code>writeLong()</code></li> +* <li><code>writeHyper()</code></li> +* <li><code>writeFloat()</code></li> +* <li><code>writeDouble()</code></li> +* <li><code>writeUTF()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'StreamData'</code> (of type <code>Vector</code>): +* vector of data for writing to the stream </li> +* <ul> <p> +* After test completion object environment has to be recreated. +* @see com.sun.star.io.XDataOutputStream +*/ +public class _XDataOutputStream extends MultiMethodTest { + + public XDataOutputStream oObj = null; + + /** + * Retrieves object relation <code>'StreamData'</code> + * and executes methods of interface depending of data in stream. + * If relation or data of some type in stream not found then + * tests of corresponding methods are skipped. + */ + @SuppressWarnings("unchecked") + @Override + public void before() throws RuntimeException { + + List<Object> data = (List<Object>) tEnv.getObjRelation("StreamData") ; + if (data == null) { + throw new RuntimeException("Object relation 'StreamData' not found."); + } + + // extract data from vector + Object dataElem = null ; + for (int i = 0; i < data.size(); i++) { + dataElem = data.get(i) ; + + if (!(dataElem instanceof Boolean || + dataElem instanceof Byte) || + dataElem instanceof Character || + dataElem instanceof Short || + dataElem instanceof Integer || + dataElem instanceof Float || + dataElem instanceof Double) { + throw new RuntimeException("Object dataElem type not found."); + } + } + } + + /** + * Test writes some data to stream. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _writeBoolean() { + boolean res = true; + try { + oObj.writeBoolean(true) ; + } catch(com.sun.star.io.IOException e) { + log.println("Couldn't write Boolean to stream"); + e.printStackTrace(log); + res = false; + } + tRes.tested("writeBoolean()", res) ; + } + + /** + * Test writes some data to stream. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _writeByte() { + boolean res = true; + try { + oObj.writeByte((byte) 123); + } catch(com.sun.star.io.IOException e) { + log.println("Couldn't write Byte to stream"); + e.printStackTrace(log); + res = false; + } + tRes.tested("writeByte()", res); + } + + /** + * Test writes some data to stream. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _writeChar() { + boolean res = true; + try { + oObj.writeChar((char)12345); + } catch(com.sun.star.io.IOException e) { + log.println("Couldn't write Char to stream"); + e.printStackTrace(log); + res = false; + } + tRes.tested("writeChar()", res); + } + + /** + * Test writes some data to stream. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _writeShort() { + boolean res = true; + try { + oObj.writeShort((short)12345) ; + } catch(com.sun.star.io.IOException e) { + log.println("Couldn't write Short to stream"); + e.printStackTrace(log); + res = false; + } + tRes.tested("writeShort()", res); + } + + /** + * Test writes some data to stream. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _writeLong() { + boolean res = true; + try { + oObj.writeLong(123456); + } catch(com.sun.star.io.IOException e) { + log.println("Couldn't write Long to stream"); + e.printStackTrace(log); + res = false; + } + tRes.tested("writeLong()", res); + } + + /** + * Test writes some data to stream. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _writeHyper() { + boolean res = true; + try { + oObj.writeHyper(123456789); + } catch(com.sun.star.io.IOException e) { + log.println("Couldn't write Hyper to stream"); + e.printStackTrace(log); + res = false; + } + tRes.tested("writeHyper()", res); + } + + /** + * Test writes some data to stream. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _writeFloat() { + boolean res = true; + try { + oObj.writeFloat((float)1.2345); + } catch(com.sun.star.io.IOException e) { + log.println("Couldn't write Float to stream"); + e.printStackTrace(log); + res = false; + } + tRes.tested("writeFloat()", res); + } + + /** + * Test writes some data to stream. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _writeDouble() { + boolean res = true; + try { + oObj.writeDouble(1.2345); + } catch(com.sun.star.io.IOException e) { + log.println("Couldn't write Double to stream"); + e.printStackTrace(log); + res = false; + } + tRes.tested("writeDouble()", res); + } + + /** + * Test writes some data to stream. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _writeUTF() { + boolean res = true; + try { + oObj.writeUTF("XDataOutputStream") ; + } catch(com.sun.star.io.IOException e) { + log.println("Couldn't write String to stream"); + e.printStackTrace(log); + res = false; + } + tRes.tested("writeUTF()", res); + } + + /** + * Forces object environment recreation. + */ + @Override + public void after() { + this.disposeEnvironment() ; + } +} + diff --git a/qadevOOo/tests/java/ifc/io/_XInputStream.java b/qadevOOo/tests/java/ifc/io/_XInputStream.java new file mode 100644 index 0000000000..90ee86afb6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/io/_XInputStream.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 ifc.io; + +import lib.MultiMethodTest; +import lib.Status; + +import com.sun.star.io.XInputStream; +import com.sun.star.io.XOutputStream; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Testing <code>com.sun.star.io.XInputStream</code> +* interface methods: +* <ul> +* <li><code>readBytes()</code></li> +* <li><code>readSomeBytes()</code></li> +* <li><code>skipBytes()</code></li> +* <li><code>available()</code></li> +* <li><code>closeInput()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'StreamWriter'</code>: +* object that supports interface <code>XOutputStream</code>; +* a stream to write data to</li> +* <li> <code>'ByteData'</code> (of type <code>byte []</code>): +* data to write to the stream</li> +* <ul> <p> + +* @see com.sun.star.io.XInputStream +*/ +public class _XInputStream extends MultiMethodTest { + + public XInputStream oObj = null; + public XOutputStream oStream = null; + + byte[] bytes = null; + + int bytesReady = 0 ; + + /** + * Before the test, the stream writer and the data are extracted from + * the object relations and the data is written to the stream. + */ + @Override + public void before() { + XInterface x = (XInterface)tEnv.getObjRelation("StreamWriter"); + oStream = UnoRuntime.queryInterface( + XOutputStream.class, x) ; + bytes = (byte[])tEnv.getObjRelation("ByteData"); + try { + oStream.writeBytes(bytes); + } + catch(com.sun.star.io.NotConnectedException e) {} + catch(com.sun.star.io.BufferSizeExceededException e) {} + catch(com.sun.star.io.IOException e) {} + } + + /** + * After the test, the stream writer is closed and the + * environment is disposed. + */ + @Override + public void after() { + try { + oStream.flush(); + oStream.closeOutput(); + } + catch(com.sun.star.io.NotConnectedException e) {} + catch(com.sun.star.io.BufferSizeExceededException e) {} + catch(com.sun.star.io.IOException e) {} + this.disposeEnvironment(); + } + /** + * Test calls the method and stores number of available bytes. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _available() { + boolean result = true ; + try { + bytesReady = oObj.available() ; + log.println("Bytes available :" + bytesReady) ; + } catch (com.sun.star.io.IOException e){ + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("available()", result) ; + } + + /** + * Test reads one byte from stream. If no bytes available + * then test of method is skipped. <p> + * Has <b> OK </b> status if returned value equal to number of read bytes, + * no exceptions were thrown and read data is not null. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> available() </code> : to have available number + * of bytes in stream </li> + * </ul> + */ + public void _readBytes() { + requiredMethod("available()") ; + boolean result ; + + if (bytesReady-- > 0) { + try { + byte[][] data = new byte[1][1] ; + int read = oObj.readBytes(data, 1) ; + + result = read == 1 && + data.length == 1 ; + } catch (com.sun.star.io.IOException e){ + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("readBytes()", result) ; + } else { + log.println("No more bytes available in the stream"); + tRes.tested("readBytes()", Status.skipped(false)); + } + } + + /** + * Test reads one byte from stream. If no bytes available + * then test of method is skipped. <p> + * Has <b> OK </b> status if returned value equal to number of read bytes, + * no exceptions were thrown and read data is not null. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> available() </code> : to have available number + * of bytes in stream </li> + * </ul> + */ + public void _readSomeBytes() { + requiredMethod("available()") ; + boolean result ; + + if (bytesReady-- > 0) { + try { + byte[][] data = new byte [1][1] ; + int read = oObj.readSomeBytes(data, 1) ; + + result = read == 1 && + data.length == 1 ; + } catch (com.sun.star.io.IOException e){ + e.printStackTrace(log) ; + result = false ; + } + tRes.tested("readSomeBytes()", result) ; + } else { + log.println("No more bytes available in the stream") ; + tRes.tested("readBytes()", Status.skipped(false)); + } + } + + /** + * Test skips one byte from stream. If no bytes available + * then test of method is skipped. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> available() </code> : to have available number + * of bytes in stream </li> + * </ul> + */ + public void _skipBytes() { + requiredMethod("available()") ; + boolean result ; + + if (bytesReady-- > 0) { + try { + oObj.skipBytes(1) ; + + result = true ; + } catch (com.sun.star.io.IOException e){ + e.printStackTrace(log) ; + result = false ; + } + tRes.tested("skipBytes()", result) ; + } else { + log.println("No more bytes available in the stream") ; + tRes.tested("readBytes()", Status.skipped(false)); + } + } + + /** + * Test calls the method and forces object environment recreation. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be executed before : + * <ul> + * <li> <code> available() </code> </li> + * <li> <code> readBytes() </code> </li> + * <li> <code> readSomeBytes() </code> </li> + * <li> <code> skipBytes() </code> </li> + * </ul> + */ + public void _closeInput() { + executeMethod("available()") ; + executeMethod("readBytes()") ; + executeMethod("readSomeBytes()") ; + executeMethod("skipBytes()") ; + + boolean result = true ; + try { + oObj.closeInput() ; + } catch (com.sun.star.io.IOException e){ + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("closeInput()", result) ; + this.disposeEnvironment() ; + } +} + diff --git a/qadevOOo/tests/java/ifc/io/_XMarkableStream.java b/qadevOOo/tests/java/ifc/io/_XMarkableStream.java new file mode 100644 index 0000000000..8c08887391 --- /dev/null +++ b/qadevOOo/tests/java/ifc/io/_XMarkableStream.java @@ -0,0 +1,188 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.io; + +import lib.MultiMethodTest; + +import com.sun.star.io.XMarkableStream; + +/** +* Testing <code>com.sun.star.io.XMarkableStream</code> +* interface methods: +* <ul> +* <li><code>createMark()</code></li> +* <li><code>deleteMark()</code></li> +* <li><code>jumpToFurthest()</code></li> +* <li><code>jumpToMark()</code></li> +* <li><code>offsetToMark()</code></li> +* </ul> <p> +* @see com.sun.star.io.XMarkableStream +*/ +public class _XMarkableStream extends MultiMethodTest { + + public XMarkableStream oObj = null; + private int mark = -1 ; + + /** + * Test creates mark and stores it. <p> + * Has <b> OK </b> status if no exceptions were thrown + * and returned isn't less than zero. <p> + */ + public void _createMark() { + boolean res; + try { + mark = oObj.createMark() ; + res = mark >= 0; + } catch (com.sun.star.io.IOException e) { + log.println("Couldn't create mark"); + e.printStackTrace(log); + res = false; + } + + tRes.tested("createMark()", res); + } + + /** + * Test deletes the mark that was created by method <code>createMark() + * </code>.<p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> createMark() </code> : to have mark </li> + * </ul> + * The following method tests are to be executed before : + * <ul> + * <li> <code> jumpToFurthest() </code></li> + * <li> <code> jumpToMark() </code></li> + * <li> <code> offsetToMark() </code></li> + * </ul> + */ + public void _deleteMark() { + requiredMethod("createMark()") ; + + executeMethod("jumpToFurthest()") ; + executeMethod("jumpToMark()") ; + executeMethod("offsetToMark()") ; + + boolean res; + try { + oObj.deleteMark(mark); + res = true; + } catch(com.sun.star.io.IOException e) { + log.println("Couldn't delete mark"); + e.printStackTrace(log); + res = false; + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Couldn't delete mark"); + e.printStackTrace(log); + res = false; + } + + tRes.tested("deleteMark()", res) ; + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> createMark() </code></li> + * </ul> + */ + public void _jumpToFurthest() { + requiredMethod("createMark()") ; + + boolean res; + try { + oObj.jumpToFurthest() ; + res = true; + } catch (com.sun.star.io.IOException e) { + log.println("Couldn't jump to furthest"); + e.printStackTrace(log); + res = false; + } + + tRes.tested("jumpToFurthest()", res) ; + } + + /** + * Test jumps to mark that was created by method <code>createMark()</code>. + * <p>Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> jumpToFurthest() </code> : for the right order of tests + * execution </li> + * </ul> + */ + public void _jumpToMark() { + requiredMethod("jumpToFurthest()") ; + boolean res; + + try { + oObj.jumpToMark(mark) ; + res = true; + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Couldn't jump to mark"); + e.printStackTrace(log); + res = false; + } catch(com.sun.star.io.IOException e) { + log.println("Couldn't jump to mark"); + e.printStackTrace(log); + res = false; + } + + tRes.tested("jumpToMark()", res) ; + } + + /** + * Test obtains offset to mark that was created by + * method <code>createMark()</code> and checks returned value.<p> + * Has <b> OK </b> status if returned value is equal to zero + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> jumpToMark() </code> : to have current position at + * the mark position </li> + * </ul> + */ + public void _offsetToMark() { + + requiredMethod("jumpToMark()") ; + + boolean res; + try { + int offset = oObj.offsetToMark(mark); + res = offset == 0; + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Couldn't get offset to mark"); + e.printStackTrace(log); + res = false; + } catch(com.sun.star.io.IOException e) { + log.println("Couldn't get offset to mark"); + e.printStackTrace(log); + res = false; + } + + tRes.tested("offsetToMark()", res); + } +} + diff --git a/qadevOOo/tests/java/ifc/io/_XObjectInputStream.java b/qadevOOo/tests/java/ifc/io/_XObjectInputStream.java new file mode 100644 index 0000000000..bfcb3f6b32 --- /dev/null +++ b/qadevOOo/tests/java/ifc/io/_XObjectInputStream.java @@ -0,0 +1,165 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.io; + +import lib.MultiMethodTest; +import lib.Status; +import util.ValueComparer; + +import com.sun.star.beans.Property; +import com.sun.star.beans.XPropertySet; +import com.sun.star.io.XObjectInputStream; +import com.sun.star.io.XObjectOutputStream; +import com.sun.star.io.XPersistObject; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.io.XObjectInputStream</code> +* interface methods: +* <ul> +* <li><code>readObject()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'PersistObject'</code> (of type <code>Object</code>): +* object that supports interface <code>XPersistObject</code> </li> +* <ul> <p> +* After test completion object environment has to be recreated. +* @see com.sun.star.io.XObjectInputStream +* @see com.sun.star.io.XPersistObject +*/ +public class _XObjectInputStream extends MultiMethodTest { + + public XObjectInputStream oObj = null; + + /** + * Test reads persist object from stream and compares properties + * of the object with properties of persist object obtained + * from relation <code>'PersistObject'</code> <p> + * Has <b> OK </b> status if returned value isn't null and values + * of objects properties are equal. <p> + */ + public void _readObject() { + Object objWrite = tEnv.getObjRelation("PersistObject") ; + if (objWrite == null) { + log.println("PersistObject not found in relations") ; + tRes.tested("readObject()", false) ; + return ; + } + + // write the object + try { + XObjectOutputStream oStream = (XObjectOutputStream) + tEnv.getObjRelation("StreamWriter"); + oStream.writeObject((XPersistObject)objWrite); + } catch(com.sun.star.io.IOException e) { + log.println("Couldn't write object to stream"); + e.printStackTrace(log); + tRes.tested("readObject()", Status.skipped(false)); + return; + } + + Object objRead = null ; + try { + objRead = oObj.readObject() ; + } catch(com.sun.star.io.IOException e) { + log.println("Couldn't read object from stream"); + e.printStackTrace(log); + tRes.tested("readObject()", false) ; + return ; + } + + if (objRead == null) { + log.println("No object was read.") ; + tRes.tested("readObject()", false) ; + return ; + } + + XPropertySet props1 = null ; + XPropertySet props2 = null ; + + props1 = UnoRuntime.queryInterface + (XPropertySet.class, objRead) ; + + props2 = UnoRuntime.queryInterface + (XPropertySet.class, objWrite) ; + + if (props1 == null) { + log.println("Object read doesn't implement XPropertySet") ; + tRes.tested("readObject()", false) ; + return ; + } + if (props2 == null) { + log.println("Object written doesn't implement XPropertySet") ; + tRes.tested("readObject()", false) ; + return ; + } + + tRes.tested("readObject()", + compareProperties(props1, props2)) ; + } + + protected boolean compareProperties(XPropertySet props1, + XPropertySet props2) { + + Property[] p1 = props1.getPropertySetInfo().getProperties() ; + Property[] p2 = props2.getPropertySetInfo().getProperties() ; + + if (p1.length != p2.length) { + log.println("Number of properties differs") ; + return false ; + } + + boolean result = true ; + + for (int i = 0; i < p1.length; i++) { + String propName = p1[i].Name ; + + log.print("Comparing property '" + propName + "' ...") ; + boolean res = false ; + try { + res = ValueComparer.equalValue + (props1.getPropertyValue(propName), + props2.getPropertyValue(propName)) ; + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Not found !") ; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println(e) ; + } + + if (res) + log.println("OK.") ; + else + log.println("Different !") ; + + result &= res ; + } + + return result ; + } + + /** + * Forces object environment recreation. + */ + @Override + public void after() { + this.disposeEnvironment() ; + } +} + diff --git a/qadevOOo/tests/java/ifc/io/_XObjectOutputStream.java b/qadevOOo/tests/java/ifc/io/_XObjectOutputStream.java new file mode 100644 index 0000000000..86efebe52c --- /dev/null +++ b/qadevOOo/tests/java/ifc/io/_XObjectOutputStream.java @@ -0,0 +1,84 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.io; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.io.XObjectInputStream; +import com.sun.star.io.XObjectOutputStream; +import com.sun.star.io.XPersistObject; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.io.XObjectOutputStream</code> +* interface methods: +* <ul> +* <li><code>writeObject()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'InputStream'</code> (of type <code>XObjectInputStream</code>)</li> +* persist object for testing of write to stream</ul> +* @see com.sun.star.io.XObjectInputStream +* @see com.sun.star.io.XObjectOutputStream +* @see com.sun.star.io.XPersistObject +*/ +public class _XObjectOutputStream extends MultiMethodTest { + + public XObjectOutputStream oObj = null; + + /** + * Test creates persist object, sets label of object, + * calls the method for created persist object + * and checks label of object that was read from input stream. <p> + * Has <b> OK </b> status if the method successfully returns + * and labels are equals. <p> + */ + public void _writeObject() throws Exception { + XObjectInputStream oInStream = (XObjectInputStream) + tEnv.getObjRelation("InputStream"); + if (oInStream == null) throw + new StatusException(Status.failed("Relation 'InputStream' failed")); + + // use own implementation of XPersistObject, so test runs + // without an office + XPersistObject objWrite = (XPersistObject) + tEnv.getObjRelation("PersistObject"); + if (objWrite == null) throw + new StatusException(Status.failed("Relation 'PersistObject' failed")); + + XPropertySet propObjWrite = UnoRuntime.queryInterface(XPropertySet.class, objWrite); + + // This XPersistObject has a property called 'String' + propObjWrite.setPropertyValue("String", "XObjectOutputStream"); + + log.println("Writing object with label 'XObjectOutputStream'"); + oObj.writeObject(objWrite); + XPersistObject readObj = oInStream.readObject(); + XPropertySet propSet = UnoRuntime.queryInterface(XPropertySet.class, readObj); + String label = (String)propSet.getPropertyValue("String"); + log.println("Object with label '" + label + "' was read"); + + tRes.tested("writeObject()", label.equals("XObjectOutputStream")) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/io/_XOutputStream.java b/qadevOOo/tests/java/ifc/io/_XOutputStream.java new file mode 100644 index 0000000000..9f619f3835 --- /dev/null +++ b/qadevOOo/tests/java/ifc/io/_XOutputStream.java @@ -0,0 +1,170 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.io; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.io.XInputStream; +import com.sun.star.io.XOutputStream; + +/** +* Testing <code>com.sun.star.io.XOutputStream</code> +* interface methods: +* <ul> +* <li><code>writeBytes()</code></li> +* <li><code>flush()</code></li> +* <li><code>closeOutput()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'ByteData'</code> : Data that is written on the stream. +* </li> +* <li> <code>'XOutputStream.StreamChecker'</code> : <code> +* _XOutputStream.StreamChecker</code> interface implementation +* which can reset streams and return input stream for check if the +* data was successfully written.</li> +* <ul> <p> +* After test completion object environment has to be recreated. +* @see com.sun.star.io.XOutputStream +*/ +public class _XOutputStream extends MultiMethodTest { + + public XOutputStream oObj = null; + StreamChecker checker = null; + byte[] data = null; + + public interface StreamChecker { + XInputStream getInStream(); + void resetStreams(); + } + + @Override + protected void before() { + checker = (StreamChecker) + tEnv.getObjRelation("XOutputStream.StreamChecker"); + if (checker == null) throw + new StatusException(Status.failed( + "Couldn't get relation 'XOutputStream.StreamChecker'")); + + data = (byte[])tEnv.getObjRelation("ByteData"); + if (data == null) throw + new StatusException(Status.failed( + "Couldn't get relation 'ByteData'")); + } + /** + * Test writes data to stream. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _writeBytes() { + boolean res = true; + try { + oObj.writeBytes(data); + } catch (com.sun.star.io.IOException e) { + e.printStackTrace(log) ; + res = false; + } + + byte[][] readData = new byte[1][data.length]; + XInputStream xInStream = checker.getInStream(); + if (xInStream != null) { + try { + xInStream.readBytes(readData, data.length); + } catch(com.sun.star.io.IOException e) { + log.println("Couldn't read data:" + e); + res = false; + } + } else { + res = false; + } + + for(int i = 0; i < readData[0].length; i++) { + log.println("Expected: "+data[i]+", actual is "+readData[0][i]); + res &= readData[0][i] == data[i]; + } + + tRes.tested("writeBytes()", res); + } + + /** + * Test flushes out data from stream. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> writeBytes() </code></li> + * </ul> + */ + public void _flush() { + requiredMethod("writeBytes()"); + + boolean res; + try { + oObj.flush(); + res = true; + } catch (com.sun.star.io.IOException e) { + e.printStackTrace(log) ; + res = false; + } + + tRes.tested("flush()", res); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> writeBytes() </code></li> + * </ul> + * The following method tests are to be executed before : + * <ul> + * <li><code> flush() </code></li> + * </ul> + */ + public void _closeOutput() { + requiredMethod("writeBytes()"); + executeMethod("flush()"); + + boolean res; + try { + oObj.closeOutput(); + res = true; + } catch (com.sun.star.io.IOException e) { + e.printStackTrace(log); + res = false; + } + + log.println("This method is called in main module"); + + tRes.tested("closeOutput()", res); + } + + /** + * Forces object environment recreation. + */ + @Override + public void after() { + this.disposeEnvironment() ; + } +} + diff --git a/qadevOOo/tests/java/ifc/io/_XPersistObject.java b/qadevOOo/tests/java/ifc/io/_XPersistObject.java new file mode 100644 index 0000000000..717a611eb8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/io/_XPersistObject.java @@ -0,0 +1,257 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.io; + +import lib.MultiMethodTest; +import util.ValueComparer; +import util.dbg; +import util.utils; + +import com.sun.star.beans.Property; +import com.sun.star.beans.XPropertySet; +import com.sun.star.beans.XPropertySetInfo; +import com.sun.star.io.XActiveDataSink; +import com.sun.star.io.XActiveDataSource; +import com.sun.star.io.XInputStream; +import com.sun.star.io.XObjectInputStream; +import com.sun.star.io.XObjectOutputStream; +import com.sun.star.io.XOutputStream; +import com.sun.star.io.XPersistObject; +import com.sun.star.lang.XComponent; +import com.sun.star.uno.UnoRuntime; + + +/** +* Testing <code>com.sun.star.io.XPersistObject</code> +* interface methods : +* <ul> +* <li><code> getServiceName()</code></li> +* <li><code> write()</code></li> +* <li><code> read()</code></li> +* </ul> <p> +* This test need the following object relations : +* <ul> +* <li> <code>'OBJNAME'</code> : <code>String</code> value that +* contains service name which object represents.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* After test completion object environment has to be recreated. +* @see com.sun.star.io.XPersistObject +* @see com.sun.star.io.XObjectInputStream +* @see com.sun.star.io.XObjectOutputStream +*/ +public class _XPersistObject extends MultiMethodTest { + + public XPersistObject oObj = null; + XObjectInputStream iStream = null; + XObjectOutputStream oStream = null; + String sname = null; + + boolean result = true; + + + /** + * Test calls the method and checks return value. <p> + * Has <b> OK </b> status if the method returns proper service names + * which is equal to <code>'OBJNAME'</code> relation value. <p> + */ + public void _getServiceName() { + result = true; + sname = oObj.getServiceName(); + log.println("Method returned '" + sname + "'") ; + String objName = (String)tEnv.getObjRelation("OBJNAME"); + if (objName == null) { + log.println("No OBJNAME relation!"); + result = false; + } else { + result &= sname.equals(objName); + if (!result) + log.println("Name of object must be '" + objName + + "' but returned name is '" + sname +"'"); + } + + tRes.tested("getServiceName()", result); + } + + /** + * Creates service get by <code>getServiceName</code> method and tries + * to read object written to stream by <code>write</code> method test. + * Then properties of object written and object read are compared. <p> + * Has <b>OK</b> status if all properties of two objects are equal + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getServiceName() </code> : to have service name + * which has to be created </li> + * <li> <code> write() </code> : to write object tested into stream</li> + * </ul> + */ + public void _read() { + requiredMethod("getServiceName()"); + requiredMethod("write()") ; + + boolean bResult = true; + + try { + Object noPS = tEnv.getObjRelation("noPS"); + if ( noPS == null) { + XPropertySet objps = UnoRuntime.queryInterface( + XPropertySet.class, oObj); + XPropertySetInfo objpsi = objps.getPropertySetInfo(); + Property[] objprops = objpsi.getProperties(); + + Object oCopy = tParam.getMSF().createInstance(sname); + + XPersistObject persCopy = UnoRuntime.queryInterface(XPersistObject.class, oCopy); + + persCopy.read(iStream); + + XPropertySet copyps = UnoRuntime.queryInterface( + XPropertySet.class, oCopy); + + XPropertySetInfo copypsi = copyps.getPropertySetInfo(); + Property[] copyprops = copypsi.getProperties(); + + for (int i = 0; i < copyprops.length; i++) { + Object cps = copyps.getPropertyValue(copyprops[i].Name); + Object ops = objps.getPropertyValue(objprops[i].Name); + boolean locRes = ( (ValueComparer.equalValue(cps,ops)) || + (utils.isVoid(cps) && utils.isVoid(ops)) ); + + //transient properties aren't stored + if (isTransient(objprops[i])) locRes = true; + + Object pseudo = tEnv.getObjRelation("PSEUDOPERSISTENT"); + if ( (pseudo != null) && !locRes) { + String str = copyprops[i].Name; + locRes = ( (str.equals("Time")) || (str.equals("Date")) + || (str.equals("FormatsSupplier")) + || (str.equals("Text")) + || (str.equals("Value")) + || (str.indexOf("UserDefined")>0) + ); + } + if (!locRes) { + log.println("Property '" + copyprops[i].Name + + "' failed"); + dbg.printPropertyInfo(objps, objprops[i].Name, log); + dbg.printPropertyInfo(copyps, copyprops[i].Name, log); + } + bResult &= locRes; + } + + XComponent comp = UnoRuntime.queryInterface(XComponent.class, oCopy); + if (comp != null) { + comp.dispose(); + } + } else { + Object oCopy = tParam.getMSF().createInstance(sname); + XPersistObject persCopy = UnoRuntime.queryInterface(XPersistObject.class, oCopy); + + persCopy.read(iStream); + + bResult = persCopy.getServiceName().equals(sname); + + XComponent comp = UnoRuntime.queryInterface(XComponent.class, oCopy); + if (comp != null) { + comp.dispose(); + } + } + + } catch (com.sun.star.uno.Exception e) { + log.println("Exception occurred : "); + e.printStackTrace(log) ; + bResult = false; + } + + tRes.tested("read()", bResult); + } + + /** + * Test calls the method and checks that + * no exceptions were thrown. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + */ + public void _write() { + boolean bResult = true; + try { + initPipe(); + oObj.write(oStream); + } catch (com.sun.star.io.IOException e) { + log.println("Exception occurred while test. " + e); + bResult = false; + } + tRes.tested("write()", bResult); + } + + + /** + * Creates the following stream scheme <code> + * ObjectOutputStream -> Pipe -> ObjectInputStream </code> for writing/reading + * object. + */ + protected void initPipe() { + try { + Object aPipe = tParam.getMSF().createInstance + ("com.sun.star.io.Pipe"); + Object istream = tParam.getMSF().createInstance + ("com.sun.star.io.ObjectInputStream"); + Object ostream = tParam.getMSF().createInstance + ("com.sun.star.io.ObjectOutputStream"); + + // Now the objects that aren't described anywhere + Object mistream = tParam.getMSF().createInstance + ("com.sun.star.io.MarkableInputStream"); + Object mostream = tParam.getMSF().createInstance + ("com.sun.star.io.MarkableOutputStream"); + + XActiveDataSink xdSi = UnoRuntime.queryInterface(XActiveDataSink.class, istream); + XActiveDataSource xdSo = UnoRuntime.queryInterface(XActiveDataSource.class, ostream); + XActiveDataSink xdSmi = UnoRuntime.queryInterface(XActiveDataSink.class, mistream); + XActiveDataSource xdSmo = UnoRuntime.queryInterface(XActiveDataSource.class, mostream); + + XInputStream miStream = UnoRuntime.queryInterface(XInputStream.class, mistream); + XOutputStream moStream = UnoRuntime.queryInterface(XOutputStream.class, mostream); + XInputStream PipeIn = UnoRuntime.queryInterface(XInputStream.class, aPipe); + XOutputStream PipeOut = UnoRuntime.queryInterface(XOutputStream.class,aPipe); + + xdSi.setInputStream(miStream); + xdSo.setOutputStream(moStream); + xdSmi.setInputStream(PipeIn); + xdSmo.setOutputStream(PipeOut); + + iStream = UnoRuntime.queryInterface(XObjectInputStream.class, istream); + oStream = UnoRuntime.queryInterface(XObjectOutputStream.class, ostream); + + + } catch (com.sun.star.uno.Exception e) { + System.out.println("exc " + e); + } + + } + + public static boolean isTransient(Property prop) { + short attr = prop.Attributes; + return ((attr & com.sun.star.beans.PropertyAttribute.TRANSIENT) != 0); + } + + +} + + diff --git a/qadevOOo/tests/java/ifc/java/_XJavaThreadRegister_11.java b/qadevOOo/tests/java/ifc/java/_XJavaThreadRegister_11.java new file mode 100644 index 0000000000..0a704fa342 --- /dev/null +++ b/qadevOOo/tests/java/ifc/java/_XJavaThreadRegister_11.java @@ -0,0 +1,62 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.java; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.java.XJavaThreadRegister_11; + +/** +* Testing <code>com.sun.star.java.XJavaThreadRegister_11</code> +* interface methods : +* <ul> +* <li><code> isThreadAttached()</code></li> +* <li><code> registerThread()</code></li> +* <li><code> revokeThread()</code></li> +* </ul> <p> +* <b> Nothing tested here. </b> +* @see com.sun.star.java.XJavaThreadRegister_11 +*/ +public class _XJavaThreadRegister_11 extends MultiMethodTest { + public XJavaThreadRegister_11 oObj; + + @Override + protected void after() { + log.println("Skipping all XJavaThreadRegister_11 methods, since they" + + " can't be tested in the context"); + throw new StatusException(Status.skipped(true)); + } + + public void _isThreadAttached() { + // skipping the test + tRes.tested("isThreadAttached()", true); + } + + public void _registerThread() { + // skipping the test + tRes.tested("registerThread()", true); + } + + public void _revokeThread() { + // skipping the test + tRes.tested("revokeThread()", true); + } +} diff --git a/qadevOOo/tests/java/ifc/java/_XJavaVM.java b/qadevOOo/tests/java/ifc/java/_XJavaVM.java new file mode 100644 index 0000000000..0c8fe92a33 --- /dev/null +++ b/qadevOOo/tests/java/ifc/java/_XJavaVM.java @@ -0,0 +1,62 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.java; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.java.XJavaVM; + +/** +* Testing <code>com.sun.star.java.XJavaVM</code> +* interface methods : +* <ul> +* <li><code> getJavaVM()</code></li> +* <li><code> isVMStarted()</code></li> +* <li><code> isVMEnabled()</code></li> +* </ul> <p> +* <b> Nothing tested here. </b> +* @see com.sun.star.java.XJavaVM +*/ +public class _XJavaVM extends MultiMethodTest { + public XJavaVM oObj; + + @Override + protected void after() { + log.println("Skipping all XJavaVM methods, since they" + + " can't be tested in the context"); + throw new StatusException(Status.skipped(true)); + } + + public void _getJavaVM() { + // skipping the test + tRes.tested("getJavaVM()", true); + } + + public void _isVMEnabled() { + // skipping the test + tRes.tested("isVMEnabled()", true); + } + + public void _isVMStarted() { + // skipping the test + tRes.tested("isVMStarted()", true); + } +} diff --git a/qadevOOo/tests/java/ifc/lang/_ServiceManager.java b/qadevOOo/tests/java/ifc/lang/_ServiceManager.java new file mode 100644 index 0000000000..6ccf2b06e1 --- /dev/null +++ b/qadevOOo/tests/java/ifc/lang/_ServiceManager.java @@ -0,0 +1,51 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.lang; + +import lib.MultiPropertyTest; + +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.uno.XComponentContext; + +public class _ServiceManager extends MultiPropertyTest { + + public void _DefaultContext() { + XComponentContext get = null; + boolean res = false; + try { + get = (XComponentContext)AnyConverter.toObject(new Type(XComponentContext.class), oObj.getPropertyValue("DefaultContext")); + res = get != null; + } catch (com.sun.star.lang.IllegalArgumentException iae) { + log.println("Illegal Argument Exception"); + res = false; + } catch (com.sun.star.beans.UnknownPropertyException upe) { + log.println("Property is optional and not supported"); + res = true; + } catch (com.sun.star.lang.WrappedTargetException wte) { + log.println("Unexpected Exception"); + wte.printStackTrace(log); + res = false; + } + tRes.tested("DefaultContext", res); + + } + +} // EOF _ServiceManager + diff --git a/qadevOOo/tests/java/ifc/lang/_XComponent.java b/qadevOOo/tests/java/ifc/lang/_XComponent.java new file mode 100644 index 0000000000..b1c8399f66 --- /dev/null +++ b/qadevOOo/tests/java/ifc/lang/_XComponent.java @@ -0,0 +1,168 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.lang; + +import lib.MultiMethodTest; + +import com.sun.star.frame.XDesktop; +import com.sun.star.lang.EventObject; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XEventListener; + +/** +* Testing <code>com.sun.star.lang.XComponent</code> +* interface methods : +* <ul> +* <li><code> dispose()</code></li> +* <li><code> addEventListener()</code></li> +* <li><code> removeEventListener()</code></li> +* </ul> +* After this interface test object <b>must be recreated</b>. <p> +* Multithreaded test ability <b>not implemented</b> yet. +* @see com.sun.star.lang.XComponent +*/ +public class _XComponent extends MultiMethodTest { + + public static XComponent oObj = null; + private XComponent altDispose = null; + + boolean listenerDisposed[] = new boolean[2]; + String[] Loutput = new String[2]; + + /** + * Listener which added but not removed, and its method must be called + * on <code>dispose</code> call. + */ + public class MyEventListener implements XEventListener { + public void disposing ( EventObject oEvent ) { + Loutput[0] = Thread.currentThread() + " is DISPOSING EV1" + this; + listenerDisposed[0] = true; + } + } + + /** + * Listener which added and then removed, and its method must <b>not</b> + * be called on <code>dispose</code> call. + */ + public class MyEventListener2 implements XEventListener { + public void disposing ( EventObject oEvent ) { + Loutput[0] = Thread.currentThread() + " is DISPOSING EV2" + this; + listenerDisposed[1] = true; + } + } + + XEventListener listener1 = new MyEventListener(); + XEventListener listener2 = new MyEventListener2(); + + /** + * For the (no longer existing) cfgmgr2.OSetElement tests: dispose the owner + * element. TODO: Is this needed for anything else, too, or should it be + * removed? + */ + @Override + protected void before() { + // do not dispose this component, but parent instead + altDispose = (XComponent)tEnv.getObjRelation("XComponent.DisposeThis"); + + } + + /** + * Adds two listeners. <p> + * Has OK status if then the first listener will receive an event + * on <code>dispose</code> method call. + */ + public void _addEventListener() { + + listenerDisposed[0] = false; + listenerDisposed[1] = false; + + oObj.addEventListener( listener1 ); + oObj.addEventListener( listener2 ); + } // finished _addEventListener() + + /** + * Removes the second of two added listeners. <p> + * Method tests to be completed successfully : + * <ul> + * <li> <code>addEventListener</code> : method must add two listeners. </li> + * </ul> <p> + * Has OK status if no events will be sent to the second listener on + * <code>dispose</code> method call. + */ + public void _removeEventListener() { + executeMethod("addEventListener()"); + if (disposed) return; + // the second listener should not be called + oObj.removeEventListener( listener2 ); + log.println(Thread.currentThread() + " is removing EL " + listener2); + } // finished _removeEventListener() + + boolean disposed = false; + + /** + * Disposes the object and then check appropriate listeners were + * called or not. <p> + * Method tests to be completed successfully : + * <ul> + * <li> <code>removeEventListener</code> : method must remove one of two + * listeners. </li> + * </ul> <p> + * Has OK status if liseter removed wasn't called and other listener + * was. + */ + public void _dispose() { + disposed = false; + executeMethod("removeEventListener()"); + + log.println( "begin dispose in thread " + Thread.currentThread()); + XDesktop oDesk = (XDesktop) tEnv.getObjRelation("Desktop"); + if (oDesk !=null) { + oDesk.terminate(); + } + else { + if (altDispose == null) + oObj.dispose(); + else + altDispose.dispose(); + } + + util.utils.shortWait(); + if (Loutput[0]!=null) log.println(Loutput[0]); + if (Loutput[1]!=null) log.println(Loutput[1]); + log.println( "end dispose" + Thread.currentThread()); + disposed = true; + + // check that dispose() works OK. + tRes.tested("addEventListener()", listenerDisposed[0]); + tRes.tested("removeEventListener()", !listenerDisposed[1]); + tRes.tested("dispose()", listenerDisposed[0] && !listenerDisposed[1]); + + } // finished _dispose() + + /** + * Forces object recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + +} // finished class _XComponent + + diff --git a/qadevOOo/tests/java/ifc/lang/_XEventListener.java b/qadevOOo/tests/java/ifc/lang/_XEventListener.java new file mode 100644 index 0000000000..2401e7d248 --- /dev/null +++ b/qadevOOo/tests/java/ifc/lang/_XEventListener.java @@ -0,0 +1,53 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.lang; + +import lib.MultiMethodTest; + +import com.sun.star.lang.XEventListener; + +/** +* Testing <code>com.sun.star.lang.XEventListener</code> +* interface methods : +* <ul> +* <li><code> disposing()</code></li> +* </ul> <p> +* Tests nothing, all methods has <b>OK</b> status. +* @see com.sun.star.lang.XEventListener +*/ +public class _XEventListener extends MultiMethodTest { + + public XEventListener oObj = null; + + /** + * Nothing to test. Always has <b>OK</b> status. + */ + public void _disposing() { + log.println("The method 'disposing'"); + log.println("gets called when the broadcaster is about to be"+ + " disposed.") ; + log.println("All listeners and all other objects which reference "+ + "the broadcaster should release the references."); + log.println("So there is nothing to test here"); + tRes.tested("disposing()",true); + + } + +} //EOF of XEventListener + diff --git a/qadevOOo/tests/java/ifc/lang/_XInitialization.java b/qadevOOo/tests/java/ifc/lang/_XInitialization.java new file mode 100644 index 0000000000..5566aef0ce --- /dev/null +++ b/qadevOOo/tests/java/ifc/lang/_XInitialization.java @@ -0,0 +1,102 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.lang; + +import lib.MultiMethodTest; + +import com.sun.star.lang.XInitialization; + +/** +* Testing <code>com.sun.star.lang.XInitialization</code> +* interface methods. <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XInitialization.args'</code> (of type <code>Object[]</code>): +* (<b>Optional</b>) : argument for <code>initialize</code> +* method. If omitted zero length array is used. </li> +* <ul> <p> +* Test is multithread compliant. <p> +* Till the present time there was no need to recreate environment +* after this test completion. +*/ +public class _XInitialization extends MultiMethodTest { + + public static XInitialization oObj = null; + + /** + * Test calls the method with 0 length array and checks that + * no exceptions were thrown. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + */ + public void _initialize() { + boolean result = true ; + + try { + XInitialization xInit = (XInitialization) tEnv.getObjRelation("XInitialization.xIni"); + if (xInit == null) xInit = oObj; + + log.println("calling method with valid arguments..."); + Object[] args = (Object[]) tEnv.getObjRelation("XInitialization.args"); + if (args==null) { + System.out.println("Using new Object[0] as Argument"); + xInit.initialize(new Object[0]); + } else { + xInit.initialize(args); + } + + // try to call the method with invalid parameters + Object[] ExArgs = (Object[]) tEnv.getObjRelation("XInitialization.ExceptionArgs"); + if (ExArgs !=null) { + log.println("calling method with in-valid arguments..."); + try{ + result = false; + xInit.initialize(ExArgs); + } catch (com.sun.star.uno.Exception e) { + log.println("Expected Exception 'com.sun.star.uno.Exception' occurred -> OK") ; + result = true ; + } catch (com.sun.star.uno.RuntimeException e) { + log.println("Expected Exception 'com.sun.star.uno.RuntimeException' occurred -> OK") ; + result = true ; + } catch (Exception e) { + log.println("Un-Expected Exception occurred -> FALSE") ; + log.println(e.toString()); + e.printStackTrace(); + } + } + + } catch (com.sun.star.uno.Exception e) { + log.println("Exception occurred while method calling.") ; + log.println(e) ; + result = false ; + } + + tRes.tested("initialize()", result) ; + } // finished _initialize() + + /** + * Disposes object environment. + */ + @Override + public void after() { + disposeEnvironment() ; + } + +} // finished class _XInitialization + + diff --git a/qadevOOo/tests/java/ifc/lang/_XLocalizable.java b/qadevOOo/tests/java/ifc/lang/_XLocalizable.java new file mode 100644 index 0000000000..9a758032be --- /dev/null +++ b/qadevOOo/tests/java/ifc/lang/_XLocalizable.java @@ -0,0 +1,63 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.lang; + +import lib.MultiMethodTest; + +import com.sun.star.lang.Locale; +import com.sun.star.lang.XLocalizable; +import lib.Status; + + +public class _XLocalizable extends MultiMethodTest { + + public XLocalizable oObj; + protected Locale initialLocale; + + public void _getLocale() { + initialLocale = oObj.getLocale(); + tRes.tested("getLocale()", initialLocale != null); + } + + public void _setLocale() { + requiredMethod("getLocale()"); + + String ro = (String) tEnv.getObjRelation("XLocalizable.ReadOnly"); + if (ro != null) { + log.println(ro); + tRes.tested("setLocale()", Status.skipped(true)); + return; + } + Locale newLocale = new Locale("de", "DE", ""); + oObj.setLocale(newLocale); + + Locale getLocale = oObj.getLocale(); + boolean res = ((getLocale.Country.equals(newLocale.Country)) && + (getLocale.Language.equals(newLocale.Language))); + + if (!res) { + log.println("Expected Language " + newLocale.Language + + " and Country " + newLocale.Country); + log.println("Getting Language " + getLocale.Language + + " and Country " + getLocale.Country); + } + + oObj.setLocale(initialLocale); + tRes.tested("setLocale()", res); + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/lang/_XMain.java b/qadevOOo/tests/java/ifc/lang/_XMain.java new file mode 100644 index 0000000000..b50186fe03 --- /dev/null +++ b/qadevOOo/tests/java/ifc/lang/_XMain.java @@ -0,0 +1,63 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.lang; + + +import lib.MultiMethodTest; + +import com.sun.star.lang.XMain; + + +/** + * Testing <code>com.sun.star.lang.XMain</code> + * interface methods : + * <ul> + * <li><code> run()</code></li> + * </ul> <p> + * + * This test needs the following object relations : + * <ul> + * <li> <code>'ARGS'</code> (of type <code>String[]</code>): + * used as argument for <code>run</code> method. </li> + * <ul> <p> + * + * @see com.sun.star.lang.XMain + */ +public class _XMain extends MultiMethodTest{ + + public static XMain oObj = null; + + /** + * Just calls the method. <p> + * + * Has <b> OK </b> status if no runtime exceptions occurred. + */ + public void _run() { + String[] args = (String[])tEnv.getObjRelation("ARGS"); + + log.println("Running with arguments:"); + for (int i=0; i< args.length; i++) + log.println("#" + i + ": " + args[i]); + + oObj.run(args); + + tRes.tested("run()", true); + } + +} diff --git a/qadevOOo/tests/java/ifc/lang/_XMultiComponentFactory.java b/qadevOOo/tests/java/ifc/lang/_XMultiComponentFactory.java new file mode 100644 index 0000000000..424e3d5764 --- /dev/null +++ b/qadevOOo/tests/java/ifc/lang/_XMultiComponentFactory.java @@ -0,0 +1,122 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.lang; + +import lib.MultiMethodTest; + +import com.sun.star.lang.XMultiComponentFactory; +import com.sun.star.uno.XComponentContext; +import com.sun.star.uno.XInterface; + +/** +* Testing <code>com.sun.star.lang.XMultiComponentFactory</code> +* interface methods : +* <ul> +* <li><code> createInstanceWithContext()</code></li> +* <li><code> createInstanceWithArgumentsAndContext()</code></li> +* <li><code> getAvailableServiceNames()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.lang.XMultiComponentFactory +*/ +public class _XMultiComponentFactory extends MultiMethodTest { + public XMultiComponentFactory oObj = null; + + public XComponentContext xContext = null; + private String[] availableServiceNames = null; + + @Override + public void before(){ + xContext = (XComponentContext)tEnv.getObjRelation("DC"); + availableServiceNames = (String[])tEnv.getObjRelation("XMultiComponentFactory.ServiceNames"); + } + + /** + * Calls the method with one of the available service names + * obtained by method getAvailableServiceNames. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + * and returned value is not null. + */ + public void _createInstanceWithContext() { + requiredMethod("getAvailableServiceNames()"); + boolean result = true; + + try { + XInterface component = (XInterface) + oObj.createInstanceWithContext( + availableServiceNames[0], xContext); + result = (component != null); + } catch (com.sun.star.uno.Exception e) { + log.println("Couldn't create instance " + availableServiceNames[0]); + result = false; + } + + tRes.tested("createInstanceWithContext()", result); + } + + /** + * Calls the method with one of the available service names + * obtained by method getAvailableServiceNames. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + * and returned value is not null. + */ + public void _createInstanceWithArgumentsAndContext() { + requiredMethod("getAvailableServiceNames()"); + boolean result = true; + XInterface component = null; + + try { + component = (XInterface)oObj.createInstanceWithArgumentsAndContext( + availableServiceNames[0], new Object[0], xContext); + result = (component != null); + } catch (com.sun.star.uno.Exception e) { + log.println("Couldn't create instance " + availableServiceNames[0]); + result = false; + } + + tRes.tested("createInstanceWithArgumentsAndContext()", result); + } + + /** + * Just calls the method. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + * and returned value is not null. + */ + public void _getAvailableServiceNames() { + boolean result = true; + if (availableServiceNames == null) { + availableServiceNames = oObj.getAvailableServiceNames(); + result = (availableServiceNames != null); + } + else { // if service names are given, ignore result + String[]erg = oObj.getAvailableServiceNames(); + result = (erg != null); + } + + log.println("Available service names:"); + if (availableServiceNames != null) { + for(int i = 0; i < availableServiceNames.length; i++) { + log.println(" " + availableServiceNames[i]); + } + } + + tRes.tested("getAvailableServiceNames()", result); + } +} + diff --git a/qadevOOo/tests/java/ifc/lang/_XMultiServiceFactory.java b/qadevOOo/tests/java/ifc/lang/_XMultiServiceFactory.java new file mode 100644 index 0000000000..ac5898edb2 --- /dev/null +++ b/qadevOOo/tests/java/ifc/lang/_XMultiServiceFactory.java @@ -0,0 +1,188 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.lang; + +import lib.MultiMethodTest; + +import com.sun.star.lang.XMultiServiceFactory; + + +/** +* Testing <code>com.sun.star.lang.XMultiServiceFactory</code> +* interface methods: +* <ul> +* <li><code>createInstance()</code></li> +* <li><code>createInstanceWithArguments()</code></li> +* <li><code>getAvailableServiceNames()</code></li> +* </ul> <p> +* +* This test needs the following object relations : +* <ul> +* <li> <code>'XMSF.serviceNames'</code> (of type <code>String[]</code>) +* <b>optional</b>: +* the relation used when service names are obtained the way +* other than calling <code>getAvailableServiceNames()</code> +* method. +* </li> +* <li> <code>'XMSF.serviceNamesWithArgs'</code> (of type <code>String[]</code>) +* <b>optional</b>: +* the relation used when service names are obtained the way +* other than calling <code>getAvailableServiceNames()</code> +* method for testing <code>createInstanceWithArguments</code> method. +* </li> +* <li> <code>'XMSF.Args'</code> (of type <code>Object[][]</code>) +* <b>optional</b>: +* if this relation exists than the method +* <code>createInstanceWithArguments</code> is tested. This relation +* supplies arguments for creating instances. If the relation +* <code>'XMSF.serviceNamesWithArgs'</code> is also specified +* then for each service name from that relation appropriate arguments +* are used from arguments array. If not than arguments with index +* 0 are used for services creation obtained by +* <code>getAvailableServiceNames</code> method. +* </li> +* </ul> <p> +* +* @see com.sun.star.lang.XMultiServiceFactory +*/ +public class _XMultiServiceFactory extends MultiMethodTest { + public XMultiServiceFactory oObj = null; + public String[] services = null; + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getAvailableServiceNames() { + services = oObj.getAvailableServiceNames(); + + for (int i = 0; i < services.length; i++) { + log.println("Service" + i + ": " + services[i]); + } + + tRes.tested("getAvailableServiceNames()", true); + } + + /** + * Test creates instance of the first service from names array + * get by <code>getAvailableServiceNames()</code>. If the array + * is empty than test looks for names from relation. <p> + * + * Has <b> OK </b> status if created instance isn't null. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getAvailableServiceNames() </code> : to have list of + * supported services </li> + * </ul> + */ + public void _createInstance() { + requiredMethod("getAvailableServiceNames()"); + + if (services.length == 0) { + services = (String[]) tEnv.getObjRelation("XMSF.serviceNames"); + + if (services == null) { + log.println("No service to create."); + tRes.tested("createInstance()", true); + + return; + } + } + + String needArgs = (String) tEnv.getObjRelation("needArgs"); + + if (needArgs != null) { + log.println("The " + needArgs + + " doesn't support createInstance without arguments"); + tRes.tested("createInstance()", true); + + return; + } + + boolean res = true; + + for (int k = 0; k < services.length; k++) { + try { + log.println("Creating Instance: " + services[k]); + + Object Inst = oObj.createInstance(services[k]); + res = (Inst != null); + } catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred during createInstance()"); + ex.printStackTrace(log); + res = false; + } + } + + tRes.tested("createInstance()", res); + } + + /** + * If the relation with arguments is not specified test does nothing. + * In other case it tries to create instance by its name from + * relation of from array <code>getAvailableServiceNames()</code> + * method supplied. <p> + * + * Has <b> OK </b> status if the created instance is not null. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getAvailableServiceNames() </code> : to have list of + * supported services </li> + * </ul> + */ + public void _createInstanceWithArguments() { + requiredMethod("getAvailableServiceNames()"); + + Object[][] args = (Object[][]) tEnv.getObjRelation("XMSF.Args"); + String[] sNames = (String[]) tEnv.getObjRelation( + "XMSF.serviceNamesWithArgs"); + + if (args == null) { + log.println("Relation 'XMSF.serviceNamesWithArgs' not found"); + log.println("The component assumed not support " + + "createInstanceWithArguments()"); + tRes.tested("createInstanceWithArguments()", true); + } else { + if (sNames == null) { + sNames = services; + } + + boolean res = true; + + for (int k = 0; k < sNames.length; k++) { + log.println("Creating service '" + sNames[k] + + "' with arguments"); + + try { + Object Inst = oObj.createInstanceWithArguments(sNames[k], + args[k]); + res &= (Inst != null); + } catch (com.sun.star.uno.Exception ex) { + log.println( + "Exception occurred during createInstanceWithArguments()"); + ex.printStackTrace(log); + res = false; + } + } + + tRes.tested("createInstanceWithArguments()", res); + } + } +} // finish class _XMultiServiceFactory diff --git a/qadevOOo/tests/java/ifc/lang/_XServiceDisplayName.java b/qadevOOo/tests/java/ifc/lang/_XServiceDisplayName.java new file mode 100644 index 0000000000..f726f4ec89 --- /dev/null +++ b/qadevOOo/tests/java/ifc/lang/_XServiceDisplayName.java @@ -0,0 +1,50 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.lang; + +import lib.MultiMethodTest; + +import com.sun.star.lang.Locale; +import com.sun.star.lang.XServiceDisplayName; + +/** +* Testing <code>com.sun.star.lang.XServiceDisplayName</code> +* interface methods: +* <ul> +* <li><code>getServiceDisplayName()</code></li> +* </ul> <p> +* @see com.sun.star.lang.XServiceDisplayName +*/ +public class _XServiceDisplayName extends MultiMethodTest { + + public XServiceDisplayName oObj = null; + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getServiceDisplayName() { + String dn = oObj.getServiceDisplayName(new Locale("de","DE","")); + + tRes.tested("getServiceDisplayName()", dn != null); + } + +} // finish class MTest + + diff --git a/qadevOOo/tests/java/ifc/lang/_XServiceInfo.java b/qadevOOo/tests/java/ifc/lang/_XServiceInfo.java new file mode 100644 index 0000000000..e1f2e0da37 --- /dev/null +++ b/qadevOOo/tests/java/ifc/lang/_XServiceInfo.java @@ -0,0 +1,88 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.lang; + +import lib.MultiMethodTest; + +import com.sun.star.lang.XServiceInfo; + +/** +* Testing <code>com.sun.star.lang.XServiceInfo</code> +* interface methods : +* <ul> +* <li><code> getImplementationName()</code></li> +* <li><code> supportsService()</code></li> +* <li><code> getSupportedServiceNames()</code></li> +* </ul> <p> +* Test is multithread compliant. <p> +* @see com.sun.star.lang.XServiceInfo +*/ +public class _XServiceInfo extends MultiMethodTest { + public static XServiceInfo oObj = null; + public static String[] names = null; + + /** + * Just calls the method.<p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getImplementationName() { + boolean result = true; + log.println("testing getImplementationName() ... "); + + log.println("The ImplementationName is "+oObj.getImplementationName()); + result=true; + + tRes.tested("getImplementationName()", result); + + } // end getImplementationName() + + + /** + * Just calls the method.<p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getSupportedServiceNames() { + boolean result = true; + log.println("getting supported Services..."); + names = oObj.getSupportedServiceNames(); + for (int i=0;i<names.length;i++) { + int k = i+1; + log.println(k+". Supported Service is "+names[i]); + } + result=true; + + tRes.tested("getSupportedServiceNames()", result); + + } // end getSupportedServiceNames() + + /** + * Gets one of the service names returned by + * <code>getSupportedServiceNames</code> method and + * calls the <code>supportsService</code> method with this + * name. <p> + * Has <b>OK</b> status if <code>true</code> value is + * returned. + */ + public void _supportsService() { + log.println("testing supportsService"); + names = oObj.getSupportedServiceNames(); + tRes.tested("supportsService()", oObj.supportsService(names[0])); + } // end supportsService() +} + diff --git a/qadevOOo/tests/java/ifc/lang/_XSingleServiceFactory.java b/qadevOOo/tests/java/ifc/lang/_XSingleServiceFactory.java new file mode 100644 index 0000000000..da039308ce --- /dev/null +++ b/qadevOOo/tests/java/ifc/lang/_XSingleServiceFactory.java @@ -0,0 +1,160 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.lang; + +import lib.MultiMethodTest; + +import com.sun.star.lang.XSingleServiceFactory; +import com.sun.star.uno.UnoRuntime; + + +/** +/** +* Testing <code>com.sun.star.</code> +* interface methods :lang.XSingleServiceFactory +* <ul> +* <li><code> createInstance()</code></li> +* <li><code> createInstanceWithArguments()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XSingleServiceFactory.createInstance.negative'</code> : +* <code>String</code> relation; If its value 'true' then +* <code>createInstance</code> method for the object isn't +* supported. </li> +* <li> <code>'XSingleServiceFactory.arguments'</code> <b>(optional)</b>: +* has <code>Object[]</code> type. This relation is used as +* a parameter for <code>createInstanceWithArguments</code> +* method call. If this relation doesn't exist test pass +* zero length array as argument. </li> +* <li> <code>'XSingleServiceFactory.MustSupport'</code> <b>(optional)</b>: +* of type <code>java.lang.Class[]</code>. This is an array of UNO +* interface classes which must be supported by created instance. +* </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* After test completion object environment has to be recreated. +* @see com.sun.star.lang.XSingleServiceFactory +*/ +public class _XSingleServiceFactory extends MultiMethodTest { + + public XSingleServiceFactory oObj = null; + private Class<?>[] mustSupport = null ; + + @Override + public void before() { + mustSupport = (Class[]) tEnv.getObjRelation + ("XSingleServiceFactory.MustSupport") ; + } + + /** + * Just calls the method and check the value returned. <p> + * + * Has <b>OK</b> status in case if this method is supported + * by object and non null value is returned, or if + * this method isn't supported then the method call must + * rise an exception or return <code>null</code> value. + * If the relation exists which specifies required interfaces + * supported by created instance then status is <b>OK</b> + * if all these interfaces are supported. + */ + public void _createInstance() { + // for some objects the method should fail. + // If this is required the property is set to true. + String negStr = (String)tEnv.getObjRelation( + "XSingleServiceFactory.createInstance.negative"); + boolean negative = (negStr != null && negStr.equalsIgnoreCase("true")); + + if (negative) { + log.println("Negative test: createInstance should fail"); + } + + try { + log.println("Creating Instance: "); + Object Inst = oObj.createInstance(); + boolean bOK = Inst != null ; + + if (mustSupport != null && bOK) { + for (int i = 0; i < mustSupport.length; i++) { + Object ifc = UnoRuntime.queryInterface(mustSupport[i], Inst) ; + if (ifc == null) { + log.println(" !!! Created instance doesn't support " + + mustSupport[i].toString()) ; + } + bOK &= ifc != null ; + } + } + + tRes.tested("createInstance()", + (negative && Inst == null) || (!negative && bOK)); + } catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred during createInstance()"); + if (negative) { + ex.printStackTrace(log); + } + tRes.tested("createInstance()", negative); + } + } + + /** + * Calls the method and checks the value returned. If relation + * with method argument doesn't exist new zero length array + * is created. <p> + * Has <b>OK</b> status if non null value is returned. + * If the relation exists which specifies required interfaces + * supported by created instance then status is <b>OK</b> + * if all these interfaces are supported. + */ + public void _createInstanceWithArguments() { + Object[] arg = (Object[])tEnv.getObjRelation( + "XSingleServiceFactory.arguments"); + + if (arg == null) { + arg = new Object[0]; + } + + try { + boolean bOK = true ; + log.println("Creating Instance with Argument"); + Object Inst = oObj.createInstanceWithArguments(arg); + bOK &= Inst != null ; + + if (mustSupport != null) { + for (int i = 0; i < mustSupport.length; i++) { + Object ifc = UnoRuntime.queryInterface(mustSupport[i], Inst) ; + if (ifc == null) { + log.println(" !!! Created instance doesn't support " + + mustSupport[i].toString()) ; + } + bOK &= ifc != null ; + } + } + + tRes.tested("createInstanceWithArguments()", bOK); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred during createInstanceWithArguments()"); + ex.printStackTrace(log); + tRes.tested("createInstanceWithArguments()",false); + } + } + +} // finish class _XSingleServiceFactory + + diff --git a/qadevOOo/tests/java/ifc/lang/_XTypeProvider.java b/qadevOOo/tests/java/ifc/lang/_XTypeProvider.java new file mode 100644 index 0000000000..1d13d9f283 --- /dev/null +++ b/qadevOOo/tests/java/ifc/lang/_XTypeProvider.java @@ -0,0 +1,82 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.lang; + +import lib.MultiMethodTest; + +import com.sun.star.lang.XTypeProvider; +import com.sun.star.uno.Type; + +/** +* Testing <code>com.sun.star.lang.XTypeProvider</code> +* interface methods : +* <ul> +* <li><code> getTypes()</code></li> +* <li><code> getImplementationId()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.lang.XTypeProvider +*/ +public class _XTypeProvider extends MultiMethodTest { + + public static XTypeProvider oObj = null; + public static Type[] types = null; + + /** + * Just calls the method.<p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getImplementationId() { + log.println("testing getImplementationId() ... "); + + boolean result = oObj.getImplementationId().length > 0; + + tRes.tested("getImplementationId()", result); + + } // end getImplementationId() + + + /** + * Calls the method and checks the return value.<p> + * Has <b>OK</b> status if one of the return value equals to the + * type <code>com.sun.star.lang.XTypeProvider</code>. + */ + public void _getTypes() { + boolean result = false; + log.println("getting Types..."); + types = oObj.getTypes(); + for (int i=0;i<types.length;i++) { + int k = i+1; + log.println(k+". Type is "+types[i].toString()); + if (types[i].toString().equals + ("Type[com.sun.star.lang.XTypeProvider]")) { + result = true; + } + } + if (!result) { + log.println("Component must provide Type " + +"<com.sun.star.lang.XTypeProvider>"); + } + + tRes.tested("getTypes()", result); + + } // end getTypes() + +} + diff --git a/qadevOOo/tests/java/ifc/linguistic2/_LinguProperties.java b/qadevOOo/tests/java/ifc/linguistic2/_LinguProperties.java new file mode 100644 index 0000000000..930986d564 --- /dev/null +++ b/qadevOOo/tests/java/ifc/linguistic2/_LinguProperties.java @@ -0,0 +1,52 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.linguistic2; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.linguistic2.LinguProperties</code> +* service properties: +* <ul> +* <li><code>'IsGermanPreReform'</code></li> +* <li><code>'IsUseDictionaryList'</code></li> +* <li><code>'IsIgnoreControlCharacters'</code></li> +* <li><code>'IsSpellUpperCase'</code></li> +* <li><code>'IsSpellWithDigits'</code></li> +* <li><code>'IsSpellCapitalization'</code></li> +* <li><code>'HyphMinLeading'</code></li> +* <li><code>'HyphMinTrailing'</code></li> +* <li><code>'HyphMinWordLength'</code></li> +* <li><code>'DefaultLocale'</code></li> +* <li><code>'IsHyphAuto'</code></li> +* <li><code>'IsHyphSpecial'</code></li> +* <li><code>'IsSpellAuto'</code></li> +* <li><code>'IsSpellHide'</code></li> +* <li><code>'IsSpellInAllLanguages'</code></li> +* <li><code>'IsSpellSpecial'</code></li> +* <li><code>'IsWrapReverse'</code></li> +* <li><code>'DefaultLocale_CJK'</code></li> +* <li><code>'DefaultLocale_CTL'</code></li> +* </ul> +* @see com.sun.star.linguistic2.LinguProperties +*/ +public class _LinguProperties extends MultiPropertyTest { +} // finish class _LinguProperties + + diff --git a/qadevOOo/tests/java/ifc/linguistic2/_XAvailableLocales.java b/qadevOOo/tests/java/ifc/linguistic2/_XAvailableLocales.java new file mode 100644 index 0000000000..0fb7e4f883 --- /dev/null +++ b/qadevOOo/tests/java/ifc/linguistic2/_XAvailableLocales.java @@ -0,0 +1,48 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.linguistic2; + +import com.sun.star.lang.Locale; +import com.sun.star.linguistic2.XAvailableLocales; +import lib.MultiMethodTest; + +/** +* Testing <code>com.sun.star.linguistic2.XAvailableLocales</code> +* interface methods: +* <ul> +* <li><code>getAvailableLocales()</code></li> +* </ul> <p> +* @see com.sun.star.linguistic2.XAvailableLocales +*/ +public class _XAvailableLocales extends MultiMethodTest { + + public XAvailableLocales oObj = null; + + /** + * Test calls the method, stores returned value and checks it. <p> + * Has <b> OK </b> status if length of returned array isn't zero. <p> + */ + public void _getAvailableLocales() { + Locale[] locales = oObj.getAvailableLocales("com.sun.star.linguistic2.Hyphenator"); + tRes.tested("getAvailableLocales()", locales.length > 0); + } + +} // finish class XAvailableLocales + + diff --git a/qadevOOo/tests/java/ifc/linguistic2/_XDictionaryList.java b/qadevOOo/tests/java/ifc/linguistic2/_XDictionaryList.java new file mode 100644 index 0000000000..edbdc1a86a --- /dev/null +++ b/qadevOOo/tests/java/ifc/linguistic2/_XDictionaryList.java @@ -0,0 +1,286 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.linguistic2; + +import lib.MultiMethodTest; + +import com.sun.star.lang.EventObject; +import com.sun.star.lang.Locale; +import com.sun.star.linguistic2.DictionaryListEvent; +import com.sun.star.linguistic2.XDictionary; +import com.sun.star.linguistic2.XDictionaryList; +import com.sun.star.linguistic2.XDictionaryListEventListener; + +/** +* Testing <code>com.sun.star.linguistic2.XDictionaryList</code> +* interface methods: +* <ul> +* <li><code>getCount()</code></li> +* <li><code>getDictionaries()</code></li> +* <li><code>getDictionaryByName()</code></li> +* <li><code>addDictionary()</code></li> +* <li><code>removeDictionary()</code></li> +* <li><code>addDictionaryListEventListener()</code></li> +* <li><code>removeDictionaryListEventListener()</code></li> +* <li><code>beginCollectEvents()</code></li> +* <li><code>endCollectEvents()</code></li> +* <li><code>flushEvents()</code></li> +* <li><code>createDictionary()</code></li> +* </ul> <p> +* @see com.sun.star.linguistic2.XDictionaryList +*/ +public class _XDictionaryList extends MultiMethodTest { + + public XDictionaryList oObj = null; + public XDictionary addedDic = null; + + /** + * Flag for testing of listeners. + */ + public boolean listenerCalled = false; + + /** + * Class implements interface <code>XDictionaryListEventListener</code> + * for test method <code>addDictionaryListEventListener</code>. + * @see com.sun.star.linguistic2.XDictionaryListEventListener + */ + public class MyDictionaryListEventListener implements + XDictionaryListEventListener { + + public void disposing ( EventObject oEvent ) { + log.println("Listener has been disposed"); + } + public void processDictionaryListEvent( DictionaryListEvent aDicEvent) { + listenerCalled = true; + } + } + + XDictionaryListEventListener listener = new MyDictionaryListEventListener(); + + short count = 0; + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value is greater than zero. <p> + */ + public void _getCount() { + count = oObj.getCount(); + tRes.tested("getCount()",(count > 0) ); + } + + /** + * Test calls the method and checks number of obtained dictionaries + * with value that was returned by method <code>getCount</code>. <p> + * Has <b> OK </b> status if values are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getCount() </code> : to have number of dictionaries </li> + * </ul> + */ + public void _getDictionaries() { + requiredMethod("getCount()"); + + XDictionary[] dics = oObj.getDictionaries(); + boolean res = (dics.length == count); + if (!res) { + log.println("Expected: " + oObj.getCount()); + log.println("Gained: " + dics.length); + } + tRes.tested("getDictionaries()", res); + } + + /** + * Test calls the method, makes some actions that leads to event + * <code>processDictionaryListEvent</code>, removes listener, checks flag + * <code>listenerCalled</code> and checks returned value. <p> + * Has <b> OK </b> status if returned value is true and value of flag + * <code>listenerCalled</code> is true. <p> + */ + public void _addDictionaryListEventListener() { + listenerCalled = false; + + XDictionary xDic = oObj.createDictionary("ListenDic", + new Locale("en","US","WIN"), + com.sun.star.linguistic2.DictionaryType.POSITIVE,""); + + boolean res = oObj.addDictionaryListEventListener(listener, false); + + oObj.flushEvents(); + oObj.addDictionary(xDic); + xDic.add("Positive", false, ""); + xDic.setActive(true); + oObj.flushEvents(); + oObj.removeDictionary(xDic); + + oObj.removeDictionaryListEventListener(listener); + + tRes.tested("addDictionaryListEventListener()",listenerCalled && res); + } + + /** + * Test calls the method, makes some actions that leads to event + * <code>processDictionaryListEvent</code>, checks flag + * <code>listenerCalled</code> and checks returned value. <p> + * Has <b> OK </b> status if returned value is false and value of flag + * <code>listenerCalled</code> is false. <p> + */ + public void _removeDictionaryListEventListener() { + listenerCalled = false; + + XDictionary xDic = oObj.createDictionary("ListenDic", + new Locale("en","US","WIN"), + com.sun.star.linguistic2.DictionaryType.POSITIVE,""); + + oObj.addDictionaryListEventListener(listener,false); + + oObj.flushEvents(); + oObj.addDictionary(xDic); + xDic.add("Positive", false,""); + xDic.setActive(true); + + listenerCalled = false; + boolean res = oObj.removeDictionaryListEventListener(listener); + + oObj.flushEvents(); + oObj.removeDictionary(xDic); + + tRes.tested( + "removeDictionaryListEventListener()", + !listenerCalled && res ); + } + + /** + * Test creates new dictionary, adds the dictionary to list and compares + * number of dictionaries after adding with number of dictionaries before.<p> + * Has <b> OK </b> status if number of dictionaries after method call is + * greater than number of dictionaries before method call. <p> + */ + public void _addDictionary() { + short previous = oObj.getCount(); + addedDic = oObj.createDictionary("AddedDic",new Locale("en","US","WIN"), + com.sun.star.linguistic2.DictionaryType.POSITIVE,""); + addedDic.add("Positive",false,""); + + oObj.addDictionary(addedDic); + + short after = oObj.getCount(); + + tRes.tested( "addDictionary()", (after > previous) ); + } + + /** + * Test calls the method and compares number of dictionaries + * before method call and after. <p> + * Has <b> OK </b> status if number of dictionaries before method call is + * less than number of dictionaries after method call. <p> + */ + public void _removeDictionary() { + short previous = oObj.getCount(); + oObj.removeDictionary(addedDic); + short after = oObj.getCount(); + tRes.tested("removeDictionary()",(after < previous) ); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getDictionaryByName() { + XDictionary getting = oObj.getDictionaryByName("NegativDic"); + tRes.tested("getDictionaryByName()", getting != null ); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _createDictionary() { + XDictionary tmpDic = oObj.createDictionary("AddedDic", + new Locale("en","US","WIN"), + com.sun.star.linguistic2.DictionaryType.POSITIVE,""); + tRes.tested("createDictionary()", tmpDic != null ); + } + + /** + * Test creates dictionary, adds dictionary list event listener, + * begins collect events, makes some actions that leads to event + * <code>processDictionaryListEvent</code>, ends collect events, + * removes the listener and checks the flag <code>listenerCalled</code> . <p> + * Has <b> OK </b> status if value of the flag is true. <p> + */ + public void _beginCollectEvents() { + listenerCalled = false; + + XDictionary xDic = oObj.createDictionary("ListenDic", + new Locale("en","US","WIN"), + com.sun.star.linguistic2.DictionaryType.POSITIVE,""); + + oObj.addDictionaryListEventListener(listener,false); + oObj.beginCollectEvents(); + + oObj.addDictionary(xDic); + xDic.add("Positive",false,""); + xDic.setActive(true); + + oObj.removeDictionary(xDic); + oObj.endCollectEvents(); + + oObj.removeDictionaryListEventListener(listener); + + tRes.tested("beginCollectEvents()", listenerCalled ); + } + + /** + * Test does nothing. <p> + * Has <b> OK </b> status if method + * <code>addDictionaryListEventListener()</code> was completed + * successfully. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addDictionaryListEventListener() </code> : + * if listener adding worked, flushEvents was already used and worked </li> + * </ul> + */ + public void _flushEvents() { + requiredMethod("addDictionaryListEventListener()"); + // if listener adding worked, flushEvents was already used and worked + tRes.tested("flushEvents()",true); + } + + /** + * Test does nothing. <p> + * Has <b> OK </b> status if method + * <code>beginCollectEvents()</code> was completed successfully. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> beginCollectEvents() </code> : + * if beginCollectEvents() worked then endCollectEvents was already + * used and worked </li> + * </ul> + */ + public void _endCollectEvents() { + requiredMethod("beginCollectEvents()"); + // if beginCollectEvents() worked, endCollectEvents + // was already used and worked + tRes.tested("endCollectEvents()",true); + } + +} // finish class _XDictionaryList + + diff --git a/qadevOOo/tests/java/ifc/linguistic2/_XHyphenator.java b/qadevOOo/tests/java/ifc/linguistic2/_XHyphenator.java new file mode 100644 index 0000000000..907cd5aebe --- /dev/null +++ b/qadevOOo/tests/java/ifc/linguistic2/_XHyphenator.java @@ -0,0 +1,102 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.linguistic2; + +import lib.MultiMethodTest; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.lang.Locale; +import com.sun.star.linguistic2.XHyphenatedWord; +import com.sun.star.linguistic2.XHyphenator; +import com.sun.star.linguistic2.XPossibleHyphens; + +/** +* Testing <code>com.sun.star.linguistic2.XHyphenator</code> +* interface methods: +* <ul> +* <li><code>hyphenate()</code></li> +* <li><code>queryAlternativeSpelling()</code></li> +* <li><code>createPossibleHyphens()</code></li> +* </ul><p> +* @see com.sun.star.linguistic2.XHyphenator +*/ +public class _XHyphenator extends MultiMethodTest { + + public XHyphenator oObj = null; + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _hyphenate() { + boolean res = true; + PropertyValue[] Props = null; + try { + XHyphenatedWord result = oObj.hyphenate( + "wacker",new Locale("de","DE",""),(short)3,Props); + res &= (result != null); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception while checking 'hyphenate'"); + res = false; + ex.printStackTrace(log); + } + tRes.tested("hyphenate()",res); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _queryAlternativeSpelling() { + boolean res = true; + PropertyValue[] Props = null; + try { + XHyphenatedWord result = oObj.queryAlternativeSpelling( + "wacker",new Locale("de","DE",""),(short)2,Props); + res &= (result != null); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception while checking 'queryAlternativeSpelling'"); + res = false; + ex.printStackTrace(log); + } + tRes.tested("queryAlternativeSpelling()",res); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _createPossibleHyphens() { + boolean res = true; + PropertyValue[] Props = null; + try { + XPossibleHyphens result = oObj.createPossibleHyphens( + "wacker",new Locale("de","DE",""),Props); + res &= (result != null); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception while checking 'createPossibleHyphens'"); + res = false; + ex.printStackTrace(log); + } + tRes.tested("createPossibleHyphens()",res); + } + +} // \u0422\u044B finish class XHyphenator + + diff --git a/qadevOOo/tests/java/ifc/linguistic2/_XLinguServiceEventBroadcaster.java b/qadevOOo/tests/java/ifc/linguistic2/_XLinguServiceEventBroadcaster.java new file mode 100644 index 0000000000..9396ebf287 --- /dev/null +++ b/qadevOOo/tests/java/ifc/linguistic2/_XLinguServiceEventBroadcaster.java @@ -0,0 +1,85 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.linguistic2; + +import lib.MultiMethodTest; + +import com.sun.star.lang.EventObject; +import com.sun.star.linguistic2.LinguServiceEvent; +import com.sun.star.linguistic2.XLinguServiceEventBroadcaster; +import com.sun.star.linguistic2.XLinguServiceEventListener; + +/** +* Testing <code>com.sun.star.linguistic2.XLinguServiceEventBroadcaster</code> +* interface methods: +* <ul> +* <li><code>addLinguServiceEventListener()</code></li> +* <li><code>removeLinguServiceEventListener()</code></li> +* </ul><p> +* @see com.sun.star.linguistic2.XLinguServiceEventBroadcaster +*/ +public class _XLinguServiceEventBroadcaster extends MultiMethodTest { + + public XLinguServiceEventBroadcaster oObj = null; + + /** + * Class implements interface <code>XLinguServiceEventListener</code> + * for test method <code>addLinguServiceEventListener</code>. + * @see com.sun.star.linguistic2.XLinguServiceEventListener + */ + public class MyLinguServiceEventListener implements + XLinguServiceEventListener { + public void disposing ( EventObject oEvent ) { + log.println("Listener has been disposed"); + } + public void processLinguServiceEvent(LinguServiceEvent aServiceEvent) { + log.println("Listener called"); + } + + } + + XLinguServiceEventListener listener = new MyLinguServiceEventListener(); + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value is true. <p> + */ + public void _addLinguServiceEventListener() { + boolean res = true; + + res = oObj.addLinguServiceEventListener(listener); + + tRes.tested("addLinguServiceEventListener()",res); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value is true. <p> + */ + public void _removeLinguServiceEventListener() { + boolean res = true; + + res = oObj.removeLinguServiceEventListener(listener); + + tRes.tested("removeLinguServiceEventListener()",res); + } + +} // finish class XLinguServiceEventBroadcaster + + diff --git a/qadevOOo/tests/java/ifc/linguistic2/_XLinguServiceManager.java b/qadevOOo/tests/java/ifc/linguistic2/_XLinguServiceManager.java new file mode 100644 index 0000000000..2f71ea3721 --- /dev/null +++ b/qadevOOo/tests/java/ifc/linguistic2/_XLinguServiceManager.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 ifc.linguistic2; + +import lib.MultiMethodTest; + +import com.sun.star.lang.EventObject; +import com.sun.star.lang.Locale; +import com.sun.star.linguistic2.LinguServiceEvent; +import com.sun.star.linguistic2.XHyphenator; +import com.sun.star.linguistic2.XLinguServiceEventListener; +import com.sun.star.linguistic2.XLinguServiceManager; +import com.sun.star.linguistic2.XSpellChecker; +import com.sun.star.linguistic2.XThesaurus; + +/** +*Testing <code>com.sun.star.linguistic2.XLinguServiceManager</code> +* interface methods: +* <ul> +* <li><code>getSpellChecker()</code></li> +* <li><code>getHyphenator()</code></li> +* <li><code>getThesaurus()</code></li> +* <li><code>addLinguServiceManagerListener()</code></li> +* <li><code>removeLinguServiceManagerListener()</code></li> +* <li><code>getAvailableServices()</code></li> +* <li><code>setConfiguredServices()</code></li> +* <li><code>getConfiguredServices()</code></li> +* </ul> <p> +*@see com.sun.star.linguistic2.XLinguServiceManager +*/ +public class _XLinguServiceManager extends MultiMethodTest { + + public XLinguServiceManager oObj = null; + + /** + * Class implements interface <code>XLinguServiceEventListener</code> + * for test method <code>addLinguServiceManagerListener</code>. + * @see com.sun.star.linguistic2.XLinguServiceEventListener + */ + public class MyLinguServiceEventListener implements + XLinguServiceEventListener { + public void disposing ( EventObject oEvent ) { + log.println("Listener has been disposed"); + } + public void processLinguServiceEvent(LinguServiceEvent aServiceEvent) { + log.println("Listener called"); + } + } + + XLinguServiceEventListener listener = new MyLinguServiceEventListener(); + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getSpellChecker() { + XSpellChecker SC = oObj.getSpellChecker(); + tRes.tested("getSpellChecker()", SC != null); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getHyphenator() { + XHyphenator HN = oObj.getHyphenator(); + tRes.tested("getHyphenator()", HN != null); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getThesaurus() { + XThesaurus TS = oObj.getThesaurus(); + tRes.tested("getThesaurus()", TS != null); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value is equal to true. <p> + */ + public void _addLinguServiceManagerListener() { + boolean res = oObj.addLinguServiceManagerListener(listener); + tRes.tested("addLinguServiceManagerListener()", res); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value is equal to true. <p> + */ + public void _removeLinguServiceManagerListener() { + boolean res = oObj.removeLinguServiceManagerListener(listener); + tRes.tested("removeLinguServiceManagerListener()",res); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if length of returned array is + * greater than zero.<p> + */ + public void _getAvailableServices() { + String[] services = oObj.getAvailableServices( + "com.sun.star.linguistic2.Hyphenator", + new Locale("en", "US", "") ); + tRes.tested("getAvailableServices()", services.length > 0); + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if length of returned array is + * greater than zero.<p> + */ + public void _getConfiguredServices() { + String[] services = oObj.getConfiguredServices( + "com.sun.star.linguistic2.Hyphenator", + new Locale("en", "US", "") ); + tRes.tested("getConfiguredServices()", services.length > 0); + } + + /** + * Test sets empty list of service, checks value returned + * by method <code>getConfiguredServices()</code> and all services + * restored finally. <p> + * Has <b> OK </b> status if length of obtained service list equal to zero. + * <p>The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getConfiguredServices() </code></li> + * </ul> + */ + public void _setConfiguredServices() { + requiredMethod("getConfiguredServices()"); + + String[] services = oObj.getConfiguredServices( + "com.sun.star.linguistic2.Hyphenator",new Locale("en","US","")); + + String[] empty = new String[0]; + oObj.setConfiguredServices( + "com.sun.star.linguistic2.Hyphenator", + new Locale("en", "US", ""), + empty ); + + String[] get = oObj.getConfiguredServices( + "com.sun.star.linguistic2.Hyphenator", new Locale("en","US","")); + + boolean res = (get.length == 0); + + oObj.setConfiguredServices( + "com.sun.star.linguistic2.Hyphenator", + new Locale("en", "US", ""), + services ); + + tRes.tested("setConfiguredServices()", res); + } + +} // finish class _XLinguServiceManager + + diff --git a/qadevOOo/tests/java/ifc/linguistic2/_XSearchableDictionaryList.java b/qadevOOo/tests/java/ifc/linguistic2/_XSearchableDictionaryList.java new file mode 100644 index 0000000000..a22ecf2c8d --- /dev/null +++ b/qadevOOo/tests/java/ifc/linguistic2/_XSearchableDictionaryList.java @@ -0,0 +1,64 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.linguistic2; + +import com.sun.star.lang.Locale; +import com.sun.star.linguistic2.XDictionaryEntry; +import com.sun.star.linguistic2.XSearchableDictionaryList; +import lib.MultiMethodTest; + +/** +* Testing <code>com.sun.star.linguistic2.XSearchableDictionaryList</code> +* interface methods: +* <ul> +* <li><code>queryDictionaryEntry()</code></li> +* </ul> <p> +* @see com.sun.star.linguistic2.XSearchableDictionaryList +*/ +public class _XSearchableDictionaryList extends MultiMethodTest { + + public XSearchableDictionaryList oObj = null; + + /** + * Test calls the method for negative dictionary and for positive dictionary + * and checks returned values. <p> + * Has <b> OK </b> status if returned values are not null. <p> + */ + public void _queryDictionaryEntry() { + XDictionaryEntry aNegativEntry = oObj.queryDictionaryEntry("Negative", + new Locale("en","US","WIN"),false,true); + if (aNegativEntry == null) { + log.println("'queryDictionary' didn't work for negative dictionaries"); + } else { + log.println("'queryDictionary' works for negative dictionaries"); + } + XDictionaryEntry aPositivEntry = oObj.queryDictionaryEntry("Positive", + new Locale("en","US","WIN"),true,true); + if (aPositivEntry == null) { + log.println("'queryDictionary' didn't work for positive dictionaries"); + } else { + log.println("'queryDictionary' works for positive dictionaries"); + } + tRes.tested("queryDictionaryEntry()",(aNegativEntry != null) && + (aPositivEntry != null) ); + } + +} // finish class _XSearchableDictionaryList + + diff --git a/qadevOOo/tests/java/ifc/linguistic2/_XSpellChecker.java b/qadevOOo/tests/java/ifc/linguistic2/_XSpellChecker.java new file mode 100644 index 0000000000..75eaf86267 --- /dev/null +++ b/qadevOOo/tests/java/ifc/linguistic2/_XSpellChecker.java @@ -0,0 +1,108 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.linguistic2; + +import lib.MultiMethodTest; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.lang.Locale; +import com.sun.star.linguistic2.XSpellAlternatives; +import com.sun.star.linguistic2.XSpellChecker; +import lib.Status; +import lib.StatusException; + +/** +* Testing <code>com.sun.star.linguistic2.XSpellChecker</code> +* interface methods: +* <ul> +* <li><code>isValid()</code></li> +* <li><code>spell()</code></li> +* </ul><p> +* @see com.sun.star.linguistic2.XSpellChecker +*/ +public class _XSpellChecker extends MultiMethodTest { + + public XSpellChecker oObj = null; + XSpellChecker alternative = null; + + @Override + public void before() { + alternative = (XSpellChecker) tEnv.getObjRelation("AlternativeChecker"); + if (alternative == null) throw new StatusException(Status.failed + ("Relation AlternativeChecker not found")) ; + } + + /** + * Test calls the method for a correctly spelled word and + * for an incorrectly spelled word and checks returned values. <p> + * Has <b> OK </b> status if returned value is equal to true in first case, + * if returned value is equal to false in second case and no exceptions + * were thrown. <p> + */ + public void _isValid() { + boolean res = true; + try { + log.println("Checking 'original' Spellchecker"); + PropertyValue[] empty = new PropertyValue[0] ; + res &= oObj.isValid("Sun", new Locale("en","US",""), empty); + res &= !oObj.isValid("Summersun", new Locale("en","US","") ,empty); + log.println("Result so far is - "+ (res ? "OK" : "failed")); + log.println("Checking alternative Spellchecker"); + res &= alternative.isValid("Sun", new Locale("en","US",""), empty); + res &= !alternative.isValid("Summersun", new Locale("en","US","") ,empty); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception while checking 'isValid'"); + res = false; + ex.printStackTrace(log); + } + tRes.tested("isValid()",res); + } + + /** + * Test calls the method for an incorrectly spelled word + * and checks returned values. <p> + * Has <b> OK </b> status if at least one spell alternative exists + * and no exceptions were thrown. <p> + */ + public void _spell() { + boolean res = true; + try { + log.println("Checking 'original' Spellchecker"); + PropertyValue[] empty = new PropertyValue[0] ; + XSpellAlternatives alt = oObj.spell( + "Summersun",new Locale("en","US",""),empty); + String alternatives = alt.getAlternatives()[0]; + res = (alternatives != null); + log.println("Result so far is - "+ (res ? "OK" : "failed")); + log.println("Checking alternative Spellchecker"); + alt =alternative.spell( + "Summersun",new Locale("en","US",""),empty); + alternatives = alt.getAlternatives()[0]; + res &= (alternatives != null); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception while checking 'spell'"); + res = false; + ex.printStackTrace(log); + } + tRes.tested("spell()",res); + } + +} // finish class MTest + + diff --git a/qadevOOo/tests/java/ifc/linguistic2/_XSupportedLocales.java b/qadevOOo/tests/java/ifc/linguistic2/_XSupportedLocales.java new file mode 100644 index 0000000000..a9536b8d26 --- /dev/null +++ b/qadevOOo/tests/java/ifc/linguistic2/_XSupportedLocales.java @@ -0,0 +1,80 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.linguistic2; + +import lib.MultiMethodTest; + +import com.sun.star.lang.Locale; +import com.sun.star.linguistic2.XSupportedLocales; + +/** +* Testing <code>com.sun.star.linguistic2.XSupportedLocales</code> +* interface methods: +* <ul> +* <li><code>getLocales()</code></li> +* <li><code>hasLocale()</code></li> +* </ul> <p> +* @see com.sun.star.linguistic2.XSupportedLocales +*/ +public class _XSupportedLocales extends MultiMethodTest { + + public XSupportedLocales oObj = null; + public Locale[] locales = new Locale[0]; + + /** + * Test calls the method, stores returned value and checks it. <p> + * Has <b> OK </b> status if length of returned array isn't zero. <p> + */ + public void _getLocales() { + locales = oObj.getLocales(); + tRes.tested("getLocales()", locales.length > 0); + } + + /** + * Test calls the method for every language from list of supported languages, + * calls the method for one unsupported language and checks + * all returned values. <p> + * Has <b> OK </b> status if all returned values for supported languages + * are equal to true and if returned value for unsupported language is equal + * to false. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getLocales() </code> : to have list of + * all supported languages </li> + * </ul> + */ + public void _hasLocale() { + requiredMethod("getLocales()"); + boolean res = true; + + // first check all available locales + for (int i=0; i< locales.length; i++) { + res &= oObj.hasLocale(locales[i]); + } + + // now create an invalid locale + Locale invalid = new Locale("myLanguage","myCountry",""); + res &= !oObj.hasLocale(invalid); + + tRes.tested("hasLocale()", res); + } + +} // finish class XSupportedLocales + + diff --git a/qadevOOo/tests/java/ifc/linguistic2/_XThesaurus.java b/qadevOOo/tests/java/ifc/linguistic2/_XThesaurus.java new file mode 100644 index 0000000000..8bfcccf6e6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/linguistic2/_XThesaurus.java @@ -0,0 +1,63 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.linguistic2; + +import lib.MultiMethodTest; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.lang.Locale; +import com.sun.star.linguistic2.XMeaning; +import com.sun.star.linguistic2.XThesaurus; + +/** +* Testing <code>com.sun.star.linguistic2.XThesaurus</code> +* interface methods: +* <ul> +* <li><code>queryMeanings()</code></li> +* </ul> <p> +* @see com.sun.star.linguistic2.XThesaurus +*/ +public class _XThesaurus extends MultiMethodTest { + + public XThesaurus oObj = null; + + /** + * Test calls the method for one of supported language and checks + * returned value. <p> + * Has <b> OK </b> status if returned array is not empty + * and no exceptions were thrown. <p> + */ + public void _queryMeanings() { + boolean res = true; + try { + XMeaning[] mean = oObj.queryMeanings( + "survive",new Locale("en","US",""), new PropertyValue[0]); + res = (mean.length > 0); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception while checking 'queryMeanings'"); + res = false; + ex.printStackTrace(log); + } + tRes.tested("queryMeanings()",res); + } + + +} // finish class + + diff --git a/qadevOOo/tests/java/ifc/loader/_XImplementationLoader.java b/qadevOOo/tests/java/ifc/loader/_XImplementationLoader.java new file mode 100644 index 0000000000..1a8a05409d --- /dev/null +++ b/qadevOOo/tests/java/ifc/loader/_XImplementationLoader.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 ifc.loader; + +import lib.MultiMethodTest; +import lib.StatusException; +import util.RegistryTools; + +import com.sun.star.lang.XServiceInfo; +import com.sun.star.loader.CannotActivateFactoryException; +import com.sun.star.loader.XImplementationLoader; +import com.sun.star.registry.CannotRegisterImplementationException; +import com.sun.star.registry.XRegistryKey; +import com.sun.star.registry.XSimpleRegistry; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** + * Testing <code>com.sun.star.loader.XImplementationLoader</code> + * interface methods : + * <ul> + * <li><code> activate()</code></li> + * <li><code> writeRegistryInfo()</code></li> + * </ul> <p> + * + * The following object relations required : + * <ul> + * <li> <code>'ImplementationLoader'</code> : service which is + * responsible for loading implementations. </li> + * <li> <code>'ImplementationUrl'</code> : implementation file location. </li> + * <li> <code>'ImplementationName'</code> : Name of the implementation.</li> + * </ul> <p> + * Object has to be recreated after this test. <p> + * Test is <b> Not </b> multithread compliant. + */ +public class _XImplementationLoader extends MultiMethodTest { + + public XImplementationLoader oObj = null; + private String implLoader = null ; + private String implUrl = null ; + private String implName = null ; + + /** + * Retrieves object relations. + * @throws StatusException If one of relations not found. + */ + @Override + public void before() { + implLoader = (String) tEnv.getObjRelation("ImplementationLoader") ; + implUrl = (String) tEnv.getObjRelation("ImplementationUrl") ; + implName = (String) tEnv.getObjRelation("ImplementationName") ; + + if (implLoader == null || implUrl == null || implName == null) + throw new StatusException("One of object relations not found", + new NullPointerException()) ; + } + + /** + * First registry file created, and the root key retrieved. + * Then method <code>writeRegistryInfo</code> called and it must + * write some info into the registry root key. After all registry + * is destroyed.<p> + * Has OK status if some info was written into registry. + */ + public void _writeRegistryInfo() { + XRegistryKey key ; + XSimpleRegistry xReg = null ; + + String tmpDir = util.utils.getOfficeTempDir(tParam.getMSF()); + + try { + xReg = RegistryTools.createRegistryService + (tParam.getMSF()) ; + + xReg.open(tmpDir + "XImpLoader_tmp.rdb", false, true) ; + + key = xReg.getRootKey() ; + } catch (com.sun.star.uno.Exception e) { + log.println("Can not create registry for writing") ; + e.printStackTrace(log) ; + tRes.tested("writeRegistryInfo()", false) ; + return ; + } + + boolean rc ; + try { + rc = oObj.writeRegistryInfo(key, implLoader, implUrl) ; + } catch (CannotRegisterImplementationException e) { + throw new StatusException("Can not register implementation", e) ; + } + + if (!rc) + log.println("Method returned false value") ; + + String[] keys ; + try { + keys = key.getKeyNames() ; + } catch (com.sun.star.uno.Exception e) { + log.println("Error retrieving key names from registry") ; + tRes.tested("writeRegistryInfo()", false) ; + return ; + } + + // destroying registry file + try { + xReg.close() ; + xReg.destroy() ; + } catch (com.sun.star.registry.InvalidRegistryException e) { + log.println("Can't destroy registry file.") ; + } + + tRes.tested("writeRegistryInfo()", rc && keys.length > 0) ; + } + + /** + * Tries to activate the implementation. <p> + * + * Has OK status if not <code>null</code> value returned by method, + * if its implementation name is the same as expected. + */ + public void _activate() { + boolean ok = true ; + XInterface factory = null ; + + try { + factory = (XInterface) oObj.activate + (implName, implLoader, implUrl, null) ; + } catch (CannotActivateFactoryException e) { + throw new StatusException("Can not activate factory", e) ; + } + + XServiceInfo xServInf = UnoRuntime.queryInterface + (XServiceInfo.class, factory) ; + + if (xServInf == null) { + if (factory == null) { + log.println("activate() returns null - FAILED."); + } else { + log.println("Activated implementation doesn't support "+ + "XServiceInfo - FAILED."); + } + ok = false ; + } else { + String gImpName = xServInf.getImplementationName() ; + log.println("Implementation name returned :" + gImpName); + + if (!gImpName.equals(implName)) { + log.println("!!! But other name was expected :" + implName); + ok = false ; + } + } + + tRes.tested("activate()", ok) ; + } + + /** + * Forces object recreation. + */ + @Override + public void after() { + this.disposeEnvironment() ; + } +} + diff --git a/qadevOOo/tests/java/ifc/presentation/_OutlineView.java b/qadevOOo/tests/java/ifc/presentation/_OutlineView.java new file mode 100644 index 0000000000..f702a7b4c5 --- /dev/null +++ b/qadevOOo/tests/java/ifc/presentation/_OutlineView.java @@ -0,0 +1,27 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.presentation; + +import lib.MultiPropertyTest; + +public class _OutlineView extends MultiPropertyTest { + +} // finish class _PresentationView + + diff --git a/qadevOOo/tests/java/ifc/presentation/_Presentation.java b/qadevOOo/tests/java/ifc/presentation/_Presentation.java new file mode 100644 index 0000000000..28f8a5aaba --- /dev/null +++ b/qadevOOo/tests/java/ifc/presentation/_Presentation.java @@ -0,0 +1,83 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.presentation; + +import lib.MultiPropertyTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.presentation.XPresentation; + +/** +* Testing <code>com.sun.star.presentation.Presentation</code> +* service properties : +* <ul> +* <li><code> AllowAnimations</code></li> +* <li><code> CustomShow</code></li> +* <li><code> FirstPage</code></li> +* <li><code> IsAlwaysOnTop</code></li> +* <li><code> IsAutomatic</code></li> +* <li><code> IsEndless</code></li> +* <li><code> IsFullScreen</code></li> +* <li><code> IsLivePresentation</code></li> +* <li><code> IsMouseVisible</code></li> +* <li><code> Pause</code></li> +* <li><code> StartWithNavigator</code></li> +* <li><code> UsePen</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'Presentation'</code> (of type <code>XPresentation</code>): +* for test of property <code>IsLivePresentation</code> +* presentation start needed </li> +* <ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.presentation.Presentation +* @see com.sun.star.presentation.XPresentation +*/ +public class _Presentation extends MultiPropertyTest { + + public void _IsLivePresentation() { + XPresentation aPresentation = (XPresentation) + tEnv.getObjRelation("Presentation"); + if (aPresentation == null) throw new StatusException(Status.failed + ("Relation 'Presentation' not found")); + + aPresentation.start(); + testProperty("IsLivePresentation"); + } + + protected PropertyTester CustomShowTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + if ( ((String)oldValue).equals("SecondPresentation") ) { + return "FirstPresentation"; + } else { + return "SecondPresentation"; + } + } + }; + + public void _CustomShow() { + testProperty("CustomShow", CustomShowTester); + } +} // finish class _Presentation + + diff --git a/qadevOOo/tests/java/ifc/presentation/_PresentationView.java b/qadevOOo/tests/java/ifc/presentation/_PresentationView.java new file mode 100644 index 0000000000..0846877b1b --- /dev/null +++ b/qadevOOo/tests/java/ifc/presentation/_PresentationView.java @@ -0,0 +1,48 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.presentation; + +import lib.MultiPropertyTest; + +public class _PresentationView extends MultiPropertyTest { + + /** + * Property tester which changes DrawPage. + */ + protected PropertyTester PageTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + if (oldValue.equals(tEnv.getObjRelation("FirstPage"))) + return tEnv.getObjRelation("SecondPage"); else + return tEnv.getObjRelation("FirstPage"); + } + } ; + + /** + * This property must be an XDrawPage + */ + public void _CurrentPage() { + log.println("Testing with custom Property tester") ; + testProperty("CurrentPage", PageTester) ; + } + +} // finish class _PresentationView + + diff --git a/qadevOOo/tests/java/ifc/presentation/_PreviewView.java b/qadevOOo/tests/java/ifc/presentation/_PreviewView.java new file mode 100644 index 0000000000..a1a7a6ec56 --- /dev/null +++ b/qadevOOo/tests/java/ifc/presentation/_PreviewView.java @@ -0,0 +1,30 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.presentation; + +import lib.MultiPropertyTest; + +public class _PreviewView extends MultiPropertyTest { + + public void _CurrentPage() { + Object obj1 = tEnv.getObjRelation("FirstPage"); + Object obj2 = tEnv.getObjRelation("SecondPage"); + testProperty("CurrentPage",obj1,obj2); + } +} diff --git a/qadevOOo/tests/java/ifc/presentation/_SlidesView.java b/qadevOOo/tests/java/ifc/presentation/_SlidesView.java new file mode 100644 index 0000000000..db688f604d --- /dev/null +++ b/qadevOOo/tests/java/ifc/presentation/_SlidesView.java @@ -0,0 +1,25 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.presentation; + +import lib.MultiPropertyTest; + +public class _SlidesView extends MultiPropertyTest { + +} diff --git a/qadevOOo/tests/java/ifc/presentation/_XCustomPresentationSupplier.java b/qadevOOo/tests/java/ifc/presentation/_XCustomPresentationSupplier.java new file mode 100644 index 0000000000..8ee1d25095 --- /dev/null +++ b/qadevOOo/tests/java/ifc/presentation/_XCustomPresentationSupplier.java @@ -0,0 +1,49 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.presentation; + +import lib.MultiMethodTest; + +import com.sun.star.container.XNameAccess; +import com.sun.star.presentation.XCustomPresentationSupplier; + +/** +* Testing <code>com.sun.star.presentation.XCustomPresentationSupplier</code> +* interface methods : +* <ul> +* <li><code> getCustomPresentations()</code></li> +* </ul> <p> +* @see com.sun.star.presentation.XCustomPresentationSupplier +*/ +public class _XCustomPresentationSupplier extends MultiMethodTest { + + public XCustomPresentationSupplier oObj = null; + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getCustomPresentations() { + XNameAccess NA = oObj.getCustomPresentations(); + tRes.tested("getCustomPresentations()", NA != null); + } + +} + + diff --git a/qadevOOo/tests/java/ifc/presentation/_XPresentation.java b/qadevOOo/tests/java/ifc/presentation/_XPresentation.java new file mode 100644 index 0000000000..c68af3b779 --- /dev/null +++ b/qadevOOo/tests/java/ifc/presentation/_XPresentation.java @@ -0,0 +1,74 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.presentation; + +import lib.MultiMethodTest; + +import com.sun.star.presentation.XPresentation; + +/** +* Testing <code>com.sun.star.presentation.XPresentation</code> +* interface methods : +* <ul> +* <li><code> start()</code></li> +* <li><code> end()</code></li> +* <li><code> rehearseTimings()</code></li> +* </ul> <p> +* @see com.sun.star.presentation.XPresentation +*/ +public class _XPresentation extends MultiMethodTest { + + public XPresentation oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns. <p> + */ + public void _start() { + oObj.start(); + tRes.tested("start()", true); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> start() </code> : presentation must be started before</li> + * </ul> + */ + public void _end() { + requiredMethod("start()"); + + oObj.end(); + tRes.tested("end()", true); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns. <p> + */ + public void _rehearseTimings() { + oObj.rehearseTimings(); + tRes.tested("rehearseTimings()", true); + } + +} // finish class _XPresentation + + diff --git a/qadevOOo/tests/java/ifc/presentation/_XPresentationSupplier.java b/qadevOOo/tests/java/ifc/presentation/_XPresentationSupplier.java new file mode 100644 index 0000000000..6c32e36b4a --- /dev/null +++ b/qadevOOo/tests/java/ifc/presentation/_XPresentationSupplier.java @@ -0,0 +1,49 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.presentation; + +import lib.MultiMethodTest; + +import com.sun.star.presentation.XPresentation; +import com.sun.star.presentation.XPresentationSupplier; + +/** +* Testing <code>com.sun.star.presentation.XPresentationSupplier</code> +* interface methods : +* <ul> +* <li><code> getPresentation()</code></li> +* </ul> <p> +* @see com.sun.star.presentation.XPresentationSupplier +*/ +public class _XPresentationSupplier extends MultiMethodTest { + + public XPresentationSupplier oObj = null; + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned value isn't null. <p> + */ + public void _getPresentation() { + XPresentation NA = oObj.getPresentation(); + tRes.tested("getPresentation()", NA != null); + } + +} + + diff --git a/qadevOOo/tests/java/ifc/reflection/_XIdlReflection.java b/qadevOOo/tests/java/ifc/reflection/_XIdlReflection.java new file mode 100644 index 0000000000..f77b3ba7b3 --- /dev/null +++ b/qadevOOo/tests/java/ifc/reflection/_XIdlReflection.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 ifc.reflection; + +import com.sun.star.reflection.XIdlClass; +import com.sun.star.reflection.XIdlReflection; +import com.sun.star.uno.TypeClass; +import lib.MultiMethodTest; + +/** +* Testing <code>com.sun.star.reflection.XIdlReflection</code> +* interface methods : +* <ul> +* <li><code> forName()</code></li> +* <li><code> getType()</code></li> +* </ul> <p> +* @see com.sun.star.reflection.XIdlReflection +*/ +public class _XIdlReflection extends MultiMethodTest{ + public XIdlReflection oObj = null; + protected static final String typeName = "com.sun.star.container.XNameAccess"; + + /** + * Test calls the method and checks returned interface + * <code>com.sun.star.container.XNameAccess</code>: gets the name and the + * type and checks it. <p> + * Has <b> OK </b> status if returned name is equal to the name of the + * interface that was passed as parameter in the method call and if returned + * type is equal to <code>com.sun.star.uno.TypeClass.INTERFACE</code>. <p> + */ + public void _forName() { + boolean result = true; + XIdlClass cls = oObj.forName(typeName); + + if (cls != null) { + log.println("Class name: " + cls.getName()); + result &= cls.getTypeClass() == TypeClass.INTERFACE; + result &= typeName.equals(cls.getName()); + } else { + log.println("Method returned null"); + result = false; + } + + tRes.tested("forName()", result); + } + + /** + * Test creates the instance of <code>com.sun.star.io.Pipe</code>, + * calls the method using this instance as parameter and checks returned + * value. <p> + * Has <b> OK </b> status if the instance was created successfully, if + * returned value isn't null and no exceptions were thrown. <p> + */ + public void _getType() { + Object obj = null; + + try { + obj = tParam.getMSF(). + createInstance("com.sun.star.io.Pipe") ; + } catch (com.sun.star.uno.Exception e) { + log.println("Can't create object"); + tRes.tested("getType()", false); + return; + } + + if (obj == null) { + log.println("Object wasn't created !"); + tRes.tested("getType()", false); + } + + XIdlClass cls = oObj.getType(obj); + + if (cls != null) { + log.println("The name is " + cls.getName()); + } + + tRes.tested("getType()", cls != null); + } +} + + diff --git a/qadevOOo/tests/java/ifc/reflection/_XProxyFactory.java b/qadevOOo/tests/java/ifc/reflection/_XProxyFactory.java new file mode 100644 index 0000000000..f278f73725 --- /dev/null +++ b/qadevOOo/tests/java/ifc/reflection/_XProxyFactory.java @@ -0,0 +1,88 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.reflection; + +import lib.MultiMethodTest; + +import com.sun.star.lang.XInitialization; +import com.sun.star.reflection.XProxyFactory; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XAggregation; + +/** +/** +* Testing <code>com.sun.star.reflection.XProxyFactory</code> +* interface methods : +* <ul> +* <li><code> createProxy()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.reflection.XProxyFactory +*/ +public class _XProxyFactory extends MultiMethodTest { + /** Is initialized in super class(using reflection API) + * when instantiating the test. + */ + public XProxyFactory oObj; + + /* + * First an implementation of + * <code>com.sun.star.lang.XInitialization</code> interface + * is made which sets a flag when its <code>initialize()</code> + * method is called. Then an instance of this implementation + * is created and a proxy object is created for it. Proxy + * object is tried to query for <code>XInitialization</code> + * interface and it's <code>initialize</code> method is + * called. The goal is to check if the real object method + * was called through its proxy. <p> + * Has <b>OK</b> status if the real object method was + * called and parameters were passed correctly. + */ + public void _createProxy() { + class MyObject implements XInitialization { + Object[] params; + + public void initialize(Object args[]) { + params = args; + } + } + + MyObject obj = new MyObject(); + + XAggregation xAggr = oObj.createProxy(obj); + + XInitialization xInit = UnoRuntime.queryInterface( + XInitialization.class, xAggr); + + Object params[] = new Object[0]; + + try { + xInit.initialize(params); + } catch(com.sun.star.uno.Exception e) { + log.println("Unexpected exception : " + e.getMessage()); + e.printStackTrace(log); + tRes.tested("createProxy()", false); + return; + } + + tRes.tested("createProxy()", + util.ValueComparer.equalValue(params, obj.params)); + } +} + diff --git a/qadevOOo/tests/java/ifc/reflection/_XTypeDescriptionEnumerationAccess.java b/qadevOOo/tests/java/ifc/reflection/_XTypeDescriptionEnumerationAccess.java new file mode 100644 index 0000000000..b4efdcdd0b --- /dev/null +++ b/qadevOOo/tests/java/ifc/reflection/_XTypeDescriptionEnumerationAccess.java @@ -0,0 +1,86 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.reflection; + +import lib.MultiMethodTest; + +import com.sun.star.reflection.TypeDescriptionSearchDepth; +import com.sun.star.reflection.XTypeDescription; +import com.sun.star.reflection.XTypeDescriptionEnumeration; +import com.sun.star.reflection.XTypeDescriptionEnumerationAccess; +import com.sun.star.uno.TypeClass; + +/** + * Testing <code>com.sun.star.reflection.XTypeDescriptionEnumerationAccess + * </code><br> + * Needed object relation: + * <ul> + * <li><code>SearchString</code> + * A string to search for as a type description</li> + * </ul> + */ +public class _XTypeDescriptionEnumerationAccess extends MultiMethodTest { + public XTypeDescriptionEnumerationAccess oObj = null; + + /** + * Search the type database for all information regarding the object + * relation 'SearchString'. Search depth is infinite and information + * about all types is gathered. + */ + public void _createTypeDescriptionEnumeration() { + int i=0; + TypeClass[] tClass = new TypeClass[0]; + String sString = (String)tEnv.getObjRelation("SearchString"); + if (sString == null || sString.equals("")) { + System.out.println("Cannot get object relation 'SearchString'"); + tRes.tested("createTypeDescriptionEnumeration()", false); + return; + } + try { + XTypeDescriptionEnumeration oEnum = + oObj.createTypeDescriptionEnumeration(sString, tClass, + TypeDescriptionSearchDepth.INFINITE); + try { + log.println("Got an enumeration."); + while (true) { + XTypeDescription desc = oEnum.nextTypeDescription(); + i++; + log.println("\tdesc name: " + desc.getName()); + } + } + catch(com.sun.star.container.NoSuchElementException e) { + log.println( + "Correct exception caught for exiting enumeration."); + log.println("Returned were " + i + " type descriptions."); + } + catch(Exception e) { + log.println("Exception while accessing the enumeration."); + log.println("Index is " + i); + log.println(e.getMessage()); + tRes.tested("createTypeDescriptionEnumeration()", false); + return; + } + tRes.tested("createTypeDescriptionEnumeration()", i>0); + } + catch(Exception e) { + log.println("Cannot execute method."); + log.println(e.getMessage()); + tRes.tested("createTypeDescriptionEnumeration()", false); + } + } +} diff --git a/qadevOOo/tests/java/ifc/registry/_XImplementationRegistration.java b/qadevOOo/tests/java/ifc/registry/_XImplementationRegistration.java new file mode 100644 index 0000000000..7603f8a005 --- /dev/null +++ b/qadevOOo/tests/java/ifc/registry/_XImplementationRegistration.java @@ -0,0 +1,184 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.registry; + +import com.sun.star.registry.XImplementationRegistration; +import com.sun.star.registry.XSimpleRegistry; +import com.sun.star.uno.RuntimeException; +import lib.MultiMethodTest; +import util.RegistryTools; +import util.utils; + +/** +* Testing <code>com.sun.star.registry.XImplementationRegistration</code> +* interface methods : +* <ul> +* <li><code> registerImplementation()</code></li> +* <li><code> revokeImplementation()</code></li> +* <li><code> getImplementations()</code></li> +* <li><code> checkInstantiation()</code></li> +* </ul> <p> +* The following predefined files needed to complete the test: +* <ul> +* <li> <code>solibrary.jar</code> : jar file with implementation +* classes. One of the required implementation must have name +* <code>com.ivistaportal.solibrary.HistogramImpl</code> cause +* it is checked in <code>getImplementations</code> method. </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* After test completion object environment has to be recreated. +* @see com.sun.star +*/ +public class _XImplementationRegistration extends MultiMethodTest { + + public XImplementationRegistration oObj = null; + + private String url = null ; + private String loader = null ; + private XSimpleRegistry reg = null ; + + /** + * First a registry created and opened in the temporary directory + * of StarOffice. Then some implementations situated in JAR file + * is registered in the registry opened. <p> + * Has <b>OK</b> status if some information is written into registry. + * + */ + public void _registerImplementation() + throws RuntimeException + { + url = util.utils.getFullTestURL("qadevlibs/MyPersistObjectImpl.jar"); + loader = "com.sun.star.loader.Java2"; + boolean result = false ; + String name = null; + + try { + name = utils.getOfficeTempDir(tParam.getMSF()) + + "XImplementationRegistration_tmp.rdb"; + reg = RegistryTools.openRegistry + (name, tParam.getMSF()) ; + + oObj.registerImplementation(loader, url, reg) ; + + RegistryTools.printRegistryInfo(reg.getRootKey(), log) ; + + String[] subKeys = reg.getRootKey().getKeyNames() ; + + result = subKeys != null && subKeys.length > 0 ; + + } catch (com.sun.star.uno.Exception e) { + log.println("Can't open registry file: " + name) ; + e.printStackTrace(log) ; + } + tRes.tested("registerImplementation()", result) ; + } + + /** + * Retrieves an array of implementation names and check them. <p> + * Has <b>OK</b> status if among them an implementation name + * <code>com.ivistaportal.solibrary.HistogramImpl</code> exists. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerImplementation </code> </li> + * </ul> + */ + public void _getImplementations() throws RuntimeException{ + requiredMethod("registerImplementation()") ; + + String[] impl = oObj.getImplementations(loader, url) ; + + if (impl.length == 0) log.println("getImplementations() "+ + "returns an empty array"); + boolean result = false ; + log.println("Implementations found :") ; + for (int i = 0; i < impl.length; i++) { + log.println(" '" + impl[i] + "'") ; + if ("com.sun.star.cmp.MyPersistObject". + equals(impl[i])) { + + result = true ; + break ; + } + } + + + + tRes.tested("getImplementations()", result) ; + } + + /** + * Calls the method with + * <code>com.sun.star.comp.stoc.JavaComponentLoader</code> + * implementation name.<p> + * Has <b>OK</b> status if not null array returned. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerImplementation </code> </li> + * </ul> + */ + public void _checkInstantiation() throws RuntimeException { + requiredMethod("registerImplementation()") ; + + String[] inst = oObj.checkInstantiation( + "com.sun.star.comp.stoc.JavaComponentLoader") ; + + tRes.tested("checkInstantiation()", inst != null) ; + } + + /** + * Revokes implementations from registry, and checks if + * all implementations' information is deleted. <p> + * Has <b>OK</b> status if registry has no key entries. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerImplementation </code> : to have + * implementation registered in registry. </li> + * </ul> + * The following method tests are to be executed before : + * <ul> + * <li> <code> getImplementations </code> + * <li> <code> checkInstantiation </code> + * </ul> + */ + public void _revokeImplementation() throws RuntimeException{ + requiredMethod("registerImplementation()") ; + + executeMethod("getImplementations()") ; + executeMethod("checkInstantiation()") ; + + oObj.revokeImplementation(url, reg); + RegistryTools.printRegistryInfo(reg, log) ; + + try { + reg.getRootKey().getKeyNames(); + } catch (com.sun.star.registry.InvalidRegistryException e) { + log.println("!!! Exception retrieving keys from registry :") ; + e.printStackTrace(log); + } + + tRes.tested("revokeImplementation()", true) ; + } + + @Override + public void after() { + this.disposeEnvironment() ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/registry/_XSimpleRegistry.java b/qadevOOo/tests/java/ifc/registry/_XSimpleRegistry.java new file mode 100644 index 0000000000..93dfeb5336 --- /dev/null +++ b/qadevOOo/tests/java/ifc/registry/_XSimpleRegistry.java @@ -0,0 +1,405 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.registry; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import util.RegistryTools; + +import com.sun.star.registry.InvalidRegistryException; +import com.sun.star.registry.XRegistryKey; +import com.sun.star.registry.XSimpleRegistry; + + +/** +* Testing <code>com.sun.star.registry.XSimpleRegistry</code> +* interface methods : +* <ul> +* <li><code> getURL()</code></li> +* <li><code> open()</code></li> +* <li><code> isValid()</code></li> +* <li><code> close()</code></li> +* <li><code> destroy()</code></li> +* <li><code> getRootKey()</code></li> +* <li><code> isReadOnly()</code></li> +* <li><code> mergeKey()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'NR'</code> <b>optional</b> (of type <code>String</code>): +* if this object relation isn't null than the testing component +* doesn't support some methods of the interface +* (<code>open(), close(), destroy()</code>)</li> +* <li> <code>'XSimpleRegistry.open'</code> (of type <code>String</code>): +* The full system path to the registry file which is opened and modified. +* </li> +* <li> <code>'XSimpleRegistry.destroy'</code> (of type <code>String</code>): +* The full system path to the registry file which is destroyed. +* </li> +* <li> <code>'XSimpleRegistry.merge'</code> (of type <code>String</code>): +* The full system path to the registry file which is merged with the +* registry tested. +* </li> +* </ul> <p> +* @see com.sun.star.registry.XSimpleRegistry +*/ +public class _XSimpleRegistry extends MultiMethodTest { + public XSimpleRegistry oObj = null; + protected String nr = null; + protected boolean configuration = false; + protected String openF = null; + protected String destroyF = null; + protected String mergeF = null; + + /** + * Retrieves object relations. + * @throws StatusException If one of required relations not found. + */ + @Override + protected void before() { + if (tEnv.getObjRelation("configuration") != null) { + configuration = true; + } + + nr = (String) tEnv.getObjRelation("NR"); + + openF = (String) tEnv.getObjRelation("XSimpleRegistry.open"); + + if (openF == null) { + throw new StatusException(Status.failed( + "Relation 'XSimpleRegistry.open' not found")); + } + + destroyF = (String) tEnv.getObjRelation("XSimpleRegistry.destroy"); + + if (destroyF == null) { + throw new StatusException(Status.failed( + "Relation 'XSimpleRegistry.destroy' not found")); + } + + mergeF = (String) tEnv.getObjRelation("XSimpleRegistry.merge"); + + if (mergeF == null) { + throw new StatusException(Status.failed( + "Relation 'XSimpleRegistry.merge' not found")); + } + } + + /** + * If the method is supported opens the registry key with the URL + * from <code>'XSimpleRegistry.open'</code> relation, then closes it. <p> + * + * Has <b> OK </b> status if the method isn't supported by the component + * (the object relation <code>'NR'</code> isn't null) or no exceptions were + * thrown during open/close operations. <p> + */ + public void _open() { + if (nr != null) { + log.println("'open()' isn't supported by '" + nr + "'"); + tRes.tested("open()", true); + + return; + } + + log.println("Trying to open registry :" + openF); + + try { + oObj.open(openF, false, true); + oObj.close(); + } catch (InvalidRegistryException e) { + e.printStackTrace(log); + tRes.tested("open()", false); + + return; + } + + tRes.tested("open()", true); + } + + /** + * Test opens the registry key with the URL from + * <code>'XSimpleRegistry.open'</code> relation not only for read, + * calls the method, checks returned value and closes the registry. <p> + * + * Has <b> OK </b> status if returned value is false and no exceptions were + * thrown. <p> + */ + public void _isReadOnly() { + boolean result = false; + + try { + openReg(oObj, openF, false, true); + result = !oObj.isReadOnly(); + closeReg(oObj); + } catch (InvalidRegistryException e) { + e.printStackTrace(log); + result = false; + } + + tRes.tested("isReadOnly()", result); + } + + /** + * Test opens the registry key with the URL from + * <code>'XSimpleRegistry.open'</code> relation, calls the method, + * checks returned value and closes the registry key. <p> + * + * Has <b>OK</b> status if returned value isn't null and no exceptions were + * thrown. <p> + */ + public void _getRootKey() { + boolean result = false; + + try { + openReg(oObj, openF, false, true); + + XRegistryKey rootKey = oObj.getRootKey(); + result = rootKey != null; + closeReg(oObj); + } catch (InvalidRegistryException e) { + e.printStackTrace(log); + result = false; + } + + tRes.tested("getRootKey()", result); + } + + /** + * Merges the current registry with the registry from URL got from + * <code>'XSimpleRegistry.merge'</code> relation under 'MergeKey' key. + * Then the keys of these two registries retrieved : + * <ul> + * <li> Root key from 'XSimpleRegistry.merge' registry </li> + * <li> 'MergeKey' key from the current registry </li> + * </ul> + * Then these two keys are recursively compared. <p> + * + * Has <b> OK </b> status if the method isn't supported by the component + * (the object relation <code>'NR'</code> isn't null) + * or + * if it's supported and after successful merging the keys mentioned + * above are recursively equal. <p> + */ + public void _mergeKey() { + if (configuration) { + log.println( + "You can't merge into this registry. It's just a wrapper for a configuration node, which has a fixed structure which can not be modified"); + tRes.tested("mergeKey()", true); + + return; + } + + if (nr != null) { + log.println("'mergeKey()' isn't supported by '" + nr + "'"); + tRes.tested("mergeKey()", true); + + return; + } + + openReg(oObj, openF, false, true); + + try { + RegistryTools.printRegistryInfo(oObj.getRootKey(), log); + oObj.mergeKey("MergeKey", mergeF); + RegistryTools.printRegistryInfo(oObj.getRootKey(), log); + } catch (com.sun.star.registry.MergeConflictException e) { + e.printStackTrace(log); + tRes.tested("mergeKey()", false); + + return; + } catch (com.sun.star.registry.InvalidRegistryException e) { + e.printStackTrace(log); + tRes.tested("mergeKey()", false); + + return; + } + + boolean isEqual = false; + XSimpleRegistry reg = null; + + try { + reg = RegistryTools.createRegistryService(tParam.getMSF()); + } catch (com.sun.star.uno.Exception e) { + log.print("Can't create registry service: "); + e.printStackTrace(log); + tRes.tested("mergeKey()", false); + + return; + } + + openReg(reg, mergeF, false, true); + + try { + XRegistryKey key = oObj.getRootKey().openKey("MergeKey"); + XRegistryKey mergeKey = reg.getRootKey(); + isEqual = RegistryTools.compareKeyTrees(key, mergeKey); + } catch (com.sun.star.registry.InvalidRegistryException e) { + log.print("Can't get root key: "); + e.printStackTrace(log); + tRes.tested("mergeKey()", false); + + return; + } + + closeReg(reg); + closeReg(oObj); + + tRes.tested("mergeKey()", isEqual); + } + + /** + * Test opens the registry key with the URL from + * <code>'XSimpleRegistry.open'</code> relation, calls the method, + * checks returned value and closes the registry key. <p> + * + * Has <b> OK </b> status if returned value isn't null and if length of the + * returned string is greater than 0. <p> + */ + public void _getURL() { + openReg(oObj, openF, false, true); + + String url = oObj.getURL(); + closeReg(oObj); + log.println("Getting URL: " + url+";"); + tRes.tested("getURL()", (url != null)); + } + + /** + * Test checks value returned by the object relation <code>'NR'</code>, + * opens the registry key with the URL from + * <code>XSimpleRegistry.open'</code> relation, calls the method + * and checks the validity of the registry key. <p> + * + * Has <b> OK </b> status if the registry key isn't valid after the method + * call, or if the method isn't supported by the component (the object + * relation <code>'NR'</code> isn't null). <p> + */ + public void _close() { + if (nr != null) { + log.println("'close()' isn't supported by '" + nr + "'"); + tRes.tested("close()", true); + + return; + } + + try { + oObj.open(openF, false, true); + oObj.close(); + } catch (com.sun.star.registry.InvalidRegistryException e) { + e.printStackTrace(log); + tRes.tested("close()", false); + + return; + } + + tRes.tested("close()", !oObj.isValid()); + } + + /** + * Test checks value returned by the object relation <code>'NR'</code>, + * opens the registry key with the URL from + * <code>'XSimpleRegistry.destroy'</code> relation, calls the method + * and checks the validity of the registry key. <p> + * + * Has <b> OK </b> status if the registry key isn't valid after the method + * call, or if the method isn't supported by the component (the object + * relation <code>'NR'</code> isn't null). <p> + */ + public void _destroy() { + if (configuration) { + log.println( + "This registry is a wrapper for a configuration access. It can not be destroyed."); + tRes.tested("destroy()", true); + + return; + } + + if (nr != null) { + log.println("'destroy()' isn't supported by '" + nr + "'"); + tRes.tested("destroy()", true); + + return; + } + + try { + oObj.open(destroyF, false, true); + oObj.destroy(); + } catch (com.sun.star.registry.InvalidRegistryException e) { + e.printStackTrace(log); + tRes.tested("destroy()", false); + + return; + } + + tRes.tested("destroy()", !oObj.isValid()); + } + + /** + * Test opens the registry key with the URL from + * <code>'XSimpleRegistry.open'</code> relation, calls the method, + * checks returned value and closes the registry key. <p> + * Has <b> OK </b> status if returned value is true. <p> + */ + public void _isValid() { + boolean valid = true; + + openReg(oObj, openF, false, true); + valid = oObj.isValid(); + closeReg(oObj); + + tRes.tested("isValid()", valid); + } + + /** + * Method calls <code>close()</code> of the interface + * <code>com.sun.star.registry.XRegistryKey</code>. <p> + * @param reg interface <code>com.sun.star.registry.XRegistryKey</code> + * @param url specifies the complete URL to access the data source + * @param arg1 specifies if the data source should be opened for read only + * @param arg2 specifies if the data source should be created if it does not + * already exist + */ + public void openReg(XSimpleRegistry reg, String url, boolean arg1, + boolean arg2) { + if (nr == null) { + try { + reg.open(url, arg1, arg2); + } catch (com.sun.star.registry.InvalidRegistryException e) { + log.print("Couldn't open registry:"); + e.printStackTrace(log); + } + } + } + + /** + * Method calls <code>close()</code> of the interface + * <code>com.sun.star.registry.XRegistryKey</code>. <p> + * @param reg <code>com.sun.star.registry.XRegistryKey</code> + */ + public void closeReg(XSimpleRegistry reg) { + if (nr == null) { + try { + reg.close(); + } catch (com.sun.star.registry.InvalidRegistryException e) { + log.print("Couldn't close registry:"); + e.printStackTrace(log); + } + } + } +} diff --git a/qadevOOo/tests/java/ifc/script/_XEventAttacherManager.java b/qadevOOo/tests/java/ifc/script/_XEventAttacherManager.java new file mode 100644 index 0000000000..b0375c257a --- /dev/null +++ b/qadevOOo/tests/java/ifc/script/_XEventAttacherManager.java @@ -0,0 +1,492 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.script; + +import lib.MultiMethodTest; + +import com.sun.star.lang.EventObject; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.script.ScriptEvent; +import com.sun.star.script.ScriptEventDescriptor; +import com.sun.star.script.XEventAttacherManager; +import com.sun.star.script.XScriptListener; + +/** +* Testing <code>com.sun.star.script.XEventAttacherManager</code> +* interface methods : +* <ul> +* <li><code> registerScriptEvent()</code></li> +* <li><code> registerScriptEvents()</code></li> +* <li><code> revokeScriptEvent()</code></li> +* <li><code> revokeScriptEvents()</code></li> +* <li><code> insertEntry()</code></li> +* <li><code> removeEntry()</code></li> +* <li><code> getScriptEvents()</code></li> +* <li><code> attach()</code></li> +* <li><code> detach()</code></li> +* <li><code> addScriptListener()</code></li> +* <li><code> removeScriptListener()</code></li> +* </ul> <p> +* @see com.sun.star.script.XEventAttacherManager +*/ +public class _XEventAttacherManager extends MultiMethodTest { + + /** + * oObj filled by MultiMethodTest + */ + public XEventAttacherManager oObj = null; + + private static final int index = 0; + + /** + * Test calls the method and stores index of new entry. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _insertEntry() { + try { + oObj.insertEntry(index); + tRes.tested("insertEntry()", true); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("insertEntry(" + index + + ") throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("insertEntry()", false); + } + } + + ScriptEventDescriptor desc; + + /** + * Test creates <code>ScriptEventDescriptor</code>, registers + * the script event and stores the descriptor. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> insertEntry() </code> : to have entry's index</li> + * </ul> + * @see com.sun.star.script.ScriptEventDescriptor + */ + public void _registerScriptEvent() { + requiredMethod("insertEntry()"); + desc = new ScriptEventDescriptor( + "XEventListener1", + "disposing", "", "Basic", ""); + + try { + oObj.registerScriptEvent(index, desc); + tRes.tested("registerScriptEvent()", true); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("registerScriptEvent() throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("registerScriptEvent()", false); + } + } + + ScriptEventDescriptor descs[]; + + /** + * Test creates array of <code>ScriptEventDescriptor</code>, registers + * this script events and stores the descriptors. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> insertEntry() </code> : to have entry's index</li> + * </ul> + * @see com.sun.star.script.ScriptEventDescriptor + */ + public void _registerScriptEvents() { + requiredMethod("insertEntry()"); + descs = new ScriptEventDescriptor[] { + new ScriptEventDescriptor( + "XEventListener2", + "disposing", "", "Basic", ""), + new ScriptEventDescriptor( + "XEventListener3", + "disposing", "", "Basic", "") + }; + + try { + oObj.registerScriptEvents(index, descs); + tRes.tested("registerScriptEvents()", true); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("registerScriptEvents() throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("registerScriptEvents()", false); + } + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned array of descriptors contains + * array of descriptors registered by methods <code>registerScriptEvents</code> + * and <code>registerScriptEvent</code> and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerScriptEvent() </code> : + * to have registered descriptor </li> + * <li> <code> registerScriptEvents() </code> : + * to have registered descriptors </li> + * </ul> + */ + public void _getScriptEvents() { + requiredMethod("registerScriptEvent()"); + requiredMethod("registerScriptEvents()"); + + ScriptEventDescriptor[] res; + + try { + res = oObj.getScriptEvents(index); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("registerScriptEvents() throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("registerScriptEvents()", false); + return; + } + + // checking the desc and descs are in script events + tRes.tested("getScriptEvents()", + contains(res, desc) && containsArray(res, descs)); + + log.println("Script events :") ; + printEvents(res) ; + } + + /** + * Method checks that array of descriptors contains the concrete descriptor. + * @param container the array of descriptors + * @param evt the descriptor which presence in the array is checked + * @return true if the descriptor presence in the array + */ + boolean contains(ScriptEventDescriptor[] container, + ScriptEventDescriptor evt) { + for (int i = 0; i < container.length; i++) { + if (equal(container[i], evt)) { + return true; + } + } + + return false; + } + + /** + * Method checks that one array of descriptors contains + * another array of descriptors. + * @param container the array of descriptors + * @param events the array of descriptors which presence + * in array <code>container</code> is checked + * @return true if the array <code>events</code> contains in the array + * <code>container</code> + */ + boolean containsArray(ScriptEventDescriptor[] container, + ScriptEventDescriptor[] events) { + for (int i = 0; i < events.length; i++) { + if (!contains(container, events[i])) { + return false; + } + } + + return true; + } + + /** + * Compares descriptor <code>evt1</code> to descriptor <code>evt2</code>. + * Two descriptors are considered equal if all their fields are equal. + * @return true if the argument is not <code>null</code> and + * the descriptors are equal; false otherwise + */ + boolean equal(ScriptEventDescriptor evt1, + ScriptEventDescriptor evt2) { + return evt1.ListenerType.equals(evt2.ListenerType) + && evt1.EventMethod.equals(evt2.EventMethod) + && evt1.ScriptType.equals(evt2.ScriptType) + && evt1.ScriptCode.equals(evt2.ScriptCode) + && evt1.AddListenerParam.equals(evt2.AddListenerParam); + } + + /** + * Prints fields of descriptor <code>evt</code> to log. + * @param evt the descriptor that needs to be printed to log + */ + void printEvent(ScriptEventDescriptor evt) { + if (evt == null) { + log.println("null"); + } else { + log.println("\"" + evt.ListenerType + "\",\"" + + evt.EventMethod + "\",\"" + + evt.ScriptType + "\",\"" + + evt.ScriptCode + "\",\"" + + evt.AddListenerParam + "\""); + } + } + + /** + * Prints the descriptors to log. + * @param events the array of descriptors that need to be printed to log + */ + void printEvents(ScriptEventDescriptor events[]) { + if (events == null) { + log.println("null"); + } else { + for (int i = 0; i < events.length; i++) { + printEvent(events[i]); + } + } + } + + Object attachedObject; + + /** + * Test creates instance of <code>NamingService</code> (arbitrarily), + * stores it and attaches it to the entry with index stored in the method + * <code>insertEntry()</code>. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> insertEntry() </code> : to have entry's index for attach</li> + */ + public void _attach() { + requiredMethod("insertEntry()"); + + try { + XMultiServiceFactory xMSF = tParam.getMSF(); + attachedObject = xMSF.createInstance + ( "com.sun.star.uno.NamingService" ); + } catch( com.sun.star.uno.Exception e ) { + log.println("com.sun.star.uno.NamingService not available" ); + e.printStackTrace(log); + tRes.tested("attach()", false); + return; + } + if (attachedObject == null) { + log.println("com.sun.star.uno.NamingService not available" ); + tRes.tested("attach()", false); + return; + } + + try { + oObj.attach(index, attachedObject, "param"); + tRes.tested("attach()", true); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("attach() throws exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("attach()", false); + } catch (com.sun.star.lang.ServiceNotRegisteredException e) { + log.println("attach() throws exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("attach()", false); + } + } + + /** + * Test calls the method for the object that was stored in the method + * <code>attach()</code>. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> attach() </code> : to have attached object </li> + * </ul> + */ + public void _detach() { + requiredMethod("attach()"); + + try { + oObj.detach(index, attachedObject); + tRes.tested("detach()", true); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("detach() throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("detach()", false); + } + } + + /** + * Test revokes script event that was registered by method + * <code>registerScriptEvent()</code> and checks that the description + * was removed. <p> + * Has <b> OK </b> status if description was successfully removed. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerScriptEvent() </code> : + * to have registered descriptor </li> + * </ul> + * The following method tests are to be executed before : + * <ul> + * <li> <code> getScriptEvents() </code> : + * this method must be executed first </li> + * </ul> + */ + public void _revokeScriptEvent() { + requiredMethod("registerScriptEvent()"); + executeMethod("getScriptEvents()") ; + + try { + oObj.revokeScriptEvent(index, desc.ListenerType, + desc.EventMethod, ""); + + ScriptEventDescriptor[] res = oObj.getScriptEvents(index); + // checking that the desc has been removed + tRes.tested("revokeScriptEvent()", !contains(res, desc)); + printEvents(res) ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("revokeScriptEvent() throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("revokeScriptEvent()", false); + } + } + + /** + * Test revokes script events that was registered by method + * <code>registerScriptEvents()</code> and checks that the descriptions + * were removed. <p> + * Has <b> OK </b> status if descriptions were successfully removed. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> revokeScriptEvent() </code> : + * this method must be executed first </li> + * </ul> + * The following method tests are to be executed before : + * <ul> + * <li> <code> getScriptEvents() </code> : + * this method must be executed first </li> + * </ul> + */ + public void _revokeScriptEvents() { + requiredMethod("revokeScriptEvent()"); + executeMethod("getScriptEvents()") ; + + try { + oObj.revokeScriptEvents(index); + + ScriptEventDescriptor[] res = oObj.getScriptEvents(index); + // checking that all events have been removed + tRes.tested("revokeScriptEvents()", + res == null || res.length == 0); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("revokeScriptEvents() throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("revokeScriptEvents()", false); + } + } + + /** + * Test calls the method with entry's index that was stored in method + * <code>insertEntry()</code>. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> insertEntry() </code> : + * to have entry's index </li> + */ + public void _removeEntry() { + requiredMethod("insertEntry()"); + try { + oObj.removeEntry(index); + tRes.tested("removeEntry()", true); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("removeEntry(" + index + + ") throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("removeEntry()", false); + } + } + + XScriptListener listener; + + /** + * Test creates object that supports interface <code>XScriptListener</code>, + * stores it and adds this scripts listener. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * @see com.sun.star.script.XScriptListener + */ + public void _addScriptListener() { + listener = new MyScriptListener(); + + try { + oObj.addScriptListener(listener); + tRes.tested("addScriptListener()", true); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("addScriptListener() throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("addScriptListener()", false); + } + } + + /** + * Test removes script listener that was stored in method + * <code>addScriptListener()</code>. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addScriptListener() </code> : + * to have script listener </li> + * </ul> + */ + public void _removeScriptListener() { + requiredMethod("addScriptListener()"); + + try { + oObj.removeScriptListener(listener); + tRes.tested("removeScriptListener()", true); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("removeScriptListener() throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("removeScriptListener()", false); + } + } + + /** + * Class implement interface <code>XScriptListener</code> + * for test of the method <code>addScriptListener()</code>. + * No functionality implemented. + * @see com.sun.star.script.XScriptListener + */ + static class MyScriptListener implements XScriptListener { + public void firing(ScriptEvent evt) { + } + + public Object approveFiring(ScriptEvent evt) { + return evt.Helper; + } + + public void disposing(EventObject evt) { + } + } + +} + diff --git a/qadevOOo/tests/java/ifc/script/_XInvocationAdapterFactory.java b/qadevOOo/tests/java/ifc/script/_XInvocationAdapterFactory.java new file mode 100644 index 0000000000..1475b7380d --- /dev/null +++ b/qadevOOo/tests/java/ifc/script/_XInvocationAdapterFactory.java @@ -0,0 +1,103 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.script; + +import lib.MultiMethodTest; +import lib.StatusException; + +import com.sun.star.io.XInputStream; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.lang.XSingleServiceFactory; +import com.sun.star.script.XInvocation; +import com.sun.star.script.XInvocationAdapterFactory; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Testing <code>com.sun.star.script.XInvocationAdapterFactory</code> +* interface methods : +* <ul> +* <li><code> createAdapter()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.script.XInvocationAdapterFactory +*/ +public class _XInvocationAdapterFactory extends MultiMethodTest { + + /** + * oObj filled by MultiMethodTest + */ + public XInvocationAdapterFactory oObj = null; + + /** + * First an invocation object of <code>com.sun.star.io.Pipe</code> + * instance is created using <code>com.sun.star.script.Invocation + * </code> service. Then trying to create an adapter of this + * invocation for <code>com.sun.star.io.XInputStream</code> + * interface. <p> + * Has <b>OK</b> status if the adapter returned is successfully + * queried for <code>com.sun.star.io.XInputStream</code> + * interface. + * @see com.sun.star.script.Invocation + * @see com.sun.star.script.XInvocation + * @see com.sun.star.io.Pipe + */ + public void _createAdapter() { + XInvocation xInv = null ; + XMultiServiceFactory xMSF = null; + try { + xMSF = tParam.getMSF(); + Object[] args = {xMSF.createInstance + ("com.sun.star.io.Pipe")}; + + Object oInvFac = xMSF.createInstance + ("com.sun.star.script.Invocation") ; + + XSingleServiceFactory xInvFac = UnoRuntime. + queryInterface(XSingleServiceFactory.class, oInvFac) ; + + Object oInv = xInvFac.createInstanceWithArguments(args) ; + + xInv = UnoRuntime.queryInterface + (XInvocation.class, oInv) ; + + } catch (com.sun.star.uno.Exception e) { + e.printStackTrace(log) ; + throw new StatusException("Can't create invocation for object", e) ; + } + + XInterface xInStr = null ; + + Object adp = oObj.createAdapter(xInv, + new Type(XInputStream.class)) ; + + xInStr = UnoRuntime.queryInterface + (XInputStream.class, adp) ; + + + if (xInStr != null) + tRes.tested("createAdapter()", true) ; + else { + log.println("Adapter created doesn't implement required interface") ; + tRes.tested("createAdapter()", false) ; + } + } +} + diff --git a/qadevOOo/tests/java/ifc/script/_XInvocationAdapterFactory2.java b/qadevOOo/tests/java/ifc/script/_XInvocationAdapterFactory2.java new file mode 100644 index 0000000000..ba38e2e725 --- /dev/null +++ b/qadevOOo/tests/java/ifc/script/_XInvocationAdapterFactory2.java @@ -0,0 +1,105 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.script; + +import lib.MultiMethodTest; +import lib.StatusException; + +import com.sun.star.io.XInputStream; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.lang.XSingleServiceFactory; +import com.sun.star.script.XInvocation; +import com.sun.star.script.XInvocationAdapterFactory2; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** +* Testing <code>com.sun.star.script.XInvocationAdapterFactory</code> +* interface methods : +* <ul> +* <li><code> createAdapter()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.script.XInvocationAdapterFactory +*/ +public class _XInvocationAdapterFactory2 extends MultiMethodTest { + + /** + * oObj filled by MultiMethodTest + */ + public XInvocationAdapterFactory2 oObj = null; + + /** + * First an invocation object of <code>com.sun.star.io.Pipe</code> + * instance is created using <code>com.sun.star.script.Invocation + * </code> service. Then trying to create an adapter of this + * invocation for <code>com.sun.star.io.XInputStream</code> + * interface. <p> + * Has <b>OK</b> status if the adapter returned is successfully + * queried for <code>com.sun.star.io.XInputStream</code> + * interface. + * @see com.sun.star.script.Invocation + * @see com.sun.star.script.XInvocation + * @see com.sun.star.io.Pipe + */ + public void _createAdapter() { + XInvocation xInv = null ; + XMultiServiceFactory xMSF = null; + try { + xMSF = tParam.getMSF(); + Object[] args = {xMSF.createInstance + ("com.sun.star.io.Pipe")}; + + Object oInvFac = xMSF.createInstance + ("com.sun.star.script.Invocation") ; + + XSingleServiceFactory xInvFac = UnoRuntime. + queryInterface(XSingleServiceFactory.class, oInvFac) ; + + Object oInv = xInvFac.createInstanceWithArguments(args) ; + + xInv = UnoRuntime.queryInterface + (XInvocation.class, oInv) ; + + } catch (com.sun.star.uno.Exception e) { + e.printStackTrace(log) ; + throw new StatusException("Can't create invocation for object", e) ; + } + + XInterface xInStr = null ; + + Type[] types = new Type[1]; + types[0] = new Type(XInputStream.class); + + Object adp = oObj.createAdapter(xInv,types); + + xInStr = UnoRuntime.queryInterface + (XInputStream.class, adp) ; + + + if (xInStr != null) + tRes.tested("createAdapter()", true) ; + else { + log.println("Adapter created doesn't implement required interface") ; + tRes.tested("createAdapter()", false) ; + } + } +} + diff --git a/qadevOOo/tests/java/ifc/script/_XTypeConverter.java b/qadevOOo/tests/java/ifc/script/_XTypeConverter.java new file mode 100644 index 0000000000..3e42a16d9a --- /dev/null +++ b/qadevOOo/tests/java/ifc/script/_XTypeConverter.java @@ -0,0 +1,122 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.script; + +import lib.MultiMethodTest; + +import com.sun.star.container.XSet; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.script.XTypeConverter; +import com.sun.star.uno.Any; +import com.sun.star.uno.Type; +import com.sun.star.uno.TypeClass; + +/** +* Testing <code>com.sun.star.script.XTypeConverter</code> +* interface methods : +* <ul> +* <li><code> convertTo()</code></li> +* <li><code> convertToSimpleType()</code></li> +* </ul> <p> +* @see com.sun.star.script.XTypeConverter +*/ +public class _XTypeConverter extends MultiMethodTest { + + /** + * oObj filled by MultiMethodTest + */ + public XTypeConverter oObj = null; + + /** + * Test creates instance of <code>TypeDescriptionManager</code>, + * and converts it to <code>XSet</code>. <p> + * Has <b> OK </b> status if returned value is instance of <code>XSet</code> + * and no exceptions were thrown. <p> + * @see com.sun.star.comp.stoc.TypeDescriptionManager + * @see com.sun.star.container.XSet + */ + public void _convertTo() { + XMultiServiceFactory xMSF = tParam.getMSF() ; + Object value = null ; + + try { + value = xMSF.createInstance + ("com.sun.star.comp.stoc.TypeDescriptionManager") ; + } catch (com.sun.star.uno.Exception e) { + log.println("Can't create value to convert") ; + e.printStackTrace(log) ; + tRes.tested("convertTo()", false) ; + } + + try { + Type destType = new Type(XSet.class) ; + + Object o = oObj.convertTo(value, destType); + + boolean result; + if (o instanceof Any) { + result = ((Any)o).getType().equals(destType); + } + else { + result = (o instanceof XSet); + } + + tRes.tested("convertTo()", result) ; + } catch (com.sun.star.script.CannotConvertException e) { + log.println("Exception while converting value.") ; + e.printStackTrace(log) ; + tRes.tested("convertTo()", false) ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while converting value.") ; + e.printStackTrace(log) ; + tRes.tested("convertTo()", false) ; + } + } + + /** + * Test creates instance of <code>Integer</code>, + * and converts it to <code>String</code>. <p> + * Has <b> OK </b> status if returned value is instance of <code>String</code>, + * if returned value is string representation of integer value that + * was passed to method and no exceptions were thrown. <p> + */ + public void _convertToSimpleType() { + Object value = Integer.valueOf(123) ; + Object destValue = null ; + + try { + destValue = oObj.convertToSimpleType(value, TypeClass.STRING) ; + } catch (com.sun.star.script.CannotConvertException e) { + log.println("Exception while converting value.") ; + e.printStackTrace(log) ; + tRes.tested("convertToSimpleType()", false) ; + return ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while converting value.") ; + e.printStackTrace(log) ; + tRes.tested("convertToSimpleType()", false) ; + return ; + } + + tRes.tested("convertToSimpleType()", destValue != null && + destValue instanceof String && + ((String) destValue).equals("123")) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/sdb/_DataAccessDescriptor.java b/qadevOOo/tests/java/ifc/sdb/_DataAccessDescriptor.java new file mode 100644 index 0000000000..fda6ad1926 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_DataAccessDescriptor.java @@ -0,0 +1,116 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import com.sun.star.sdbc.XConnection; +import com.sun.star.sdbc.XResultSet; +import com.sun.star.uno.UnoRuntime; +import lib.MultiPropertyTest; + +public class _DataAccessDescriptor extends MultiPropertyTest { + + /** + * Tested with custom property tester. + */ + public void _ResultSet() { + String propName = "ResultSet"; + try{ + + log.println("try to get value from property..."); + UnoRuntime.queryInterface(XResultSet.class,oObj.getPropertyValue(propName)); + + log.println("try to get value from object relation..."); + XResultSet newValue = UnoRuntime.queryInterface(XResultSet.class,tEnv.getObjRelation("DataAccessDescriptor.XResultSet")); + + log.println("set property to a new value..."); + oObj.setPropertyValue(propName, newValue); + + log.println("get the new value..."); + XResultSet getValue = UnoRuntime.queryInterface(XResultSet.class,oObj.getPropertyValue(propName)); + + tRes.tested(propName, this.compare(newValue, getValue)); + } catch (com.sun.star.beans.PropertyVetoException e){ + log.println("could not set property '"+ propName +"' to a new value!"); + tRes.tested(propName, false); + } catch (com.sun.star.lang.IllegalArgumentException e){ + log.println("could not set property '"+ propName +"' to a new value!"); + tRes.tested(propName, false); + } catch (com.sun.star.beans.UnknownPropertyException e){ + if (this.isOptional(propName)){ + // skipping optional property test + log.println("Property '" + propName + + "' is optional and not supported"); + tRes.tested(propName,true); + + } else { + log.println("could not get property '"+ propName +"' from XPropertySet!"); + tRes.tested(propName, false); + } + } catch (com.sun.star.lang.WrappedTargetException e){ + log.println("could not get property '"+ propName +"' from XPropertySet!"); + tRes.tested(propName, false); + } + } + + /** + * Tested with custom property tester. + */ + public void _ActiveConnection() { + String propName = "ActiveConnection"; + try{ + + log.println("try to get value from property..."); + UnoRuntime.queryInterface(XConnection.class,oObj.getPropertyValue(propName)); + + log.println("try to get value from object relation..."); + XConnection newValue = UnoRuntime.queryInterface(XConnection.class,tEnv.getObjRelation("DataAccessDescriptor.XConnection")); + + log.println("set property to a new value..."); + oObj.setPropertyValue(propName, newValue); + + log.println("get the new value..."); + XConnection getValue = UnoRuntime.queryInterface(XConnection.class,oObj.getPropertyValue(propName)); + + tRes.tested(propName, this.compare(newValue, getValue)); + } catch (com.sun.star.beans.PropertyVetoException e){ + log.println("could not set property '"+ propName +"' to a new value! " + e.toString()); + tRes.tested(propName, false); + } catch (com.sun.star.lang.IllegalArgumentException e){ + log.println("could not set property '"+ propName +"' to a new value! " + e.toString()); + tRes.tested(propName, false); + } catch (com.sun.star.beans.UnknownPropertyException e){ + if (this.isOptional(propName)){ + // skipping optional property test + log.println("Property '" + propName + + "' is optional and not supported"); + tRes.tested(propName,true); + + } else { + log.println("could not get property '"+ propName +"' from XPropertySet!"); + tRes.tested(propName, false); + } + } catch (com.sun.star.lang.WrappedTargetException e){ + log.println("could not get property '"+ propName +"' from XPropertySet!"); + tRes.tested(propName, false); + } + } + +} + + diff --git a/qadevOOo/tests/java/ifc/sdb/_DataSource.java b/qadevOOo/tests/java/ifc/sdb/_DataSource.java new file mode 100644 index 0000000000..e693d781a8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_DataSource.java @@ -0,0 +1,165 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import lib.MultiPropertyTest; + +import com.sun.star.beans.PropertyValue; + +/** + * Testing <code>com.sun.star.sdb.DataSource</code> + * service properties : + * <ul> + * <li><code> Name</code></li> + * <li><code> URL</code></li> + * <li><code> Info</code></li> + * <li><code> User</code></li> + * <li><code> Password</code></li> + * <li><code> IsPasswordRequired</code></li> + * <li><code> SuppressVersionColumns</code></li> + * <li><code> IsReadOnly</code></li> + * <li><code> NumberFormatsSupplier</code></li> + * <li><code> TableFilter</code></li> + * <li><code> TableTypeFilter</code></li> + * </ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code> <p>. +* After this interface test <b>it's better to recreate</b> object tested. +* @see com.sun.star.beans.XPropertySet +* @see com.sun.star.beans.XPropertySetInfo +* @see com.sun.star.beans.Property +* @see com.sun.star.lang.XServiceInfo +*/ +public class _DataSource extends MultiPropertyTest { + + /** + * This property is an array of additional parameters for database + * connecting. Parameter is <code>PropertyValue</code> structure. + * The test just changes existing array onto array with a single + * element <code>("user", "API_QA_Tester")</code> <p> + * + * After testing old value is set for this property. <p> + * + * Result is OK: if property successfully changed with no exceptions. + * @see com.sun.star.beans.PropertyValue + */ + public void _Info() { + try { + Object oldInfo = oObj.getPropertyValue("Info") ; + + testProperty("Info", new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + + PropertyValue propUsr = new PropertyValue(), + propPass = new PropertyValue() ; + + propUsr.Name = "user" ; + propUsr.Value = "API_QA_Tester" ; + propPass.Name = "password" ; + propPass.Value = "guest" ; + + return new PropertyValue[] { propUsr, propPass } ; + } + }) ; + + oObj.setPropertyValue("Info", oldInfo) ; + } 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) {} + } + + /** + * Property is tested by the common method, but after testing + * old value is set for this property. + */ + public void _URL() { + try { + Object oldURL = oObj.getPropertyValue("URL") ; + + testProperty("URL") ; + + oObj.setPropertyValue("URL", oldURL) ; + } 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) {} + } + + /** + * Property is tested by the common method, but after testing + * old value is set for this property. + */ + public void _User() { + try { + Object oldUser = oObj.getPropertyValue("User") ; + + testProperty("User") ; + + oObj.setPropertyValue("User", oldUser) ; + } 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) {} + } + + /** + * Property is tested by the common method, but after testing + * old value is set for this property. + */ + public void _Password() { + try { + Object oldPass = oObj.getPropertyValue("Password") ; + + testProperty("Password") ; + + oObj.setPropertyValue("Password", oldPass) ; + } 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) {} + } + + /** + * New value for the test is always <code>null</code>. + */ + public void _NumberFormatsSupplier() { + testProperty("NumberFormatsSupplier", new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + return null ; + } + }) ; + } + + /** + * If object test allows to recreate environment it is better to do it. + */ + @Override + public void after() { + try { + oObj.setPropertyValue("IsPasswordRequired",Boolean.FALSE); + } catch (Exception e) { + log.println("Couldn't set 'IsPasswordRequired' to false"); + } + } + +} // finish class _DataSource + + diff --git a/qadevOOo/tests/java/ifc/sdb/_DatasourceAdministrationDialog.java b/qadevOOo/tests/java/ifc/sdb/_DatasourceAdministrationDialog.java new file mode 100644 index 0000000000..747ffe5d01 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_DatasourceAdministrationDialog.java @@ -0,0 +1,36 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import lib.MultiPropertyTest; + +/** + * Testing <code>com.sun.star.sdb.DatasourceAdministrationDialog</code> + * service properties : + * <ul> + * <li><code> Title</code></li> + * <li><code> ParentWindow</code></li> + * </ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.sdb.DatasourceAdministrationDialog + */ +public class _DatasourceAdministrationDialog extends MultiPropertyTest { + +} // EOF DatasourceAdministrationDialog + diff --git a/qadevOOo/tests/java/ifc/sdb/_ErrorMessageDialog.java b/qadevOOo/tests/java/ifc/sdb/_ErrorMessageDialog.java new file mode 100644 index 0000000000..fcdc4f3f9d --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_ErrorMessageDialog.java @@ -0,0 +1,60 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import lib.MultiPropertyTest; + +/** + * Testing <code>com.sun.star.sdb.ErrorMessageDialog</code> + * service properties : + * <ul> + * <li><code> Title</code></li> + * <li><code> ParentWindow</code></li> + * <li><code> SQLException</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'ERR1', 'ERR2'</code> + * (of type <code>com.sun.star.sdbc.SQLException</code>): + * two objects which are used for changing 'SQLException' + * property. </li> + * <ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.sdb.ErrorMessageDialog + */ +public class _ErrorMessageDialog extends MultiPropertyTest { + + /** + * <code>SQLException</code> instances must be used as property + * value. + */ + public void _SQLException() { + log.println("Testing with custom Property tester") ; + testProperty("SQLException", tEnv.getObjRelation("ERR1"), + tEnv.getObjRelation("ERR2")) ; + } + + public void _ParentWindow(){ + log.println("Testing with custom Property tester"); + testProperty("ParentWindow", tEnv.getObjRelation("ERR_XWindow"), null); + } + +} // finish class _ErrorMessageDialog + + diff --git a/qadevOOo/tests/java/ifc/sdb/_QueryDefinition.java b/qadevOOo/tests/java/ifc/sdb/_QueryDefinition.java new file mode 100644 index 0000000000..efd49829bf --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_QueryDefinition.java @@ -0,0 +1,46 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import lib.MultiPropertyTest; + +/** + * Testing <code>com.sun.star.sdb.QueryDefinition</code> + * service properties : + * <ul> + * <li><code> Name</code></li> + * <li><code> Command</code></li> + * <li><code> EscapeProcessing</code></li> + * <li><code> UpdateTableName</code></li> + * <li><code> UpdateCatalogName</code></li> + * <li><code> UpdateSchemaName</code></li> + * </ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.sdb.QueryDefinition + * @see com.sun.star.beans.XPropertySet + * @see com.sun.star.beans.XPropertySetInfo + * @see com.sun.star.beans.Property + * @see com.sun.star.lang.XServiceInfo + */ +public class _QueryDefinition extends MultiPropertyTest { + + +} // finish class _QueryDefinition + + diff --git a/qadevOOo/tests/java/ifc/sdb/_RowSet.java b/qadevOOo/tests/java/ifc/sdb/_RowSet.java new file mode 100644 index 0000000000..9064a14113 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_RowSet.java @@ -0,0 +1,144 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import lib.MultiPropertyTest; +import lib.StatusException; + +import com.sun.star.sdbc.XConnection; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; + +/** + * Testing <code>com.sun.star.sdb.RowSet</code> + * service properties : + * <ul> + * <li><code> ActiveConnection</code></li> + * <li><code> DataSourceName</code></li> + * <li><code> Command</code></li> + * <li><code> CommandType</code></li> + * <li><code> ActiveCommand</code></li> + * <li><code> IgnoreResult</code></li> + * <li><code> Filter</code></li> + * <li><code> ApplyFilter</code></li> + * <li><code> Order</code></li> + * <li><code> Privileges</code></li> + * <li><code> IsModified</code></li> + * <li><code> IsNew</code></li> + * <li><code> RowCount</code></li> + * <li><code> IsRowCountFinal</code></li> + * <li><code> UpdateTableName</code></li> + * <li><code> UpdateCatalogName</code></li> + * <li><code> UpdateSchemaName</code></li> + * </ul> <p> + * + * Properties are tested in a safe way, this means that old + * properties' values are restored to their previous values + * after testing. These values are meaningful for further + * testing. <p> + * + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.sdb.RowSet + */ +public class _RowSet extends MultiPropertyTest { + + /** + * The tester implementation which restores properties + * values after testing. + */ + protected class SafeTester extends PropertyTester { + Object oldValue = null ; + + @Override + protected Object getNewValue(String prop, Object old) { + log.println("Testing with SafeTester ...") ; + oldValue = old ; + return super.getNewValue(prop, old) ; + } + + @Override + protected void checkResult(String propName, Object oldValue, + Object newValue, Object resValue, Exception exception) + throws Exception { + + super.checkResult(propName, oldValue, newValue, resValue, exception); + + try { + oObj.setPropertyValue(propName, this.oldValue); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception while setting property to its old value '" + + this.oldValue + "' (ignoring) : " + e ); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while setting property to its old value '" + + this.oldValue + "' (ignoring) : " + e ); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("Exception while setting property to its old value '" + + this.oldValue + "' (ignoring) : " + e ); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception while setting property to its old value '" + + this.oldValue + "' (ignoring) : " + e ); + } + + } + } + + /** + * Overridden method which tests all the properties + * with <code>SafeTester</code>. + * + * @see SafeTester + */ + @Override + protected void testProperty(String propName) { + testProperty(propName, new SafeTester()) ; + } + + public void _ActiveConnection() { + boolean result = false; + try { + XConnection the_connection = null; + + try { + the_connection = (XConnection) AnyConverter.toObject( + new Type(XConnection.class), + oObj.getPropertyValue("ActiveConnection")); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + throw new StatusException("couldn't convert Any",iae); + } + + result = (the_connection != null); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("the property is unknown"); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println(e.getMessage()); + } + + tRes.tested("ActiveConnection", result) ; + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + +} // EOF DatasourceAdministrationDialog + diff --git a/qadevOOo/tests/java/ifc/sdb/_SingleSelectQueryComposer.java b/qadevOOo/tests/java/ifc/sdb/_SingleSelectQueryComposer.java new file mode 100644 index 0000000000..082bb74152 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_SingleSelectQueryComposer.java @@ -0,0 +1,41 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import lib.MultiPropertyTest; + +/** + * Testing <code>com.sun.star.sdb.SingleSelectQueryComposer</code> + * service properties : + * <ul> + * <li><code> Original</code></li> + * </ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.sdb.SingleSelectQueryComposer + * @see com.sun.star.beans.XPropertySet + * @see com.sun.star.beans.XPropertySetInfo + * @see com.sun.star.beans.Property + * @see com.sun.star.lang.XServiceInfo + */ +public class _SingleSelectQueryComposer extends MultiPropertyTest { + + +} // finish class _SingleSelectQueryComposer + + diff --git a/qadevOOo/tests/java/ifc/sdb/_XBookmarksSupplier.java b/qadevOOo/tests/java/ifc/sdb/_XBookmarksSupplier.java new file mode 100644 index 0000000000..a0ddfdd578 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_XBookmarksSupplier.java @@ -0,0 +1,51 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import lib.MultiMethodTest; + +import com.sun.star.container.XNameAccess; +import com.sun.star.sdb.XBookmarksSupplier; + + +/** + * Testing <code>com.sun.star.sdb.XBookmarksSupplier</code> + * interface methods : + * <ul> + * <li><code> getBookmarks()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.sdb.XBookmarksSupplier + */ +public class _XBookmarksSupplier extends MultiMethodTest { + + public XBookmarksSupplier oObj = null ; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getBookmarks() { + XNameAccess bookmarks = oObj.getBookmarks(); + tRes.tested("getBookmarks()",bookmarks != null); + } + +} // finish class _XBookmarksSupplier + diff --git a/qadevOOo/tests/java/ifc/sdb/_XCompletedConnection.java b/qadevOOo/tests/java/ifc/sdb/_XCompletedConnection.java new file mode 100644 index 0000000000..12542edaae --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_XCompletedConnection.java @@ -0,0 +1,75 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import lib.MultiMethodTest; +import lib.StatusException; + +import com.sun.star.sdb.XCompletedConnection; +import com.sun.star.sdbc.XConnection; +import com.sun.star.task.XInteractionHandler; + +/** + * Testing <code>com.sun.star.sdb.XCompletedConnection</code> + * interface methods : + * <ul> + * <li><code> connectWithCompletion()</code></li> + * </ul> <p> +* The following object relations required : +* <ul> +* <li> <code>'XCompletedConnection.Handler'</code> : passed as parameter +* to <code>connectWithCompletion</code> method. </li> +* </ul> +* @see com.sun.star.sdb.XCompletedConnection +* @see com.sun.star.task.XInteractionHandler +* @see com.sun.star.sdbc.XConnection +*/ +public class _XCompletedConnection extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XCompletedConnection oObj = null ; + + /** + * Test call the method with handler passed as object relation. + * Then value returned is checked.<p> + * Has OK status if not null value returned. < > + * FAILED if exception occurred, null value returned or object + * relation was not found. + */ + public void _connectWithCompletion() throws StatusException { + XInteractionHandler handler = (XInteractionHandler) + tEnv.getObjRelation("XCompletedConnection.Handler") ; + + if (handler == null) { + log.println("Required object relation not found !") ; + tRes.tested("connectWithCompletion()", false) ; + return ; + } + + XConnection con = null ; + try { + con = oObj.connectWithCompletion(handler) ; + } catch (com.sun.star.sdbc.SQLException e) { + throw new StatusException("Exception while method calling", e) ; + } + + tRes.tested("connectWithCompletion()", con != null) ; + } +} // finish class _XCompletedConnection + diff --git a/qadevOOo/tests/java/ifc/sdb/_XCompletedExecution.java b/qadevOOo/tests/java/ifc/sdb/_XCompletedExecution.java new file mode 100644 index 0000000000..548b86c96b --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_XCompletedExecution.java @@ -0,0 +1,77 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.sdb; + +import com.sun.star.sdb.XCompletedExecution; +import com.sun.star.task.XInteractionHandler; +import java.io.PrintWriter; +import lib.MultiMethodTest; +import lib.StatusException; + +/** + * + */ +public class _XCompletedExecution extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XCompletedExecution oObj = null ; + + private CheckInteractionHandler checkHandler = null; + /** + * Interface to implement so the call of the listener can be checked. + */ + public interface CheckInteractionHandler extends XInteractionHandler { + /** + * Set a log of the listener, so messages of the listener get printed + * into the file of the interface + */ + void setLog(PrintWriter log); + /** + * Return True, when the listener was called correctly. + */ + boolean checkInteractionHandler(); + } + + @Override + protected void before() { + checkHandler = (CheckInteractionHandler) + tEnv.getObjRelation("InteractionHandlerChecker"); + if (checkHandler == null) + throw new StatusException("Missing object relation 'InteractionHandlerChecker'", new Exception()); + checkHandler.setLog(log); + } + + + public void _executeWithCompletion() { + try { + oObj.executeWithCompletion(checkHandler); + } + catch(com.sun.star.sdbc.SQLException e) { + e.printStackTrace(log); + tRes.tested("executeWithCompletion()", false); + return; + } + + tRes.tested("executeWithCompletion()", checkHandler.checkInteractionHandler()); + } + + @Override + protected void after() { + disposeEnvironment(); + } +} diff --git a/qadevOOo/tests/java/ifc/sdb/_XFormDocumentsSupplier.java b/qadevOOo/tests/java/ifc/sdb/_XFormDocumentsSupplier.java new file mode 100644 index 0000000000..3ca6252814 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_XFormDocumentsSupplier.java @@ -0,0 +1,55 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import lib.MultiMethodTest; + +import com.sun.star.container.XNameAccess; +import com.sun.star.sdb.XFormDocumentsSupplier; + +/** +* <code>com.sun.star.sdb.XFormDocumentsSupplier</code> interface +* testing. +* @see com.sun.star.sdb.XFormDocumentsSupplier +*/ +public class _XFormDocumentsSupplier extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XFormDocumentsSupplier oObj = null ; + + /** + * Has OK status if not null returned. <p> + */ + public void _getFormDocuments() { + + XNameAccess docs = oObj.getFormDocuments() ; + + String[] docNames = docs.getElementNames() ; + if (docNames != null) { + log.println("Totally " + docNames.length + " documents :") ; + for (int i = 0; i < docNames.length; i++) + log.println(" " + docNames[i]) ; + } + + tRes.tested("getFormDocuments()", docNames != null) ; + } + +} // finish class _XFormDocumentsSupplier + + diff --git a/qadevOOo/tests/java/ifc/sdb/_XParametersSupplier.java b/qadevOOo/tests/java/ifc/sdb/_XParametersSupplier.java new file mode 100644 index 0000000000..0c40f8547a --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_XParametersSupplier.java @@ -0,0 +1,52 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import com.sun.star.container.XIndexAccess; +import com.sun.star.sdb.XParametersSupplier; +import lib.MultiMethodTest; + +/** +* Testing <code>com.sun.star.sdb.XParametersSupplier</code> +* interface methods : +* <ul> +* <li><code> getParameters()</code></li> +* </ul> <p> +* Test is multithread compliant. <p> +* @see com.sun.star.sdb.XParametersSupplier +*/ +public class _XParametersSupplier extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XParametersSupplier oObj = null ; + + /** + * checks of the return of <code>getParameters()</code> + * is not null + */ + public void _getParameters() { + + XIndexAccess the_Set = oObj.getParameters(); + if (the_Set == null) log.println("'getParameters()' returns NULL"); + tRes.tested("getParameters()",the_Set != null); + + } +} // finish class _XParametersSupplier + + diff --git a/qadevOOo/tests/java/ifc/sdb/_XQueryDefinitionsSupplier.java b/qadevOOo/tests/java/ifc/sdb/_XQueryDefinitionsSupplier.java new file mode 100644 index 0000000000..a8d88983a3 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_XQueryDefinitionsSupplier.java @@ -0,0 +1,60 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import lib.MultiMethodTest; + +import com.sun.star.container.XNameAccess; +import com.sun.star.sdb.XQueryDefinitionsSupplier; + +/** + * Testing <code>com.sun.star.sdb.XQueryDefinitionsSupplier</code> + * interface methods : + * <ul> + * <li><code> getQueryDefinitions()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.sdb.XQueryDefinitionsSupplier + */ +public class _XQueryDefinitionsSupplier extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XQueryDefinitionsSupplier oObj = null ; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getQueryDefinitions() { + + XNameAccess docs = oObj.getQueryDefinitions() ; + + String[] docNames = docs.getElementNames() ; + if (docNames != null) { + log.println("Totally " + docNames.length + " queries :") ; + for (int i = 0; i < docNames.length; i++) + log.println(" " + docNames[i]) ; + } + + tRes.tested("getQueryDefinitions()", docNames != null) ; + } + +} // finish class _XQueryDefinitionsSupplier + diff --git a/qadevOOo/tests/java/ifc/sdb/_XReportDocumentsSupplier.java b/qadevOOo/tests/java/ifc/sdb/_XReportDocumentsSupplier.java new file mode 100644 index 0000000000..fe1b5f0b1e --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_XReportDocumentsSupplier.java @@ -0,0 +1,55 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import lib.MultiMethodTest; + +import com.sun.star.container.XNameAccess; +import com.sun.star.sdb.XReportDocumentsSupplier; + +/** +* <code>com.sun.star.sdb.XReportDocumentsSupplier</code> interface +* testing. +* @see com.sun.star.sdb.XReportDocumentsSupplier +*/ +public class _XReportDocumentsSupplier extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XReportDocumentsSupplier oObj = null ; + + /** + * Has OK status if not null returned. <p> + */ + public void _getReportDocuments() { + + XNameAccess docs = oObj.getReportDocuments() ; + + String[] docNames = docs.getElementNames() ; + if (docNames != null) { + log.println("Totally " + docNames.length + " documents :") ; + for (int i = 0; i < docNames.length; i++) + log.println(" " + docNames[i]) ; + } + + tRes.tested("getReportDocuments()", docNames != null) ; + } + +} // finish class _XReportDocumentsSupplier + + diff --git a/qadevOOo/tests/java/ifc/sdb/_XResultSetAccess.java b/qadevOOo/tests/java/ifc/sdb/_XResultSetAccess.java new file mode 100644 index 0000000000..f689c6cbfd --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_XResultSetAccess.java @@ -0,0 +1,60 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import lib.MultiMethodTest; + +import com.sun.star.sdb.XResultSetAccess; +import com.sun.star.sdbc.XResultSet; + +/** +* Testing <code>com.sun.star.sdb.XResultSetAccess</code> +* interface methods : +* <ul> +* <li><code> createResultSet()</code></li> +* </ul> <p> +* Test is multithread compliant. <p> +* @see com.sun.star.sdb.XResultSetAccess +*/ +public class _XResultSetAccess extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XResultSetAccess oObj = null ; + + /** + * tries to create a ResultSet for the Object</br> + * an XResultSet is returned.</br> + * The test is OK if a not null ResultSet is returned + */ + public void _createResultSet() { + + try { + XResultSet the_Set = oObj.createResultSet(); + if (the_Set == null) log.println("'createResulSet()' returns NULL"); + tRes.tested("createResultSet()",the_Set != null); + } catch (com.sun.star.sdbc.SQLException e) { + log.println("Exception while checking 'createResultSet()'"); + e.printStackTrace(log); + tRes.tested("createResultSet()",false); + } + + } +} // finish class _XResultSetAccess + + diff --git a/qadevOOo/tests/java/ifc/sdb/_XRowSetApproveBroadcaster.java b/qadevOOo/tests/java/ifc/sdb/_XRowSetApproveBroadcaster.java new file mode 100644 index 0000000000..62911c8515 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_XRowSetApproveBroadcaster.java @@ -0,0 +1,207 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.lang.EventObject; +import com.sun.star.sdb.RowChangeEvent; +import com.sun.star.sdb.XRowSetApproveBroadcaster; +import com.sun.star.sdb.XRowSetApproveListener; + +/** +* <code>com.sun.star.sdb.XRowSetApproveBroadcaster</code> interface test. <p> +* Required object relations : +* <ul> +* <li> <code>'XRowSetApproveBroadcaster.ApproveChecker'</code>: +* implementation of inner interface <code>RowSetApproveChecker</code> +* which can move cursor within a rowset, change row, and change the +* whole rowset. </li> +* </ul> <p> +* It is better to recreate the object after test, because of unknown +* actions made by <code>RowSetApproveChecker</code> interface implementation. +* +* @see com.sun.star.sdb.XRowSetApproveBroadcaster +* @see _XRowSetApproveBroadcaster.RowSetApproveChecker +*/ +public class _XRowSetApproveBroadcaster extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XRowSetApproveBroadcaster oObj = null ; + + /** + * The purpose of this interface is to pass to this test + * relation which can make some operations with row set + * on which <code>XRowSetApproveListener</code>s can react. + * @see com.sun.star.sdb.XRowSetApproveListener + */ + public interface RowSetApproveChecker { + /** + * Moves cursor within row set. Method <code>approveCursorMove</code> + * of <code>XRowSetApproveListener</code> must be called. + */ + void moveCursor() ; + /** + * Change rows in row set. Method <code>approveRowChange</code> + * of <code>XRowSetApproveListener</code> must be called. + * @return <code>RowChangeEvent</code> structure which contains + * what type of change was made and how many rows it affected. + * @see com.sun.star.sdb.RowChangeEvent + */ + RowChangeEvent changeRow() ; + /** + * Change the whole row set. Method <code>approveRowSetChange</code> + * of <code>XRowSetApproveListener</code> must be called. + */ + void changeRowSet() ; + } + + /** + * Implementation of <code>XRowSetApproveListener</code> interface + * which just detects and stores approve requirements. They are checked + * later. + */ + private static class TestListener implements XRowSetApproveListener { + public boolean approveRequests = true ; + public boolean approveCursorMoveCalled = false ; + public boolean approveRowChangeCalled = false ; + public RowChangeEvent approveRowChangeEvent = null ; + public boolean approveRowSetChangeCalled = false ; + + public TestListener(boolean approve) { + approveRequests = approve ; + } + + public void reset() { + approveCursorMoveCalled = false ; + approveRowChangeCalled = false ; + approveRowSetChangeCalled = false ; + } + public boolean approveCursorMove(EventObject ev) { + approveCursorMoveCalled = true ; + return approveRequests ; + } + public boolean approveRowChange(RowChangeEvent ev) { + approveRowChangeCalled = true ; + approveRowChangeEvent = ev ; + return approveRequests ; + } + public boolean approveRowSetChange(EventObject ev) { + approveRowSetChangeCalled = true ; + return approveRequests ; + } + public void disposing(EventObject ev) {} + } + private TestListener listener1 = null ; + + private RowSetApproveChecker checker = null ; + + /** + * Tries to retrieve object relation. + */ + @Override + public void before() { + checker = (RowSetApproveChecker) tEnv.getObjRelation + ("XRowSetApproveBroadcaster.ApproveChecker") ; + + if (checker == null) { + log.println("!!! Relation for test not found !!!") ; + throw new StatusException(Status.failed + ("!!! Relation for test not found !!!")) ; + } + } + + /** + * Creates and adds listener, then call <code>RowSetApproveChecker</code> + * methods for listener methods to be called. Then checks if + * listener methods were called on appropriate actions. <p> + * Has OK status : If and only if appropriate listener methods called, + * and listener <code>approveRowChange</code> method has write parameter, + * i.e. type and rows number expected. + */ + public void _addRowSetApproveListener() { + listener1 = new TestListener(true) ; + oObj.addRowSetApproveListener(listener1) ; + log.println("Listener added.") ; + + boolean result = true ; + + checker.moveCursor() ; + log.println("Cursor moved.") ; + result &= listener1.approveCursorMoveCalled ; + + listener1.reset() ; + RowChangeEvent actualEvent = checker.changeRow() ; + log.println("Row changed.") ; + + RowChangeEvent event = listener1.approveRowChangeEvent ; + result &= listener1.approveRowChangeCalled ; + + boolean eventOK = event.Action == actualEvent.Action && + event.Rows == actualEvent.Rows ; + + result &= eventOK ; + + listener1.reset() ; + checker.changeRowSet(); + log.println("Row set changed.") ; + result &= listener1.approveRowSetChangeCalled ; + + tRes.tested("addRowSetApproveListener()", result) ; + } + + /** + * Removes listener inserted before, then perform all actions + * on which listener must react. <p> + * Has OK status if no listener methods were called. <p> + * Methods required to pass before : + * <ul> + * <li> <code>_addRowSetApproveListener</code> </li> + * </ul> + */ + public void _removeRowSetApproveListener() { + requiredMethod("addRowSetApproveListener()") ; + + listener1.reset() ; + + oObj.removeRowSetApproveListener(listener1) ; + + checker.moveCursor() ; + checker.changeRow() ; + checker.changeRowSet() ; + + tRes.tested("removeRowSetApproveListener()", + !listener1.approveCursorMoveCalled && + !listener1.approveRowChangeCalled && + !listener1.approveRowSetChangeCalled) ; + } + + /** + * Disposes object environment. + */ + @Override + public void after() { + disposeEnvironment() ; + } + +} // finish class _XRowSetApproveBroadcaster + + diff --git a/qadevOOo/tests/java/ifc/sdb/_XSQLErrorBroadcaster.java b/qadevOOo/tests/java/ifc/sdb/_XSQLErrorBroadcaster.java new file mode 100644 index 0000000000..ca2efa664a --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_XSQLErrorBroadcaster.java @@ -0,0 +1,29 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.sdb; + +import com.sun.star.sdb.XSQLErrorBroadcaster; +import lib.MultiMethodTest; + +/** + * + */ +public class _XSQLErrorBroadcaster extends MultiMethodTest { + + public XSQLErrorBroadcaster oObj = null; +} diff --git a/qadevOOo/tests/java/ifc/sdb/_XSingleSelectQueryAnalyzer.java b/qadevOOo/tests/java/ifc/sdb/_XSingleSelectQueryAnalyzer.java new file mode 100644 index 0000000000..5557924edd --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_XSingleSelectQueryAnalyzer.java @@ -0,0 +1,290 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import com.sun.star.sdb.XSingleSelectQueryAnalyzer; +import lib.MultiMethodTest; +import com.sun.star.sdb.XSingleSelectQueryComposer; +import com.sun.star.uno.UnoRuntime; +import lib.StatusException; +import lib.Status; +import com.sun.star.beans.PropertyValue; +import com.sun.star.container.XIndexAccess; + +/** +* Testing <code>com.sun.star.sdb.XSingleSelectQueryAnalyzer</code> +* interface methods : +* <ul> +* <li><code>getQuery()</code></li> +* <li><code>setQuery()</code></li> +* <li><code>getFilter()</code></li> +* <li><code>getStructuredFilter()</code></li> +* <li><code>getGroup()</code></li> +* <li><code>getGroupColumns()</code></li> +* <li><code>getHavingClause()</code></li> +* <li><code>getStructuredHavingClause()</code></li> +* <li><code>getOrder()</code></li> +* <li><code>getOrderColumns()</code></li> + +* </ul> <p> +* @see com.sun.star.sdb.XSingleSelectQueryAnalyzer +*/ +public class _XSingleSelectQueryAnalyzer extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XSingleSelectQueryAnalyzer oObj = null ; + + private static final String queryString = "SELECT * FROM \"biblio\""; + + private XSingleSelectQueryComposer xComposer = null; + + /** + * Receives the object relations: + * <ul> + * <li><code>XSingleSelectQueryComposer xCompoer</code></li> + * </ul> <p> + * @see com.sun.star.sdb.XSingleSelectQueryComposer + */ + @Override + protected void before() { + + xComposer = UnoRuntime.queryInterface(XSingleSelectQueryComposer.class, + tEnv.getObjRelation("xComposer")); + + if (xComposer == null) { + throw new StatusException(Status.failed( + "Couldn't get object relation 'xComposer'. Test must be modified")); + + } + + } + /** + * call <code>setQuery()</code> once with valid query, once with invalid + * query. Has ok if only on second call <code>SQLException</code> was thrown + */ + public void _setQuery() { + + try{ + oObj.setQuery("This is an invalid SQL query"); + } catch (com.sun.star.sdbc.SQLException e){ + log.println("expected Exception. "); + } + + try{ + oObj.setQuery(queryString); + } catch (com.sun.star.sdbc.SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("setQuery()", false); + } + tRes.tested("setQuery()", true); + } + + /** + * checks of the returned value of <code>getQuery()</code> + * equals the string which was set by <code>setQuery()</code> + * <p> + * required methods: + *<ul> + * <li><code>setQuery</code></li> + *</ul> + */ + public void _getQuery() { + this.requiredMethod("setQuery()"); + + boolean res = false; + + res = oObj.getQuery().equals(queryString); + + tRes.tested("getQuery()", res); + } + + + /** + * Object relation <code>xComposer</code> set a filter. This filter + * must returned while calling <code>getFilter</code> + */ + public void _getFilter() { + try{ + String filter = "\"Identifier\" = 'BOR02b'"; + xComposer.setFilter(filter); + tRes.tested("getFilter()", oObj.getFilter().equals(filter)); + + } catch (com.sun.star.sdbc.SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("getFilter()", false); + } + } + + /** + * Object relation <code>xComposer</code> set a complex filter with method + . <code>setFilter</code>. Then <code>getStructuredFilter</code> returns a + * sequence of <code>PropertyValue</code> which was set with method + * <code>setStructuredFilter</code> from <xComposer>. + * Then test has ok status if <getFilter> returns the complex filter. + * <p> + * required methods: + *<ul> + * <li><code>setQuery</code></li> + * <li><code>getFilter</code></li> + *</ul> + */ + public void _getStructuredFilter() { + requiredMethod("setQuery()"); + requiredMethod("getFilter()"); + try{ + oObj.setQuery("SELECT \"Identifier\", \"Type\", \"Address\" FROM \"biblio\" \"biblio\""); + String complexFilter = "( \"Identifier\" >= '1' AND \"Type\" <= '4' ) OR ( \"Identifier\" <> '2' AND \"Type\" = '5' ) OR ( \"Identifier\" < '3' AND \"Type\" > '6' AND \"Address\" = '7' ) OR ( \"Address\" >= '8' ) OR ( \"Type\" = '9' )"; + xComposer.setFilter(complexFilter); + PropertyValue[][] aStructuredFilter = oObj.getStructuredFilter(); + + xComposer.setFilter(""); + xComposer.setStructuredFilter(aStructuredFilter); + tRes.tested("getStructuredFilter()", oObj.getFilter().equals(complexFilter)); + + } catch (com.sun.star.sdbc.SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("getStructuredFilter()", false); + } catch (com.sun.star.lang.IllegalArgumentException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("getStructuredFilter()", false); + } + } + + /** + * Object relation <code>xComposer</code> set a group. This group + * must returned while calling <code>getGroup</code> + */ + public void _getGroup() { + try{ + String group = "\"Identifier\""; + xComposer.setGroup(group); + tRes.tested("getGroup()", oObj.getGroup().equals(group)); + + } catch (com.sun.star.sdbc.SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("getGroup()", false); + } + } + + /** + * Method <code>getGroupColumns</code> returns a <code>XIndexAccess</code> + * Test has ok status if returned value is a usable <code>XIndexAccess</code> + */ + public void _getGroupColumns() { + try{ + XIndexAccess xGroupColumns = oObj.getGroupColumns(); + + tRes.tested("getGroupColumns()", (xGroupColumns != null && + xGroupColumns.getCount() == 1 && + xGroupColumns.getByIndex(0) != null)); + + } catch (com.sun.star.lang.IndexOutOfBoundsException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("getGroupColumns()", false); + } catch (com.sun.star.lang.WrappedTargetException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("getGroupColumns()", false); + } + } + + /** + * Object relation <code>xComposer</code> set a clause. This clause + * must returned while calling <code>getHavingClause</code> + */ + public void _getHavingClause() { + try{ + String clause = "\"Identifier\" = 'BOR02b'"; + xComposer.setHavingClause(clause); + tRes.tested("getHavingClause()", oObj.getHavingClause().equals(clause)); + + } catch (com.sun.star.sdbc.SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("getHavingClause()", false); + } + } + + /** + * Object relation <code>xComposer</code> set a clause. This clause + * must returned while calling <code>getHavingClause</code> + * <p> + * required methods: + *<ul> + * <li><code>setQuery</code></li> + * <li><code>getFilter</code></li> + * <li><code>getStructuredFilter</code></li> + *</ul> + */ + public void _getStructuredHavingClause() { + requiredMethod("setQuery()"); + requiredMethod("getFilter()"); + executeMethod("getStructuredFilter()"); + + String complexFilter = "( \"Identifier\" >= '1' AND \"Type\" <= '4' ) OR ( \"Identifier\" <> '2' AND \"Type\" = '5' ) OR ( \"Identifier\" < '3' AND \"Type\" > '6' AND \"Address\" = '7' ) OR ( \"Address\" >= '8' ) OR ( \"Type\" = '9' )"; + try{ + xComposer.setHavingClause(complexFilter); + PropertyValue[][] aStructuredHaving = oObj.getStructuredHavingClause(); + xComposer.setHavingClause(""); + xComposer.setStructuredHavingClause(aStructuredHaving); + tRes.tested("getStructuredHavingClause()", + oObj.getHavingClause().equals(complexFilter)); + + } catch (com.sun.star.sdbc.SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("getStructuredHavingClause()", false); + } + } + + /** + * Object relation <code>xComposer</code> set an order. This order + * must returned while calling <code>getOrder</code> + */ + public void _getOrder() { + try{ + String order = "\"Identifier\""; + xComposer.setOrder(order); + tRes.tested("getOrder()", oObj.getOrder().equals(order)); + + } catch (com.sun.star.sdbc.SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("getOrder()", false); + } + } + + /** + * Method <code>getGroupColumns</code> returns a <code>XIndexAccess</code> + * Test has ok status if returned value is a usable <code>XIndexAccess</code> + */ + public void _getOrderColumns() { + try{ + XIndexAccess xOrderColumns = oObj.getOrderColumns(); + tRes.tested("getOrderColumns()", (xOrderColumns != null && + xOrderColumns.getCount() == 1 && + xOrderColumns.getByIndex(0) != null)); + + } catch (com.sun.star.lang.IndexOutOfBoundsException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("getOrderColumns()", false); + } catch (com.sun.star.lang.WrappedTargetException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("getOrderColumns()", false); + } + } + + +} // finish class _XSingleSelectQueryAnalyzer diff --git a/qadevOOo/tests/java/ifc/sdb/_XSingleSelectQueryComposer.java b/qadevOOo/tests/java/ifc/sdb/_XSingleSelectQueryComposer.java new file mode 100644 index 0000000000..53b31f6931 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdb/_XSingleSelectQueryComposer.java @@ -0,0 +1,521 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdb; + +import com.sun.star.sdb.XSingleSelectQueryComposer; +import lib.MultiMethodTest; +import com.sun.star.sdb.XSingleSelectQueryAnalyzer; +import com.sun.star.sdbc.XResultSet; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.UnoRuntime; +import lib.StatusException; +import lib.Status; +import com.sun.star.beans.PropertyValue; +import com.sun.star.beans.XPropertySet; +import com.sun.star.sdb.SQLFilterOperator; +import com.sun.star.sdbc.SQLException; + +/** +* Testing <code>com.sun.star.sdb.XSingleSelectQueryComposer</code> +* interface methods : +* <ul> +* <li><code>setFilter()</code></li> +* <li><code>setStructuredFilter()</code></li> +* <li><code>appendFilterByColumn()</code></li> +* <li><code>appendGroupByColumn()</code></li> +* <li><code>setGroup()</code></li> +* <li><code>setHavingClause()</code></li> +* <li><code>setStructuredHavingClause()</code></li> +* <li><code>appendHavingClauseByColumn()</code></li> +* <li><code>appendOrderByColumn()</code></li> +* <li><code>setOrder()</code></li> + +* </ul> <p> +* @see com.sun.star.sdb.XSingleSelectQueryComposer +*/ +public class _XSingleSelectQueryComposer extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XSingleSelectQueryComposer oObj = null ; + + private XSingleSelectQueryAnalyzer xQueryAna = null; + + private XPropertySet xProp = null; + + private String colName = null; + + private XResultSet xReSet = null; + + /** + * Retrieves the object relations: + * <ul> + * <li><code>XSingleSelectQueryAnalyzer xQueryAna</code></li> + * <li><code>XPropertySet xProp</code></li> + * <li><code>String colName</code></li> + * </ul> <p> + * @see com.sun.star.sdb.XSingleSelectQueryAnalyzer + * @see com.sun.star.beans.XPropertySet + */ + @Override + protected void before() /* throws Exception*/ { + + xQueryAna = UnoRuntime.queryInterface(XSingleSelectQueryAnalyzer.class, + tEnv.getObjRelation("xQueryAna")); + + if (xQueryAna == null) { + throw new StatusException(Status.failed( + "Couldn't get object relation 'xQueryAna'. Test must be modified")); + + } + + xProp = UnoRuntime.queryInterface(XPropertySet.class, + tEnv.getObjRelation("xProp")); + + if (xProp == null) { + throw new StatusException(Status.failed( + "Couldn't get object relation 'xProp'. Test must be modified")); + + } + + xReSet = UnoRuntime.queryInterface(XResultSet.class, + tEnv.getObjRelation("xResultSet")); + + if (xReSet == null) { + throw new StatusException(Status.failed( + "Couldn't get object relation 'xResultSet'. Test must be modified")); + + } + + try + { + colName = AnyConverter.toString(tEnv.getObjRelation("colName")); + } + catch (com.sun.star.lang.IllegalArgumentException e) + { + colName = null; + } + + if (colName == null) { + throw new StatusException(Status.failed( + "Couldn't get object relation 'colName'. Test must be modified")); + + } + + } + + + /** + * Object relation <code>xQueryAna</code> set a filter. This filter + * must returned while calling <code>getFilter</code> + */ + public void _setFilter() { + try{ + String filter = "\"Identifier\" = 'BOR02b'"; + oObj.setFilter(filter); + tRes.tested("setFilter()", xQueryAna.getFilter().equals(filter)); + + } catch (SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("setFilter()", false); + } + } + + /** + * Object relation <code>xQueryAna</code> set a complex filter with method + . <code>setFilter</code>. Then <code>getStructuredFilter</code> returns a + * sequence of <code>PropertyValue</code> which was set with method + * <code>setStructuredFilter</code> from <code>xQueryAna</code>. + * Then test has ok status if <code>getFilter</code> returns the complex filter. + */ + public void _setStructuredFilter() { + requiredMethod("setFilter()"); + try{ + xQueryAna.setQuery("SELECT \"Identifier\", \"Type\", \"Address\" FROM \"biblio\" \"biblio\""); + String complexFilter = "( \"Identifier\" >= '1' AND \"Type\" <= '4' ) OR ( \"Identifier\" <> '2' AND \"Type\" = '5' ) OR ( \"Identifier\" < '3' AND \"Type\" > '6' AND \"Address\" = '7' ) OR ( \"Address\" >= '8' ) OR ( \"Type\" = '9' )"; + oObj.setFilter(complexFilter); + PropertyValue[][] aStructuredFilter = xQueryAna.getStructuredFilter(); + oObj.setFilter(""); + oObj.setStructuredFilter(aStructuredFilter); + tRes.tested("setStructuredFilter()", xQueryAna.getFilter().equals(complexFilter)); + + } catch (SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("setStructuredFilter()", false); + } catch (com.sun.star.lang.IllegalArgumentException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("setStructuredFilter()", false); + } + } + + /** + * At first the object relation <code>xProp</code> was set as parameter. + * Relation <code>xQueryAna</code> was used to check if relation + * <code>colName</code> was found. + * Second an empty <code>XPropertySet</code> was used as parameter. A + * <code>SQLException</code> must be thrown. + */ + public void _appendFilterByColumn() { + boolean ok = true; + try + { + xReSet.beforeFirst(); + } + catch (SQLException e) + { + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendFilterByColumn()", false); + } + try + { + oObj.appendFilterByColumn(xProp, true,SQLFilterOperator.EQUAL); + log.println("expected Exception was not thrown"); + tRes.tested("appendFilterByColumn()", false); + ok = false; + } + catch (com.sun.star.uno.RuntimeException e) + { + log.println("expected Exception: " + e.toString()); + ok = ok && true; + } + catch (SQLException e) + { + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendFilterByColumn()", false); + } + catch (com.sun.star.lang.WrappedTargetException e) + { + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendFilterByColumn()", false); + } + + try + { + xReSet.first(); + } + catch (SQLException e) + { + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendFilterByColumn()", false); + } + try{ + + oObj.appendFilterByColumn(xProp, true,SQLFilterOperator.EQUAL); + log.println("appendFilterByColumn: " + xQueryAna.getFilter()); + ok = ok && (xQueryAna.getFilter().indexOf(colName) > 0); + + } catch (SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendFilterByColumn()", false); + } + catch (com.sun.star.lang.WrappedTargetException e) + { + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendFilterByColumn()", false); + } + + try{ + + oObj.appendFilterByColumn(xProp, false,SQLFilterOperator.EQUAL); + log.println("appendFilterByColumn: " + xQueryAna.getFilter()); + ok = ok && (xQueryAna.getFilter().indexOf(colName) > 0); + + } catch (SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendFilterByColumn()", false); + } catch (com.sun.star.lang.WrappedTargetException e) + { + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendFilterByColumn()", false); + } + + try{ + XPropertySet dummy = null; + oObj.appendFilterByColumn(dummy, true,SQLFilterOperator.EQUAL); + log.println("expected Exception was not thrown"); + tRes.tested("appendFilterByColumn()", false); + + } catch (SQLException e){ + log.println("expected Exception"); + ok = ok && true; + } catch (com.sun.star.lang.WrappedTargetException e) + { + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendFilterByColumn()", false); + } + + try + { + xReSet.beforeFirst(); + } + catch (SQLException e) + { + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendFilterByColumn()", false); + } + tRes.tested("appendFilterByColumn()", ok); + } + + /** + * At first the object relation <code>xProp</code> was used as parameter. + * Relation <code>xQueryAna</code> was used to check if relation + * <code>colName</code> was found. + * Second an empty <code>XPropertySet</code> was used as parameter. An + * <code>SQLException</code> must be thrown. + */ + public void _appendGroupByColumn() { + boolean ok = true; + try{ + + oObj.appendGroupByColumn(xProp); + log.println("appendGroupByColumn: " + xQueryAna.getFilter()); + ok = ok && (xQueryAna.getFilter().indexOf(colName) > 0); + + } catch (SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendGroupByColumn()", false); + } + try{ + XPropertySet dummy = null; + oObj.appendGroupByColumn(dummy); + log.println("expected Exception was not thrown"); + tRes.tested("appendGroupByColumn()", false); + + } catch (SQLException e){ + log.println("expected Exception"); + ok = ok && true; + } + tRes.tested("appendGroupByColumn()", ok); + } + + /** + * The group which was set by <code>setGroup</code> must be returned + * while calling from object relation <code>XQueryAna</code> + * method <code>getGroup</code> + */ + public void _setGroup() { + try{ + String group = "\"Identifier\""; + oObj.setGroup(group); + tRes.tested("setGroup()", xQueryAna.getGroup().equals(group)); + + } catch (SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("setGroup()", false); + } + } + + + /** + * The clause which was set by <code>setHavingClause</code> must be returned + * while calling from object relation <code>XQueryAna</code> + * method <code>getHavingClause</code> + */ + public void _setHavingClause() { + try{ + String clause = "\"Identifier\" = 'BOR02b'"; + oObj.setHavingClause(clause); + tRes.tested("setHavingClause()", + xQueryAna.getHavingClause().equals(clause)); + + } catch (SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("setHavingClause()", false); + } + } + + /** + * At first <code>setHavingClause</code> sets a complex clause. + * Then method <code>getStructuredHavingClause</code> from object relation + * <code>xQueryAna</code> returns a valid <code>PropertyValue[][]</code> + * Method <code>setHavingClause</code> was called with an empty string to + * reset filter. Now <code>setStructuredHavingClause</code> with the valid + * <code>PropertyValue[][]</code> as parameter was called. + * Test is ok if <code>getHavingClause</code> from <code>xQueryAna</code> + * returns the complex clause from beginning. + * <p> + * required methods: + *<ul> + * <li><code>setHavingClause</code></li> + * <li><code>setStructuredFilter</code></li> + *</ul> + */ + public void _setStructuredHavingClause() { + requiredMethod("setHavingClause()"); + executeMethod("setStructuredFilter()"); + String complexFilter = "( \"Identifier\" >= '1' AND \"Type\" <= '4' ) OR ( \"Identifier\" <> '2' AND \"Type\" = '5' ) OR ( \"Identifier\" < '3' AND \"Type\" > '6' AND \"Address\" = '7' ) OR ( \"Address\" >= '8' ) OR ( \"Type\" = '9' )"; + try{ + oObj.setHavingClause(complexFilter); + PropertyValue[][] aStructuredHaving = + xQueryAna.getStructuredHavingClause(); + oObj.setHavingClause(""); + oObj.setStructuredHavingClause(aStructuredHaving); + tRes.tested("setStructuredHavingClause()", + xQueryAna.getHavingClause().equals(complexFilter)); + + } catch (SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("setStructuredHavingClause()", false); + } + } + + /** + * First object relation <code>xProp</code> was used as parameter. Relation + * <code>xQueryAna</code> was used to check if relation <code>colName</code> + * was found. + * Second an empty <code>XPropertySet</code> was given as parameter. An + * <code>SQLException</code> must be thrown. + */ + public void _appendHavingClauseByColumn() { + boolean ok = true; + try + { + xReSet.beforeFirst(); + } + catch (SQLException e) + { + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendHavingClauseByColumn()", false); + } + try{ + + oObj.appendHavingClauseByColumn(xProp, true,SQLFilterOperator.EQUAL); + log.println("expected Exception was not thrown"); + tRes.tested("appendHavingClauseByColumn()", false); + ok = false; + + } + catch (com.sun.star.uno.RuntimeException e) + { + log.println("expected Exception: " + e.toString()); + ok = ok && true; + } + catch (SQLException e) + { + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendHavingClauseByColumn()", false); + } catch (com.sun.star.lang.WrappedTargetException e) + { + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendHavingClauseByColumn()", false); + } + + try + { + xReSet.first(); + } + catch (SQLException e) + { + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendHavingClauseByColumn()", false); + } + try{ + + oObj.appendHavingClauseByColumn(xProp, true,SQLFilterOperator.EQUAL); + log.println("appendHavingClauseByColumn: " + xQueryAna.getFilter()); + ok = ok && (xQueryAna.getFilter().indexOf(colName) > 0); + + } catch (SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendHavingClauseByColumn()", false); + } catch (com.sun.star.lang.WrappedTargetException e) + { + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendHavingClauseByColumn()", false); + } + + try{ + XPropertySet dummy = null; + oObj.appendHavingClauseByColumn(dummy, true,SQLFilterOperator.EQUAL); + log.println("expected Exception was not thrown"); + tRes.tested("appendHavingClauseByColumn()", false); + + } catch (SQLException e){ + log.println("expected Exception"); + ok = ok && true; + } catch (com.sun.star.lang.WrappedTargetException e) + { + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendHavingClauseByColumn()", false); + } + + // cleanup + try + { + xReSet.beforeFirst(); + } + catch (SQLException e) + { + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendHavingClauseByColumn()", false); + } + tRes.tested("appendHavingClauseByColumn()", ok); + } + + /** + * First object relation <code>xProp</code> was set as parameter. Relation + * <code>xQueryAna</code> was used to check if relation <code>colName</code> + * was found. + * Second an empty <code>XPropertySet</code> was given as parameter. An + * <code>SQLException</code> must be thrown. + */ + public void _appendOrderByColumn() { + boolean ok = true; + try{ + + oObj.appendOrderByColumn(xProp, true); + log.println("appendOrderByColumn: " + xQueryAna.getFilter()); + ok = ok && (xQueryAna.getFilter().indexOf(colName) > 0); + + } catch (SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("appendOrderByColumn()", false); + } + try{ + XPropertySet dummy = null; + oObj.appendOrderByColumn(dummy, true); + log.println("expected Exception was not thrown"); + tRes.tested("appendOrderByColumn()", false); + + } catch (SQLException e){ + log.println("expected Exception"); + ok = ok && true; + } + tRes.tested("appendOrderByColumn()", ok); + } + + + /** + * Method <code>getOrder</code> from object relation <code>xQueryAna</code> + * checks the order which was set while calling <code>setOrder</code> + */ + public void _setOrder() { + try{ + String order = "\"Identifier\""; + oObj.setOrder(order); + tRes.tested("setOrder()", xQueryAna.getOrder().equals(order)); + + } catch (SQLException e){ + log.println("unexpected Exception: " + e.toString()); + tRes.tested("setOrder()", false); + } + } + + + +} // finish class _XSingleSelectQueryComposer diff --git a/qadevOOo/tests/java/ifc/sdbc/_ResultSet.java b/qadevOOo/tests/java/ifc/sdbc/_ResultSet.java new file mode 100644 index 0000000000..56724524ef --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbc/_ResultSet.java @@ -0,0 +1,40 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbc; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.sdbc.ResultSet</code> +* service properties : +* <ul> +* <li><code> CursorName</code></li> +* <li><code> ResultSetConcurrency</code></li> +* <li><code> ResultSetType</code></li> +* <li><code> FetchDirection</code></li> +* <li><code> FetchSize</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.sdbc.ResultSet +*/ +public class _ResultSet extends MultiPropertyTest { + + +} // finish class _ResultSet + diff --git a/qadevOOo/tests/java/ifc/sdbc/_RowSet.java b/qadevOOo/tests/java/ifc/sdbc/_RowSet.java new file mode 100644 index 0000000000..fae52a637a --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbc/_RowSet.java @@ -0,0 +1,72 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbc; + +import lib.MultiPropertyTest; + +import com.sun.star.uno.Any; + + +/** +* Testing <code>com.sun.star.sdbc.RowSet</code> +* service properties : +* <ul> +* <li><code> DataSourceName</code></li> +* <li><code> URL</code></li> +* <li><code> Command</code></li> +* <li><code> TransactionIsolation</code></li> +* <li><code> TypeMap</code></li> +* <li><code> EscapeProcessing</code></li> +* <li><code> QueryTimeOut</code></li> +* <li><code> MaxFieldSize</code></li> +* <li><code> MaxRows</code></li> +* <li><code> User</code></li> +* <li><code> Password</code></li> +* <li><code> ResultSetType</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.sdbc.RowSet +*/ +public class _RowSet extends MultiPropertyTest { + + /** + * Redefined method returns object, that contains changed property value. + */ + public void _TypeMap() { + boolean result = false; + try { + Any TypeMap = (Any) oObj.getPropertyValue("TypeMap"); + String TypeName = TypeMap.getType().getTypeName(); + String expected = "com.sun.star.container.XNameAccess"; + result = TypeName.equals(expected); + if (! result ) { + log.println("Expected Type is "+expected); + log.println("but the returned is "+TypeName); + } + } catch(com.sun.star.lang.WrappedTargetException e) { + log.println("Exception " + e.getMessage()); + } catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception " + e.getMessage()); + } + + tRes.tested("TypeMap",result); + } + +} // finish class _RowSet + diff --git a/qadevOOo/tests/java/ifc/sdbc/_XCloseable.java b/qadevOOo/tests/java/ifc/sdbc/_XCloseable.java new file mode 100644 index 0000000000..efd39fd1ff --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbc/_XCloseable.java @@ -0,0 +1,85 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbc; + +import lib.MultiMethodTest; +import lib.StatusException; + +import com.sun.star.sdbc.SQLException; +import com.sun.star.sdbc.XCloseable; +import com.sun.star.sdbc.XResultSet; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.sdbc.XCloseable</code> +* interface methods : +* <ul> +* <li><code> close()</code></li> +* </ul> <p> +* After test object must be recreated. +* @see com.sun.star.sdbc.XCloseable +*/ +public class _XCloseable extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XCloseable oObj = null ; + + /** + * Closes row set. If the component implements the interface + * <code>com.sun.star.sdbc.XResultSet</code> then tries to move + * the cursor to the first row in the result set. + * Has OK status if no exceptions were thrown during first call and + * if expected SQL exception was thrown during cursor moving. + */ + public void _close() throws StatusException { + boolean res = false; + try { + oObj.close(); + res = true; + } catch (SQLException e) { + log.println("Unexpected SQL Exception occurred:" + e) ; + res = false; + } + + XResultSet resSet = UnoRuntime.queryInterface(XResultSet.class, oObj); + + if (resSet != null) { + try { + resSet.first(); + log.println("Expected SQLException not occurred !"); + res = false; + } catch(SQLException e) { + log.println("Expected SQLException occurred"); + res = true; + } + } + + tRes.tested("close()", res); + } + + /** + * Forces environment recreation. + */ + @Override + public void after() { + disposeEnvironment() ; + } + +} // finish class _XCloseable + diff --git a/qadevOOo/tests/java/ifc/sdbc/_XColumnLocate.java b/qadevOOo/tests/java/ifc/sdbc/_XColumnLocate.java new file mode 100644 index 0000000000..f1d57c5b7a --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbc/_XColumnLocate.java @@ -0,0 +1,76 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbc; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.sdbc.SQLException; +import com.sun.star.sdbc.XColumnLocate; + +/** +/** +* Testing <code>com.sun.star.sdbc.XColumnLocate</code> +* interface methods : +* <ul> +* <li><code> findColumn()</code></li> +* </ul> <p> +* The test required the following relations : +* <ul> +* <li> <code> XColumnLocate.ColumnName </code> : The name of the first +* column. </li> +* </ul> +* @see com.sun.star.sdbc.XColumnLocate +*/ +public class _XColumnLocate extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XColumnLocate oObj = null ; + + /** + * Using column name from object relation trying to find out + * the index of this column. <p> + * Has OK status if column index returned by method equals to 1, + * FAILED otherwise. + */ + public void _findColumn() { + boolean result = false ; + String colName = (String) tEnv.getObjRelation("XColumnLocate.ColumnName") ; + + if (colName == null) { + throw new StatusException( + Status.failed("Object relation 'XColumnLocate.ColumnName' " + + "for this interface not found")); + } + + try { + int colIdx = oObj.findColumn(colName) ; + result = colIdx == 1 ; + } catch (SQLException e) { + log.println("Exception occurred:"); + e.printStackTrace(log); + result = false; + } + + tRes.tested("findColumn()", result); + } + +} // finish class _XColumnLocate + diff --git a/qadevOOo/tests/java/ifc/sdbc/_XDataSource.java b/qadevOOo/tests/java/ifc/sdbc/_XDataSource.java new file mode 100644 index 0000000000..304ea7ded4 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbc/_XDataSource.java @@ -0,0 +1,105 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbc; + +import lib.MultiMethodTest; + +import com.sun.star.sdbc.XConnection; +import com.sun.star.sdbc.XDataSource; + +/** +* Testing <code>com.sun.star.sdbc.XDataSource</code> +* interface methods : +* <ul> +* <li><code>getConnection()</code></li> +* <li><code>setLoginTimeout()</code></li> +* <li><code>getLoginTimeout()</code></li> +* </ul> <p> +* @see com.sun.star.sdbc.XDataSource +*/ +public class _XDataSource extends MultiMethodTest { + // oObj filled by MultiMethodTest + public XDataSource oObj = null; + + /** + * Calls the method and checks returned value. + * Has OK status if exception wasn't thrown and + * if returned value isn't null. + */ + public void _getConnection() { + boolean res = true; + + try { + XConnection connection = oObj.getConnection("", ""); + res = connection != null; + } catch(com.sun.star.sdbc.SQLException e) { + log.println("Unexpected exception:"); + e.printStackTrace(log); + res = false; + } + + tRes.tested("getConnection()", res); + } + + /** + * Sets new timeout, compares with timeout returned by the method + * <code>getLoginTimeout()</code>. + * Has OK status if exception wasn't thrown and if timeout values are equal. + */ + public void _setLoginTimeout() { + requiredMethod("getLoginTimeout()"); + boolean res = true; + + try { + final int TO = 111; + log.println("setLoginTimeout(" + TO + ")"); + oObj.setLoginTimeout(TO); + int timeout = oObj.getLoginTimeout(); + res = timeout == TO; + log.println("getLoginTimeout(): " + timeout); + } catch(com.sun.star.sdbc.SQLException e) { + log.println("Unexpected exception:"); + e.printStackTrace(log); + res = false; + } + + tRes.tested("setLoginTimeout()", res); + } + + /** + * Calls the method and checks returned value. + * Has OK status if exception wasn't thrown and + * if returned value is equal to zero. + */ + public void _getLoginTimeout() { + boolean res = true; + + try { + int timeout = oObj.getLoginTimeout(); + log.println("getLoginTimeout(): " + timeout); + res = timeout == 0; + } catch(com.sun.star.sdbc.SQLException e) { + log.println("Unexpected exception:"); + e.printStackTrace(log); + res = false; + } + + tRes.tested("getLoginTimeout()", res); + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/sdbc/_XDriver.java b/qadevOOo/tests/java/ifc/sdbc/_XDriver.java new file mode 100644 index 0000000000..4b0eb147f2 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbc/_XDriver.java @@ -0,0 +1,205 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbc; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.sdbc.DriverPropertyInfo; +import com.sun.star.sdbc.SQLException; +import com.sun.star.sdbc.XConnection; +import com.sun.star.sdbc.XDriver; + +/** +* Testing <code>com.sun.star.sdbc.XDriver</code> +* interface methods : +* <ul> +* <li><code> connect()</code></li> +* <li><code> acceptsURL()</code></li> +* <li><code> getPropertyInfo()</code></li> +* <li><code> getMajorVersion()</code></li> +* <li><code> getMinorVersion()</code></li> +* </ul> <p> +* Required object relations : +* <ul> +* <li> <code>'XDriver.URL'</code>: +* is the URL of the database to which to connect</code></li> +* <li><code>'XDriver.UNSUITABLE_URL'</code>: +* the wrong kind of URL to connect using given driver</li> +* <li><code>'XDriver.INFO'</code>: +* a list of arbitrary string tag/value pairs as connection arguments</li> +* </ul> <p> +* @see com.sun.star.sdbc.XDriver +*/ +public class _XDriver extends MultiMethodTest { + // oObj filled by MultiMethodTest + public XDriver oObj = null; + String url = null; + String wrongUrl = null; + String nbu = null; + PropertyValue[] info = null; + + /** + * Retrieves relations. + * @throw StatusException If any relation not found. + */ + @Override + protected void before() { + nbu = (String) tEnv.getObjRelation("NoBadURL"); + url = (String)tEnv.getObjRelation("XDriver.URL"); + if (url == null) { + throw new StatusException(Status.failed( + "Couldn't get relation 'XDriver.URL'")); + } + wrongUrl = (String)tEnv.getObjRelation("XDriver.UNSUITABLE_URL"); + if (wrongUrl == null) { + throw new StatusException(Status.failed( + "Couldn't get relation 'XDriver.WRONG_URL'")); + } + info = (PropertyValue[])tEnv.getObjRelation("XDriver.INFO"); + if (info == null) { + throw new StatusException(Status.failed( + "Couldn't get relation 'XDriver.INFO'")); + } + } + + /** + * Connects to <code>'XDriver.URL'</code>, + * to <code>'XDriver.UNSUITABLE_URL'</code> and to wrong URL using + * <code>'XDriver.INFO'</code>. + * Has OK status if the method returns not null for <code>'XDriver.URL'</code>, + * null for <code>'XDriver.UNSUITABLE_URL'</code> and + * exception was thrown during the call with a wrong URL. + */ + public void _connect() { + boolean res = true; + + try { + log.println("Trying to connect to " + url); + XConnection connection = oObj.connect(url, info); + res = (connection != null); + log.println("Connected? " + res); + log.println("Trying to connect to " + wrongUrl); + connection = oObj.connect(wrongUrl, info); + res &= (connection == null); + log.println("Connected? " + !res); + } catch(SQLException e) { + log.println("Unexpected exception"); + res &= false; + } + + if (nbu==null) { + try { + String badUrl = url + "bla"; + log.println("Trying to connect to " + badUrl); + oObj.connect(badUrl, info); + res &= false; + log.println("Expected exception isn't thrown"); + } catch(SQLException e) { + log.println("Expected exception"); + res &= true; + } + } + + tRes.tested("connect()", res); + } + + /** + * Calls the method for <code>'XDriver.URL'</code> and + * for <code>'XDriver.UNSUITABLE_URL'</code>. + * Has OK status if the method returns true for <code>'XDriver.URL'</code> + * and false for <code>'XDriver.UNSUITABLE_URL'</code>. + */ + public void _acceptsURL() { + boolean res = false; + + try { + res = oObj.acceptsURL(url); + log.println("Accepts " + url + "? " + res); + res &= !oObj.acceptsURL(wrongUrl); + log.println("Accepts " + wrongUrl + "? " + !res); + } catch(SQLException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res = false; + } + + tRes.tested("acceptsURL()", res); + } + + /** + * Calls the method with passed <code>'XDriver.URL'</code> and + * <code>'XDriver.INFO'</code>. Prints obtained driver properties info + * to log. + * Has OK status if returned value isn't null. + */ + public void _getPropertyInfo() { + requiredMethod("acceptsURL()"); + boolean res = false; + DriverPropertyInfo[] dpi = null; + try { + dpi = oObj.getPropertyInfo(url, info); + } catch(SQLException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res = false; + } + + if (dpi != null) { + res = true; + log.println("Driver properties info:"); + for(int i = 0; i < dpi.length; i++) { + log.println("Property: " + dpi[i].Name); + log.println("Description: " + dpi[i].Description); + log.println("IsRequired? " + dpi[i].IsRequired); + log.println("Value: " + dpi[i].Value); + log.println("Choices: "); + for(int j = 0; j < dpi[i].Choices.length; j++) { + log.println("\t" + dpi[i].Choices[j]); + } + } + } + + tRes.tested("getPropertyInfo()", res); + } + + /** + * Calls the method. + * Has OK status if returned value is greater than or is equal to 1. + */ + public void _getMajorVersion() { + int majorVer = oObj.getMajorVersion(); + boolean res = majorVer >= 1; + log.println("Major version " + majorVer); + tRes.tested("getMajorVersion()", res); + } + + /** + * Calls the method. + * Has OK status if returned value is greater than or is equal to 0. + */ + public void _getMinorVersion() { + int minorVer = oObj.getMinorVersion(); + boolean res = minorVer >= 0; + log.println("Minor version " + minorVer); + tRes.tested("getMinorVersion()", res); + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/sdbc/_XDriverManager.java b/qadevOOo/tests/java/ifc/sdbc/_XDriverManager.java new file mode 100644 index 0000000000..57477b4a71 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbc/_XDriverManager.java @@ -0,0 +1,152 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbc; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.sdbc.XConnection; +import com.sun.star.sdbc.XDriverManager; + +/** +* Testing <code>com.sun.star.sdbc.XDriverManager</code> +* interface methods : +* <ul> +* <li><code> getConnection()</code></li> +* <li><code> getConnectionWithInfo()</code></li> +* <li><code> setLoginTimeout()</code></li> +* <li><code> getLoginTimeout()</code></li> +* </ul> <p> +* Required object relations : +* <ul> +* <li> <code>'SDBC.URL'</code>: +* is the URL of the database to which to connect using sdbc-driver +* </code></li> +* <li> <code>'JDBC.URL'</code>: +* is the URL of the database to which to connect using jdbc-driver +* </code></li> +* <li> <code>'JDBC.INFO'</code> of type <code>PropertyValue[]</code>: +* a list of arbitrary string tag/value pairs as connection arguments; +* normally at least a "user" and "password" property should be included +* </code></li> +* </ul> <p> +* @see com.sun.star.sdbc.XDriverManager +*/ +public class _XDriverManager extends MultiMethodTest { + // oObj filled by MultiMethodTest + public XDriverManager oObj = null; + String sdbcURL = null; + String jdbcURL = null; + PropertyValue[] jdbcINFO = null; + + /** + * Retrieves the required object relations. + */ + @Override + protected void before() { + sdbcURL = (String)tEnv.getObjRelation("SDBC.URL"); + if (sdbcURL == null) { + throw new StatusException( + Status.failed("Couldn't get relation 'SDBC.URL'")); + } + jdbcURL = (String)tEnv.getObjRelation("JDBC.URL"); + if (jdbcURL == null) { + throw new StatusException( + Status.failed("Couldn't get relation 'JDBC.URL'")); + } + jdbcINFO = (PropertyValue[])tEnv.getObjRelation("JDBC.INFO"); + if (jdbcINFO == null) { + throw new StatusException( + Status.failed("Couldn't get relation 'JDBC.INFO'")); + } + } + + /** + * Calls the method with the url received from the relation + * <code>SDBC.URL</code>. + * Has OK status if exception wasn't thrown and + * if returned value isn't null. + */ + public void _getConnection() { + boolean res = true; + + try { + log.println("getConnection(" + sdbcURL + ")"); + XConnection connection = oObj.getConnection(sdbcURL); + res = connection != null; + } catch(com.sun.star.sdbc.SQLException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res = false; + } + + tRes.tested("getConnection()", res); + } + + /** + * Calls the method with the url received from the relation + * <code>JDBC.URL</code> and with info received from the relation + * <code>JDBC.INFO</code>. + * Has OK status if exception wasn't thrown and + * if returned value isn't null. + */ + public void _getConnectionWithInfo() { + boolean res = true; + + try { + log.println("getConnectionWithInfo(" + jdbcURL + ")"); + XConnection connection = + oObj.getConnectionWithInfo(jdbcURL, jdbcINFO); + res = connection != null; + } catch(com.sun.star.sdbc.SQLException e) { + log.println("Unexpected exception"); + e.printStackTrace(log); + res = false; + } + + tRes.tested("getConnectionWithInfo()", res); + } + + /** + * Calls the method and checks returned value. + * Has OK status if timeout that was set and timeout that was returned by + * the method <code>getLoginTimeout()</code> are equal. + */ + public void _setLoginTimeout() { + requiredMethod("getLoginTimeout()"); + final int TO = 111; + log.println("setLoginTimeout(" + TO + ")"); + oObj.setLoginTimeout(TO); + int timeout = oObj.getLoginTimeout(); + log.println("getLoginTimeout(): " + timeout); + tRes.tested("setLoginTimeout()", timeout == TO); + } + + /** + * Calls the method. + */ + public void _getLoginTimeout() { + int timeout = oObj.getLoginTimeout(); + log.println("getLoginTimeout(): " + timeout); + + tRes.tested("getLoginTimeout()", true); + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/sdbc/_XIsolatedConnection.java b/qadevOOo/tests/java/ifc/sdbc/_XIsolatedConnection.java new file mode 100644 index 0000000000..64af7feb53 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbc/_XIsolatedConnection.java @@ -0,0 +1,111 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbc; + +import lib.MultiMethodTest; +import lib.StatusException; + +import com.sun.star.sdbc.XConnection; +import com.sun.star.sdbc.XIsolatedConnection; +import com.sun.star.task.XInteractionHandler; + +/** + * Testing <code>com.sun.star.sdb.XCompletedConnection</code> + * interface methods : + * <ul> + * <li><code> getIsolatedConnectionWithCompletion()</code></li> + * <li><code> getIsolatedConnection()</code></li> + * </ul> <p> +* The following object relations required : +* <ul> +* <li> <code>'XCompletedConnection.Handler'</code> : passed as parameter +* to <code>connectWithCompletion</code> method. </li> +* </ul> +* @see com.sun.star.sdb.XIsolatedConnection +* @see com.sun.star.task.XInteractionHandler +* @see com.sun.star.sdbc.XConnection +*/ +public class _XIsolatedConnection extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XIsolatedConnection oObj = null ; + + /** + * Test call the method with handler passed as object relation. + * Then value returned is checked.<p> + * Has OK status if not null value returned. < > + * FAILED if exception occurred, null value returned or object + * relation was not found. + */ + public void _getIsolatedConnectionWithCompletion() throws StatusException { + XInteractionHandler handler = (XInteractionHandler) + tEnv.getObjRelation("XCompletedConnection.Handler") ; + + if (handler == null) { + log.println("Required object relation not found !") ; + tRes.tested("getIsolatedConnectionWithCompletion()", false) ; + return ; + } + + XConnection con = null ; + try { + con = oObj.getIsolatedConnectionWithCompletion(handler) ; + } catch (com.sun.star.sdbc.SQLException e) { + throw new StatusException("Exception while method calling", e) ; + } + + tRes.tested("getIsolatedConnectionWithCompletion()", con != null) ; + } + + /** + * Test call the method with handler passed as object relation. + * Then value returned is checked.<p> + * Has OK status if not null value returned. < > + * FAILED if exception occurred, null value returned or object + * relation was not found. + */ + public void _getIsolatedConnection() throws StatusException { + String[] userSettings = (String[]) + tEnv.getObjRelation("UserAndPassword") ; + + String user = null; + String pwd = null; + + if (userSettings[0] != null) + user = userSettings[0].equals("")?"<empty>":userSettings[0]; + else + user = "<null>"; + if (userSettings[1] != null) + pwd = userSettings[1].equals("")?"<empty>":userSettings[1]; + else + pwd = "<null>"; + + log.println("Testing \"getIsolatedConnection('user', 'password')\"\n" + + "with user = '" + user + "'; password = '" + pwd + "'"); + XConnection con = null ; + try { + con = oObj.getIsolatedConnection(user, pwd) ; + } catch (com.sun.star.sdbc.SQLException e) { + throw new StatusException("Exception while method calling", e) ; + } + + tRes.tested("getIsolatedConnection()", con != null) ; + } +} // finish class _XIsolatedConnection + diff --git a/qadevOOo/tests/java/ifc/sdbc/_XParameters.java b/qadevOOo/tests/java/ifc/sdbc/_XParameters.java new file mode 100644 index 0000000000..31a5e6d4b0 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbc/_XParameters.java @@ -0,0 +1,565 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbc; + +import java.util.List; + +import lib.MultiMethodTest; +import lib.Status; + +import com.sun.star.io.XDataInputStream; +import com.sun.star.io.XInputStream; +import com.sun.star.io.XTextInputStream; +import com.sun.star.sdbc.DataType; +import com.sun.star.sdbc.SQLException; +import com.sun.star.sdbc.XParameters; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.Date; +import com.sun.star.util.DateTime; +import com.sun.star.util.Time; + +/** +/** +* Testing <code>com.sun.star.sdbc.XParameters</code> +* interface methods : +* <ul> +* <li><code> setNull()</code></li> +* <li><code> setObjectNull()</code></li> +* <li><code> setBoolean()</code></li> +* <li><code> setByte()</code></li> +* <li><code> setShort()</code></li> +* <li><code> setInt()</code></li> +* <li><code> setLong()</code></li> +* <li><code> setFloat()</code></li> +* <li><code> setDouble()</code></li> +* <li><code> setString()</code></li> +* <li><code> setBytes()</code></li> +* <li><code> setDate()</code></li> +* <li><code> setTime()</code></li> +* <li><code> setTimestamp()</code></li> +* <li><code> setBinaryStream()</code></li> +* <li><code> setCharacterStream()</code></li> +* <li><code> setObject()</code></li> +* <li><code> setObjectWithInfo()</code></li> +* <li><code> setRef()</code></li> +* <li><code> setBlob()</code></li> +* <li><code> setClob()</code></li> +* <li><code> setArray()</code></li> +* <li><code> clearParameters()</code></li> +* </ul> <p> +* Object relations required : +* <ul> +* <li> <code>'XParameters.ParamValues'</code> : is a +* <code>java.util.Vector</code> object +* that contains parameter types and values of the statement. Each +* element of vector corresponds to appropriate parameter (element +* with index 0 to parameter #1, 1 -> #2, etc.). <p> +* The following <code>XParameters</code> methods correspond to classes +* in Vector : +* <ul> +* <li> <code>setBinaryStream</code> - +* <code>com.sun.star.io.XDataInputStream</code> class. </li> +* <li> <code>setCharacterStream</code> - +* <code>com.sun.star.io.XTextInputStream</code> class. </li> +* <li> <code>setObject</code> - +* <code>java.lang.Object[]</code> class, the element with +* index 0 must be used. </li> +* </ul> +* Other methods uses types of their arguments (i.e. +* <code>String</code> +* for <code>setString</code> method, <code>com.sun.star.sdbc.XRef</code> +* for <code>setRef</code> method). +* </li> +* </ul> +* @see com.sun.star.sdbc.XParameters +*/ +public class _XParameters extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XParameters oObj = null ; + + private List<Object> data = null ; + + /** + * Gets object relation + */ + @SuppressWarnings("unchecked") + @Override + public void before() { + data = (List<Object>) tEnv.getObjRelation("XParameters.ParamValues") ; + if (data == null) { + log.println("!!! Relation not found !!!") ; + } + } + + /** + * Sets String parameter (if exists) to SQL NULL value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setNull() { + boolean result = true ; + int idx = findParamOfType(String.class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.setNull(idx, DataType.VARCHAR) ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setNull()", result) ; + } + + public void _setObjectNull() { + /* + !!! TO DO !!! + */ + tRes.tested("setObjectNull()", Status.skipped(true)) ; + } + + /** + * Sets String parameter (if exists) to new value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setString() { + boolean result = true ; + int idx = findParamOfType(String.class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.setString(idx, "XParameters") ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setString()", result) ; + } + + /** + * Sets parameter (if exists) to new value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setBoolean() { + boolean result = true ; + int idx = findParamOfType(Boolean.class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.setBoolean(idx, true) ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setBoolean()", result) ; + } + + /** + * Sets parameter (if exists) to new value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setByte() { + boolean result = true ; + int idx = findParamOfType(Byte.class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.setByte(idx, (byte)122) ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setByte()", result) ; + } + + /** + * Sets parameter (if exists) to new value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setShort() { + boolean result = true ; + int idx = findParamOfType(Short.class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.setShort(idx, (short)133) ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setShort()", result) ; + } + + /** + * Sets parameter (if exists) to new value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setInt() { + boolean result = true ; + int idx = findParamOfType(Integer.class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.setInt(idx, 13300) ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setInt()", result) ; + } + + /** + * Sets parameter (if exists) to new value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setLong() { + boolean result = true ; + int idx = findParamOfType(Long.class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.setLong(idx, 13362453) ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setLong()", result) ; + } + + /** + * Sets parameter (if exists) to new value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setFloat() { + boolean result = true ; + int idx = findParamOfType(Float.class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.setFloat(idx, (float)133.55) ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setFloat()", result) ; + } + + /** + * Sets parameter (if exists) to new value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setDouble() { + boolean result = true ; + int idx = findParamOfType(Double.class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.setDouble(idx, 133) ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setDouble()", result) ; + } + + /** + * Sets parameter (if exists) to new value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setBytes() { + boolean result = true ; + int idx = findParamOfType(byte[].class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.setBytes(idx, new byte[] {5}) ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setBytes()", result) ; + } + + /** + * Sets parameter (if exists) to new value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setDate() { + boolean result = true ; + int idx = findParamOfType(Date.class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.setDate( + idx, new Date ((short)19, (short)1, (short)1979)) ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setDate()", result) ; + } + + /** + * Sets parameter (if exists) to new value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setTime() { + boolean result = true ; + int idx = findParamOfType(Time.class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.setTime( + idx, new Time((short)1,(short)2,(short)3,(short)44, false)); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setTime()", result) ; + } + + /** + * Sets parameter (if exists) to new value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setTimestamp() { + boolean result = true ; + int idx = findParamOfType(DateTime.class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.setTimestamp(idx, new DateTime((short)1,(short)2,(short)3, + (short)4, (short)19, (short)1, (short)1979, false)) ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setTimestamp()", result) ; + } + + /** + * Sets parameter (if exists) to new value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setBinaryStream() { + boolean result = true ; + int idx = findParamOfType(XDataInputStream.class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + Object oStream = tParam.getMSF(). + createInstance("com.sun.star.io.DataInputStream") ; + XInputStream xStream = UnoRuntime.queryInterface + (XInputStream.class, oStream); + + oObj.setBinaryStream(idx, xStream, 2) ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } catch (com.sun.star.uno.Exception e) { + log.println("Unexpected exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setBinaryStream()", result) ; + } + + /** + * Sets parameter (if exists) to new value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setCharacterStream() { + boolean result = true ; + int idx = findParamOfType(XTextInputStream.class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + Object oStream = tParam.getMSF() + .createInstance("com.sun.star.io.TextInputStream") ; + XInputStream xStream = UnoRuntime.queryInterface + (XInputStream.class, oStream); + + oObj.setCharacterStream(idx, xStream, 2) ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } catch (com.sun.star.uno.Exception e) { + log.println("Unexpected exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setCharacterStream()", result) ; + } + + /** + * Sets parameter (if exists) to new value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setObject() { + boolean result = true ; + int idx = findParamOfType(Object[].class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + Object obj = tParam.getMSF(). + createInstance("com.sun.star.io.Pipe") ; + + oObj.setObject(idx, obj) ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } catch (com.sun.star.uno.Exception e) { + log.println("Unexpected exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setObject()", result) ; + } + + /** + * Sets parameter (if exists) to new value. <p> + * Has OK status if no exceptions occurred. + */ + public void _setObjectWithInfo() { + boolean result = true ; + int idx = findParamOfType(Object[].class) ; + if (idx < 0) log.println("Type not found in relation: not tested"); + else { + try { + Object obj = tParam.getMSF(). + createInstance("com.sun.star.io.Pipe") ; + + oObj.setObjectWithInfo(idx, obj, DataType.OBJECT, 0) ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } catch (com.sun.star.uno.Exception e) { + log.println("Unexpected exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("setObjectWithInfo()", result) ; + } + + public void _setRef() { + /* + !!! TO DO !!! + */ + tRes.tested("setRef()", Status.skipped(true)) ; + } + public void _setBlob() { + /* + !!! TO DO !!! + */ + tRes.tested("setBlob()", Status.skipped(true)) ; + } + public void _setClob() { + /* + !!! TO DO !!! + */ + tRes.tested("setClob()", Status.skipped(true)) ; + } + public void _setArray() { + /* + !!! TO DO !!! + */ + tRes.tested("setArray()", Status.skipped(true)) ; + } + + /** + * Calls method. <p> + * Has OK status if no exceptions occurred. + */ + public void _clearParameters() { + boolean result = true ; + try { + oObj.clearParameters() ; + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + + tRes.tested("clearParameters()", result) ; + } + + + /** + * Finds in relation vector index of parameter of the appropriate + * type. + */ + private int findParamOfType(Class<?> clz) { + for (int i = 0; i < data.size(); i++) + if (clz.isInstance(data.get(i))) return i + 1 ; + return -1 ; + } + +} // finish class _XParameters + + diff --git a/qadevOOo/tests/java/ifc/sdbc/_XResultSet.java b/qadevOOo/tests/java/ifc/sdbc/_XResultSet.java new file mode 100644 index 0000000000..a2114d7d0a --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbc/_XResultSet.java @@ -0,0 +1,497 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbc; + +import lib.MultiMethodTest; + +import com.sun.star.sdbc.SQLException; +import com.sun.star.sdbc.XResultSet; +import com.sun.star.sdbc.XRow; +import com.sun.star.sdbc.XRowUpdate; +import com.sun.star.uno.UnoRuntime; + +/** +/** +* Testing <code>com.sun.star.sdbc.XResultSet</code> +* interface methods : +* <ul> +* <li><code> next()</code></li> +* <li><code> isBeforeFirst()</code></li> +* <li><code> isAfterLast()</code></li> +* <li><code> isFirst()</code></li> +* <li><code> isLast()</code></li> +* <li><code> beforeFirst()</code></li> +* <li><code> afterLast()</code></li> +* <li><code> first()</code></li> +* <li><code> last()</code></li> +* <li><code> getRow()</code></li> +* <li><code> absolute()</code></li> +* <li><code> relative()</code></li> +* <li><code> previous()</code></li> +* <li><code> refreshRow()</code></li> +* <li><code> rowUpdated()</code></li> +* <li><code> rowInserted()</code></li> +* <li><code> rowDeleted()</code></li> +* <li><code> getStatement()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XResultSet.hasStatement'</code> (<b>optional</b> of type +* <code>Object</code>): +* it the relation exists than <code>getStatement</code> method +* must not return <code>null</code> </li> +* <ul> <p> +* Test places DB cursor to different positions and then checks +* its current position. <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.sdbc.XResultSet +*/ +public class _XResultSet extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XResultSet oObj = null ; + + /** + * Positions the cursor to the first row. + * Forces method tests to be executed in definite order. + */ + @Override + public void before() { + try { + oObj.last() ; + log.println("Totally number of rows is " + oObj.getRow()) ; + oObj.first() ; + } catch (SQLException e) { + log.println("Ignored exception :") ; + e.printStackTrace(log); + } + + executeMethod("isBeforeFirst()") ; + executeMethod("isAfterLast()") ; + executeMethod("isLast()") ; + executeMethod("isFirst()") ; + executeMethod("next()") ; + executeMethod("previous()") ; + } + + /** + * Places the cursor before the first row. <p> + * Has <b>OK</b> status if no exceptions were thrown. + */ + public void _beforeFirst() { + try { + oObj.beforeFirst() ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + tRes.tested("beforeFirst()", false) ; + return ; + } + tRes.tested("beforeFirst()", true) ; + } + + /** + * The method is called immediately after <code>beforeFirst</code> + * method test. <p> + * Has <b>OK</b> status if method returns <code>true</code>. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> beforeFirst </code> : to position cursor before + * the first row. </li> + * </ul> + */ + public void _isBeforeFirst() { + requiredMethod("beforeFirst()") ; + + boolean result = true ; + + try { + result = oObj.isBeforeFirst() ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + result = false ; + } + tRes.tested("isBeforeFirst()", result) ; + } + + /** + * Places the cursor after the last row. <p> + * Has <b>OK</b> status if no exceptions were thrown. + */ + public void _afterLast() { + try { + oObj.afterLast() ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + tRes.tested("afterLast()", false) ; + return ; + } + tRes.tested("afterLast()", true) ; + } + + /** + * The method is called immediately after <code>afterLast</code> + * method test. <p> + * Has <b>OK</b> status if method returns <code>true</code> <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> afterLast </code> : to position cursor after + * the last row. </li> + * </ul> + */ + public void _isAfterLast() { + requiredMethod("afterLast()") ; + + boolean result = true ; + + try { + result = oObj.isAfterLast() ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + result = false ; + } + tRes.tested("isAfterLast()", result) ; + } + + /** + * Places the cursor on the first row. <p> + * Has <b>OK</b> status if no exceptions were thrown. + */ + public void _first() { + try { + oObj.first() ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + tRes.tested("first()", false) ; + return ; + } + tRes.tested("first()", true) ; + } + + /** + * The method is called immediately after <code>first</code> + * method test. <p> + * Has <b>OK</b> status if method returns <code>true</code>. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> first </code> : to position cursor on + * the first row. </li> + * </ul> + */ + public void _isFirst() { + requiredMethod("first()") ; + + boolean result = true ; + + try { + result = oObj.isFirst() ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + result = false ; + } + tRes.tested("isFirst()", result) ; + } + + /** + * Places the cursor on the last row. <p> + * Has <b>OK</b> status if no exceptions were thrown. + */ + public void _last() { + try { + oObj.last() ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + tRes.tested("last()", false) ; + return ; + } + tRes.tested("last()", true) ; + } + + /** + * The method is called immediately after <code>last</code> + * method test. <p> + * Has <b>OK</b> status if method returns <code>true</code>. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> last </code> : to position cursor on + * the last row. </li> + * </ul> + */ + public void _isLast() { + requiredMethod("last()") ; + boolean result = true ; + + try { + result = oObj.isLast() ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + result = false ; + } + tRes.tested("isLast()", result) ; + } + + /** + * Places the cursor on the row number 1. <p> + * Has <b>OK</b> status if no exceptions were thrown. + */ + public void _absolute() { + boolean result = true ; + + try { + oObj.absolute(1) ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + result = false ; + } + tRes.tested("absolute()", result) ; + } + + /** + * The method is called immediately after <code>absolute</code> + * method test. <p> + * Has <b>OK</b> status if method returns 1. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> absolute </code> : to position cursor on + * the row number 1. </li> + * </ul> + */ + public void _getRow() { + requiredMethod("absolute()"); + boolean result = true; + + try { + result &= oObj.getRow() == 1; + } catch (SQLException e) { + log.println("Exception occurred:"); + e.printStackTrace(log); + result = false; + } + + tRes.tested("getRow()", result); + } + + /** + * Positions the cursor to the next row. Current row + * number is retrieved before and after method call. <p> + * Has <b>OK</b> status if current row number increases + * by 1 after method call. + */ + public void _next() { + boolean result = true ; + + try { + int prevRow = oObj.getRow() ; + oObj.next() ; + + log.println("Row was : " + prevRow + ", row is : " + oObj.getRow()); + result &= prevRow + 1 == oObj.getRow() ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + result = false ; + } + tRes.tested("next()", result) ; + } + + /** + * Positions the cursor to the previous row. Current row + * number is retrieved before and after method call. <p> + * Has <b>OK</b> status if current row number decreases + * by 1 after method call. + */ + public void _previous() { + boolean result = true ; + + try { + int prevRow = oObj.getRow() ; + oObj.previous() ; + + log.println("Row was : " + prevRow + ", row is : " + oObj.getRow()); + result &= prevRow - 1 == oObj.getRow() ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + result = false ; + } + tRes.tested("previous()", result) ; + } + + /** + * Positions the cursor relatively by 2 rows forward. + * Current row number is retrieved before and after method call. <p> + * Has <b>OK</b> status if current row number increases + * by 2 after method call. + */ + public void _relative() { + boolean result = true ; + + try { + oObj.first() ; + int prevRow = oObj.getRow() ; + oObj.relative(2) ; + + log.println("Row was : " + prevRow + ", row is : " + oObj.getRow()); + + result &= prevRow + 2 == oObj.getRow() ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + result = false ; + } + tRes.tested("relative()", result) ; + } + + /** + * If component supports XRow and XRowUpdate then: + * test saves current value of string field, updates string, + * calls refreshRow() and checks that value of + * string field was refetched from DB + * else: just calls method.<p> + * Has <b>OK</b> status if no exceptions were thrown and value after + * refreshRow() equals to saved value. + */ + public void _refreshRow() { + XRowUpdate xRowUpdate = UnoRuntime.queryInterface(XRowUpdate.class, oObj); + XRow xRow = UnoRuntime.queryInterface(XRow.class, oObj); + + if (xRowUpdate == null || xRow == null) { + log.println("Test must be modified because XRow or XRowUpdate is't supported"); + log.println("Only call method"); + try { + oObj.refreshRow() ; + tRes.tested("refreshRow()", true) ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + tRes.tested("refreshRow()", false) ; + } + } else { + log.println("Testing of refreshRow()..."); + try { + String oldValue = xRow.getString(util.DBTools.TST_STRING); + log.println("Old value: " + oldValue); + xRowUpdate.updateString(util.DBTools.TST_STRING, + "Test method refreshRow"); + log.println("New value: " + + xRow.getString(util.DBTools.TST_STRING)); + oObj.refreshRow(); + String valAfterRefresh = + xRow.getString(util.DBTools.TST_STRING); + log.println("Value after refresh: " + valAfterRefresh); + tRes.tested("refreshRow()", valAfterRefresh.equals(oldValue)); + } catch(SQLException e) { + log.println("Exception occurred :"); + e.printStackTrace(log); + tRes.tested("refreshRow()", false); + } + } + } + + /** + * Just the method is called. <p> + * Has <b>OK</b> status if no exceptions were thrown. + */ + public void _rowUpdated() { + + try { + oObj.rowUpdated(); + tRes.tested("rowUpdated()", true) ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + tRes.tested("rowUpdated()", false) ; + } + } + + /** + * Just the method is called. <p> + * Has <b>OK</b> status if no exceptions were thrown. + */ + public void _rowInserted() { + try { + oObj.rowInserted(); + tRes.tested("rowInserted()", true) ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + tRes.tested("rowInserted()", false) ; + } + } + + /** + * Just the method is called. <p> + * Has <b>OK</b> status if no exceptions were thrown. + */ + public void _rowDeleted() { + try { + oObj.rowDeleted(); + tRes.tested("rowDeleted()", true) ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + tRes.tested("rowDeleted()", false) ; + } + } + + /** + * Just the method is called. <p> + * Has <b>OK</b> status if the statement returned isn't null or + * the relation exists that informs that statement absent (e.g. for + * MetaData row set). + */ + public void _getStatement() { + try { + boolean hasStatement = + tEnv.getObjRelation("XResultSet.hasStatement") != null ; + Object res = oObj.getStatement() ; + tRes.tested("getStatement()", + (hasStatement && res != null) || !hasStatement) ; + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + tRes.tested("getStatement()", false) ; + } + } + + /** + * Moves the cursor to the first row to avoid affection to + * the following interfaces tests + */ + @Override + public void after() { + log.println("Finally moving cursor to the first row ..."); + try { + oObj.first(); + } catch (SQLException e) { + log.println("Exception occurred :") ; + e.printStackTrace(log) ; + } + } + +} // finish class _XResultSet + diff --git a/qadevOOo/tests/java/ifc/sdbc/_XResultSetMetaDataSupplier.java b/qadevOOo/tests/java/ifc/sdbc/_XResultSetMetaDataSupplier.java new file mode 100644 index 0000000000..0a721b368e --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbc/_XResultSetMetaDataSupplier.java @@ -0,0 +1,60 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbc; + +import lib.MultiMethodTest; + +import com.sun.star.sdbc.XResultSetMetaData; +import com.sun.star.sdbc.XResultSetMetaDataSupplier; + +/** +* Testing <code>com.sun.star.sdbc.XResultSetMetaDataSupplier</code> +* interface methods : +* <ul> +* <li><code> getMetaData()</code></li> +* </ul> <p> +* Test is multithread compliant. <p> +* @see com.sun.star.sdbc.XResultSetMetaDataSupplier +*/ +public class _XResultSetMetaDataSupplier extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XResultSetMetaDataSupplier oObj = null ; + + /** + * Tries to get the ResultSetMetaData of the Object</br> + * an XResultSetMetaData is returned.</br> + * The test is OK if a not null ResultSetMetaData is returned + */ + public void _getMetaData() { + + try { + XResultSetMetaData the_Meta = oObj.getMetaData(); + if (the_Meta == null) log.println("'getMetaData()' returns NULL"); + tRes.tested("getMetaData()",the_Meta != null); + } catch (com.sun.star.sdbc.SQLException e) { + log.println("Exception while checking 'createResultSet()'"); + e.printStackTrace(log); + tRes.tested("getMetaData()",false); + } + + } +} // finish class _XResultSetMetaDataSupplier + + diff --git a/qadevOOo/tests/java/ifc/sdbc/_XResultSetUpdate.java b/qadevOOo/tests/java/ifc/sdbc/_XResultSetUpdate.java new file mode 100644 index 0000000000..3723739107 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbc/_XResultSetUpdate.java @@ -0,0 +1,255 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbc; + +import lib.MultiMethodTest; +import lib.StatusException; + +import com.sun.star.sdbc.SQLException; +import com.sun.star.sdbc.XResultSetUpdate; +import com.sun.star.sdbc.XRowUpdate; +import com.sun.star.uno.UnoRuntime; + +/** +/** +* Testing <code>com.sun.star.sdbc.XResultSetUpdate</code> +* interface methods : +* <ul> +* <li><code> insertRow()</code></li> +* <li><code> updateRow()</code></li> +* <li><code> deleteRow()</code></li> +* <li><code> cancelRowUpdates()</code></li> +* <li><code> moveToInsertRow()</code></li> +* <li><code> moveToCurrentRow()</code></li> +* </ul> <p> +* The test requires the following object relations : +* <ul> +* <li><code>'XResultSetUpdate.UpdateTester'</code> +* inner <code>UpdateTester</code> interface implementation : +* is used for checking test results. See interface +* documentation for more information.</li> +* </ul> +* The test is <b>not designed</b> for multithreaded testing. <p> +* After it's execution environment must be recreated. +* @see com.sun.star.sdbc.XResultSetUpdate +*/ +public class _XResultSetUpdate extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XResultSetUpdate oObj = null ; + + private UpdateTester tester = null ; + + /** + * Interface contains some methods for checking + * test results. It's implementation must be passed + * to this test. + */ + public interface UpdateTester { + /** + * @return Current number of rows. + */ + int rowCount() throws SQLException ; + /** + * Updates some data in the current row but doesn't commit + * changes to the source. + */ + void update() throws SQLException ; + /** + * Checks if updates made by method <code>update</code> was + * committed to the data source. + */ + boolean wasUpdated() throws SQLException ; + /** + * Returns current row number. Really it must returns value + * < 1 if the current position is on insert row. + */ + int currentRow() throws SQLException ; + } + + /** + * Retrieves relation. + * @throw StatusException If relation not found. + */ + @Override + public void before() throws StatusException { + tester = (UpdateTester)tEnv.getObjRelation + ("XResultSetUpdate.UpdateTester") ; + + if (tester == null) { + log.println("Required relation not found !!!") ; + throw new StatusException("Required relation not found !!!", + new NullPointerException()) ; + } + } + + /** + * Calls method when the cursor position is on existing row. + * Checks total number of rows before and after method call. <p> + * Executes <code>moveToCurrentRow</code> method test before to + * be sure that cursor is not on the insert row. <p> + * Has OK status if after method execution number of rows decreased + * by one. + */ + public void _deleteRow() { + executeMethod("moveToCurrentRow()") ; + + //temporary to avoid SOffice hanging + executeMethod("updateRow()") ; + executeMethod("cancelRowUpdates()") ; + + boolean result = true ; + try { + int rowsBefore = tester.rowCount() ; + oObj.deleteRow() ; + int rowsAfter = tester.rowCount() ; + + result = rowsBefore == rowsAfter + 1 ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("deleteRow()", result) ; + } + + /** + * Using relation methods first updates some data in the current + * row, then calls <code>updateRow</code> method to commit data. + * Then checks if the data changed was committed. <p> + * Executes <code>moveToCurrentRow</code> method test before to + * be sure that cursor is not on the insert row. <p> + * Has OK status if data in the source was changed. + */ + public void _updateRow() { + executeMethod("moveToCurrentRow()") ; + boolean result = true ; + try { + tester.update() ; + oObj.updateRow() ; + + result = tester.wasUpdated() ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + tRes.tested("updateRow()", result) ; + } + + /** + * Using relation methods first updates some data in the current + * row, then calls <code>cancelRowUpdates</code> method. + * Then checks if the data changed was not committed. <p> + * Executes <code>moveToCurrentRow</code> method test before to + * be sure that cursor is not on the insert row. <p> + * Has OK status if data in the source was not changed. + */ + public void _cancelRowUpdates() { + executeMethod("moveToCurrentRow()") ; + boolean result = true ; + try { + tester.update() ; + oObj.cancelRowUpdates() ; + + result = !tester.wasUpdated() ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + tRes.tested("cancelRowUpdates()", result) ; + } + + /** + * Tries to move cursor to insert row. Then checks current row + * number. It must be less than 1. (0 as I know) <p> + */ + public void _moveToInsertRow() { + boolean result = true ; + try { + oObj.moveToInsertRow() ; + + result = tester.currentRow() < 1 ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + tRes.tested("moveToInsertRow()", result) ; + } + + /** + * Returns cursor from insert row back to previous row. <p> + * <code>moveToInsertRow</code> method test must be executed + * first for positioning cursor to insert row. <p> + * Has OK status if after method call current row number is + * above 0. + */ + public void _moveToCurrentRow() { + boolean result = true ; + try { + oObj.moveToCurrentRow() ; + + result = tester.currentRow() >= 1 ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + tRes.tested("moveToCurrentRow()", result) ; + } + + /** + * Moves cursor to the insert row, then calls the method + * <code>insertRow</code>. Before and after call stores + * total number of rows. <p> + * Has OK status if after method call rows number increases + * by one. + */ + public void _insertRow() { + executeMethod("moveToInsertRow()") ; + boolean result = true ; + try { + oObj.moveToCurrentRow(); + int rowsBefore = tester.rowCount() ; + oObj.moveToInsertRow() ; + XRowUpdate rowU = UnoRuntime.queryInterface(XRowUpdate.class, oObj); + rowU.updateString(1,"open"); + rowU.updateInt(2,5); + rowU.updateDouble(5,3.4); + rowU.updateBoolean(10,true); + oObj.insertRow() ; + oObj.moveToCurrentRow(); + int rowsAfter = tester.rowCount() ; + result = rowsBefore + 1 == rowsAfter ; + } catch (SQLException e) { + e.printStackTrace(log) ; + log.println("******"+e.getMessage()); + result = false ; + } + tRes.tested("insertRow()", result) ; + } + + /** + * Forces environment to be recreated. + */ + @Override + public void after() { + //disposeEnvironment() ; + } +} // finish class _XResultSetUpdate + + diff --git a/qadevOOo/tests/java/ifc/sdbc/_XRow.java b/qadevOOo/tests/java/ifc/sdbc/_XRow.java new file mode 100644 index 0000000000..e1babb0760 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbc/_XRow.java @@ -0,0 +1,528 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbc; + +import java.util.List; + +import lib.MultiMethodTest; + +import com.sun.star.io.XDataInputStream; +import com.sun.star.io.XTextInputStream; +import com.sun.star.sdbc.SQLException; +import com.sun.star.sdbc.XArray; +import com.sun.star.sdbc.XBlob; +import com.sun.star.sdbc.XClob; +import com.sun.star.sdbc.XRef; +import com.sun.star.sdbc.XRow; +import com.sun.star.util.Date; +import com.sun.star.util.DateTime; +import com.sun.star.util.Time; + +/** +* Testing <code>com.sun.star.sdbc.XRow</code> +* interface methods : +* <ul> +* <li><code> wasNull()</code></li> +* <li><code> getString()</code></li> +* <li><code> getBoolean()</code></li> +* <li><code> getByte()</code></li> +* <li><code> getShort()</code></li> +* <li><code> getInt()</code></li> +* <li><code> getLong()</code></li> +* <li><code> getFloat()</code></li> +* <li><code> getDouble()</code></li> +* <li><code> getBytes()</code></li> +* <li><code> getDate()</code></li> +* <li><code> getTime()</code></li> +* <li><code> getTimestamp()</code></li> +* <li><code> getBinaryStream()</code></li> +* <li><code> getCharacterStream()</code></li> +* <li><code> getObject()</code></li> +* <li><code> getRef()</code></li> +* <li><code> getBlob()</code></li> +* <li><code> getClob()</code></li> +* <li><code> getArray()</code></li> +* </ul> <p> +* +* This interface is full tested in XRowUpdate interface test. Here +* only exceptions checked. +* <p> +* +* Object relations required : +* <ul> +* <li> <code>'CurrentRowData'</code> : (may be used in other +* interface tests) is a <code>java.util.Vector</code> object +* that contains column types and values in current row. Each +* element of vector corresponds to appropriate column (element +* with index 0 to column 1, 1 -> 2, etc.). <p> +* The following <code>XRow</code> methods correspond to classes +* in Vector : +* <ul> +* <li> <code>getBinaryStream</code> - +* <code>com.sun.star.io.XDataInputStream</code> class. </li> +* <li> <code>getCharacterStream</code> - +* <code>com.sun.star.io.XTextInputStream</code> class. </li> +* <li> <code>getObject</code> - +* <code>java.lang.Object[]</code> class, the element with +* index 0 must be used. </li> +* </ul> +* Other methods uses types they return (i.e. <code>String</code> +* for <code>getString</code> method, <code>com.sun.star.sdbc.XRef</code> +* for <code>getRef</code> method). +* </li> +* </ul> +* @see com.sun.star.sdbc.XRaw +* @see ifc.sdbc._XRowUpdate +*/ +public class _XRow extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XRow oObj = null ; + private List<Object> data = null ; + private static final boolean notNullRes = true; + + /** + * Retrieves object relation first. + */ + @SuppressWarnings("unchecked") + @Override + public void before() { + data = (List<Object>) tEnv.getObjRelation("CurrentRowData") ; + } + + /** + * Always has <b>OK</b> status. + */ + public void _wasNull() { + executeMethod("getString()") ; + executeMethod("getBoolean()") ; + executeMethod("getByte()") ; + executeMethod("getShort()") ; + executeMethod("getInt()") ; + executeMethod("getLong()") ; + executeMethod("getFloat()") ; + executeMethod("getDouble()") ; + executeMethod("getBytes()") ; + executeMethod("getDate()") ; + executeMethod("getTime()") ; + executeMethod("getTimestamp()") ; + executeMethod("getBinaryStream()") ; + executeMethod("getCharacterStream()") ; + executeMethod("getObject()") ; + executeMethod("getRef()") ; + executeMethod("getBlob()") ; + executeMethod("getClob()") ; + executeMethod("getArray()") ; + + tRes.tested("wasNull()", notNullRes) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getString() { + boolean result = true ; + int col = findColumnOfType(String.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getString(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getString()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getBoolean() { + boolean result = true ; + int col = findColumnOfType(Boolean.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getBoolean(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getBoolean()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getByte() { + boolean result = true ; + int col = findColumnOfType(Byte.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getByte(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getByte()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getShort() { + boolean result = true ; + int col = findColumnOfType(Short.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getShort(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getShort()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getInt() { + boolean result = true ; + int col = findColumnOfType(Integer.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getInt(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getInt()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getLong() { + boolean result = true ; + int col = findColumnOfType(Long.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getLong(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getLong()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getFloat() { + boolean result = true ; + int col = findColumnOfType(Float.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getFloat(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getFloat()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getDouble() { + boolean result = true ; + int col = findColumnOfType(Double.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getDouble(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getDouble()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getBytes() { + boolean result = true ; + int col = findColumnOfType(byte[].class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getBytes(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getBytes()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getDate() { + boolean result = true ; + int col = findColumnOfType(Date.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getDate(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getDate()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getTime() { + boolean result = true ; + int col = findColumnOfType(Time.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getTime(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getTime()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getTimestamp() { + boolean result = true ; + int col = findColumnOfType(DateTime.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getTimestamp(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getTimestamp()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getBinaryStream() { + boolean result = true ; + int col = findColumnOfType(XDataInputStream.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getBinaryStream(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getBinaryStream()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getCharacterStream() { + boolean result = true ; + int col = findColumnOfType(XTextInputStream.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getCharacterStream(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getCharacterStream()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getObject() { + boolean result = true ; + int col = findColumnOfType(Object[].class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getObject(col, null); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getObject()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getRef() { + boolean result = true ; + int col = findColumnOfType(XRef.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getRef(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getRef()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getBlob() { + boolean result = true ; + int col = findColumnOfType(XBlob.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getBlob(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getBlob()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getClob() { + boolean result = true ; + int col = findColumnOfType(XClob.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getClob(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getClob()", result) ; + } + + /** + * Has <b>OK</b> status if no exceptions occurred in method call. + */ + public void _getArray() { + boolean result = true ; + int col = findColumnOfType(XArray.class) ; + if (col < 0) log.println("Type not found in relation: not tested"); + else { + try { + oObj.getArray(col); + } catch (SQLException e) { + log.println("Unexpected SQL exception:") ; + log.println(e) ; + result = false ; + } + } + + tRes.tested("getArray()", result) ; + } + + /** + * Finds in relation vector index of column of the appropriate + * type. + */ + protected int findColumnOfType(Class<?> clz) { + + for (int i = 0; i < data.size(); i++) + if (clz.isInstance(data.get(i))) return i + 1 ; + return -1 ; + } +} // finish class _XRow + + diff --git a/qadevOOo/tests/java/ifc/sdbc/_XRowSet.java b/qadevOOo/tests/java/ifc/sdbc/_XRowSet.java new file mode 100644 index 0000000000..cda9da30b9 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbc/_XRowSet.java @@ -0,0 +1,192 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbc; + +import ifc.sdb._XRowSetApproveBroadcaster; +import lib.MultiMethodTest; +import lib.StatusException; + +import com.sun.star.lang.EventObject; +import com.sun.star.sdbc.SQLException; +import com.sun.star.sdbc.XRowSet; +import com.sun.star.sdbc.XRowSetListener; + +/** +* Testing <code>com.sun.star.sdbc.XRowSet</code> +* interface methods : +* <ul> +* <li><code> execute()</code></li> +* <li><code> addRowSetListener()</code></li> +* <li><code> removeRowSetListener()</code></li> +* </ul> <p> +* Required object relations : +* <ul> +* <li> <code>'XRowSetApproveBroadcaster.ApproveChecker'</code>: +* implementation of inner interface +* <code>ifs.sdb._XRowSetApproveBroadcaster.RowSetApproveChecker</code> +* which can move cursor within a rowset, change row, and change the +* whole rowset. </li> +* </ul> <p> +* It is better to recreate the object after test, because of unknown +* actions made by <code>RowSetApproveChecker</code> interface implementation. +* @see com.sun.star.sdbc.XRowSet +* @see ifc.sdb._XRowSetApproveBroadcaster +*/ +public class _XRowSet extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XRowSet oObj = null ; + private _XRowSetApproveBroadcaster.RowSetApproveChecker checker = null ; + private final TestListener listener = new TestListener() ; + + private static class TestListener implements XRowSetListener { + public boolean cursorMoved = false ; + public boolean rowChanged = false ; + public boolean rowSetChanged = false ; + + public void reset() { + cursorMoved = false ; + rowChanged = false ; + rowSetChanged = false ; + } + public void cursorMoved(EventObject ev) { + cursorMoved = true ; + } + public void rowChanged(EventObject ev) { + rowChanged = true ; + } + public void rowSetChanged(EventObject ev) { + rowSetChanged = true ; + } + public void disposing(EventObject ev) {} + } + + /** + * Retrieves relation. + * @throw StatusException If relation not found. + */ + @Override + public void before() throws StatusException { + checker = (_XRowSetApproveBroadcaster.RowSetApproveChecker) + tEnv.getObjRelation("XRowSetApproveBroadcaster.ApproveChecker") ; + + if (checker == null) { + log.println("Required relation not found !!!") ; + throw new StatusException("Required relation not found !!!", + new NullPointerException()) ; + } + } + + /** + * Reexecutes the RowSet and checks that listener was called. <p> + * Has OK status if no exceptions were raised and listener was called. + */ + public void _execute() { + requiredMethod("addRowSetListener()"); + listener.reset(); + try { + oObj.execute() ; + } catch (SQLException e) { + log.println("Exception occurred :" + e) ; + } + + tRes.tested("execute()", listener.rowSetChanged); + } + + /** + * Adds listener and calls methods moveCursor, changeRow, + * changeRowSet of the relation and then checks if appropriate + * methods of the listener were called. <p> + * Has OK status if all listener methods were called. + */ + public void _addRowSetListener() { + boolean result = true ; + + oObj.addRowSetListener(listener) ; + + checker.moveCursor() ; + result &= listener.cursorMoved ; + if (!listener.cursorMoved) + log.println("cursorMoved event wasn't called") ; + listener.reset() ; + + checker.changeRow() ; + result &= listener.rowChanged ; + if (!listener.rowChanged) + log.println("rowChanged event wasn't called") ; + listener.reset() ; + + checker.changeRowSet() ; + result &= listener.rowSetChanged ; + if (!listener.rowSetChanged) + log.println("rowSetChanged event wasn't called") ; + listener.reset() ; + + tRes.tested("addRowSetListener()", result) ; + } + + /* + * Removes listener added before, and checks for no listener + * methods were called on response to rowSet manipulations. <p> + * Methods to be successfully completed before : + * <ul> + * <li> <code>addRowSetListener()</code> </li> + * </ul> <p> + * Has OK status if no listeners methods were called. + */ + public void _removeRowSetListener() { + requiredMethod("addRowSetListener()") ; + + boolean result = true ; + + oObj.removeRowSetListener(listener) ; + + checker.moveCursor() ; + if (listener.cursorMoved) { + log.println("cursorMoved is erroneously set"); + result = false; + } + listener.reset() ; + + checker.changeRow() ; + if (listener.rowChanged) { + log.println("rowChanged is erroneously set"); + result = false; + } + listener.reset() ; + + checker.changeRowSet() ; + if (listener.rowSetChanged) { + log.println("rowSetChanged is erroneously set"); + result = false; + } + + tRes.tested("removeRowSetListener()", result) ; + } + + /** + * Disposes test environment. + */ + @Override + public void after() { + disposeEnvironment() ; + } + +} // finish class _XRowSet + diff --git a/qadevOOo/tests/java/ifc/sdbc/_XRowUpdate.java b/qadevOOo/tests/java/ifc/sdbc/_XRowUpdate.java new file mode 100644 index 0000000000..88122513cc --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbc/_XRowUpdate.java @@ -0,0 +1,684 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbc; + +import java.util.List; + +import lib.MultiMethodTest; +import lib.Status; +import util.utils; +import util.ValueComparer; + +import com.sun.star.io.XDataInputStream; +import com.sun.star.io.XInputStream; +import com.sun.star.io.XTextInputStream; +import com.sun.star.sdbc.SQLException; +import com.sun.star.sdbc.XRow; +import com.sun.star.sdbc.XRowUpdate; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.Date; +import com.sun.star.util.DateTime; +import com.sun.star.util.Time; + +/** +* Testing <code>com.sun.star.sdbc.XRowUpdate</code> +* interface methods : +* <ul> +* <li><code> updateNull()</code></li> +* <li><code> updateBoolean()</code></li> +* <li><code> updateByte()</code></li> +* <li><code> updateShort()</code></li> +* <li><code> updateInt()</code></li> +* <li><code> updateLong()</code></li> +* <li><code> updateFloat()</code></li> +* <li><code> updateDouble()</code></li> +* <li><code> updateString()</code></li> +* <li><code> updateBytes()</code></li> +* <li><code> updateDate()</code></li> +* <li><code> updateTime()</code></li> +* <li><code> updateTimestamp()</code></li> +* <li><code> updateBinaryStream()</code></li> +* <li><code> updateCharacterStream()</code></li> +* <li><code> updateObject()</code></li> +* <li><code> updateNumericObject()</code></li> +* </ul> <p> +* Object relations required : +* <ul> +* <li> <code>'CurrentRowData'</code> : (may be used in other +* interface tests) is a <code>java.util.Vector</code> object +* that contains column types and values in current row. Each +* element of vector corresponds to appropriate column (element +* with index 0 to column 1, 1 -> 2, etc.). <p> +* The following <code>XRowUpdate</code> methods correspond to classes +* in Vector : +* <ul> +* <li> <code>setBinaryStream</code> - +* <code>com.sun.star.io.XDataInputStream</code> class. </li> +* <li> <code>setCharacterStream</code> - +* <code>com.sun.star.io.XTextInputStream</code> class. </li> +* <li> <code>setObject</code> - +* <code>java.lang.Object[]</code> class, the element with +* index 0 must be used. </li> +* </ul> +* Other methods uses types they return (i.e. <code>String</code> +* for <code>setString</code> method, <code>com.sun.star.sdbc.XRef</code> +* for <code>setRef</code> method). +* </li> +* <li> <code>'XRowUpdate.XRow'</code> : implementation of <code> +* com.sun.star.sdbc.XRow</code> interface for checking updated data. +* </li> +* </ul> <p> +* The test <b>damages</b> the object, so it is recreated finally. +* @see com.sun.star.sdbc.XRowUpdate +* @see com.sun.star.sdbc.XRow +*/ +public class _XRowUpdate extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XRowUpdate oObj = null ; + + private List<Object> rowData = null ; + private XRow row = null ; + + /** + * Gets relations. + */ + @SuppressWarnings("unchecked") + @Override + public void before() { + rowData = (List<Object>) tEnv.getObjRelation("CurrentRowData") ; + if (rowData == null) { + log.println("!!! 'CurrentRowData' relation not found !!!") ; + } + row = (XRow) tEnv.getObjRelation("XRowUpdate.XRow") ; + if (rowData == null) { + log.println("!!! 'XRowUpdate.XRow' relation not found !!!") ; + } + } + + /** + * Try to set NULL value for each column. Then using <code>XRow</code> + * relation check if NULL was really set. <p> + * Has OK status if for every column NULL value was successfully set. + * @see com.sun.star.sdbc.XRow + */ + public void _updateNull() { + boolean result = true ; + for (int i = 0; i < rowData.size(); i++) { + if (rowData.get(i) == null) continue ; + log.print(" Setting NULL at column #" + (i+1) + " ...") ; + try { + oObj.updateNull(i + 1) ; + + if (rowData.get(i) instanceof String) row.getString(i + 1) ; + if (rowData.get(i) instanceof Boolean) row.getBoolean(i + 1) ; + if (rowData.get(i) instanceof Byte) row.getByte(i + 1) ; + if (rowData.get(i) instanceof Short) row.getShort(i + 1) ; + if (rowData.get(i) instanceof Integer) row.getInt(i + 1) ; + if (rowData.get(i) instanceof Long) row.getLong(i + 1) ; + if (rowData.get(i) instanceof Float) row.getFloat(i + 1) ; + if (rowData.get(i) instanceof Double) row.getDouble(i + 1) ; + if (rowData.get(i) instanceof byte[]) row.getBytes(i + 1) ; + if (rowData.get(i) instanceof Date) row.getDate(i + 1) ; + if (rowData.get(i) instanceof Time) row.getTime(i + 1) ; + if (rowData.get(i) instanceof DateTime) + row.getTimestamp(i + 1) ; + if (rowData.get(i) instanceof XDataInputStream) + row.getBinaryStream(i + 1) ; + if (rowData.get(i) instanceof XTextInputStream) + row.getCharacterStream(i + 1) ; + + if (!row.wasNull()) { + log.println("FAILED") ; + log.println("Not NULL was returned !!!") ; + result = false ; + } else { + log.println("OK") ; + } + } catch (SQLException e) { + log.println("FAILED") ; + e.printStackTrace(log) ; + result = false ; + } + } + + tRes.tested("updateNull()", result) ; + } + + /** + * Updates column with the appropriate type (if exists) and then + * checks result with interface <code>XRow</code>.<p> + * Has OK status if column successfully updated, ahd the same + * result returned. + */ + public void _updateBoolean() { + boolean result = true ; + int idx = findColumnOfType(Boolean.class) ; + + if (idx < 0) { + log.println("Required type not found") ; + tRes.tested("updateBoolean()", Status.skipped(true)) ; + return ; + } + + try { + boolean newVal = !row.getBoolean(idx) ; + oObj.updateBoolean(idx, newVal) ; + boolean getVal = row.getBoolean(idx) ; + result = newVal == getVal ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("updateBoolean()", result) ; + } + + /** + * Updates column with the appropriate type (if exists) and then + * checks result with interface <code>XRow</code>.<p> + * Has OK status if column successfully updated, ahd the same + * result returned. + */ + public void _updateByte() { + boolean result = true ; + int idx = findColumnOfType(Byte.class) ; + + if (idx < 0) { + log.println("Required type not found") ; + tRes.tested("updateByte()", Status.skipped(true)) ; + return ; + } + + try { + byte newVal = (byte) (row.getByte(idx) + 1) ; + oObj.updateByte(idx, newVal) ; + byte getVal = row.getByte(idx) ; + result = newVal == getVal ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("updateByte()", result) ; + } + + /** + * Updates column with the appropriate type (if exists) and then + * checks result with interface <code>XRow</code>.<p> + * Has OK status if column successfully updated, ahd the same + * result returned. + */ + public void _updateShort() { + boolean result = true ; + int idx = findColumnOfType(Short.class) ; + + if (idx < 0) { + log.println("Required type not found") ; + tRes.tested("updateShort()", Status.skipped(true)) ; + return ; + } + + try { + short newVal = (short) (row.getShort(idx) + 1) ; + oObj.updateShort(idx, newVal) ; + short getVal = row.getShort(idx) ; + result = newVal == getVal ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("updateShort()", result) ; + } + + /** + * Updates column with the appropriate type (if exists) and then + * checks result with interface <code>XRow</code>.<p> + * Has OK status if column successfully updated, ahd the same + * result returned. + */ + public void _updateInt() { + boolean result = true ; + int idx = findColumnOfType(Integer.class) ; + + if (idx < 0) { + log.println("Required type not found") ; + tRes.tested("updateInt()", Status.skipped(true)) ; + return ; + } + + try { + int newVal = 1 + row.getInt(idx) ; + oObj.updateInt(idx, newVal) ; + int getVal = row.getInt(idx) ; + result = newVal == getVal ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("updateInt()", result) ; + } + + /** + * Updates column with the appropriate type (if exists) and then + * checks result with interface <code>XRow</code>.<p> + * Has OK status if column successfully updated, ahd the same + * result returned. + */ + public void _updateLong() { + boolean result = true ; + int idx = findColumnOfType(Long.class) ; + + if (idx < 0) { + log.println("Required type not found") ; + tRes.tested("updateLong()", Status.skipped(true)) ; + return ; + } + + try { + long newVal = 1 + row.getLong(idx) ; + oObj.updateLong(idx, newVal) ; + long getVal = row.getLong(idx) ; + result = newVal == getVal ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("updateLong()", result) ; + } + + /** + * Updates column with the appropriate type (if exists) and then + * checks result with interface <code>XRow</code>.<p> + * Has OK status if column successfully updated, ahd the same + * result returned. + */ + public void _updateFloat() { + boolean result = true ; + int idx = findColumnOfType(Float.class) ; + + if (idx < 0) { + log.println("Required type not found") ; + tRes.tested("updateFloat()", Status.skipped(true)) ; + return ; + } + + try { + float newVal = (float) (1.1 + row.getFloat(idx)); + oObj.updateFloat(idx, newVal) ; + float getVal = row.getFloat(idx) ; + result = newVal == getVal ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("updateFloat()", result) ; + } + + /** + * Updates column with the appropriate type (if exists) and then + * checks result with interface <code>XRow</code>.<p> + * Has OK status if column successfully updated, ahd the same + * result returned. + */ + public void _updateDouble() { + boolean result = true ; + int idx = findColumnOfType(Double.class) ; + + if (idx < 0) { + log.println("Required type not found") ; + tRes.tested("updateDouble()", Status.skipped(true)) ; + return ; + } + + try { + double newVal = 1.1 + row.getDouble(idx) ; + oObj.updateDouble(idx, newVal) ; + double getVal = row.getDouble(idx) ; + result = utils.approxEqual(newVal, getVal); + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("updateDouble()", result) ; + } + + /** + * Updates column with the appropriate type (if exists) and then + * checks result with interface <code>XRow</code>.<p> + * Has OK status if column successfully updated, ahd the same + * result returned. + */ + public void _updateString() { + boolean result = true ; + int idx = findColumnOfType(String.class) ; + + if (idx < 0) { + log.println("Required type not found") ; + tRes.tested("updateString()", Status.skipped(true)) ; + return ; + } + + try { + String newVal = "_" + row.getString(idx) ; + oObj.updateString(idx, newVal) ; + String getVal = row.getString(idx) ; + result = newVal.equals(getVal) ; + log.println("New value = '" + newVal + "', get value = '" + + getVal + "'") ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("updateString()", result) ; + } + + /** + * Updates column with the appropriate type (if exists) and then + * checks result with interface <code>XRow</code>.<p> + * Has OK status if column successfully updated, ahd the same + * result returned. + */ + public void _updateBytes() { + boolean result = true ; + int idx = findColumnOfType(byte[].class) ; + + if (idx < 0) { + log.println("Required type not found") ; + tRes.tested("updateBytes()", Status.skipped(true)) ; + return ; + } + + try { + byte[] newVal = row.getBytes(idx) ; + if (newVal == null || newVal.length == 0) { + newVal = new byte[] {34, 111, 98} ; + } else { + newVal = new byte[] {(byte) (newVal[0] + 1), 111, 98} ; + } + oObj.updateBytes(idx, newVal) ; + byte[] getVal = row.getBytes(idx) ; + result = ValueComparer.equalValue(newVal, getVal) ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("updateBytes()", result) ; + } + + /** + * Updates column with the appropriate type (if exists) and then + * checks result with interface <code>XRow</code>.<p> + * Has OK status if column successfully updated, ahd the same + * result returned. + */ + public void _updateDate() { + boolean result = true ; + int idx = findColumnOfType(Date.class) ; + + if (idx < 0) { + log.println("Required type not found") ; + tRes.tested("updateDate()", Status.skipped(true)) ; + return ; + } + + try { + Date newVal = row.getDate(idx) ; + newVal.Year ++ ; + oObj.updateDate(idx, newVal) ; + Date getVal = row.getDate(idx) ; + result = ValueComparer.equalValue(newVal, getVal) ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("updateDate()", result) ; + } + + /** + * Updates column with the appropriate type (if exists) and then + * checks result with interface <code>XRow</code>.<p> + * Has OK status if column successfully updated, ahd the same + * result returned. + */ + public void _updateTime() { + boolean result = true ; + int idx = findColumnOfType(Time.class) ; + + if (idx < 0) { + log.println("Required type not found") ; + tRes.tested("updateTime()", Status.skipped(true)) ; + return ; + } + + try { + Time newVal = row.getTime(idx) ; + newVal.Seconds ++ ; + oObj.updateTime(idx, newVal) ; + Time getVal = row.getTime(idx) ; + result = ValueComparer.equalValue(newVal, getVal) ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("updateTime()", result) ; + } + + /** + * Updates column with the appropriate type (if exists) and then + * checks result with interface <code>XRow</code>.<p> + * Has OK status if column successfully updated, ahd the same + * result returned. + */ + public void _updateTimestamp() { + boolean result = true ; + int idx = findColumnOfType(DateTime.class) ; + + if (idx < 0) { + log.println("Required type not found") ; + tRes.tested("updateTimestamp()", Status.skipped(true)) ; + return ; + } + + try { + DateTime newVal = row.getTimestamp(idx) ; + newVal.Year ++ ; + oObj.updateTimestamp(idx, newVal) ; + DateTime getVal = row.getTimestamp(idx) ; + result = ValueComparer.equalValue(newVal, getVal) ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("updateTimestamp()", result) ; + } + + + /** + * Updates column with the appropriate type (if exists) and then + * checks result with interface <code>XRow</code>.<p> + * Has OK status if column successfully updated, ahd the same + * result returned. + */ + public void _updateBinaryStream() { + boolean result = true ; + int idx = findColumnOfType(XDataInputStream.class) ; + + if (idx < 0) { + log.println("Required type not found") ; + tRes.tested("updateBinaryStream()", Status.skipped(true)) ; + return ; + } + + try { + Object oStream = tParam.getMSF(). + createInstance("com.sun.star.io.DataInputStream") ; + XInputStream newVal = UnoRuntime.queryInterface + (XInputStream.class, oStream); + + oObj.updateBinaryStream(idx, newVal, 0) ; + XInputStream getVal = row.getBinaryStream(idx) ; + result = UnoRuntime.areSame(newVal, getVal) ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } catch (com.sun.star.uno.Exception e) { + log.println("Unexpected exception:") ; + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("updateBinaryStream()", result) ; + } + + /** + * Updates column with the appropriate type (if exists) and then + * checks result with interface <code>XRow</code>.<p> + * Has OK status if column successfully updated, ahd the same + * result returned. + */ + public void _updateCharacterStream() { + boolean result = true ; + int idx = findColumnOfType(XTextInputStream.class) ; + + if (idx < 0) { + log.println("Required type not found") ; + tRes.tested("updateCharacterStream()", Status.skipped(true)) ; + return ; + } + + try { + Object oStream = tParam.getMSF(). + createInstance("com.sun.star.io.TextInputStream") ; + XInputStream newVal = UnoRuntime.queryInterface + (XInputStream.class, oStream); + + oObj.updateCharacterStream(idx, newVal, 0) ; + XInputStream getVal = row.getCharacterStream(idx) ; + result = UnoRuntime.areSame(newVal, getVal) ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } catch (com.sun.star.uno.Exception e) { + log.println("Unexpected exception:") ; + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("updateCharacterStream()", result) ; + } + + /** + * Updates column with the appropriate type (if exists) and then + * checks result with interface <code>XRow</code>.<p> + * Has OK status if column successfully updated, ahd the same + * result returned. + */ + public void _updateObject() { + boolean result = true ; + int idx = findColumnOfType(Object[].class) ; + + if (idx < 0) { + log.println("Required type not found") ; + tRes.tested("updateObject()", Status.skipped(true)) ; + return ; + } + + try { + Object newVal = tParam.getMSF(). + createInstance("com.sun.star.io.Pipe") ; + + oObj.updateObject(idx, newVal) ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } catch (com.sun.star.uno.Exception e) { + log.println("Unexpected exception:") ; + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("updateObject()", result) ; + } + + /** + * Updates column with the appropriate type (if exists) and then + * checks result with interface <code>XRow</code>.<p> + * Has OK status if column successfully updated, ahd the same + * result returned. + */ + public void _updateNumericObject() { + boolean result = true ; + int idx = findColumnOfType(Object[].class) ; + + if (idx < 0) { + log.println("Required type not found") ; + tRes.tested("updateNumericObject()", Status.skipped(true)) ; + return ; + } + + try { + Object newVal = tParam.getMSF(). + createInstance("com.sun.star.io.Pipe") ; + + oObj.updateNumericObject(idx, newVal, 0) ; + } catch (SQLException e) { + e.printStackTrace(log) ; + result = false ; + } catch (com.sun.star.uno.Exception e) { + log.println("Unexpected exception:") ; + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("updateNumericObject()", result) ; + } + + /** + * Finds in relation vector index of column of the appropriate + * type. + */ + protected int findColumnOfType(Class<?> clz) { + + for (int i = 0; i < rowData.size(); i++) + if (clz.isInstance(rowData.get(i))) return i + 1 ; + return -1 ; + } + + /** + * Disposes environment. + */ + @Override + public void after() { + disposeEnvironment() ; + } + +} // finish class _XRow + + diff --git a/qadevOOo/tests/java/ifc/sdbc/_XWarningsSupplier.java b/qadevOOo/tests/java/ifc/sdbc/_XWarningsSupplier.java new file mode 100644 index 0000000000..1758ccb1b5 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbc/_XWarningsSupplier.java @@ -0,0 +1,130 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbc; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import util.DBTools; +import util.utils; + +import com.sun.star.sdbc.SQLException; +import com.sun.star.sdbc.XResultSetUpdate; +import com.sun.star.sdbc.XRow; +import com.sun.star.sdbc.XRowUpdate; +import com.sun.star.sdbc.XWarningsSupplier; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.sdbc.XWarningsSupplier</code> +* interface methods : +* <ul> +* <li><code> getWarnings()</code></li> +* <li><code> clearWarnings()</code></li> +* </ul> <p> +* @see com.sun.star.sdbc.XWarningsSupplier +*/ +public class _XWarningsSupplier extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XWarningsSupplier oObj = null ; + + /** + * Updates value of int column by value '9999999999999999'. + * Calls method and checks returned value. <p> + * Has OK status if the method return not empty value. + */ + public void _getWarnings() { + final XRowUpdate rowUpdate = UnoRuntime.queryInterface(XRowUpdate.class, oObj); + final XResultSetUpdate resultSetUpdate = UnoRuntime.queryInterface(XResultSetUpdate.class, rowUpdate); + final XRow row = UnoRuntime.queryInterface(XRow.class, resultSetUpdate); + if ( row == null) + throw new StatusException(Status.failed("Test must be modified")); + + // not sure what the below test was intended to test, but it actually fails with an SQLException (which is + // correct for what is done there), and thus makes the complete interface test fail (which is not correct) + // So, for the moment, just let the test succeed all the time - until issue #i84235# is fixed + + if ( false ) + { + int oldVal = 0, newVal = 0; + String valToSet = "9999999999999999"; + try + { + oldVal = row.getInt(DBTools.TST_INT); + rowUpdate.updateString(DBTools.TST_INT, valToSet); + resultSetUpdate.updateRow(); + newVal = row.getInt(DBTools.TST_INT); + } + catch(com.sun.star.sdbc.SQLException e) + { + log.println("Unexpected SQL exception"); + e.printStackTrace(log); + tRes.tested("getWarnings()", false); + return; + } + + log.println("Old INT value: " + oldVal); + log.println("Value that was set: " + valToSet); + log.println("New INT value: " + newVal); + + boolean res = false; + + try + { + Object warns = oObj.getWarnings(); + res = (!utils.isVoid(warns)); + } + catch (SQLException e) + { + log.println("Exception occurred :"); + e.printStackTrace(log); + tRes.tested("getWarnings()", res); + return; + } + tRes.tested("getWarnings()", res); + } + else + tRes.tested( "getWarnings()", true ); + } + + /** + * Calls method and checks value returned by the method + * <code>getWarnings()</code>. <p> + * Has OK status if the method <code>getWarnings()</code> return void value. + */ + public void _clearWarnings() { + executeMethod("getWarnings()"); + boolean res = false; + + try { + oObj.clearWarnings(); + Object warns = oObj.getWarnings(); + res = utils.isVoid(warns); + } catch (SQLException e) { + log.println("Exception occurred :"); + e.printStackTrace(log); + tRes.tested("clearWarnings()", res); + return; + } + + tRes.tested("clearWarnings()", res); + } + +} diff --git a/qadevOOo/tests/java/ifc/sdbcx/_ResultSet.java b/qadevOOo/tests/java/ifc/sdbcx/_ResultSet.java new file mode 100644 index 0000000000..bdbf0a9a59 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbcx/_ResultSet.java @@ -0,0 +1,36 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbcx; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.sdbcx.ResultSet</code> +* service properties : +* <ul> +* <li><code> IsBookmarkable</code></li> +* <li><code> CanUpdateInsertedRows</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.sdbcx.ResultSet +*/ +public class _ResultSet extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/sdbcx/_XColumnsSupplier.java b/qadevOOo/tests/java/ifc/sdbcx/_XColumnsSupplier.java new file mode 100644 index 0000000000..02dce1d4f9 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbcx/_XColumnsSupplier.java @@ -0,0 +1,70 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbcx; + +import lib.MultiMethodTest; + +import com.sun.star.container.XNameAccess; +import com.sun.star.sdbcx.XColumnsSupplier; + +/** +* Testing <code>com.sun.star.sdbcx.XColumnsSupplier</code> +* interface methods : +* <ul> +* <li><code> getColumns()</code></li> +* </ul> <p> +* @see com.sun.star.sdbcx.XColumnsSupplier +*/ +public class _XColumnsSupplier extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XColumnsSupplier oObj = null ; + + /** + * Has OK status if method returns not null + * <code>XNameAccess</code> object, FAILED otherwise. + */ + public void _getColumns() { + + XNameAccess cols = oObj.getColumns() ; + + /* + String[] colNames = cols.getElementNames() ; + + log.println("Column names:") ; + for (int i =0 ; i < colNames.length; i++) { + log.println(" " + colNames[i]) ; + } + + XServiceInfo info = null ; + try { + info = (XServiceInfo) UnoRuntime.queryInterface + (XServiceInfo.class, cols.getByName("colNames[0]")) ; + } catch (com.sun.star.uno.Exception e) {} + + log.println("Support : " + + info.supportsService("com.sun.star.sdbcx.Column")) ; + */ + + tRes.tested("getColumns()", cols != null) ; + } + +} // finish class _XColumnsSupplier + + diff --git a/qadevOOo/tests/java/ifc/sdbcx/_XCreateCatalog.java b/qadevOOo/tests/java/ifc/sdbcx/_XCreateCatalog.java new file mode 100644 index 0000000000..15c09694a4 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbcx/_XCreateCatalog.java @@ -0,0 +1,41 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbcx; + +import lib.MultiMethodTest; +import lib.Status; + +import com.sun.star.sdbcx.XCreateCatalog; + +/** +* Testing <code>com.sun.star.sdbcx.XCreateCatalog</code> +* interface methods : +* <ul> +* <li><code>createCatalog()</code></li> +* </ul> <p> +* @see com.sun.star.sdbcx.XCreateCatalog +*/ +public class _XCreateCatalog extends MultiMethodTest { + // oObj filled by MultiMethodTest + public XCreateCatalog oObj = null; + + public void _createCatalog() { + tRes.tested("createCatalog()", Status.skipped(false)); + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/sdbcx/_XDataDefinitionSupplier.java b/qadevOOo/tests/java/ifc/sdbcx/_XDataDefinitionSupplier.java new file mode 100644 index 0000000000..a05310c50e --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbcx/_XDataDefinitionSupplier.java @@ -0,0 +1,163 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbcx; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.sdbc.XConnection; +import com.sun.star.sdbc.XDriver; +import com.sun.star.sdbcx.XDataDefinitionSupplier; +import com.sun.star.sdbcx.XTablesSupplier; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.sdbcx.XDataDefinitionSupplier</code> +* interface methods : +* <ul> +* <li><code> getDataDefinitionByConnection()</code></li> +* <li><code> getDataDefinitionByURL()</code></li> +* </ul> <p> +* Required object relations : +* <ul> +* <li> <code>'XDriver.URL'</code>: +* is the URL of the database to which to connect</code></li> +* <li><code>'XDriver.UNSUITABLE_URL'</code>: +* the wrong kind of URL to connect using given driver</li> +* <li><code>'XDriver.INFO'</code>: +* a list of arbitrary string tag/value pairs as connection arguments</li> +* </ul> <p> +* @see com.sun.star.sdbcx.XDataDefinitionSupplier +*/ +public class _XDataDefinitionSupplier extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XDataDefinitionSupplier oObj = null ; + + String url = null; + String wrongUrl = null; + PropertyValue[] info = null; + + /** + * Retrieves relations. + * @throw StatusException If any relation not found. + */ + @Override + protected void before() { + url = (String)tEnv.getObjRelation("XDriver.URL"); + if (url == null) { + throw new StatusException(Status.failed( + "Couldn't get relation 'XDriver.URL'")); + } + wrongUrl = (String)tEnv.getObjRelation("XDriver.UNSUITABLE_URL"); + if (wrongUrl == null) { + throw new StatusException(Status.failed( + "Couldn't get relation 'XDriver.WRONG_URL'")); + } + info = (PropertyValue[])tEnv.getObjRelation("XDriver.INFO"); + if (info == null) { + throw new StatusException(Status.failed( + "Couldn't get relation 'XDriver.INFO'")); + } + } + + XConnection connection = null; + + /** + * Obtains the connection to url(relation <code>'XDriver.URL'</code>) + * with info(relation <code>'XDriver.INFO'</code>). + * Calls the method with obtained connection and checks that returned value + * isn't null. + */ + public void _getDataDefinitionByConnection() { + boolean bRes = true; + XDriver xDriver = UnoRuntime.queryInterface(XDriver.class, oObj); + if (xDriver == null) { + log.println("The XDriver interface isn't supported"); + tRes.tested("getDataDefinitionByConnection()", + Status.skipped(false)); + return; + } + try { + connection = xDriver.connect(url, info); + } catch(com.sun.star.sdbc.SQLException e) { + e.printStackTrace(log); + bRes = false; + } + if (connection == null) { + log.println("Couldn't get connection to specified url using " + + "specified info"); + tRes.tested("getDataDefinitionByConnection()", + Status.skipped(false)); + return; + } + XTablesSupplier xTS = null; + try { + log.println("getDataDefinitionByConnection(connection)"); + xTS = oObj.getDataDefinitionByConnection(connection); + bRes = xTS != null; + } catch(com.sun.star.sdbc.SQLException e) { + log.println("Unexpected exception: " + e); + bRes = false; + } + + try { + log.println("getDataDefinitionByConnection(null)"); + xTS = oObj.getDataDefinitionByConnection(null); + bRes = xTS == null; + } catch(com.sun.star.sdbc.SQLException e) { + log.println("Exception: " + e); + bRes = true; + } + + tRes.tested("getDataDefinitionByConnection()", bRes); + } + + /** + * Calls the method with url and info obtained from the relations + * <code>XDriver.URL</code> and <code>XDriver.INFO</code>. + * Checks that returned value isn't null. + * Then calls the method with the unsuitable url obtained from the relation + * <code>XDriver.UNSUITABLE_URL</code> and checks that SQLException + * exception was thrown. + */ + public void _getDataDefinitionByURL() { + try { + log.println("getDataDefinitionByURL('" + url + "')"); + oObj.getDataDefinitionByURL(url, info); + } catch (com.sun.star.sdbc.SQLException e) { + log.println("Unexpected exception: " + e); + } + + try { + log.println("getDataDefinitionByURL('" + wrongUrl + "')"); + oObj.getDataDefinitionByURL(wrongUrl, info); + log.println("Exception was expected"); + } catch (com.sun.star.sdbc.SQLException e) { + log.println("Expected exception"); + } + + tRes.tested("getDataDefinitionByURL()", true); + + } +} // finish class _XDataDefinitionSupplier + + diff --git a/qadevOOo/tests/java/ifc/sdbcx/_XDeleteRows.java b/qadevOOo/tests/java/ifc/sdbcx/_XDeleteRows.java new file mode 100644 index 0000000000..af79864a52 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbcx/_XDeleteRows.java @@ -0,0 +1,84 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbcx; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.sdbc.XResultSet; +import com.sun.star.sdbcx.XDeleteRows; +import com.sun.star.sdbcx.XRowLocate; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.sdbcx.XDeleteRows</code> +* interface methods : +* <ul> +* <li><code> deleteRows()</code></li> +* </ul> <p> +* @see com.sun.star.sdbcx.XDeleteRows +*/ +public class _XDeleteRows extends MultiMethodTest { + // oObj filled by MultiMethodTest + public XDeleteRows oObj = null ; + + /** + * Retrieves bookmark using XRowLocate and deletes + * row pointed by this bookmark. <p> + * Has OK status if number of rows after deleting is less than before + * and no exception rises while method call, FAILED otherwise. <p> + */ + public void _deleteRows() { + XRowLocate xRowLocate = UnoRuntime.queryInterface(XRowLocate.class, oObj); + XResultSet xResultSet = UnoRuntime.queryInterface(XResultSet.class, oObj); + if (xRowLocate == null || xResultSet == null) { + log.println("The test must be modified according to "+ + "component testcase"); + throw new StatusException(Status.failed( + "The component doesn't support one of the "+ + "required interfaces")); + } + + int rowsBefore = 0, rowsAfter = 0; + Object bkmrk = null; + try { + xResultSet.last(); + rowsBefore = xResultSet.getRow(); + xResultSet.first(); + bkmrk = xRowLocate.getBookmark(); + oObj.deleteRows(new Object[] {bkmrk}); + xResultSet.last(); + rowsAfter = xResultSet.getRow(); + } catch(com.sun.star.sdbc.SQLException e) { + log.println("SQLException:" + e); + tRes.tested("deleteRows()", false); + return; + } + + log.println("Rows before: " + rowsBefore + ", after: " + rowsAfter); + tRes.tested("deleteRows()", rowsBefore - 1 == rowsAfter); + } + + @Override + protected void after() { + disposeEnvironment(); + } +} // finish class _XDeleteRows + diff --git a/qadevOOo/tests/java/ifc/sdbcx/_XDropCatalog.java b/qadevOOo/tests/java/ifc/sdbcx/_XDropCatalog.java new file mode 100644 index 0000000000..e697f8394c --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbcx/_XDropCatalog.java @@ -0,0 +1,41 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbcx; + +import lib.MultiMethodTest; +import lib.Status; + +import com.sun.star.sdbcx.XDropCatalog; + +/** +* Testing <code>com.sun.star.sdbcx.XDropCatalog</code> +* interface methods : +* <ul> +* <li><code>dropCatalog()</code></li> +* </ul> <p> +* @see com.sun.star.sdbcx.XDropCatalog +*/ +public class _XDropCatalog extends MultiMethodTest { + // oObj filled by MultiMethodTest + public XDropCatalog oObj = null; + + public void _dropCatalog() { + tRes.tested("dropCatalog()", Status.skipped(false)); + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/sdbcx/_XRowLocate.java b/qadevOOo/tests/java/ifc/sdbcx/_XRowLocate.java new file mode 100644 index 0000000000..9a1726932a --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbcx/_XRowLocate.java @@ -0,0 +1,225 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sdbcx; + +import lib.MultiMethodTest; + +import com.sun.star.sdbc.SQLException; +import com.sun.star.sdbcx.XRowLocate; + +/** +* Testing <code>com.sun.star.sdbcx.XRowLocate</code> +* interface methods : +* <ul> +* <li><code> getBookmark()</code></li> +* <li><code> moveToBookmark()</code></li> +* <li><code> moveRelativeToBookmark()</code></li> +* <li><code> compareBookmarks()</code></li> +* <li><code> hasOrderedBookmarks()</code></li> +* <li><code> hashBookmark()</code></li> +* </ul> <p> +* Object relations needed : +* <ul> +* <li> <code>XRowLocate.HasOrderedBookmarks</code> <b>(optional)</b>: +* <code>Boolean</code> type. If information about bookmark ordering +* of object tested exists it placed in this relation.</li> +* </ul> <p> +* @see com.sun.star.sdbcx.XRowLocate +*/ +public class _XRowLocate extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XRowLocate oObj = null ; + + private Object bookmark1 = null, bookmark2 = null ; + + /** + * Gets the bookmark of the current cursor position and + * stores it for other methods use. + * Has OK status if method returns not null + * <code>XNameAccess</code> object, FAILED otherwise. + */ + public void _getBookmark() { + + try { + bookmark1 = oObj.getBookmark() ; + } catch (SQLException e) { + log.println("Exception occurred :" + e) ; + } + + tRes.tested("getBookmark()", bookmark1 != null) ; + } + + /** + * Moves to bookmark previously created by method <code>_getBookmark</code> + * then creates new bookmark and compare it to the first one. The + * row difference must be equal to 0. <p> + * Method tests to be completed successfully before : + * <ul> + * <li> <code>getBookmark()</code> : to have a bookmark to move to.</li> + * </ul> + * Method tests to be executed before : + * <ul> + * <li> <code>moveRelativeToBookmark()</code> : to move the cursor from + * the initial position, to check if it returns back.</li> + * </ul> <p> + * Has OK status difference between positions of bookmarks (where + * cursor was moved to and created new one) equals to 0 and no + * exceptions occurred, FAILED otherwise. + */ + public void _moveToBookmark() { + requiredMethod("getBookmark()") ; + executeMethod("moveRelativeToBookmark()") ; + + int comparison = -1 ; + Object tmpBookmark = null ; + try { + synchronized(oObj) { + oObj.moveToBookmark(bookmark1) ; + tmpBookmark = oObj.getBookmark() ; + } + comparison = oObj.compareBookmarks(bookmark1, tmpBookmark) ; + } catch (SQLException e) { + log.println("Exception occurred :" + e) ; + } + + tRes.tested("moveToBookmark()", comparison == 0) ; + } + + /** + * Moves the cursor to the position with offset 2 from the + * bookmark created by <code>_getBookmark()</code> method and + * then creates a bookmark of new position. <p> + * Method tests to be completed successfully before : + * <ul> + * <li> <code>getBookmark()</code> : to have a bookmark to move to.</li> + * </ul> <p> + * Has OK status if no exceptions occurred while method call. + */ + public void _moveRelativeToBookmark() { + requiredMethod("getBookmark()") ; + + boolean result = true ; + try { + synchronized (oObj) { + oObj.moveRelativeToBookmark(bookmark1, 1) ; + bookmark2 = oObj.getBookmark() ; + } + } catch (SQLException e) { + log.println("Exception occurred :" + e) ; + result = false ; + } + + tRes.tested("moveRelativeToBookmark()", result) ; + } + + /** + * Compares bookmarks created in <code>getBookmark()</code> and + * <code>moveRelativeToBokkmark()</code> methods. + * Method tests to be completed successfully before : + * <ul> + * <li> <code>getBookmark()</code> : to have first bookmark to compare.</li> + * <li> <code>moveRelativeToBookmark()</code> : to have second + * bookmark to compare.</li> + * </ul> <p> + * Has OK status if difference in bookmark positions equals to 2. + */ + public void _compareBookmarks() { + requiredMethod("getBookmark()") ; + requiredMethod("moveRelativeToBookmark()") ; + + int comparison = 0 ; + int comparison1 = 0 ; + try { + comparison = oObj.compareBookmarks(bookmark1, bookmark2) ; + comparison1 = oObj.compareBookmarks(bookmark1, bookmark1) ; + } catch (SQLException e) { + log.println("Exception occurred :" + e) ; + } + + if (comparison != -1) { + log.println("! Wrong compare number :" + comparison) ; + } + + tRes.tested("compareBookmarks()", comparison == -1 && comparison1 == 0) ; + } + + /** + * Calls method. If relation is not found, returned result is not + * checked. <p> + * Has OK status if method returned right value (in case if relation + * and value to compare to exist), or just successfully returned + * (in case of no relation). + */ + public void _hasOrderedBookmarks() { + boolean result = true ; + boolean res = true ; + + // Optional relation + Boolean has = (Boolean) tEnv.getObjRelation + ("XRowLocate.HasOrderedBookmarks") ; + + try { + res = oObj.hasOrderedBookmarks() ; + } catch (SQLException e) { + log.println("Exception occurred :" + e) ; + result = false ; + } + + if (has == null) { + log.println("Optional relation not found - result not checked") ; + } else { + result &= res == has.booleanValue() ; + } + + tRes.tested("hasOrderedBookmarks()", result) ; + } + + /** + * Gets hash values of two previously created bookmarks of different + * cursor positions and compares them. <p> + * Method tests to be completed successfully before : + * <ul> + * <li> <code>getBookmark()</code> : to have first bookmark.</li> + * <li> <code>moveRelativeToBookmark()</code> : to have second + * bookmark.</li> + * </ul> <p> + * Has OK status if hash values of two bookmarks are different. + */ + public void _hashBookmark() { + requiredMethod("getBookmark()") ; + requiredMethod("moveRelativeToBookmark()") ; + + boolean result = true ; + try { + int hash1 = oObj.hashBookmark(bookmark1) ; + int hash2 = oObj.hashBookmark(bookmark2) ; + log.println("1st hash = " + hash1 + ", 2nd = " + hash2) ; + + result = hash1 != hash2 ; + } catch (SQLException e) { + log.println("Exception occurred :" + e) ; + result = false ; + } + + tRes.tested("hashBookmark()", result) ; + } + +} // finish class _XRowLocate + diff --git a/qadevOOo/tests/java/ifc/sdbcx/_XTablesSupplier.java b/qadevOOo/tests/java/ifc/sdbcx/_XTablesSupplier.java new file mode 100644 index 0000000000..5c48e44e1b --- /dev/null +++ b/qadevOOo/tests/java/ifc/sdbcx/_XTablesSupplier.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 ifc.sdbcx; + +import com.sun.star.container.XNameAccess; +import com.sun.star.sdbcx.XTablesSupplier; +import com.sun.star.lang.XServiceInfo; +import com.sun.star.uno.UnoRuntime; +import lib.MultiMethodTest; + +/** +* Testing <code>com.sun.star.sdbcx.XTablesSupplier</code> +* interface methods : +* <ul> +* <li><code> getTables()</code></li> +* </ul> <p> +* @see com.sun.star.sdbcx.XTablesSupplier +*/ +public class _XTablesSupplier extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XTablesSupplier oObj = null ; + + /** + * Has OK status if method returns not null + * <code>XNameAccess</code> object, FAILED otherwise. + */ + public void _getTables() { + XNameAccess tabs = oObj.getTables() ; + + + String[] tabNames = tabs.getElementNames() ; + + log.println("Table names:") ; + for (int i =0 ; i < tabNames.length; i++) { + log.println(" " + tabNames[i]) ; + } + + XServiceInfo info = null ; + try { + info = UnoRuntime.queryInterface + (XServiceInfo.class, tabs.getByName(tabNames[0])) ; + } catch (com.sun.star.uno.Exception e) {} + + if (info != null) { + log.println("Support : " + + info.supportsService("com.sun.star.sdbcx.Table")) ; + } + + tRes.tested("getTables()", info != null) ; + } + +} // finish class _XTablesSupplier + + diff --git a/qadevOOo/tests/java/ifc/sheet/_SpreadsheetDocument.java b/qadevOOo/tests/java/ifc/sheet/_SpreadsheetDocument.java new file mode 100644 index 0000000000..5133156347 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sheet/_SpreadsheetDocument.java @@ -0,0 +1,41 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sheet; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.sheet.SpreadsheetDocument</code> +* service properties : +* <ul> +* <li><code> NamedRanges</code></li> +* <li><code> DatabaseRanges</code></li> +* <li><code> ColumnLabelRanges</code></li> +* <li><code> RowLabelRanges</code></li> +* <li><code> SheetLinks</code></li> +* <li><code> AreaLinks</code></li> +* <li><code> DDELinks</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.sheet.SpreadsheetDocument +*/ +public class _SpreadsheetDocument extends MultiPropertyTest { +} // finish class _SpreadsheetDocument + + diff --git a/qadevOOo/tests/java/ifc/sheet/_TableAutoFormatField.java b/qadevOOo/tests/java/ifc/sheet/_TableAutoFormatField.java new file mode 100644 index 0000000000..305d3e2193 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sheet/_TableAutoFormatField.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 ifc.sheet; + +import lib.MultiPropertyTest; + +import com.sun.star.lang.Locale; + +/** +* Testing <code>com.sun.star.sheet.TableAutoFormatField</code> +* service properties : +* <ul> +* <li><code> CharFontName</code></li> +* <li><code> CharHeight</code></li> +* <li><code> CharWeight</code></li> +* <li><code> CharPosture</code></li> +* <li><code> CharUnderline</code></li> +* <li><code> CharCrossedOut</code></li> +* <li><code> CharContoured</code></li> +* <li><code> CharShadowed</code></li> +* <li><code> CharColor</code></li> +* <li><code> CharLocale</code></li> +* <li><code> CellBackColor</code></li> +* <li><code> IsCellBackgroundTransparent</code></li> +* <li><code> ShadowFormat</code></li> +* <li><code> ParaRightMargin </code></li> +* <li><code> ParaLeftMargin </code></li> +* <li><code> ParaBottomMargin </code></li> +* <li><code> ParaTopMargin </code></li> +* <li><code> RotateReference </code></li> +* <li><code> RotateAngle </code></li> +* <li><code> Orientation </code></li> +* <li><code> IsTextWrapped </code></li> +* <li><code> VertJustify </code></li> +* <li><code> HoriJustify </code></li> +* <li><code> CharPostureComplex </code></li> +* <li><code> CharPostureAsian </code></li> +* <li><code> CharWeightComplex </code></li> +* <li><code> CharWeightAsian </code></li> +* <li><code> CharHeightComplex </code></li> +* <li><code> CharHeightAsian </code></li> +* <li><code> CharFontPitchComplex </code></li> +* <li><code> CharFontPitchAsian </code></li> +* <li><code> CharFontPitch </code></li> +* <li><code> CharFontFamilyComplex </code></li> +* <li><code> CharFontFamilyAsian </code></li> +* <li><code> CharFontFamily </code></li> +* <li><code> CharFontCharSetComplex </code></li> +* <li><code> CharFontCharSetAsian </code></li> +* <li><code> CharFontCharSet </code></li> +* <li><code> CharFontStyleNameComplex </code></li> +* <li><code> CharFontStyleNameAsian </code></li> +* <li><code> CharFontStyleName </code></li> +* <li><code> CharFontNameComplex </code></li> +* <li><code> CharFontNameAsian </code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.sheet.TableAutoFormatField +*/ +public class _TableAutoFormatField extends MultiPropertyTest { + + /** + * Only some values can be used (which identify font name). + * In this property value is changed from 'Times New Roman' + * to 'Courier' and viceversa. + */ + public void _CharFontName() { + testProperty("CharFontName", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return "Courier".equals(old) ? "Times New Roman" : "Courier" ; + } + }) ; + } + + /** + * Locale values are predefined and can't be arbitrary changed. + * In this property value is changed from ('de', 'DE', '') + * to ('es', 'ES', '') and vice versa. + */ + public void _CharLocale() { + testProperty("CharLocale", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return old == null || ((Locale)old).Language.equals( "de" ) ? + new Locale("es", "ES", "") : new Locale("de", "DE", "") ; + } + }) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _ShadowFormat() { + testProperty("ShadowFormat", new PropertyTester() { + @Override + protected Object getNewValue(String p, Object old) { + return old == null ? new com.sun.star.table.ShadowFormat() : + super.getNewValue(p, old) ; + } + }) ; + } + +} //finish class _TableAutoFormatField + + + diff --git a/qadevOOo/tests/java/ifc/sheet/_XCellRangeData.java b/qadevOOo/tests/java/ifc/sheet/_XCellRangeData.java new file mode 100644 index 0000000000..6e556bbd75 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sheet/_XCellRangeData.java @@ -0,0 +1,76 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.sheet; + +import lib.MultiMethodTest; +import util.ValueComparer; + +import com.sun.star.sheet.XCellRangeData; + +public class _XCellRangeData extends MultiMethodTest { + + public XCellRangeData oObj = null; + private Object[][] maCRData = null; + + /** + * Test calls the method + * state is OK if the resulting Object array + * isn't empty + */ + public void _getDataArray() { + maCRData = oObj.getDataArray(); + boolean bResult = (maCRData.length > 0); + tRes.tested("getDataArray()", bResult); + } + + /** + * Test creates an Array and calls the method + * with this Array as argument + * Then the method getDataArray is called + * and the resulting Array is compared with the + * one formerly set. + */ + public void _setDataArray() { + Object[][] newData = (Object[][]) tEnv.getObjRelation("NewData"); + if (newData == null) { + newData = new Object[maCRData.length][maCRData[0].length]; + for (int i=0; i<newData.length; i++) { + for (int j=0; j<newData[i].length; j++) { + newData[i][j] = Double.valueOf(10*i +j); + } + } + } + oObj.setDataArray(newData); + Object[][] oCRData = oObj.getDataArray(); + boolean res = ValueComparer.equalValue(oCRData[0][0],newData[0][0]); + res &= ValueComparer.equalValue(oCRData[0][1],newData[0][1]); + res &= ValueComparer.equalValue(oCRData[1][0],newData[1][0]); + res &= ValueComparer.equalValue(oCRData[1][1],newData[1][1]); + // delete values + Object[][] emptyData = new Object[newData.length][newData[0].length]; + for (int i=0; i<emptyData.length; i++) { + for (int j=0; j<emptyData[i].length; j++) { + emptyData[i][j] = ""; + } + } + oObj.setDataArray(emptyData); + tRes.tested("setDataArray()", res); + } +} + diff --git a/qadevOOo/tests/java/ifc/sheet/_XCellRangesQuery.java b/qadevOOo/tests/java/ifc/sheet/_XCellRangesQuery.java new file mode 100644 index 0000000000..de0c327af7 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sheet/_XCellRangesQuery.java @@ -0,0 +1,300 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.sheet; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.sheet.CellFlags; +import com.sun.star.sheet.FormulaResult; +import com.sun.star.sheet.XCellRangesQuery; +import com.sun.star.sheet.XSheetCellRanges; +import com.sun.star.sheet.XSpreadsheet; +import com.sun.star.table.CellAddress; +import com.sun.star.table.CellRangeAddress; +import com.sun.star.table.XColumnRowRange; +import com.sun.star.table.XTableColumns; +import com.sun.star.table.XTableRows; +import com.sun.star.uno.UnoRuntime; + +/** + * Test the XCellRangesQuery interface. + * Needed object relations: + * <ul> + * <li>"SHEET": an XSpreadSheet object + * </li> + * <li>"XCellRangesQuery.EXPECTEDRESULTS": the expected results for the test + * methods as a String array.<br> + * @see mod._sc.ScCellCursorObj or + * @see mod._sc.ScCellObj for an example how this should look like. + * </li> + * </ul> + */ +public class _XCellRangesQuery extends MultiMethodTest { + public XCellRangesQuery oObj; + protected XSpreadsheet oSheet; + protected XTableRows oRows; + protected XTableColumns oColumns; + protected String[] mExpectedResults = null; + protected boolean bMakeEntriesAndDispose = false; + String getting = ""; + String expected = ""; + // provide the object with constants to fill the expected results array + public static final int QUERYCOLUMNDIFFERENCES = 0; + public static final int QUERYCONTENTCELLS = 1; + public static final int QUERYEMPTYCELLS = 2; + public static final int QUERYFORMULACELLS = 3; + public static final int QUERYINTERSECTION = 4; + public static final int QUERYROWDIFFERENCES = 5; + public static final int QUERYVISIBLECELLS = 6; + + @Override + protected void before() { + oSheet = (XSpreadsheet) tEnv.getObjRelation("SHEET"); + + if (oSheet == null) { + log.println("Object relation oSheet is missing"); + log.println("Trying to query the needed Interface"); + oSheet = UnoRuntime.queryInterface( + XSpreadsheet.class, tEnv.getTestObject()); + + if (oSheet == null) { + throw new StatusException(Status.failed( + "Object relation oSheet is missing")); + } + } + + // expected results + mExpectedResults = (String[])tEnv.getObjRelation( + "XCellRangesQuery.EXPECTEDRESULTS"); + + XColumnRowRange oColumnRowRange = UnoRuntime.queryInterface( + XColumnRowRange.class, + oSheet); + oRows = oColumnRowRange.getRows(); + oColumns = oColumnRowRange.getColumns(); + + // set this in object if the interface has to make its own settings + // and the environment has to be disposed: this is necessary for objects + // that do not make entries on the sheet themselves + Object o = tEnv.getObjRelation("XCellRangesQuery.CREATEENTRIES"); + if (o instanceof Boolean) { + bMakeEntriesAndDispose = ((Boolean)o).booleanValue(); + } + if(bMakeEntriesAndDispose) { + oRows.removeByIndex(4, oRows.getCount() - 4); + oColumns.removeByIndex(4, oColumns.getCount() - 4); + + try { + oSheet.getCellByPosition(1, 1).setValue(5); + oSheet.getCellByPosition(1, 2).setValue(15); + oSheet.getCellByPosition(2, 1).setFormula("=B2+B3"); + oSheet.getCellByPosition(1, 3).setFormula("=B2+B4"); + oSheet.getCellByPosition(3, 2).setFormula(""); + oSheet.getCellByPosition(3, 3).setFormula(""); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Couldn't fill cells " + e.getLocalizedMessage()); + } + } + + } + + /** + * Tested method returns each cell of each column that is different to the + * cell in a given row + */ + public void _queryColumnDifferences() { + boolean res = true; + XSheetCellRanges ranges = oObj.queryColumnDifferences( + new CellAddress((short) 0, 1, 1)); + getting = ranges.getRangeAddressesAsString(); + expected = mExpectedResults[QUERYCOLUMNDIFFERENCES]; + + if (!getting.startsWith(expected)) { + log.println("Getting: " + getting); + log.println("Should have started with: " + expected); + res = false; + } + + tRes.tested("queryColumnDifferences()", res); + } + + /** + * Tested method returns all cells of a given type, defined in + * CellFlags + * @see com.sun.star.sheet.CellFlags + */ + public void _queryContentCells() { + boolean res = true; + XSheetCellRanges ranges = oObj.queryContentCells( + (short) CellFlags.VALUE); + getting = ranges.getRangeAddressesAsString(); + expected = mExpectedResults[QUERYCONTENTCELLS]; + + if (!getting.startsWith(expected)) { + log.println("Getting: " + getting); + log.println("Should have started with: " + expected); + res = false; + } + + tRes.tested("queryContentCells()", res); + } + + /** + * Tested method returns all empty cells of the range + */ + public void _queryEmptyCells() { + boolean res = true; + XSheetCellRanges ranges = oObj.queryEmptyCells(); + getting = ranges.getRangeAddressesAsString(); + expected = mExpectedResults[QUERYEMPTYCELLS]; + + int startIndex = 0; + int endIndex = -5; + String checkString = null; + + while (endIndex != -1) { + startIndex = endIndex + 5; + endIndex = expected.indexOf(" ... ", startIndex); + if (endIndex == -1) { + checkString = expected.substring(startIndex); + } + else { + checkString = expected.substring(startIndex, endIndex); + } + res &= (getting.indexOf(checkString) > -1); + } + + if (!res) { + log.println("Getting: " + getting); + log.println("Should have contained: " + expected); + } + + tRes.tested("queryEmptyCells()", res); + } + + /** + * Tested method returns all cells of a given type, defined in + * FormulaResult + * @see com.sun.star.sheet.FormulaResult + */ + public void _queryFormulaCells() { + boolean res = true; + XSheetCellRanges ranges = oObj.queryFormulaCells( + (short) FormulaResult.VALUE); + getting = ranges.getRangeAddressesAsString(); + expected = mExpectedResults[QUERYFORMULACELLS]; + + if (!getting.equals(expected)) { + log.println("Getting: " + getting); + log.println("Expected: " + expected); + res = false; + } + + tRes.tested("queryFormulaCells()", res); + } + + public void _queryIntersection() { + boolean res = true; + XSheetCellRanges ranges = oObj.queryIntersection( + new CellRangeAddress((short) 0, 3, 3, 7, 7)); + getting = ranges.getRangeAddressesAsString(); + expected = mExpectedResults[QUERYINTERSECTION]; + + if (!getting.startsWith(expected)) { + log.println("Getting: " + getting); + log.println("Should have started with: " + expected); + res = false; + } + + tRes.tested("queryIntersection()", res); + } + + /** + * Tested method returns each cell of each row that is different to the + * cell in a given column + */ + public void _queryRowDifferences() { + boolean res = true; + XSheetCellRanges ranges = oObj.queryRowDifferences( + new CellAddress((short) 0, 1, 1)); + getting = ranges.getRangeAddressesAsString(); + expected = mExpectedResults[QUERYROWDIFFERENCES]; + + if (!getting.startsWith(expected)) { + log.println("Getting: " + getting); + log.println("Should have started with: " + expected); + res = false; + } + + tRes.tested("queryRowDifferences()", res); + } + + public void _queryVisibleCells() { + setRowVisible(false); + + boolean res = true; + XSheetCellRanges ranges = oObj.queryVisibleCells(); + getting = ranges.getRangeAddressesAsString(); + expected = mExpectedResults[QUERYVISIBLECELLS]; + + if (!getting.startsWith(expected)) { + log.println("Getting: " + getting); + log.println("Should have started with: " + expected); + res = false; + } + + setRowVisible(true); + tRes.tested("queryVisibleCells()", res); + } + + protected void setRowVisible(boolean vis) { + try { + XPropertySet rowProp = UnoRuntime.queryInterface( + XPropertySet.class, + oRows.getByIndex(0)); + rowProp.setPropertyValue("IsVisible", Boolean.valueOf(vis)); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("couldn't get Row " + e.getLocalizedMessage()); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("problems setting Property 'isVisible' " + + e.getLocalizedMessage()); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("problems setting Property 'isVisible' " + + e.getLocalizedMessage()); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("problems setting Property 'isVisible' " + + e.getLocalizedMessage()); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("problems setting Property 'isVisible' " + + e.getLocalizedMessage()); + } + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + if(bMakeEntriesAndDispose) { + disposeEnvironment(); + } + } +} diff --git a/qadevOOo/tests/java/ifc/sheet/_XEnhancedMouseClickBroadcaster.java b/qadevOOo/tests/java/ifc/sheet/_XEnhancedMouseClickBroadcaster.java new file mode 100644 index 0000000000..fdcbcd4ff0 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sheet/_XEnhancedMouseClickBroadcaster.java @@ -0,0 +1,138 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.sheet; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleComponent; +import com.sun.star.awt.Point; +import com.sun.star.awt.Rectangle; +import com.sun.star.awt.XEnhancedMouseClickHandler; +import com.sun.star.awt.XWindow; +import com.sun.star.frame.XModel; +import com.sun.star.sheet.XEnhancedMouseClickBroadcaster; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +import lib.MultiMethodTest; +import util.AccessibilityTools; +import util.DesktopTools; +import java.awt.Robot; +import java.awt.event.InputEvent; + + +public class _XEnhancedMouseClickBroadcaster extends MultiMethodTest { + public XEnhancedMouseClickBroadcaster oObj; + protected boolean mousePressed = false; + protected boolean mouseReleased = false; + protected XEnhancedMouseClickHandler listener = new MyListener(); + private XModel docModel = null; + + @Override + public void before() { + docModel = UnoRuntime.queryInterface( + XModel.class,tEnv.getObjRelation("FirstModel")); + DesktopTools.bringWindowToFront(docModel); + } + + public void _addEnhancedMouseClickHandler() { + oObj.addEnhancedMouseClickHandler(listener); + clickOnSheet(); + + //make sure that the listener is removed even if the test fails + if ((!mousePressed) || (!mouseReleased)) { + oObj.removeEnhancedMouseClickHandler(listener); + } + + tRes.tested("addEnhancedMouseClickHandler()", + mousePressed && mouseReleased); + } + + public void _removeEnhancedMouseClickHandler() { + requiredMethod("addEnhancedMouseClickHandler()"); + mousePressed = false; + mouseReleased = false; + oObj.removeEnhancedMouseClickHandler(listener); + clickOnSheet(); + tRes.tested("removeEnhancedMouseClickHandler()", + (!mousePressed) && (!mouseReleased)); + } + + protected boolean clickOnSheet() { + log.println("try to open context menu..."); + + XWindow xWindow = AccessibilityTools.getCurrentWindow(docModel); + + XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); + + XInterface oObj = AccessibilityTools.getAccessibleObjectForRole(xRoot, AccessibleRole.PANEL); + + XAccessibleComponent window = UnoRuntime.queryInterface( + XAccessibleComponent.class, oObj); + + Point point = window.getLocationOnScreen(); + Rectangle rect = window.getBounds(); + + log.println("click mouse button..."); + try { + Robot rob = new Robot(); + int x = point.X + (rect.Width / 2)+50; + int y = point.Y + (rect.Height / 2)+50; + rob.mouseMove(x, y); + System.out.println("Press Button"); + rob.mousePress(InputEvent.BUTTON3_MASK); + System.out.println("Release Button"); + rob.mouseRelease(InputEvent.BUTTON3_MASK); + System.out.println("done"); + System.out.println("wait"); + waitForEventIdle(); + System.out.println("Press Button"); + rob.mousePress(InputEvent.BUTTON1_MASK); + System.out.println("Release Button"); + rob.mouseRelease(InputEvent.BUTTON1_MASK); + System.out.println("done "+rob.getAutoDelay()); + } catch (java.awt.AWTException e) { + log.println("couldn't press mouse button"); + } + + + return true; + } + + protected class MyListener implements XEnhancedMouseClickHandler { + public void disposing( + com.sun.star.lang.EventObject eventObject) { + } + + public boolean mousePressed( + com.sun.star.awt.EnhancedMouseEvent enhancedMouseEvent) { + log.println("mousePressed"); + mousePressed = true; + + return true; + } + + public boolean mouseReleased( + com.sun.star.awt.EnhancedMouseEvent enhancedMouseEvent) { + log.println("mouseReleased"); + mouseReleased = true; + + return true; + } + } +} diff --git a/qadevOOo/tests/java/ifc/sheet/_XRangeSelection.java b/qadevOOo/tests/java/ifc/sheet/_XRangeSelection.java new file mode 100644 index 0000000000..e2a2aa01c2 --- /dev/null +++ b/qadevOOo/tests/java/ifc/sheet/_XRangeSelection.java @@ -0,0 +1,353 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.sheet; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleComponent; +import com.sun.star.accessibility.XAccessibleContext; +import com.sun.star.awt.Point; +import com.sun.star.awt.PosSize; +import com.sun.star.awt.Rectangle; +import com.sun.star.awt.XExtendedToolkit; +import com.sun.star.awt.XTopWindow; +import com.sun.star.awt.XWindow; +import com.sun.star.beans.PropertyValue; +import com.sun.star.frame.XModel; +import com.sun.star.lang.EventObject; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.sheet.RangeSelectionEvent; +import com.sun.star.sheet.XRangeSelection; +import com.sun.star.sheet.XRangeSelectionChangeListener; +import com.sun.star.sheet.XRangeSelectionListener; +import com.sun.star.uno.UnoRuntime; +import java.awt.Robot; +import java.awt.event.InputEvent; +import java.io.PrintWriter; +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import util.AccessibilityTools; + +/** + * Check the XRangeSelection interface. + */ +public class _XRangeSelection extends MultiMethodTest { + public XRangeSelection oObj = null; + MyRangeSelectionListener aListener = null; + + @Override + public void before() { + aListener = new _XRangeSelection.MyRangeSelectionListener(log); + // workaround for i34499 + XModel xModel = (XModel)tEnv.getObjRelation("FirstModel"); + if (xModel == null) + throw new StatusException(Status.failed("Object relation FirstModel' not set.")); + XWindow xWindow = xModel.getCurrentController().getFrame().getContainerWindow(); + XTopWindow xTopWindow = UnoRuntime.queryInterface(XTopWindow.class, xWindow); + xTopWindow.toFront(); + waitForEventIdle(); + } + + + public void _abortRangeSelection() { + requiredMethod("removeRangeSelectionChangeListener()"); + requiredMethod("removeRangeSelectionListener()"); + oObj.abortRangeSelection(); + tRes.tested("abortRangeSelection()", true); + } + + public void _addRangeSelectionChangeListener() { + oObj.addRangeSelectionChangeListener(aListener); + tRes.tested("addRangeSelectionChangeListener()", true); + } + + public void _addRangeSelectionListener() { + oObj.addRangeSelectionListener(aListener); + tRes.tested("addRangeSelectionListener()", true); + } + + public void _removeRangeSelectionChangeListener() { + oObj.removeRangeSelectionChangeListener(aListener); + tRes.tested("removeRangeSelectionChangeListener()", true); + } + + public void _removeRangeSelectionListener() { + oObj.removeRangeSelectionListener(aListener); + tRes.tested("removeRangeSelectionListener()", true); + } + + public void _startRangeSelection() { + requiredMethod("addRangeSelectionChangeListener()"); + requiredMethod("addRangeSelectionListener()"); + + // get the sheet center + Point center = getSheetCenter(); + if (center == null) + throw new StatusException(Status.failed("Couldn't get the sheet center.")); + + PropertyValue[] props = new PropertyValue[3]; + props[0] = new PropertyValue(); + props[0].Name = "InitialValue"; + props[0].Value = "B3:D5"; + props[1] = new PropertyValue(); + props[1].Name = "Title"; + props[1].Value = "the title"; + props[2] = new PropertyValue(); + props[2].Name = "CloseOnMouseRelease"; + props[2].Value = Boolean.FALSE; + oObj.startRangeSelection(props); + // wait for listeners + waitForEventIdle(); + + // get closer button: move if window covers the sheet center + Point closer = getCloser(center); + if (closer == null) + throw new StatusException(Status.failed("Couldn't get the close Button.")); + + // do something to trigger the listeners + clickOnSheet(center); + waitForEventIdle(); + + // click on closer + clickOnSheet(closer); + waitForEventIdle(); + + // open a new range selection + props[0].Value = "C4:E6"; + oObj.startRangeSelection(props); + waitForEventIdle(); + props[0].Value = "C2:E3"; + oObj.startRangeSelection(props); + waitForEventIdle(); + + oObj.startRangeSelection(props); + waitForEventIdle(); + oObj.abortRangeSelection(); + aListener.reset(); + System.out.println("Listener called: " + aListener.bAbortCalled); + + tRes.tested("startRangeSelection()", aListener.listenerCalled()); + } + + /** + * Determine the current top window center and return this as a point. + * @return a point representing the sheet center. + */ + protected Point getSheetCenter() { + log.println("Trying to get AccessibleSpreadsheet"); + + XComponent xSheetDoc = (XComponent) tEnv.getObjRelation("DOCUMENT"); + + XModel xModel = UnoRuntime.queryInterface(XModel.class, xSheetDoc); + System.out.println("Name: " + xModel.getCurrentController().getFrame().getName()); + + XWindow xWindow = AccessibilityTools.getCurrentWindow(xModel); + XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); + + XAccessibleContext ctx = AccessibilityTools.getAccessibleObjectForRole(xRoot, AccessibleRole.TABLE ); + + XAccessibleComponent AccessibleSpreadsheet = UnoRuntime.queryInterface(XAccessibleComponent.class,ctx); + + log.println("Got " + util.utils.getImplName(AccessibleSpreadsheet)); + + Object toolkit = null; + + try { + toolkit = tParam.getMSF().createInstance("com.sun.star.awt.Toolkit"); + } catch (com.sun.star.uno.Exception e) { + log.println("Couldn't get toolkit"); + e.printStackTrace(log); + throw new StatusException("Couldn't get toolkit", e); + } + + XExtendedToolkit tk = UnoRuntime.queryInterface( + XExtendedToolkit.class, toolkit); + + XTopWindow tw = null; + + int k = tk.getTopWindowCount(); + for (int i=0;i<k;i++) { + try { + XTopWindow tw_temp = tk.getTopWindow(i); + XAccessible xacc = UnoRuntime.queryInterface(XAccessible.class, tw_temp); + if (xacc != null) { + if (xacc.getAccessibleContext().getAccessibleName().indexOf("d2")>0) { + tw=tw_temp; + } + } else { + log.println("\t unknown window"); + } + + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + } + } + if (tw == null) { + System.out.println("No TopWindow :-("); + return null; + } + + Point point = AccessibleSpreadsheet.getLocationOnScreen(); + Rectangle rect = AccessibleSpreadsheet.getBounds(); + Point retPoint = new Point(); + retPoint.X = point.X + (rect.Width / 2); + retPoint.Y = point.Y + (rect.Height / 2); + return retPoint; + } + + /** + * Get the closer button on the right top of the current window. + * @return A point representing the closer button. + */ + private Point getCloser(Point center) { + XMultiServiceFactory xMSF = tParam.getMSF(); + Object aToolkit = null; + try { + aToolkit = xMSF.createInstance("com.sun.star.awt.Toolkit"); + } + catch(com.sun.star.uno.Exception e) { + throw new StatusException("Could not create 'com.sun.star.awt.Toolkit'.", e); + } + XExtendedToolkit xExtendedToolkit = UnoRuntime.queryInterface(XExtendedToolkit.class, aToolkit); + XTopWindow tw = null; + + XAccessibleComponent xAccessibleComponent = null; + int k = xExtendedToolkit.getTopWindowCount(); + for (int i=0;i<k;i++) { + try { + XTopWindow tw_temp = xExtendedToolkit.getTopWindow(i); + XAccessible xacc = UnoRuntime.queryInterface(XAccessible.class, tw_temp); + if (xacc != null) { + System.out.println("Name: " + xacc.getAccessibleContext().getAccessibleName()); + if (xacc.getAccessibleContext().getAccessibleName().startsWith("the title")) { + tw = tw_temp; + XAccessibleContext xContext = xacc.getAccessibleContext(); + xAccessibleComponent = UnoRuntime.queryInterface(XAccessibleComponent.class, xContext); + if (xAccessibleComponent == null) + System.out.println("!!!! MIST !!!!"); + else + System.out.println("########## KLAPPT ########## "); + } + } + else { + log.println("\t unknown window"); + } + + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + } + } + if (tw == null) { + System.out.println("No TopWindow :-("); + return null; + } + + XWindow xWindow = UnoRuntime.queryInterface(XWindow.class, tw); + Rectangle posSize = xWindow.getPosSize(); + + // compare the center point with the dimensions of the current top window + boolean windowOK = false; + while(!windowOK) { + if (posSize.X <= center.X && center.X <= posSize.X + posSize.Width) { + if (posSize.Y <= center.Y && center.Y <= posSize.Y +posSize.Height) { + // move window out of the way + posSize.X = posSize.X + 10; + posSize.Y = posSize.Y +10; + xWindow.setPosSize(posSize.X, posSize.Y, posSize.Width, posSize.Height, PosSize.POS); + } + else { + windowOK = true; + } + } + else { + windowOK = true; + } + + } + + Point p = xAccessibleComponent.getLocationOnScreen(); + Point closer = new Point(); + closer.X = p.X + posSize.Width - 2; + closer.Y = p.Y + 5; + System.out.println("Closer: " + closer.X + " " + closer.Y); + return closer; + } + + protected boolean clickOnSheet(Point point) { + log.println("Clicking in the center of the AccessibleSpreadsheet"); + + try { + Robot rob = new Robot(); + rob.mouseMove(point.X, point.Y); + rob.mousePress(InputEvent.BUTTON1_MASK); + waitForEventIdle(); + rob.mouseRelease(InputEvent.BUTTON1_MASK); + waitForEventIdle(); + } catch (java.awt.AWTException e) { + log.println("couldn't press mouse button"); + } + + return true; + } + + /** + * + */ + public static class MyRangeSelectionListener implements XRangeSelectionListener, XRangeSelectionChangeListener { + boolean bAbortCalled = false; + boolean bChangeCalled = false; + boolean bDoneCalled = false; + PrintWriter log = null; + + public MyRangeSelectionListener(PrintWriter log) { + this.log = log; + } + + public void aborted(RangeSelectionEvent rangeSelectionEvent) { + log.println("Called 'aborted' with: " + rangeSelectionEvent.RangeDescriptor); + bAbortCalled = true; + } + + public void descriptorChanged(RangeSelectionEvent rangeSelectionEvent) { + log.println("Called 'descriptorChanged' with: " + rangeSelectionEvent.RangeDescriptor); + bChangeCalled = true; + } + + public void done(RangeSelectionEvent rangeSelectionEvent) { + log.println("Called 'done' with: " + rangeSelectionEvent.RangeDescriptor); + bDoneCalled = true; + } + + public boolean listenerCalled() { + return bAbortCalled & bChangeCalled & bDoneCalled; + } + + public void reset() { + bAbortCalled = false; + bChangeCalled = false; + bDoneCalled = false; + } + + /** + * ignore disposing + * @param eventObject The event. + */ + public void disposing(EventObject eventObject) { + } + } +} diff --git a/qadevOOo/tests/java/ifc/style/_CharacterProperties.java b/qadevOOo/tests/java/ifc/style/_CharacterProperties.java new file mode 100644 index 0000000000..90f6b85315 --- /dev/null +++ b/qadevOOo/tests/java/ifc/style/_CharacterProperties.java @@ -0,0 +1,537 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.style; + +import java.util.HashMap; +import java.util.Iterator; + +import lib.MultiPropertyTest; +import util.ValueChanger; +import util.utils; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XNameContainer; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.xml.AttributeData; + + +/** +* Testing <code>com.sun.star.style.CharacterProperties</code> +* service properties : +* <ul> +* <li><code> CharFontName</code></li> +* <li><code> CharFontStyleName</code></li> +* <li><code> CharFontFamily</code></li> +* <li><code> CharFontCharSet</code></li> +* <li><code> CharFontPitch</code></li> +* <li><code> CharColor</code></li> +* <li><code> CharEscapement</code></li> +* <li><code> CharHeight</code></li> +* <li><code> CharUnderline</code></li> +* <li><code> CharWeight</code></li> +* <li><code> CharPosture</code></li> +* <li><code> CharAutoKerning</code></li> +* <li><code> CharBackColor</code></li> +* <li><code> CharBackTransparent</code></li> +* <li><code> CharCaseMap</code></li> +* <li><code> CharCrossedOut</code></li> +* <li><code> CharFlash</code></li> +* <li><code> CharStrikeout</code></li> +* <li><code> CharWordMode</code></li> +* <li><code> CharKerning</code></li> +* <li><code> CharLocale</code></li> +* <li><code> CharKeepTogether</code></li> +* <li><code> CharNoLineBreak</code></li> +* <li><code> CharShadowed</code></li> +* <li><code> CharFontType</code></li> +* <li><code> CharStyleName</code></li> +* <li><code> CharContoured</code></li> +* <li><code> CharCombineIsOn</code></li> +* <li><code> CharCombinePrefix</code></li> +* <li><code> CharCombineSuffix</code></li> +* <li><code> CharEmphasize</code></li> +* <li><code> CharRelief</code></li> +* <li><code> RubyText</code></li> +* <li><code> RubyAdjust</code></li> +* <li><code> RubyCharStyleName</code></li> +* <li><code> RubyIsAbove</code></li> +* <li><code> CharRotation</code></li> +* <li><code> CharRotationIsFitToLine</code></li> +* <li><code> CharScaleWidth</code></li> +* <li><code> HyperLinkURL</code></li> +* <li><code> HyperLinkTarget</code></li> +* <li><code> HyperLinkName</code></li> +* <li><code> TextUserDefinedAttributes</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'PARA'</code>: <b>optional</b> +* (must implement <code>XPropertySet</code>): +* if this relation is specified then some properties +* testing is performed in a special manner. (e.g. this used in +* <code>sw.SwXParagraph</code> component) For details +* see {@link #changeProp} method description. </li> +* <li> <code>'PORTION'</code>: <b>optional</b> +* (must implement <code>XPropertySet</code>): +* if this relation is specified then some properties +* testing is performed in a special manner. (e.g. this used in +* <code>sw.SwXParagraph</code> component) For details +* see {@link #changeProp} method description. </li> +* <ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.style.CharacterProperties +*/ +public class _CharacterProperties extends MultiPropertyTest { + + public void _CharFontName() { + testProperty("CharFontName", "Times New Roman", "Arial") ; + } + + public void _CharHeight() { + testProperty("CharHeight", new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object old) { + if (utils.isVoid(old)) { + return Float.valueOf(10) ; + } else { + return Float.valueOf(((Float) old).floatValue() + 10) ; + } + } + }) ; + } + + /** + * Custom tester for properties which contains image URLs. + * Switches between two JPG images' URLs. + */ + protected PropertyTester URLTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (oldValue.equals("http://www.sun.com")) + return "http://www.openoffice.org"; else + return "http://www.sun.com"; + } + } ; + + public void _HyperLinkURL() { + testProperty("HyperLinkURL", URLTester) ; + } + + public void _HyperLinkName() { + testProperty("HyperLinkName", URLTester) ; + } + + public void _HyperLinkTarget() { + testProperty("HyperLinkTarget", URLTester) ; + } + + public void _CharWeight() { + testProperty("CharWeight", Float.valueOf(com.sun.star.awt.FontWeight.BOLD), + Float.valueOf(com.sun.star.awt.FontWeight.THIN)) ; + } + + public void _CharPosture() { + testProperty("CharPosture", com.sun.star.awt.FontSlant.ITALIC, + com.sun.star.awt.FontSlant.NONE) ; + } + + /** + * Custom tester for style name properties. If object relations "STYLENAME1" + * and "STYLENAME2" exists, then testing with these strings, else switches + * between 'Citation' and 'Emphasis' names. + */ + protected PropertyTester StyleTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + String oStyleName1 = (String) tEnv.getObjRelation("STYLENAME1"); + String oStyleName2 = (String) tEnv.getObjRelation("STYLENAME2"); + if ((oStyleName1 != null) && (oStyleName2 != null)){ + log.println("use strings given by object relation: '" + + oStyleName1 + "' '" + oStyleName2 +"'"); + if (oldValue.equals( oStyleName1)) + return oStyleName2; + else + return oStyleName1; + } + if (utils.isVoid(oldValue) || (oldValue.equals("Standard"))) + return "Example"; else + return "Emphasis"; + } + } ; + + /** + * Custom tester for style names properties. Switches between + * 'Citation' and 'Emphasis' names. + */ + protected PropertyTester StylesTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (utils.isVoid(oldValue) || (oldValue.equals("Standard"))) + return new String[] {"Citation"}; else + return new String[] {"Emphasis"}; + } + } ; + + /** + * If relations for paragraph and portion exist, then testing + * of this property performed using these objects, else + * testing is performed in common way. + */ + public void _CharStyleName() { + log.println("Testing with custom Property tester") ; + Object oPara = tEnv.getObjRelation("PARA"); + Object oPort = tEnv.getObjRelation("PORTION"); + if (oPara == null) { + testProperty("CharStyleName", StyleTester) ; + } else { + changeProp((XPropertySet) oPara, + (XPropertySet) oPort,"CharStyleName","Standard"); + } + } + + /** + * If relations for paragraph and portion exist, then testing + * of this property performed using these objects, else + * testing is performed in common way. + */ + public void _CharStyleNames() { + log.println("Testing with custom Property tester") ; + Object oPara = tEnv.getObjRelation("PARA"); + Object oPort = tEnv.getObjRelation("PORTION"); + if (oPara == null) { + testProperty("CharStyleNames", StylesTester) ; + } else { + changeProp((XPropertySet) oPara, + (XPropertySet) oPort,"CharStyleNames",new String[] {"Standard"}); + } + } + + /** + * If relations for paragraph and portion exist, then testing + * of this property performed using these objects, else + * testing is performed in common way. + */ + public void _RubyCharStyleName() { + log.println("Testing with custom Property tester") ; + Object oPara = tEnv.getObjRelation("PARA"); + Object oPort = tEnv.getObjRelation("PORTION"); + if (oPara == null) { + testProperty("RubyCharStyleName", StyleTester) ; + } else { + changeProp((XPropertySet) oPara, (XPropertySet) + oPort,"RubyCharStyleName","Standard"); + } + } + + /** + * If relations for paragraph and portion exist, then testing + * of this property performed using these objects, else + * testing is performed in common way. + */ + public void _RubyAdjust() { + log.println("Testing with custom Property tester") ; + Object oPara = tEnv.getObjRelation("PARA"); + Object oPort = tEnv.getObjRelation("PORTION"); + if (oPara == null) { + testProperty("RubyAdjust",Short.valueOf((short)0),Short.valueOf((short)1)); + } else { + Short aShort = Short.valueOf((short) 1); + changeProp((XPropertySet) oPara, + (XPropertySet) oPort,"RubyAdjust", aShort); + } + } + + /** + * Custom tester for the ruby text property. + */ + protected PropertyTester RubyTextTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + if (utils.isVoid(oldValue)) { + return "RubyText"; + } else { + return ValueChanger.changePValue(oldValue); + } + } + } ; + + /** + * If relations for paragraph and portion exist, then testing + * of this property performed using these objects, else + * testing is performed in common way. + */ + public void _RubyText() { + log.println("Testing with custom Property tester") ; + Object oPara = tEnv.getObjRelation("PARA"); + Object oPort = tEnv.getObjRelation("PORTION"); + if (oPara == null) { + testProperty("RubyText", RubyTextTester) ; + } else { + changeProp((XPropertySet) oPara, (XPropertySet) oPort, + "RubyText",""); + } + } + + /** + * If relations for paragraph and portion exist, then testing + * of this property performed using these objects, else + * testing is performed in common way. + */ + public void _RubyIsAbove() { + log.println("Testing with custom Property tester") ; + Object oPara = tEnv.getObjRelation("PARA"); + Object oPort = tEnv.getObjRelation("PORTION"); + if (oPara == null) { + testProperty("RubyIsAbove") ; + } else { + changeProp((XPropertySet) oPara, (XPropertySet) oPort, + "RubyIsAbove",Boolean.TRUE); + } + } + + /** + * This property only takes values between 0..100 + * so it must be treated specially + */ + public void _CharEscapementHeight() { + Byte aByte = Byte.valueOf((byte)75); + Byte max = Byte.valueOf((byte)100); + testProperty("CharEscapementHeight", aByte, max) ; + } + + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _CharRotation() { + Short aShort = Short.valueOf((short) 10); + changeProp(oObj,oObj, "CharRotation", aShort); + } + + /** + * Tests the property specified by <code>name</code> using + * property set <code>oProps</code>, but value after setting + * this property to a new value is checked using another + * PropertySet <code>get</code>. Special cases used for + * <code>CharRotation</code> property (it can have only certain values + * 0, 900, ...), and for <code>*StyleName</code> properties + * (only existing style names are accepted) + * @param oProps PropertySet from which property value is get + * changed and set. + * @param get PropertySet where property value is checked after + * setting. + * @param name Property name to test. + * @param newVal Value used to set as new property value if + * the value get is null. + */ + public void changeProp(XPropertySet oProps, + XPropertySet get,String name, Object newVal) { + + Object gValue = null; + Object sValue = null; + Object ValueToSet = null; + + try { + gValue = oProps.getPropertyValue(name); + + if ( (gValue == null) || (utils.isVoid(gValue)) ) { + log.println("Value for "+name+" is NULL"); + gValue = newVal; + } + + if (name.equals("CharRotation")) { + Short s1 = Short.valueOf((short) 0); + Short s2 = Short.valueOf((short) 900); + if (gValue.equals(s1)) { + ValueToSet = s2; + } else { + ValueToSet = s1; + } + } else { + ValueToSet = ValueChanger.changePValue(gValue); + } + if (name.endsWith("StyleName")) { + if ( ((String) gValue).equals("Standard") ) { + ValueToSet="Main index entry"; + } + else { + ValueToSet="Emphasis"; + } + } + + oProps.setPropertyValue(name,ValueToSet); + sValue = get.getPropertyValue(name); + if (sValue == null) { + log.println("Value for "+name+" is NULL after setting"); + sValue = gValue; + } + + //check get-set methods + if (gValue.equals(sValue)) { + log.println("Value for '"+name+"' hasn't changed"); + tRes.tested(name, false); + } else { + log.println("Property '"+name+"' OK"); + log.println("old: "+gValue.toString()); + log.println("new: "+ValueToSet.toString()); + log.println("result: "+sValue.toString()); + tRes.tested(name, true); + } + } + catch (com.sun.star.beans.UnknownPropertyException ex) { + if (isOptional(name)) { + log.println("Property '"+name+ + "' is optional and not supported"); + tRes.tested(name,true); + } + else { + log.println("Exception occurred while testing property '" + + name + "'"); + ex.printStackTrace(log); + tRes.tested(name, false); + } + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while testing property '" + + name + "'"); + e.printStackTrace(log); + tRes.tested(name, false); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception occurred while testing property '" + + name + "'"); + e.printStackTrace(log); + tRes.tested(name, false); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("Exception occurred while testing property '" + + name + "'"); + e.printStackTrace(log); + tRes.tested(name, false); + } + }// end of changeProp + + public void _TextUserDefinedAttributes() { + XNameContainer uda = null; + boolean res = false; + + try { + try{ + uda = (XNameContainer) AnyConverter.toObject( + new Type(XNameContainer.class), + oObj.getPropertyValue("TextUserDefinedAttributes")); + } catch (com.sun.star.lang.IllegalArgumentException e){ + log.println("TextUserDefinedAttributes is empty."); + uda = new _CharacterProperties.OwnUserDefinedAttributes(); + } + AttributeData attr = new AttributeData(); + attr.Namespace = "http://www.sun.com/staroffice/apitest/Cellprop"; + attr.Type = "CDATA"; + attr.Value = "true"; + uda.insertByName("Cellprop:has-first-alien-attribute", attr); + + uda.getElementNames(); + oObj.setPropertyValue("TextUserDefinedAttributes", uda); + uda = (XNameContainer) AnyConverter.toObject( + new Type(XNameContainer.class), + oObj.getPropertyValue("TextUserDefinedAttributes")); + uda.getElementNames(); + + uda.getByName("Cellprop:has-first-alien-attribute"); + res = true; + } catch (com.sun.star.beans.UnknownPropertyException upe) { + if (isOptional("TextUserDefinedAttributes")) { + log.println("Property is optional and not supported"); + res = true; + } else { + log.println("Don't know the Property 'TextUserDefinedAttributes'"); + } + } catch (com.sun.star.lang.WrappedTargetException wte) { + log.println( + "WrappedTargetException while getting Property 'TextUserDefinedAttributes'"); + } catch (com.sun.star.container.NoSuchElementException nee) { + log.println("added Element isn't part of the NameContainer"); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + log.println( + "IllegalArgumentException while getting Property 'TextUserDefinedAttributes'"); + } catch (com.sun.star.beans.PropertyVetoException pve) { + log.println( + "PropertyVetoException while getting Property 'TextUserDefinedAttributes'"); + } catch (com.sun.star.container.ElementExistException eee) { + log.println( + "ElementExistException while getting Property 'TextUserDefinedAttributes'"); + } + + tRes.tested("TextUserDefinedAttributes", res); + } + + private static class OwnUserDefinedAttributes implements XNameContainer{ + HashMap<String, Object> members = null; + + + public OwnUserDefinedAttributes() { + members = new HashMap<String, Object>(); + } + + public Object getByName(String str) throws com.sun.star.container.NoSuchElementException, com.sun.star.lang.WrappedTargetException { + return members.get(str); + } + + public String[] getElementNames() { + Iterator<String> oEnum = members.keySet().iterator(); + int count = members.size(); + String[] res = new String[count]; + int i=0; + while(oEnum.hasNext()) { + res[i++] = oEnum.next(); + } + return res; + } + + public com.sun.star.uno.Type getElementType() { + Iterator<String> oEnum = members.keySet().iterator(); + String key = oEnum.next(); + Object o = members.get(key); + return new Type(o.getClass()); + } + + public boolean hasByName(String str) { + return members.get(str) != null; + } + + public boolean hasElements() { + return members.size() > 0; + } + + public void insertByName(String str, Object obj) throws com.sun.star.lang.IllegalArgumentException, com.sun.star.container.ElementExistException, com.sun.star.lang.WrappedTargetException { + members.put(str, obj); + } + + public void removeByName(String str) throws com.sun.star.container.NoSuchElementException, com.sun.star.lang.WrappedTargetException { + members.remove(str); + } + + public void replaceByName(String str, Object obj) throws com.sun.star.lang.IllegalArgumentException, com.sun.star.container.NoSuchElementException, com.sun.star.lang.WrappedTargetException { + members.put(str, obj); + } + + } + +} //finish class _CharacterProperties + diff --git a/qadevOOo/tests/java/ifc/style/_CharacterPropertiesAsian.java b/qadevOOo/tests/java/ifc/style/_CharacterPropertiesAsian.java new file mode 100644 index 0000000000..d14b7edbc7 --- /dev/null +++ b/qadevOOo/tests/java/ifc/style/_CharacterPropertiesAsian.java @@ -0,0 +1,68 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.style; + +import lib.MultiPropertyTest; + +import com.sun.star.awt.FontSlant; +import com.sun.star.awt.FontWeight; + +/** +* Testing <code>com.sun.star.style.CharacterPropertiesAsian</code> +* service properties : +* <ul> +* <li><code> CharHeightAsian</code></li> +* <li><code> CharWeightAsian</code></li> +* <li><code> CharFontNameAsian</code></li> +* <li><code> CharFontStyleNameAsian</code></li> +* <li><code> CharFontFamilyAsian</code></li> +* <li><code> CharFontCharSetAsian</code></li> +* <li><code> CharFontPitchAsian</code></li> +* <li><code> CharPostureAsian</code></li> +* <li><code> CharLocaleAsian</code></li> +* <li><code> ParaIsCharacterDistance</code></li> +* <li><code> ParaIsForbiddenRules</code></li> +* <li><code> ParaIsHangingPunctuation</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.style.CharacterPropertiesAsian +*/ +public class _CharacterPropertiesAsian extends MultiPropertyTest { + + public void _CharPostureAsian() { + testProperty("CharPostureAsian", FontSlant.NONE, FontSlant.ITALIC); + } + + public void _CharWeightAsian() { + testProperty("CharWeightAsian", Float.valueOf(FontWeight.NORMAL), + Float.valueOf(FontWeight.BOLD)); + } + + public void _ParaIsCharacterDistance() { + testProperty("ParaIsCharacterDistance", Boolean.TRUE, Boolean.FALSE); + } + + public void _ParaIsForbiddenRules() { + testProperty("ParaIsForbiddenRules", Boolean.TRUE, Boolean.FALSE); + } + + public void _ParaIsHangingPunctuation() { + testProperty("ParaIsHangingPunctuation", Boolean.TRUE, Boolean.FALSE); + } +} //finish class _CharacterPropertiesAsian diff --git a/qadevOOo/tests/java/ifc/style/_CharacterPropertiesComplex.java b/qadevOOo/tests/java/ifc/style/_CharacterPropertiesComplex.java new file mode 100644 index 0000000000..557f6edcf7 --- /dev/null +++ b/qadevOOo/tests/java/ifc/style/_CharacterPropertiesComplex.java @@ -0,0 +1,61 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.style; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.style.CharacterPropertiesComplex</code> +* service properties : +* <ul> +* <li><code> CharHeightComplex</code></li> +* <li><code> CharWeightComplex</code></li> +* <li><code> CharFontNameComplex</code></li> +* <li><code> CharFontStyleNameComplex</code></li> +* <li><code> CharFontFamilyComplex</code></li> +* <li><code> CharFontCharSetComplex</code></li> +* <li><code> CharFontPitchComplex</code></li> +* <li><code> CharPostureComplex</code></li> +* <li><code> CharLocaleComplex</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.style.CharacterPropertiesComplex +*/ +public class _CharacterPropertiesComplex extends MultiPropertyTest { + + public void _CharWeightComplex() { + testProperty("CharWeightComplex", Float.valueOf(com.sun.star.awt.FontWeight.BOLD), + Float.valueOf(com.sun.star.awt.FontWeight.THIN)) ; + } + + public void _CharPostureComplex() { + testProperty("CharPostureComplex", com.sun.star.awt.FontSlant.ITALIC, + com.sun.star.awt.FontSlant.NONE) ; + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + +} //finish class _CharacterPropertiesComplex + diff --git a/qadevOOo/tests/java/ifc/style/_CharacterStyle.java b/qadevOOo/tests/java/ifc/style/_CharacterStyle.java new file mode 100644 index 0000000000..b694ecc150 --- /dev/null +++ b/qadevOOo/tests/java/ifc/style/_CharacterStyle.java @@ -0,0 +1,41 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.style; + +import lib.MultiPropertyTest; + + +/** +* Testing <code>com.sun.star.style.CharacterStyle</code> +* service properties : +* <ul> +* <li><code> CharDiffHeight</code></li> +* <li><code> CharPropHeight</code></li> +* <li><code> CharDiffHeightAsian</code></li> +* <li><code> CharPropHeightAsian</code></li> +* <li><code> CharDiffHeightComplex</code></li> +* <li><code> CharPropHeightComplex</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.style.CharacterStyle +*/ +public class _CharacterStyle extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/style/_PageProperties.java b/qadevOOo/tests/java/ifc/style/_PageProperties.java new file mode 100644 index 0000000000..f8896c6d40 --- /dev/null +++ b/qadevOOo/tests/java/ifc/style/_PageProperties.java @@ -0,0 +1,117 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.style; + +import com.sun.star.container.XNameContainer; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.xml.AttributeData; +import lib.MultiPropertyTest; + +/** + * Test page properties. + * Testing is done by lib.MultiPropertyTest, except for properties + * <ul> + * <li>PrinterPaperTray</li> + * <li>UserDefinedAttributes</li> + * </ul> + */ +public class _PageProperties extends MultiPropertyTest { + + /** + * Switch on Header and Footer properties + * so all props can be tested. + */ + @Override + protected void before() { + try { + oObj.setPropertyValue("HeaderIsOn", Boolean.TRUE); + oObj.setPropertyValue("FooterIsOn", Boolean.TRUE); + } catch (com.sun.star.beans.UnknownPropertyException upe) { + log.println("Don't know the Property 'HeaderIsOn' or 'FooterIsOn'"); + } catch (com.sun.star.lang.WrappedTargetException wte) { + log.println("WrappedTargetException while setting Property 'HeaderIsOn' or 'FooterIsOn'"); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + log.println("IllegalArgumentException while setting Property 'HeaderIsOn' or 'FooterIsOn'"); + } catch (com.sun.star.beans.PropertyVetoException pve) { + log.println("PropertyVetoException while setting Property 'HeaderIsOn' or 'FooterIsOn'"); + } + } + + /** + * This property is system dependent and printer dependent. + * So only reading it does make sense, since it cannot be determined, if + * it is set to an allowed value. + */ + public void _PrinterPaperTray() { + boolean res = false; + String setting = null; + try { + setting = (String)oObj.getPropertyValue("PrinterPaperTray"); + log.println("Property 'PrinterPaperTray' is set to '" + setting + "'."); + res = setting != null; + } + catch(com.sun.star.beans.UnknownPropertyException e) { + log.println("Don't know the Property 'PrinterPaperTray'"); + } catch (com.sun.star.lang.WrappedTargetException wte) { + log.println("WrappedTargetException while getting Property 'PrinterPaperTray'"); + } + tRes.tested("PrinterPaperTray", res); + } + + /** + * Create some valid user defined attributes + */ + public void _UserDefinedAttributes() { + XNameContainer uda = null; + boolean res = false; + try { + uda = (XNameContainer) AnyConverter.toObject( + new Type(XNameContainer.class), + oObj.getPropertyValue("UserDefinedAttributes")); + AttributeData attr = new AttributeData(); + attr.Namespace = "http://www.sun.com/staroffice/apitest/Cellprop"; + attr.Type="CDATA"; + attr.Value="true"; + uda.insertByName("Cellprop:has-first-alien-attribute",attr); + uda.getElementNames(); + oObj.setPropertyValue("UserDefinedAttributes",uda); + uda = (XNameContainer) AnyConverter.toObject( + new Type(XNameContainer.class), + oObj.getPropertyValue("UserDefinedAttributes")); + uda.getElementNames(); + uda.getByName("Cellprop:has-first-alien-attribute"); + res = true; + } catch (com.sun.star.beans.UnknownPropertyException upe) { + log.println("Don't know the Property 'UserDefinedAttributes'"); + } catch (com.sun.star.lang.WrappedTargetException wte) { + log.println("WrappedTargetException while getting Property 'UserDefinedAttributes'"); + } catch (com.sun.star.container.NoSuchElementException nee) { + log.println("added Element isn't part of the NameContainer"); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + log.println("IllegalArgumentException while getting Property 'UserDefinedAttributes'"); + } catch (com.sun.star.beans.PropertyVetoException pve) { + log.println("PropertyVetoException while getting Property 'UserDefinedAttributes'"); + } catch (com.sun.star.container.ElementExistException eee) { + log.println("ElementExistException while getting Property 'UserDefinedAttributes'"); + } + tRes.tested("UserDefinedAttributes",res); + } + +} diff --git a/qadevOOo/tests/java/ifc/style/_PageStyle.java b/qadevOOo/tests/java/ifc/style/_PageStyle.java new file mode 100644 index 0000000000..49d0de3a10 --- /dev/null +++ b/qadevOOo/tests/java/ifc/style/_PageStyle.java @@ -0,0 +1,28 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.style; + +/** + * Test page style properties. + * These properties are a subset of the PageProperties. So just use the + * PageProperties test + */ +public class _PageStyle extends _PageProperties { + +} diff --git a/qadevOOo/tests/java/ifc/style/_ParagraphProperties.java b/qadevOOo/tests/java/ifc/style/_ParagraphProperties.java new file mode 100644 index 0000000000..aa3b173f52 --- /dev/null +++ b/qadevOOo/tests/java/ifc/style/_ParagraphProperties.java @@ -0,0 +1,456 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.style; + +import ifc.text._NumberingLevel; + +import java.util.HashMap; + +import lib.MultiPropertyTest; +import share.LogWriter; +import util.utils; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.beans.UnknownPropertyException; +import com.sun.star.container.XIndexReplace; +import com.sun.star.container.XNameContainer; +import com.sun.star.lang.WrappedTargetException; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.xml.AttributeData; + + +/** +* Testing <code>com.sun.star.style.ParagraphProperties</code> +* service properties : +* <ul> +* <li><code> ParaAdjust</code></li> +* <li><code> ParaLineSpacing</code></li> +* <li><code> ParaBackColor</code></li> +* <li><code> ParaBackTransparent</code></li> +* <li><code> ParaBackGraphicURL</code></li> +* <li><code> ParaBackGraphicFilter</code></li> +* <li><code> ParaBackGraphicLocation</code></li> +* <li><code> ParaLastLineAdjust</code></li> +* <li><code> ParaExpandSingleWord</code></li> +* <li><code> ParaLeftMargin</code></li> +* <li><code> ParaRightMargin</code></li> +* <li><code> ParaTopMargin</code></li> +* <li><code> ParaBottomMargin</code></li> +* <li><code> ParaLineNumberCount</code></li> +* <li><code> ParaLineNumberStartValue</code></li> +* <li><code> ParaIsHyphenation</code></li> +* <li><code> PageDescName</code></li> +* <li><code> PageNumberOffset</code></li> +* <li><code> ParaRegisterModeActive</code></li> +* <li><code> ParaTabStops</code></li> +* <li><code> ParaStyleName</code></li> +* <li><code> DropCapFormat</code></li> +* <li><code> DropCapWholeWord</code></li> +* <li><code> ParaKeepTogether</code></li> +* <li><code> ParaSplit</code></li> +* <li><code> NumberingLevel</code></li> +* <li><code> NumberingRules</code></li> +* <li><code> NumberingStartValue</code></li> +* <li><code> ParaIsNumberingRestart</code></li> +* <li><code> NumberingStyleName</code></li> +* <li><code> ParaOrphans</code></li> +* <li><code> ParaWidows</code></li> +* <li><code> ParaShadowFormat</code></li> +* <li><code> IsHangingPunctuation</code></li> +* <li><code> IsCharacterDistance</code></li> +* <li><code> IsForbiddenRules</code></li> +* <li><code> LeftBorder</code></li> +* <li><code> RightBorder</code></li> +* <li><code> TopBorder</code></li> +* <li><code> BottomBorder</code></li> +* <li><code> BorderDistance</code></li> +* <li><code> LeftBorderDistance</code></li> +* <li><code> RightBorderDistance</code></li> +* <li><code> TopBorderDistance</code></li> +* <li><code> BottomBorderDistance</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'NRULES'</code> : <b>optional</b> +* (service <code>com.sun.star.text.NumberingRules</code>): +* instance of the service which can be set as 'NumberingRules' +* property new value. If the relation doesn't then two +* different <code>NumberingRules</code> objects are tried +* to be obtained by setting different 'NumberingStyleName' +* property styles and getting 'NumberingRules' property values.</li> +* <ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.style.ParagraphProperties +*/ +public class _ParagraphProperties extends MultiPropertyTest { + /** + * Custom tester for numbering style properties. Switches between + * 'Numbering 123' and 'Numbering ABC' styles. + */ + protected PropertyTester NumberingStyleTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + if ((oldValue != null) && (oldValue.equals("Numbering 123"))) { + return "Numbering ABC"; + } else { + return "Numbering 123"; + } + } + }; + + /** + * Custom tester for paragraph style properties. Switches between + * 'Salutation' and 'Heading' styles. + */ + protected PropertyTester charStyleTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (!utils.isVoid(oldValue) && (oldValue.equals("Example"))) { + return "Emphasis"; + } else { + return "Example"; + } + } + }; + + /** + * Custom tester for paragraph style properties. Switches between + * 'Salutation' and 'Heading' styles. + */ + protected PropertyTester ParaStyleTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (!utils.isVoid(oldValue) && (oldValue.equals("Heading"))) { + return "Salutation"; + } else { + return "Heading"; + } + } + }; + + /** + * Custom tester for PageDescName properties. Switches between + * 'HTML' and 'Standard' descriptor names. + */ + protected PropertyTester PageDescTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (!util.utils.isVoid(oldValue) && + (oldValue.equals("Default"))) { + return "HTML"; + } else { + return "Default"; + } + } + }; + + /** + * Custom tester for properties which have <code>short</code> type + * and can be void, so if they have void value, the new value must + * be specified. Switches between two different values. + */ + protected PropertyTester ShortTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if ((oldValue != null) && + (oldValue.equals(Short.valueOf((short) 0)))) { + return Short.valueOf((short) 2); + } else { + return Short.valueOf((short) 0); + } + } + }; + + /** + * Custom tester for properties which have <code>boolean</code> type + * and can be void, so if they have void value, the new value must + * be specified. Switches between true and false. + */ + protected PropertyTester BooleanTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if ((oldValue != null) && + (oldValue.equals(Boolean.FALSE))) { + return Boolean.TRUE; + } else { + return Boolean.FALSE; + } + } + }; + + /** + * Custom tester for properties which contains image URLs. + * Switches between two JPG images' URLs. + */ + protected PropertyTester URLTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (oldValue.equals(util.utils.getFullTestURL("space-metal.jpg"))) { + return util.utils.getFullTestURL("crazy-blue.jpg"); + } else { + return util.utils.getFullTestURL("space-metal.jpg"); + } + } + }; + + /** + * Tested with custom property tester. + */ + public void _NumberingStyleName() { + log.println("Testing with custom Property tester"); + testProperty("NumberingStyleName", NumberingStyleTester); + } + + /** + * Tested with custom property tester. + */ + public void _DropCapCharStyleName() { + log.println("Testing with custom Property tester"); + testProperty("DropCapCharStyleName", charStyleTester); + } + + /** + * Tested with custom property tester. + */ + public void _ParaStyleName() { + log.println("Testing with custom Property tester"); + testProperty("ParaStyleName", ParaStyleTester); + } + + /** + * Tested with custom property tester. + */ + public void _PageDescName() { + log.println("Testing with custom Property tester"); + testProperty("PageDescName", PageDescTester); + } + + /** + * Tested with custom property tester. Before testing property + * <code>ParaAdjust</code> is setting to value <code>BLOCK</code> + * because setting the property <code>ParaLastLineAdjust</code> + * makes sense only in this case. + */ + public void _ParaLastLineAdjust() { + log.println("Testing with custom Property tester"); + + try { + oObj.setPropertyValue("ParaAdjust", + com.sun.star.style.ParagraphAdjust.BLOCK); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred setting property 'ParagraphAdjust'" + e); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception occurred setting property 'ParagraphAdjust'" + e); + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception occurred setting property 'ParagraphAdjust'" + e); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("Exception occurred setting property 'ParagraphAdjust'" + e); + } + + testProperty("ParaLastLineAdjust", ShortTester); + } + + /** + * Tested with custom property tester. + */ + public void _ParaBackGraphicURL() { + log.println("Testing with custom Property tester"); + testProperty("ParaBackGraphicURL", URLTester); + } + + /** + * Tested with custom property tester. <p> + * The following property tests are to be completed successfully before : + * <ul> + * <li> <code> NumberingStyleName </code> : a numbering style must + * be set before testing this property </li> + * </ul> + */ + public void _NumberingLevel() { + requiredMethod("NumberingStyleName"); + log.println("Testing with custom Property tester"); + testProperty("NumberingLevel", ShortTester); + } + + /** + * Tested with custom property tester. <p> + */ + public void _ParaIsConnectBorder() { + + log.println("Testing with custom Property tester"); + testProperty("ParaIsConnectBorder", BooleanTester); + } + + /** + * Tested with custom property tester. + */ + public void _ParaVertAlignment() { + log.println("Testing with custom Property tester"); + testProperty("ParaVertAlignment", ShortTester); + } + + /** + * Tested with com.sun.star.text.NumberingLevel <p> + * The value of this property is a com.sun.star.container.XIndexReplace which is represented by + * com.sun.star.text.NumberingLevel. + * The following property tests are to be completed successfully before : + * <ul> + * <li> <code> NumberingStyleName </code> : a numbering style must + * be set before testing this property </li> + * </ul> + * @see com.sun.star.text.NumberlingLevel + * @see com.sun.star.container.XIndexReplace + * @see ifc.text._NumberingLevel + */ + public void _NumberingRules() { + requiredMethod("NumberingStyleName"); + + XIndexReplace NumberingRules = null; + PropertyValue[] propertyValues = null; + try { + NumberingRules = (XIndexReplace) AnyConverter.toObject( + new Type(XIndexReplace.class), oObj.getPropertyValue("NumberingRules")); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("could not get NumberingRules: "+ ex.toString() ); + return; + } catch (UnknownPropertyException ex) { + log.println( "could not get NumberingRules: "+ ex.toString() ); + return; + } catch (WrappedTargetException ex) { + log.println( "could not get NumberingRules: "+ ex.toString() ); + return; + } + try { + propertyValues = (PropertyValue[]) NumberingRules.getByIndex(0); + + } catch (com.sun.star.lang.IndexOutOfBoundsException ex) { + log.println( "could not get NumberlingLevel-Array from NumberingRules: "+ ex.toString() ); + return; + } catch (WrappedTargetException ex) { + log.println( "could not get NumberlingLevel-Array from NumberingRules: "+ ex.toString() ); + return; + } + + _NumberingLevel numb = new _NumberingLevel((LogWriter)log, tParam, propertyValues); + + boolean result = numb.testPropertyArray(); + + tRes.tested("NumberingRules", result); + } + + public void _ParaUserDefinedAttributes() { + XNameContainer uda = null; + boolean res = false; + + try { + try{ + uda = (XNameContainer) AnyConverter.toObject( + new Type(XNameContainer.class), + oObj.getPropertyValue("ParaUserDefinedAttributes")); + } catch (com.sun.star.lang.IllegalArgumentException e){ + log.println("ParaUserDefinedAttributes is empty."); + uda = new _ParagraphProperties.OwnUserDefinedAttributes(); + } + AttributeData attr = new AttributeData(); + attr.Namespace = "http://www.sun.com/staroffice/apitest/Cellprop"; + attr.Type = "CDATA"; + attr.Value = "true"; + uda.insertByName("Cellprop:has-first-alien-attribute", attr); + + uda.getElementNames(); + oObj.setPropertyValue("ParaUserDefinedAttributes", uda); + uda = (XNameContainer) AnyConverter.toObject( + new Type(XNameContainer.class), + oObj.getPropertyValue("ParaUserDefinedAttributes")); + uda.getElementNames(); + + uda.getByName("Cellprop:has-first-alien-attribute"); + res = true; + } catch (com.sun.star.beans.UnknownPropertyException upe) { + if (isOptional("ParaUserDefinedAttributes")) { + log.println("Property is optional and not supported"); + res = true; + } else { + log.println("Don't know the Property 'ParaUserDefinedAttributes'"); + } + } catch (com.sun.star.lang.WrappedTargetException wte) { + log.println( + "WrappedTargetException while getting Property 'ParaUserDefinedAttributes'"); + } catch (com.sun.star.container.NoSuchElementException nee) { + log.println("added Element isn't part of the NameContainer"); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + log.println( + "IllegalArgumentException while getting Property 'ParaUserDefinedAttributes'"); + } catch (com.sun.star.beans.PropertyVetoException pve) { + log.println( + "PropertyVetoException while getting Property 'ParaUserDefinedAttributes'"); + } catch (com.sun.star.container.ElementExistException eee) { + log.println( + "ElementExistException while getting Property 'ParaUserDefinedAttributes'"); + } + + tRes.tested("ParaUserDefinedAttributes", res); + } + + private static class OwnUserDefinedAttributes implements XNameContainer{ + HashMap<String, Object> members = null; + + + public OwnUserDefinedAttributes() { + members = new HashMap<String, Object>(); + } + + public Object getByName(String str) throws com.sun.star.container.NoSuchElementException, com.sun.star.lang.WrappedTargetException { + return members.get(str); + } + + public String[] getElementNames() { + java.util.Set<String> keySet = members.keySet(); + return keySet.toArray(new String[keySet.size()]); + } + + public com.sun.star.uno.Type getElementType() { + String key = members.keySet().iterator().next(); + Object o = members.get(key); + return new Type(o.getClass()); + } + + public boolean hasByName(String str) { + return members.get(str) != null; + } + + public boolean hasElements() { + return members.size() > 0; + } + + public void insertByName(String str, Object obj) throws com.sun.star.lang.IllegalArgumentException, com.sun.star.container.ElementExistException, com.sun.star.lang.WrappedTargetException { + members.put(str, obj); + } + + public void removeByName(String str) throws com.sun.star.container.NoSuchElementException, com.sun.star.lang.WrappedTargetException { + members.remove(str); + } + + public void replaceByName(String str, Object obj) throws com.sun.star.lang.IllegalArgumentException, com.sun.star.container.NoSuchElementException, com.sun.star.lang.WrappedTargetException { + members.put(str, obj); + } + + } +} // finish class _ParagraphProperties diff --git a/qadevOOo/tests/java/ifc/style/_ParagraphPropertiesAsian.java b/qadevOOo/tests/java/ifc/style/_ParagraphPropertiesAsian.java new file mode 100644 index 0000000000..9c2faafa05 --- /dev/null +++ b/qadevOOo/tests/java/ifc/style/_ParagraphPropertiesAsian.java @@ -0,0 +1,78 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.style; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.style.ParagraphPropertiesAsian</code> +* service properties : +* <ul> +* <li><code> ParaIsHangingPunctuation </code></li> +* <li><code> ParaIsCharacterDistance </code></li> +* <li><code> ParaIsForbiddenRules </code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.style.ParagraphProperties +*/ +public class _ParagraphPropertiesAsian extends MultiPropertyTest { + /** + * Custom tester for properties which have <code>boolean</code> type + * and can be void, so if they have void value, the new value must + * be specified. Switches between true and false. + */ + protected PropertyTester BooleanTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if ((oldValue != null) && + (oldValue.equals(Boolean.FALSE))) { + return Boolean.TRUE; + } else { + return Boolean.FALSE; + } + } + }; + + /** + * Tested with custom property tester. + */ + public void _ParaIsHangingPunctuation() { + log.println("Testing with custom Property tester"); + testProperty("ParaIsHangingPunctuation", BooleanTester); + } + + /** + * Tested with custom property tester. + */ + public void _ParaIsCharacterDistance() { + log.println("Testing with custom Property tester"); + testProperty("ParaIsCharacterDistance", BooleanTester); + } + + /** + * Tested with custom property tester. + */ + public void _ParaIsForbiddenRules() { + log.println("Testing with custom Property tester"); + testProperty("ParaIsForbiddenRules", BooleanTester); + } + + +} // finish class _ParagraphProperties + diff --git a/qadevOOo/tests/java/ifc/style/_ParagraphPropertiesComplex.java b/qadevOOo/tests/java/ifc/style/_ParagraphPropertiesComplex.java new file mode 100644 index 0000000000..09c00af10e --- /dev/null +++ b/qadevOOo/tests/java/ifc/style/_ParagraphPropertiesComplex.java @@ -0,0 +1,47 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.style; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.style.ParagraphPropertiesComplex</code> +* +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.style.ParagraphPropertiesComplex +*/ +public class _ParagraphPropertiesComplex extends MultiPropertyTest { + + + protected PropertyTester WritingModeTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if ((oldValue != null) && (oldValue.equals(Short.valueOf(com.sun.star.text.WritingMode2.LR_TB)))) + return Short.valueOf(com.sun.star.text.WritingMode2.PAGE); else + return Short.valueOf(com.sun.star.text.WritingMode2.LR_TB); + } + } ; + + public void _WritingMode() { + log.println("Testing with custom Property tester") ; + testProperty("WritingMode", WritingModeTester) ; + } + +} // finish class _ParagraphPropertiesComplex + diff --git a/qadevOOo/tests/java/ifc/style/_ParagraphStyle.java b/qadevOOo/tests/java/ifc/style/_ParagraphStyle.java new file mode 100644 index 0000000000..f848f29fd5 --- /dev/null +++ b/qadevOOo/tests/java/ifc/style/_ParagraphStyle.java @@ -0,0 +1,27 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.style; + +import lib.MultiPropertyTest; + +/** + */ +public class _ParagraphStyle extends MultiPropertyTest { + +} diff --git a/qadevOOo/tests/java/ifc/style/_Style.java b/qadevOOo/tests/java/ifc/style/_Style.java new file mode 100644 index 0000000000..3e5d97535a --- /dev/null +++ b/qadevOOo/tests/java/ifc/style/_Style.java @@ -0,0 +1,45 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.style; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.style.Style</code> +* service properties : +* <ul> +* <li><code> IsPhysical</code></li> +* <li><code> FollowStyle</code></li> +* <li><code> DisplayName</code></li> +* <li><code> IsAutoUpdate</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.style.Style +*/ +public class _Style extends MultiPropertyTest { + + public void _FollowStyle() { + String style = (String)tEnv.getObjRelation("FollowStyle"); + if (style == null) style = "Heading 1"; + testProperty("FollowStyle", style, "Heading 2"); + } + +} // finish class _Style + + diff --git a/qadevOOo/tests/java/ifc/style/_XStyle.java b/qadevOOo/tests/java/ifc/style/_XStyle.java new file mode 100644 index 0000000000..9478fe0d10 --- /dev/null +++ b/qadevOOo/tests/java/ifc/style/_XStyle.java @@ -0,0 +1,109 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.style; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.style.XStyle; + +/** +* Testing <code>com.sun.star.style.XStyle</code> +* interface methods : +* <ul> +* <li><code> isUserDefined()</code></li> +* <li><code> isInUse()</code></li> +* <li><code> getParentStyle()</code></li> +* <li><code> setParentStyle()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'PoolStyle'</code> (of type <code>XStyle</code>): +* some style from the SOffice collection (not user defined) </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.style.XStyle +*/ +public class _XStyle extends MultiMethodTest { + + public XStyle oObj = null; + XStyle oMyStyle = null; + + /** + * Retrieves object relations. + * @throws StatusException If one of relations not found. + */ + @Override + public void before() { + oMyStyle = (XStyle) tEnv.getObjRelation("PoolStyle"); + if (oMyStyle == null) throw new StatusException + (Status.failed("Relation not found")) ; + } + + /** + * Gets the parent style . <p> + * Has <b> OK </b> status if the name of style returned is + * equal to the name of style which was set before. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setParentStyle() </code> : to set the parent style </li> + * </ul> + */ + public void _getParentStyle() { + requiredMethod("setParentStyle()"); + tRes.tested("getParentStyle()", + oObj.getParentStyle().equals(oMyStyle.getName())); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns <code>true</code>. <p> + */ + public void _isInUse() { + tRes.tested("isInUse()",oObj.isInUse()); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns <code>true</code>. <p> + */ + public void _isUserDefined() { + tRes.tested("isUserDefined()", + oObj.isUserDefined() && !oMyStyle.isUserDefined() ); + } + + /** + * Sets the style name which was passed as relation. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _setParentStyle() { + boolean result = true ; + try { + oObj.setParentStyle(oMyStyle.getName()); + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("Exception occurred while method call: " + e); + result = false ; + } + + tRes.tested("setParentStyle()",result); + } +} //finish class _XStyle + diff --git a/qadevOOo/tests/java/ifc/style/_XStyleFamiliesSupplier.java b/qadevOOo/tests/java/ifc/style/_XStyleFamiliesSupplier.java new file mode 100644 index 0000000000..65b4fbf3b8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/style/_XStyleFamiliesSupplier.java @@ -0,0 +1,46 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.style; + +import lib.MultiMethodTest; + +import com.sun.star.style.XStyleFamiliesSupplier; + +/** +* Testing <code>com.sun.star.style.XStyleFamiliesSupplier</code> +* interface methods : +* <ul> +* <li><code> getStyleFamilies()</code></li> +* </ul> <p> +* Test is multithread compliant. <p> +* @see com.sun.star.style.XStyleFamiliesSupplier +*/ +public class _XStyleFamiliesSupplier extends MultiMethodTest { + + public XStyleFamiliesSupplier oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not null value. + */ + public void _getStyleFamilies() { + tRes.tested("getStyleFamilies()",oObj.getStyleFamilies() != null); + } +} + diff --git a/qadevOOo/tests/java/ifc/system/_XSimpleMailClientSupplier.java b/qadevOOo/tests/java/ifc/system/_XSimpleMailClientSupplier.java new file mode 100644 index 0000000000..91c355888f --- /dev/null +++ b/qadevOOo/tests/java/ifc/system/_XSimpleMailClientSupplier.java @@ -0,0 +1,68 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.system; + +import lib.MultiMethodTest; +import lib.Status; + +import com.sun.star.system.XSimpleMailClient; +import com.sun.star.system.XSimpleMailClientSupplier; + + +/** +* Testing <code>com.sun.star.system.XSimpleMailClientSupplier</code> +* interface methods : +* <ul> +* <li><code> querySimpleMailClient()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'SystemMailExist'</code> (of type <code>Boolean</code>): +* if <code>true</code> then <code>SimpleSystemMail</code> service +* is available, if NOT then the service is not available or +* OS doesn't has system mail.</li> +* <ul> <p> +* @see com.sun.star.system.XSimpleMailClientSupplier +*/ +public class _XSimpleMailClientSupplier extends MultiMethodTest { + + public XSimpleMailClientSupplier oObj = null; + + /** + * Test calls the method if the <code>SimpleSystemMail</code> + * service is available on current OS. <p> + * Has <b> OK </b> status if not null value returned or + * has <b>SKIPPED.OK</b> status if SystemMail is not available. <p> + */ + public void _querySimpleMailClient() { + if (Boolean.TRUE.equals + (tEnv.getObjRelation("SystemMailExist"))) { + + XSimpleMailClient aClient = oObj.querySimpleMailClient(); + tRes.tested("querySimpleMailClient()",aClient != null); + } else { + log.println("SystemMail doesn't exist : nothing to test") ; + tRes.tested("querySimpleMailClient()", Status.skipped(true)) ; + } + } + + +} // finish class _XSimpleMailClientSupplier + + diff --git a/qadevOOo/tests/java/ifc/system/_XSystemShellExecute.java b/qadevOOo/tests/java/ifc/system/_XSystemShellExecute.java new file mode 100644 index 0000000000..3906e7bdcd --- /dev/null +++ b/qadevOOo/tests/java/ifc/system/_XSystemShellExecute.java @@ -0,0 +1,109 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.system; + +import lib.MultiMethodTest; +import util.utils; + +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.system.XSystemShellExecute; +import com.sun.star.ucb.XSimpleFileAccess; +import com.sun.star.uno.UnoRuntime; + + +/** +* Testing <code>com.sun.star.system.XSystemShellExecute</code> +* interface methods : +* <ul> +* <li><code> execute()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.system.XSystemShellExecute +*/ +public class _XSystemShellExecute extends MultiMethodTest { + + public XSystemShellExecute oObj = null; + + /** + * Executes 'java SystemShellExecute SystemShellExecute.txt' command line. + * <p>Has <b> OK </b> status if the method successfully returns + * and file 'SystemShellExecute.txt' was created. <p> + */ + public void _execute() { + String cClassPath = System.getProperty("DOCPTH"); + String cResFile = utils.getOfficeTempDirSys(tParam.getMSF())+"SystemShellExecute.txt"; + String cResURL = utils.getOfficeTemp(tParam.getMSF())+"SystemShellExecute.txt"; + String cArgs = "-classpath " + cClassPath + + " SystemShellExecute " + cResFile; + + String jh = System.getProperty("java.home"); + String fs = System.getProperty("file.separator"); + String cmd = jh+fs+"bin"+fs+"java"; + + log.println("Executing : '"+cmd+" " + cArgs + "'"); + try { + oObj.execute(cmd, cArgs, 1); + } catch (com.sun.star.system.SystemShellExecuteException e) { + log.println("Exception during execute: " + e); + log.println("This has been implemented due to security reasons"); + tRes.tested("execute()", true); + return; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception during execute: " + e); + tRes.tested("execute()", false); + return; + } + + XSimpleFileAccess xFileAccess = null; + try { + XMultiServiceFactory xMSF = tParam.getMSF(); + Object fa = xMSF.createInstance("com.sun.star.ucb.SimpleFileAccess"); + xFileAccess = UnoRuntime.queryInterface(XSimpleFileAccess.class, fa); + } catch (com.sun.star.uno.Exception e) { + log.println("Couldn't create SimpleFileAccess:" + e); + tRes.tested("execute()", false); + return; + } + + log.println("Waiting while the file will be created or timeout "+ + "reached ..."); + boolean bExist = false; + int i = 0; + while (i < 20 && !bExist) { + try { + bExist = xFileAccess.exists(cResURL); + } catch(com.sun.star.uno.Exception e) { + log.println("Exception:" + e); + } + waitForEventIdle(); + i++; + } + + if (bExist) { + log.println("The command was executed and file created in " + + i + " sec."); + } else { + log.println("File was not created"); + } + + tRes.tested("execute()", bExist); + } +} // finish class _XSystemShellExecute + + diff --git a/qadevOOo/tests/java/ifc/table/_CellProperties.java b/qadevOOo/tests/java/ifc/table/_CellProperties.java new file mode 100644 index 0000000000..e3fac6674a --- /dev/null +++ b/qadevOOo/tests/java/ifc/table/_CellProperties.java @@ -0,0 +1,102 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.table; + +import lib.MultiPropertyTest; + +import com.sun.star.container.XNameContainer; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.xml.AttributeData; + +/** +* Testing <code>com.sun.star.table.CellProperties</code> +* service properties : +* <ul> +* <li><code> CellStyle</code></li> +* <li><code> CellBackColor</code></li> +* <li><code> IsCellBackgroundTransparent</code></li> +* <li><code> NumberFormat</code></li> +* <li><code> ShadowFormat</code></li> +* <li><code> HoriJustify</code></li> +* <li><code> VertJustify</code></li> +* <li><code> Orientation</code></li> +* <li><code> CellProtection</code></li> +* <li><code> TableBorder</code></li> +* <li><code> IsTextWrapped</code></li> +* <li><code> RotateAngle</code></li> +* <li><code> RotateReference</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.table.CellProperties +*/ +public class _CellProperties extends MultiPropertyTest { + + + /** + * This property is tested with custom property tester which + * switches between 'Default' and 'Result' style names. + */ + public void _CellStyle() { + testProperty("CellStyle", new PropertyTester() { + @Override + protected Object getNewValue(String name, Object old) { + return "Default".equals(old) ? "Result" : "Default" ; + } + }) ; + } + + public void _UserDefinedAttributes() { + XNameContainer uda = null; + boolean res = false; + try { + uda = (XNameContainer) AnyConverter.toObject( + new Type(XNameContainer.class), + oObj.getPropertyValue("UserDefinedAttributes")); + AttributeData attr = new AttributeData(); + attr.Namespace = "http://www.sun.com/staroffice/apitest/Cellprop"; + attr.Type="CDATA"; + attr.Value="true"; + uda.insertByName("Cellprop:has-first-alien-attribute",attr); + uda.getElementNames(); + oObj.setPropertyValue("UserDefinedAttributes",uda); + uda = (XNameContainer) AnyConverter.toObject( + new Type(XNameContainer.class), + oObj.getPropertyValue("UserDefinedAttributes")); + uda.getElementNames(); + uda.getByName("Cellprop:has-first-alien-attribute"); + res = true; + } catch (com.sun.star.beans.UnknownPropertyException upe) { + log.println("Don't know the Property 'UserDefinedAttributes'"); + } catch (com.sun.star.lang.WrappedTargetException wte) { + log.println("WrappedTargetException while getting Property 'UserDefinedAttributes'"); + } catch (com.sun.star.container.NoSuchElementException nee) { + log.println("added Element isn't part of the NameContainer"); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + log.println("IllegalArgumentException while getting Property 'UserDefinedAttributes'"); + } catch (com.sun.star.beans.PropertyVetoException pve) { + log.println("PropertyVetoException while getting Property 'UserDefinedAttributes'"); + } catch (com.sun.star.container.ElementExistException eee) { + log.println("ElementExistException while getting Property 'UserDefinedAttributes'"); + } + tRes.tested("UserDefinedAttributes",res); + } + +} // finish class _CellProperties + diff --git a/qadevOOo/tests/java/ifc/table/_XAutoFormattable.java b/qadevOOo/tests/java/ifc/table/_XAutoFormattable.java new file mode 100644 index 0000000000..0c1d9a3000 --- /dev/null +++ b/qadevOOo/tests/java/ifc/table/_XAutoFormattable.java @@ -0,0 +1,125 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.table; + +import java.util.Random; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XNameAccess; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.table.XAutoFormattable; +import com.sun.star.table.XCell; +import com.sun.star.table.XCellRange; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + + +/** +* Testing <code>com.sun.star.table.XAutoFormattable</code> +* interface methods : +* <ul> +* <li><code> autoFormat()</code></li> +* </ul> <p> +* The component tested <b>must implement</b> interface +* <code>com.sun.star.table.XCellRange</code>. <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.table.XAutoFormattable +*/ +public class _XAutoFormattable extends MultiMethodTest { + public XAutoFormattable oObj = null; + public Random rnd = new Random(); + + /** + * First 'Default' autoformat is set and a background of a cell + * is obtained. Then any other autoformat is set and background + * of a cell is obtained again.<p> + * Has <b> OK </b> status if backgrounds with different autoformat + * settings are differ. <p> + */ + public void _autoFormat() { + boolean bResult = true; + XMultiServiceFactory oMSF = tParam.getMSF(); + String name = "Default"; + + try { + oObj.autoFormat(name); // applying default format + + // getting current background of the cell + XCellRange cellRange = UnoRuntime.queryInterface( + XCellRange.class, oObj); + XCell oCell = cellRange.getCellByPosition(0, 0); + XPropertySet PS = UnoRuntime.queryInterface( + XPropertySet.class, oCell); + + Integer bkgrnd1; + try { + bkgrnd1 = (Integer) PS.getPropertyValue("CellBackColor"); + } catch (com.sun.star.beans.UnknownPropertyException e) { + bkgrnd1 = (Integer) PS.getPropertyValue("BackColor"); + } + + // getting formats names. + XInterface iFormats = (XInterface) oMSF.createInstance( + "com.sun.star.sheet.TableAutoFormats"); + XNameAccess formats = UnoRuntime.queryInterface( + XNameAccess.class, iFormats); + String[] names = formats.getElementNames(); + + // getting one random not default style name + if (names.length > 1) { + while (name.equals("Default")) { + name = names[rnd.nextInt(names.length)]; + } + } else { + name = names[0]; + } + + log.println("Applying style " + name); + + + // applying style + oObj.autoFormat(name); + + // getting new cell's background. + Integer bkgrnd2; + try { + bkgrnd2 = (Integer) PS.getPropertyValue("CellBackColor"); + } catch (com.sun.star.beans.UnknownPropertyException e) { + bkgrnd2 = (Integer) PS.getPropertyValue("BackColor"); + } + + bResult &= !bkgrnd1.equals(bkgrnd2); + } catch (com.sun.star.uno.Exception e) { + log.println("Exception occurred :"); + e.printStackTrace(log); + bResult = false; + } + + tRes.tested("autoFormat()", bResult); + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } +} diff --git a/qadevOOo/tests/java/ifc/table/_XCellRange.java b/qadevOOo/tests/java/ifc/table/_XCellRange.java new file mode 100644 index 0000000000..08420e24f6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/table/_XCellRange.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 ifc.table; + +import lib.MultiMethodTest; + +import com.sun.star.table.XCell; +import com.sun.star.table.XCellRange; + +/** +* Testing <code>com.sun.star.table.XCellRange</code> +* interface methods : +* <ul> +* <li><code> getCellByPosition()</code></li> +* <li><code> getCellRangeByPosition()</code></li> +* <li><code> getCellRangeByName()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'ValidRange'</code> (of type <code>String</code>): +* cell range that can be defined by the object test instead of +* definition at this test ("<code>A1:A1</code>")</li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.table.XCellRange +*/ +public class _XCellRange extends MultiMethodTest { + public XCellRange oObj = null; + + /** + * First a cell get from valid position, second - from invalid. <p> + * Has <b> OK </b> status if in the first case not null value is + * returned and no exceptions are thrown, and in the second + * case <code>IndexOutOfBoundsException</code> is thrown. <p> + */ + public void _getCellByPosition() { + + boolean result = false; + + try { + XCell cell = oObj.getCellByPosition(0,0); + result = cell != null ; + log.println("Getting cell by position with a valid position ... OK"); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception occurred while getting cell by position with a valid position"); + e.printStackTrace(log); + result = false; + } + + try { + oObj.getCellByPosition(-1,1); + log.println("No Exception occurred while getting cell by position with invalid position"); + result &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Getting cell by position with an invalid position ... OK"); + result &= true; + } + + tRes.tested( "getCellByPosition()", result ); + + } // end getCellByPosition() + + /** + * A range is tried to obtain with valid name. <p> + * Has <b> OK </b> status if not null range is + * returned. <p> + */ + public void _getCellRangeByName() { + + boolean result = false; + + String valid = (String) tEnv.getObjRelation("ValidRange"); + if (valid == null ) valid = "A1:A1"; + XCellRange range = oObj.getCellRangeByName(valid); + result = range != null ; + log.println("Getting cellrange by name with a valid name ... OK"); + + tRes.tested( "getCellRangeByName()", result ); + + + } // end getCellRangeByName() + + /** + * First a range is tried to obtain with valid bounds, + * second - with invalid. <p> + * Has <b> OK </b> status if in the first case not null range is + * returned and no exceptions are thrown, and in the second + * case <code>IndexOutOfBoundsException</code> is thrown. <p> + */ + public void _getCellRangeByPosition() { + + boolean result = false; + + try { + XCellRange range = oObj.getCellRangeByPosition(0,0,0,0); + result = range != null; + log.println("Getting cellrange by Position with a valid position ... OK"); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception occurred while getting cellrange by position with a valid position"); + e.printStackTrace(log); + result = false; + } + + try { + oObj.getCellRangeByPosition(-1,0,-1,1); + log.println("No Exception occurred while getting cellrange by position with invalid position"); + result &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Getting cellrange by position with an invalid position ... OK"); + result &= true; + } + + tRes.tested( "getCellRangeByPosition()", result ); + + + } // end getCellRangeByPosition() + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + +} // finish class _XCellRange + diff --git a/qadevOOo/tests/java/ifc/table/_XTableChart.java b/qadevOOo/tests/java/ifc/table/_XTableChart.java new file mode 100644 index 0000000000..1730d9f960 --- /dev/null +++ b/qadevOOo/tests/java/ifc/table/_XTableChart.java @@ -0,0 +1,116 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.table; + +import lib.MultiMethodTest; +import util.ValueComparer; + +import com.sun.star.table.CellRangeAddress; +import com.sun.star.table.XTableChart; + +/** +* Testing <code>com.sun.star.table.XTableChart</code> +* interface methods : +* <ul> +* <li><code> getHasColumnHeaders()</code></li> +* <li><code> setHasColumnHeaders()</code></li> +* <li><code> getHasRowHeaders()</code></li> +* <li><code> setHasRowHeaders()</code></li> +* <li><code> getRanges()</code></li> +* <li><code> setRanges()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.table.XTableChart +*/ +public class _XTableChart extends MultiMethodTest { + + public XTableChart oObj = null; + + /** + * Sets the property to <code>false</code> and then check it. <p> + * Has <b> OK </b> status if the method returns <code>false</code>. <p> + */ + public void _getHasColumnHeaders() { + oObj.setHasColumnHeaders(false); + tRes.tested("getHasColumnHeaders()", !oObj.getHasColumnHeaders() ); + } // getHasColumnHeaders() + + /** + * Sets the property to <code>true</code> and then check it. <p> + * Has <b> OK </b> status if the method returns <code>true</code>. <p> + */ + public void _setHasColumnHeaders() { + oObj.setHasColumnHeaders(true); + tRes.tested("setHasColumnHeaders()", oObj.getHasColumnHeaders() ); + } // setHasColumnHeaders() + + /** + * Sets the property to <code>false</code> and then check it. <p> + * Has <b> OK </b> status if the method returns <code>false</code>. <p> + */ + public void _getHasRowHeaders() { + oObj.setHasRowHeaders(false); + tRes.tested("getHasRowHeaders()", !oObj.getHasRowHeaders() ); + } // getHasRowHeaders() + + /** + * Sets the property to <code>true</code> and then check it. <p> + * Has <b> OK </b> status if the method returns <code>true</code>. <p> + */ + public void _setHasRowHeaders() { + oObj.setHasRowHeaders(true); + tRes.tested("setHasRowHeaders()", oObj.getHasRowHeaders() ); + } // setHasRowHeaders() + + CellRangeAddress[] the_Ranges = null; + + /** + * Test calls the method and stores the range returned. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. <p> + */ + public void _getRanges() { + the_Ranges = oObj.getRanges(); + tRes.tested("getRanges()", the_Ranges != null ); + } // getRanges() + + /** + * Changes the first range in range array obtained by + * <code>getRanges</code> method, then set changed array. <p> + * Has <b> OK </b> status if range array get is the same as was + * set. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getRanges() </code> : to have initial ranges </li> + * </ul> + */ + public void _setRanges() { + requiredMethod("getRanges()"); + CellRangeAddress[] tmpRanges = oObj.getRanges(); + tmpRanges[0].EndRow = 1; + oObj.setRanges(tmpRanges); + tRes.tested("setRanges()", ValueComparer.equalValue( + tmpRanges,oObj.getRanges())); + oObj.setRanges(the_Ranges); + } // getRanges() + +} // finish class _XTableChartsSupplier + + + diff --git a/qadevOOo/tests/java/ifc/table/_XTableColumns.java b/qadevOOo/tests/java/ifc/table/_XTableColumns.java new file mode 100644 index 0000000000..d0d1b03bf6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/table/_XTableColumns.java @@ -0,0 +1,391 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.table; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.table.XCell; +import com.sun.star.table.XCellRange; +import com.sun.star.table.XTableColumns; +import com.sun.star.text.XSimpleText; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.table.XTableColumns</code> +* interface methods : +* <ul> +* <li><code> insertByIndex()</code></li> +* <li><code> removeByIndex()</code></li> +* </ul> <p> +* +* This test needs the following object relations : +* <ul> +* <li> <code>'XTableColumns.XCellRange'</code> : <code> +* com.sun.star.table.XCellRange</code> the cell range of +* columns.</li> +* <ul> <p> +* +* Test is multithread compliant. <p> +* @see com.sun.star.table.XTableColumns +*/ +public class _XTableColumns extends MultiMethodTest { + + public XTableColumns oObj = null; + private XCellRange xCellRange = null; + private int lastColumn = 0; + + @Override + public void before() { + xCellRange = (XCellRange) + tEnv.getObjRelation("XTableColumns.XCellRange") ; + + if (xCellRange == null) throw new + StatusException(Status.failed("Relation missing")); + + lastColumn = oObj.getCount() - 1 ; + } + + /** + * First a number of cells in cell range are filled with data. + * + * Then columns inserted to valid positions : 1 column at 1, + * 1 column at 0, 2 columns at 0. <p> + * + * Then columns inserted to invalid positions : position -1, + * the column after last, and 0 columns inserted. <p> + * + * Has <b> OK </b> status if for valid cases : + * <ul> + * <li> content of other cells are properly shifted </li> + * <li> inserted columns are empty </li> + * <li> number of columns increases (in case if it is not the whole + * spreadsheet) by proper number. </li> + * </ul> + * and for invalid cases exception is thrown. + */ + public void _insertByIndex() { + + boolean result = true; + int origCnt = oObj.getCount(); + + try { + log.println("Filling range ... "); + fillRange(xCellRange); + + log.println("Inserting 1 column at position 1 ..."); + oObj.insertByIndex(1,1); + + result &= checkColumn(0, 0); + result &= checkColumnEmpty(1); + result &= checkColumn(2, 1); + result &= checkColumn(3, 2); + result &= checkColumnEmpty(4); + + if (lastColumn < 200) { + result &= checkColumn(lastColumn + 1, lastColumn); + result &= oObj.getCount() == origCnt + 1; + } else { + result &= checkColumnEmpty(lastColumn); + } + + log.println("Inserting 1 column at position 0 ..."); + oObj.insertByIndex(0,1); + + result &= checkColumnEmpty(0); + result &= checkColumn(1, 0); + result &= checkColumnEmpty(2); + result &= checkColumn(3, 1); + result &= checkColumn(4, 2); + result &= checkColumnEmpty(5); + if (lastColumn < 200) { + result &= checkColumn(lastColumn + 2, lastColumn); + result &= oObj.getCount() == origCnt + 2; + } + + log.println("Inserting 2 columns at position 0 ..."); + oObj.insertByIndex(0,2); + + result &= checkColumnEmpty(0); + result &= checkColumnEmpty(1); + result &= checkColumnEmpty(2); + result &= checkColumn(3, 0); + result &= checkColumnEmpty(4); + result &= checkColumn(5, 1); + result &= checkColumn(6, 2); + result &= checkColumnEmpty(7); + if (lastColumn < 200) { + result &= checkColumn(lastColumn + 4, lastColumn); + } + + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + e.printStackTrace(log); + result = false; + } + + + // spreadsheet supports 256 columns and after inserting + // or removing a column their number remains the same + if (origCnt < 200) { + log.println("Checking that number of column increased."); + result &= oObj.getCount() == origCnt + 4; + log.println("Before: " + origCnt + ", After: " + oObj.getCount()); + } else { + log.println("Number of columns is " + origCnt + ",") ; + log.println("supposing that this is the whole spreadsheet and "); + log.println("number of columns should not change."); + } + + try { + oObj.insertByIndex(-1,1); + log.println("No Exception occurred while inserting column at -1"); + result &= false; + } catch (Exception e) { + log.println("Inserting column at Index -1 ... OK"); + result &= true; + } + + int cnt = oObj.getCount(); + try { + oObj.insertByIndex(cnt, 1); + log.println("No Exception occurred while inserting column at " + + cnt); + result &= false; + } catch (Exception e) { + log.println("Inserting column at Index " + cnt + " ... OK"); + result &= true; + } + + if (tEnv.getTestCase().getObjectName().equals("ScTableColumnsObj")) { + + try { + oObj.insertByIndex(0,0); + log.println("No Exception occurred while inserting 0 columns"); + result &= false; + } catch (Exception e) { + log.println("Inserting 0 columns ... OK"); + result &= true; + } + + } + + tRes.tested( "insertByIndex()", result ); + + } // end insertByIndex() + + /** + * Columns removed from valid positions : 1 column at 1, + * 1 column at 0, 2 columns at 0. <p> + * + * Then columns removed from invalid positions : position -1, + * the column after last, and 0 columns removed. <p> + * + * Has <b> OK </b> status if for valid cases : + * <ul> + * <li> content of other cells are properly shifted </li> + * <li> columns which are shifted left are empty </li> + * <li> number of columns decreases (in case if it is not the whole + * spreadsheet) by proper number. </li> + * </ul> + * and for invalid cases exception is thrown. + */ + public void _removeByIndex() { + executeMethod("insertByIndex()"); + + boolean result = true; + int origCnt = oObj.getCount(); + + try { + log.println("Filling range ... "); + + log.println("Removing 2 columns at position 0 ..."); + oObj.removeByIndex(0,2); + + result &= checkColumnEmpty(0); + result &= checkColumn(1, 0); + result &= checkColumnEmpty(2); + result &= checkColumn(3, 1); + result &= checkColumn(4, 2); + result &= checkColumnEmpty(5); + if (lastColumn < 200) { + result &= checkColumn(lastColumn + 2, lastColumn); + result &= oObj.getCount() == origCnt - 2; + } + + log.println("Removing 1 column at position 0 ..."); + oObj.removeByIndex(0,1); + + result &= checkColumn(0, 0); + result &= checkColumnEmpty(1); + result &= checkColumn(2, 1); + result &= checkColumn(3, 2); + result &= checkColumnEmpty(4); + if (lastColumn < 200) { + result &= checkColumn(lastColumn + 1, lastColumn); + result &= oObj.getCount() == origCnt - 3; + } + + log.println("Removing 1 column at position 1 ..."); + oObj.removeByIndex(1,1); + + result &= checkColumn(0, 0); + result &= checkColumn(1, 1); + result &= checkColumn(2, 2); + result &= checkColumnEmpty(3); + if (lastColumn < 200) { + result &= checkColumn(lastColumn, lastColumn); + } + + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + e.printStackTrace(log); + result = false; + } + + + // spreadsheet supports 256 columns and after inserting + // or removing a column their number remains the same + if (origCnt < 200) { + log.println("Checking that number of column increased."); + result &= oObj.getCount() == origCnt - 4; + log.println("Before: " + origCnt + ", After: " + oObj.getCount()); + } else { + log.println("Number of columns is " + origCnt + ",") ; + log.println("supposing that this is the whole spreadsheet and "); + log.println("number of columns should not change."); + } + + try { + oObj.removeByIndex(-1,1); + log.println("No Exception occurred while removing column at -1"); + result &= false; + } catch (Exception e) { + log.println("removing column at Index -1 ... OK"); + result &= true; + } + + int cnt = oObj.getCount(); + try { + oObj.removeByIndex(cnt, 1); + log.println("No Exception occurred while removing column at " + + cnt); + result &= false; + } catch (Exception e) { + log.println("Removing column at Index " + cnt + " ... OK"); + result &= true; + } + + if (tEnv.getTestCase().getObjectName().equals("ScTableColumnsObj")) { + try { + oObj.removeByIndex(0,0); + log.println("No Exception occurred while removing 0 columns"); + result &= false; + } catch (Exception e) { + log.println("removing 0 columns ... OK"); + result &= true; + } + } + + tRes.tested( "removeByIndex()", result ); + } // end removeByIndex() + + private void setCellText(XCell cell, String text) { + XSimpleText xText = UnoRuntime.queryInterface + (XSimpleText.class, cell) ; + xText.setString(text); + } + private String getCellText(XCell cell) { + XSimpleText xText = UnoRuntime.queryInterface + (XSimpleText.class, cell) ; + return xText.getString(); + } + + /** + * Fills the range with some data : two rows and 3 columns, and + * some columns are cleared. + * + * @param xRange Range to fill + * @throws IndexOutOfBoundsException if any errors occur during filling. + */ + private void fillRange(XCellRange xRange) + throws com.sun.star.lang.IndexOutOfBoundsException { + + for (int i = 0; i <= lastColumn && i < 3; i++) { + setCellText(xRange.getCellByPosition(i, 0), i + "a"); + setCellText(xRange.getCellByPosition(i, 1), i + "b"); + } + + for (int i = 3; i <= lastColumn && i < 10; i++) { + setCellText(xRange.getCellByPosition(i, 0), ""); + setCellText(xRange.getCellByPosition(i, 1), ""); + } + } + + /** + * Check the column (first two rows) if it has values with + * index specified. + * + * @param col Column to check + * @param idx What indexes must be in cells + * @return <code>true</code> if expected indexes are found, + * <code>false</code> otherwise. + * @throws IndexOutOfBoundsException + */ + private boolean checkColumn(int col, int idx) + throws com.sun.star.lang.IndexOutOfBoundsException { + + if (col >= oObj.getCount()) return true; + + String c1 = getCellText(xCellRange.getCellByPosition(col, 0)); + String c2 = getCellText(xCellRange.getCellByPosition(col, 1)); + + if (!((idx + "a").equals(c1) && (idx + "b").equals(c2))) { + + log.println("FAILED for column " + col + " and index " + idx + "(" + + c1 + "," + c2 + ")"); + return false ; + } + return true; + } + + /** + * Checks if the column (first two rows) has no data in its cells. + * + * @param col Column to check + * @return <code>true</code> if the column is empty, <code>false</code> + * if first two cells contains some strings. + * @throws IndexOutOfBoundsException + */ + private boolean checkColumnEmpty(int col) + throws com.sun.star.lang.IndexOutOfBoundsException { + + if (col >= oObj.getCount()) return true; + + String c1 = getCellText(xCellRange.getCellByPosition(col, 0)); + String c2 = getCellText(xCellRange.getCellByPosition(col, 1)); + if (!("".equals(c1) && "".equals(c2))) { + log.println("FAILED for column " + col + " is not empty (" + + c1 + "," + c2 + ")"); + return false ; + } + return true; + } + + } //finish class _XTableColumns + diff --git a/qadevOOo/tests/java/ifc/table/_XTableRows.java b/qadevOOo/tests/java/ifc/table/_XTableRows.java new file mode 100644 index 0000000000..2f997860c6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/table/_XTableRows.java @@ -0,0 +1,130 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.table; + +import com.sun.star.table.XCellRange; +import lib.MultiMethodTest; + +import com.sun.star.table.XTableRows; +import lib.Status; +import lib.StatusException; + +/** +* Testing <code>com.sun.star.table.XTableRows</code> +* interface methods : +* <ul> +* <li><code> insertByIndex()</code></li> +* <li><code> removeByIndex()</code></li> +* </ul> +*/ +public class _XTableRows extends MultiMethodTest { + + public XTableRows oObj = null; + public XCellRange range = null; + + @Override + public void before() { + range = (XCellRange) tEnv.getObjRelation("XTableRows.XCellRange"); + if (range==null) { + throw new StatusException(Status.failed("ObjectRelation missing")); + } + try { + range.getCellByPosition(0,0).setValue(17); + range.getCellByPosition(0,1).setValue(15); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Couldn't set value for Cell A1"); + } + } + + /** + * First a row inserted to valid position, then to invalid. <p> + * Has <b> OK </b> status if in the first case number of rows increases + * by 1, and in the second an exception is thrown. <p> + */ + public void _insertByIndex() { + + boolean result = true; + + requiredMethod("removeByIndex()"); + + oObj.getCount(); + log.println("Inserting row before first row"); + oObj.insertByIndex(0,1); + result &= checkCell(1,15); + if (checkCell(1,15)) log.println("... successful"); + + try { + oObj.insertByIndex(-1,1); + log.println("No Exception occurred while inserting row at -1"); + result &= false; + } catch (Exception e) { + log.println("Inserting row at Index -1 ... OK"); + result &= true; + } + + tRes.tested( "insertByIndex()", result ); + + } // end insertByIndex() + + /** + * First a row removed from valid position, then from invalid. <p> + * + * Has <b> OK </b> status if in the first case number of columns decreases + * by 1, and in the second an exception is thrown. <p> + */ + public void _removeByIndex() { + + boolean result = true; + + oObj.removeByIndex(0,1); + log.println("Removing first row"); + result &= checkCell(0,15); + if (checkCell(0,15)) log.println("... successful"); + + try { + oObj.removeByIndex(-1,1); + log.println("No Exception occurred while Removing row at -1"); + result &= false; + } catch (Exception e) { + log.println("Removing row at Index -1 ... OK"); + result &= true; + } + + tRes.tested( "removeByIndex()", result ); + } // end removeByIndex() + + public boolean checkCell(int row,double expected) { + double getting=0; + try { + getting = range.getCellByPosition(0,row).getValue(); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Couldn't set value for Cell A1"); + } + + boolean res = (getting==expected); + if (!res) { + log.println("Expected for row "+row+" was "+expected); + log.println("Getting for row "+row+" - "+getting); + log.println("=> FAILED"); + } + return res; + } + +} //finish class _XTableRows + diff --git a/qadevOOo/tests/java/ifc/task/_XInteractionHandler.java b/qadevOOo/tests/java/ifc/task/_XInteractionHandler.java new file mode 100644 index 0000000000..d36cc585bc --- /dev/null +++ b/qadevOOo/tests/java/ifc/task/_XInteractionHandler.java @@ -0,0 +1,74 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.task; + + + +/** +* <code>com.sun.star.task.XInteractionHandler</code> interface testing. +* This test needs the following object relations : +* <ul> +* <li> <code>'XInteractionHandler.Request'</code> +* (of type <code>com.sun.star.task.XInteractionRequest</code>): +* this interface implementation is handler specific and is +* passed as argument to method <code>handle</code>. </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.task.XInteractionHandler +*/ +import lib.MultiMethodTest; +import lib.Status; + +import com.sun.star.task.XInteractionHandler; + +/** +* <code>com.sun.star.task.XInteractionHandler</code> interface testing. +* This test needs the following object relations : +* <ul> +* <li> <code>'XInteractionHandler.Request'</code> +* (of type <code>com.sun.star.task.XInteractionRequest</code>): +* this interface implementation is handler specific and is +* passed as argument to method <code>handle</code>. </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.task.XInteractionHandler +*/ +public class _XInteractionHandler extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XInteractionHandler oObj = null ; + + /** + * Retrieves an object relation. <p> + */ + @Override + public void before() { + } + + /** + * Since this test is interactive (dialog window can't be + * disposed using API) it is skipped. <p> + * Always has <b>SKIPPED.OK</b> status . + */ + public void _handle() { + tRes.tested("handle()", Status.skipped(true)) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/task/_XJob.java b/qadevOOo/tests/java/ifc/task/_XJob.java new file mode 100644 index 0000000000..58800f37eb --- /dev/null +++ b/qadevOOo/tests/java/ifc/task/_XJob.java @@ -0,0 +1,90 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.task; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.NamedValue; +import com.sun.star.task.XJob; + +/** + * Testing <code>com.sun.star.frame._XJobExecutor</code> + * interface methods: + * <ul> + * <li><code> trigger() </code></li> + * </ul><p> + * + * This test needs the following object relations : + * <ul> + * <li> <code>'CallCounter'</code> + * (of type <code>com.sun.star.container.XNamed</code>): + * the <code>getName()</code> method of which must + * return number of calls to <code>XJob.execute</code> + * method which is registered for event 'TestEvent' + * </li> + * <ul> <p> + * @see com.sun.star.frame.XJobExecutor + */ +public class _XJob extends MultiMethodTest { + public static XJob oObj = null; + + /** + * Tries to query the tested component for object relation + * <code>XJobArgs</code> [<code>Object[]</code>] which contains + * <code>executeArgs</code> [<code>NamedValue[]</code>] + * @throw StatusException If relations are not found + */ + @Override + public void before() { + Object[] XJobArgs = (Object[]) tEnv.getObjRelation("XJobArgs") ; + if (XJobArgs == null) + throw new StatusException(Status.failed + ("'XJobArgs' relation not found ")) ; + } + + + + /** + * Gets the number of Job calls before and after triggering event. + * + * Has <b>OK</b> status if the Job was called on triggering + * event. + */ + public void _execute() { + Object[] XJobArgs = (Object[]) tEnv.getObjRelation("XJobArgs"); + + boolean bOK = true; + + for (int n = 0; n<XJobArgs.length; n++) { + log.println("running XJobArgs[" + n + "]"); + try { + oObj.execute((NamedValue[])XJobArgs[n]); + } catch ( com.sun.star.lang.IllegalArgumentException e) { + bOK = false; + log.println("Could not success XJobArgs[" + n + "]: " + e); + } catch ( com.sun.star.uno.Exception e) { + bOK = false; + log.println("Could not success XJobArgs[" + n + "]: " + e); + } + } + tRes.tested("execute()", bOK); + } +} diff --git a/qadevOOo/tests/java/ifc/task/_XJobExecutor.java b/qadevOOo/tests/java/ifc/task/_XJobExecutor.java new file mode 100644 index 0000000000..d3910f2878 --- /dev/null +++ b/qadevOOo/tests/java/ifc/task/_XJobExecutor.java @@ -0,0 +1,68 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.task; + +import lib.MultiMethodTest; + +import com.sun.star.container.XNamed; +import com.sun.star.task.XJobExecutor; + +/** + * Testing <code>com.sun.star.frame._XJobExecutor</code> + * interface methods: + * <ul> + * <li><code> trigger() </code></li> + * </ul><p> + * + * This test needs the following object relations : + * <ul> + * <li> <code>'CallCounter'</code> + * (of type <code>com.sun.star.container.XNamed</code>): + * the <code>getName()</code> method of which must + * return number of calls to <code>XJob.execute</code> + * method which is registered for event 'TestEvent' + * </li> + * <ul> <p> + * @see com.sun.star.frame.XJobExecutor + */ +public class _XJobExecutor extends MultiMethodTest { + public static XJobExecutor oObj = null; + + /** + * Gets the number of Job calls before and after triggering event. + * + * Has <b>OK</b> status if the Job was called on triggering + * event. + */ + public void _trigger() { + XNamed counter = (XNamed) tEnv.getObjRelation("CallCounter"); + + int before = Integer.parseInt(counter.getName()); + + oObj.trigger("TestEvent"); + + waitForEventIdle(); + + int after = Integer.parseInt(counter.getName()); + + log.println("Calls before: " + before + ", after: " + after); + + tRes.tested("trigger()", after == before + 1); + } +} diff --git a/qadevOOo/tests/java/ifc/task/_XStatusIndicatorFactory.java b/qadevOOo/tests/java/ifc/task/_XStatusIndicatorFactory.java new file mode 100644 index 0000000000..0ec515d1b8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/task/_XStatusIndicatorFactory.java @@ -0,0 +1,67 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.task; + +import lib.MultiMethodTest; + +import com.sun.star.task.XStatusIndicator; +import com.sun.star.task.XStatusIndicatorFactory; + +/** +* Testing <code>com.sun.star.task.XStatusIndicatorFactory</code> +* interface methods : +* <ul> +* <li><code> createStatusIndicator()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.task.XStatusIndicatorFactory +*/ +public class _XStatusIndicatorFactory extends MultiMethodTest { + + public XStatusIndicatorFactory oObj = null; + + /** + * A status indicator created. Also some actions performed + * with it, which are not related to test flow. <p> + * Has <b> OK </b> status if the method returns not null + * value. <p> + */ + public void _createStatusIndicator() { + boolean bResult = true; + + XStatusIndicator SI1 = oObj.createStatusIndicator(); + XStatusIndicator SI2 = oObj.createStatusIndicator(); + //Start all Indicators + SI1.start("Status1",100); + SI2.start("Status2",100); + + //change SI2 + SI2.setText("A new name for the status"); + SI2.setValue(45); + SI2.reset(); + SI2.end(); + + //Now SI1 is active + SI1.end(); + + tRes.tested("createStatusIndicator()", bResult); + } +} + + diff --git a/qadevOOo/tests/java/ifc/text/_BaseFrame.java b/qadevOOo/tests/java/ifc/text/_BaseFrame.java new file mode 100644 index 0000000000..8bfd80dc51 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_BaseFrame.java @@ -0,0 +1,116 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.text.BaseFrame</code> +* service properties : +* <ul> +* <li><code> AnchorPageNo</code></li> +* <li><code> AnchorFrame</code></li> +* <li><code> BackColor</code></li> +* <li><code> BackGraphicURL</code></li> +* <li><code> BackGraphicFilter</code></li> +* <li><code> BackGraphicLocation</code></li> +* <li><code> LeftBorder</code></li> +* <li><code> RightBorder</code></li> +* <li><code> TopBorder</code></li> +* <li><code> BottomBorder</code></li> +* <li><code> BorderDistance</code></li> +* <li><code> LeftBorderDistance</code></li> +* <li><code> RightBorderDistance</code></li> +* <li><code> TopBorderDistance</code></li> +* <li><code> BottomBorderDistance</code></li> +* <li><code> BackTransparent</code></li> +* <li><code> ContentProtected</code></li> +* <li><code> FrameStyleName</code></li> +* <li><code> LeftMargin</code></li> +* <li><code> RightMargin</code></li> +* <li><code> TopMargin</code></li> +* <li><code> BottomMargin</code></li> +* <li><code> Height</code></li> +* <li><code> Width</code></li> +* <li><code> RelativeHeight</code></li> +* <li><code> RelativeWidth</code></li> +* <li><code> IsSyncWidthToHeight</code></li> +* <li><code> IsSyncHeightToWidth</code></li> +* <li><code> HoriOrient</code></li> +* <li><code> HoriOrientPosition</code></li> +* <li><code> HoriOrientRelation</code></li> +* <li><code> VertOrient</code></li> +* <li><code> VertOrientPosition</code></li> +* <li><code> VertOrientRelation</code></li> +* <li><code> HyperLinkURL</code></li> +* <li><code> HyperLinkTarget</code></li> +* <li><code> HyperLinkName</code></li> +* <li><code> Opaque</code></li> +* <li><code> PageToggle</code></li> +* <li><code> PositionProtected</code></li> +* <li><code> Print</code></li> +* <li><code> ShadowFormat</code></li> +* <li><code> ServerMap</code></li> +* <li><code> Size</code></li> +* <li><code> SizeProtected</code></li> +* <li><code> Surround</code></li> +* <li><code> SurroundAnchorOnly</code></li> +* <li><code> BackColorTransparency</code></li> +* <li><code> BackColorRGB</code></li> +* <li><code> BackGraphicTransparency</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.text.BaseFrame +*/ +public class _BaseFrame extends MultiPropertyTest { + public String str1 = "Graphics"; + public String str2 = "Watermark"; + + /** + * Redefined method returns value, that differs from property value. + */ + protected PropertyTester StringTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (str1.equals(oldValue)) + return str2; + else + return str1; + } + }; + + /** + * This property can be VOID, and in case if it is so new + * value must be defined. + */ + public void _FrameStyleName() { + log.println("Testing with custom Property tester") ; + testProperty("FrameStyleName", StringTester) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must be defined. + */ + public void _BackColorTransparency() { + testProperty("BackColorTransparency", Integer.valueOf(10), Integer.valueOf(50)) ; + } + +} //finish class _BaseFrame + diff --git a/qadevOOo/tests/java/ifc/text/_BaseFrameProperties.java b/qadevOOo/tests/java/ifc/text/_BaseFrameProperties.java new file mode 100644 index 0000000000..9b0cf03c88 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_BaseFrameProperties.java @@ -0,0 +1,37 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.text; + +import lib.MultiPropertyTest; + + +public class _BaseFrameProperties extends MultiPropertyTest { + protected PropertyTester FrameTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + Object frame = tEnv.getObjRelation("TextFrame"); + + return frame; + } + }; + + public void _AnchorFrame() { + log.println("Testing with custom Property tester"); + testProperty("AnchorFrame", FrameTester); + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/text/_BaseIndex.java b/qadevOOo/tests/java/ifc/text/_BaseIndex.java new file mode 100644 index 0000000000..006796724a --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_BaseIndex.java @@ -0,0 +1,201 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.text; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XIndexReplace; +import com.sun.star.text.XTextColumns; +import com.sun.star.uno.UnoRuntime; + +import lib.MultiPropertyTest; + + +/** +* Testing <code>com.sun.star.text.BaseIndex</code> +* service properties : +* <ul> +* <li><code> Title</code></li> +* <li><code> IsProtected</code></li> +* <li><code> ParaStyleHeading</code></li> +* <li><code> ParaStyleLevel1</code></li> +* <li><code> ParaStyleLevel2</code></li> +* <li><code> ParaStyleLevel3</code></li> +* <li><code> ParaStyleLevel4</code></li> +* <li><code> ParaStyleLevel5</code></li> +* <li><code> ParaStyleLevel6</code></li> +* <li><code> ParaStyleLevel7</code></li> +* <li><code> ParaStyleLevel8</code></li> +* <li><code> ParaStyleLevel9</code></li> +* <li><code> ParaStyleLevel10</code></li> +* <li><code> ParaStyleSeparator</code></li> +* <li><code> TextColumns</code></li> +* <li><code> BackGraphicURL</code></li> +* <li><code> BackGraphicFilter</code></li> +* <li><code> BackGraphicLocation</code></li> +* <li><code> BackTransparent</code></li> +* <li><code> LevelFormat</code></li> +* <li><code> CreateFromChapter</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.text.BaseIndex +*/ +public class _BaseIndex extends MultiPropertyTest { + /** + * Redefined method returns object, that contains changed property value. + */ + protected PropertyTester CustomTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + XTextColumns TC = UnoRuntime.queryInterface( + XTextColumns.class, oldValue); + TC.setColumnCount((short) (TC.getColumnCount() + (short) 1)); + + return TC; + } + }; + + /** + * New value must be defined for this property. + */ + public void _TextColumns() { + log.println( + "Testing property 'TextColumns' with custom property tester"); + testProperty("TextColumns", CustomTester); + } + + /** + * The value of this property is a collection of document index + * level formats. This property is tested in the following manner : + * the property value (a collection) is obtained, the first element + * of this collection is replaced with new non-empty array + * (<code>PropertyValue[][]</code>) with some properties set. + * After that the collection is set back as property value. <p> + * + * Comparing of set and got <code>PropertyValue</code> arrays + * is difficult because values can be changed after setting + * by service implementation. <p> + * + * Has <b>OK</b> status if the collection again gotten, has a + * new first element (i.e. lengths of the old array and the array + * get are different or their contents differ). + */ + public void _LevelFormat() { + log.println( + "Testing property 'LevelFormat' with custom property tester"); + testProperty("LevelFormat", + new PropertyTester() { + PropertyValue[][] newVal = null; + PropertyValue[][] oldVal = null; + + @Override + protected Object getNewValue(String propName, Object oldValue) { + XIndexReplace indProp = UnoRuntime.queryInterface( + XIndexReplace.class, oldValue); + + try { + oldVal = (PropertyValue[][]) indProp.getByIndex(0); + + log.println("Get:"); + printLevelFormatProperty(oldValue); + + newVal = new PropertyValue[1][2]; + + for (int i = 0; i < newVal[0].length; i++) { + newVal[0][i] = new PropertyValue(); + } + + newVal[0][1].Name = "TokenType"; + newVal[0][1].Value = "TokenEntryText"; + newVal[0][0].Name = "Text"; + newVal[0][0].Value = "BaseIndex"; + + indProp.replaceByIndex(0, newVal); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while testing LevelFormat"); + e.printStackTrace(log); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception occurred while testing LevelFormat"); + e.printStackTrace(log); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception occurred while testing LevelFormat"); + e.printStackTrace(log); + } + + return indProp; + } + + @Override + protected void checkResult(String propName, Object oldValue, + Object newValue, Object resValue, + Exception exception) + throws Exception { + + super.checkResult(propName, oldValue, newValue, resValue, exception); + + PropertyValue[][] res = (PropertyValue[][]) UnoRuntime.queryInterface( + XIndexAccess.class, + resValue).getByIndex(0); + + log.println("Result:"); + printLevelFormatProperty(resValue); + + boolean result = (res.length != oldVal.length) || + !util.ValueComparer.equalValue(res, oldVal); + + tRes.tested(propName, result); + } + }); + } + + /** + * Outputs full description of 'LevelFormat' property + * value into <code>log</code>. + */ + private void printLevelFormatProperty(Object value) { + XIndexReplace indProp = UnoRuntime.queryInterface( + XIndexReplace.class, value); + PropertyValue[][] val = null; + + try { + log.println(" \u0421ollection has " + indProp.getCount() + + " elements : "); + + for (int i = 0; i < indProp.getCount(); i++) { + val = (PropertyValue[][]) indProp.getByIndex(i); + + log.println(" " + i + ": has " + val.length + " levels :"); + + for (int j = 0; j < val.length; j++) { + log.println(" " + j + " level :"); + + for (int k = 0; k < val[j].length; k++) { + log.println(" " + val[j][k].Name + "=" + + val[j][k].Value); + } + } + } + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while printing LevelFormat"); + e.printStackTrace(log); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception occurred while printing LevelFormat"); + e.printStackTrace(log); + } + } +} // finish class _NumberingRules diff --git a/qadevOOo/tests/java/ifc/text/_CellProperties.java b/qadevOOo/tests/java/ifc/text/_CellProperties.java new file mode 100644 index 0000000000..25b739cc71 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_CellProperties.java @@ -0,0 +1,150 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +import com.sun.star.container.XNameContainer; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.xml.AttributeData; + +/** +* Testing <code>com.sun.star.text.CellProperties</code> +* service properties : +* <ul> +* <li><code> BackColor</code></li> +* <li><code> BackGraphicURL</code></li> +* <li><code> BackGraphicFilter</code></li> +* <li><code> BackGraphicLocation</code></li> +* <li><code> NumberFormat</code></li> +* <li><code> BackTransparent</code></li> +* <li><code> LeftBorder</code></li> +* <li><code> RightBorder</code></li> +* <li><code> TopBorder</code></li> +* <li><code> BottomBorder</code></li> +* <li><code> LeftBorderDistance</code></li> +* <li><code> RightBorderDistance</code></li> +* <li><code> TopBorderDistance</code></li> +* <li><code> BottomBorderDistance</code></li> +* <li><code> UserDefinedAttributes</code></li> +* <li><code> TextSection</code></li> +* <li><code> IsProtected</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CellProperties.TextSection'</code> (of type +* <code>XInterface</code>): +* instance of <code>com.sun.star.text.TextSection</code></li> +* </ul> <p> +* The following predefined files needed to complete the test: +* <ul> +* <li> <code> crazy-blue.jpg </code> : jpeg image used to test +* BackGraphicURL()</li> +* <li> <code> space-metal.jpg </code> : jpeg image used to test +* BackGraphicURL()</li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.text.CellProperties +*/ +public class _CellProperties extends MultiPropertyTest { + + /** + * This property can be void, so new value must be specified from + * corresponding object relation. + */ + public void _TextSection() { + log.println("Testing with custom Property tester") ; + testProperty("TextSection", new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + return tEnv.getObjRelation("CellProperties.TextSection"); + } + }); + } + + + /** + * Redefined method returns value, that differs from property value. + */ + public void _BackColor() { + final Short val1 = Short.valueOf( (short) 4 ); + final Short val2 = Short.valueOf( (short) 6 ); + log.println("Testing with custom Property tester") ; + testProperty("BackColor", new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if ( oldValue.equals(val1) ) + return val2; + else + return val1; + } + }); + } + + + /** + * Redefined method returns value, that differs from property value. + */ + public void _BackGraphicURL() { + log.println("Testing with custom Property tester") ; + testProperty("BackGraphicURL", new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (oldValue.equals(util.utils.getFullTestURL + ("space-metal.jpg"))) + return util.utils.getFullTestURL("crazy-blue.jpg"); + else + return util.utils.getFullTestURL("space-metal.jpg"); + } + }); + } + + + /** + * Redefined method returns object, that contains changed property value. + */ + public void _UserDefinedAttributes() { + log.println("Testing with custom property tester"); + testProperty("UserDefinedAttributes", new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + XNameContainer NC = null; + try { + NC = (XNameContainer) + AnyConverter.toObject(new Type(XNameContainer.class),oldValue); + NC.insertByName("MyAttribute", + new AttributeData("","CDATA","Value")); + } catch ( com.sun.star.lang.IllegalArgumentException e ) { + log.println("Failed to check 'UserDefinedAttributes'"); + e.printStackTrace(log); + } catch ( com.sun.star.lang.WrappedTargetException e ) { + log.println("Failed to check 'UserDefinedAttributes'"); + e.printStackTrace(log); + } catch ( com.sun.star.container.ElementExistException e ) { + log.println("Failed to check 'UserDefinedAttributes'"); + e.printStackTrace(log); + } + return NC; + } + }); + } + +} //finish class _CellProperties + diff --git a/qadevOOo/tests/java/ifc/text/_CellRange.java b/qadevOOo/tests/java/ifc/text/_CellRange.java new file mode 100644 index 0000000000..c2942a1c57 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_CellRange.java @@ -0,0 +1,94 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.text.CellRange</code> +* service properties : +* <ul> +* <li><code> BackColor</code></li> +* <li><code> BackGraphicURL</code></li> +* <li><code> BackGraphicFilter</code></li> +* <li><code> BackGraphicLocation</code></li> +* <li><code> BackTransparent</code></li> +* <li><code> ChartColumnAsLabel</code></li> +* <li><code> ChartRowAsLabel</code></li> +* <li><code> NumberFormat</code></li> +* <li><code> TopMargin</code></li> +* <li><code> BottomMargin</code></li> +* +* The following predefined files needed to complete the test: +* <ul> +* <li> <code> crazy-blue.jpg </code> : jpeg image used to test +* BackGraphicURL()</li> +* <li> <code> space-metal.jpg </code> : jpeg image used to test +* BackGraphicURL()</li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.text.CellProperties +*/ +public class _CellRange extends MultiPropertyTest { + + /** + * Redefined method returns value, that differs from property value. + */ + public void _BackColor() { + final Short val1 = Short.valueOf( (short) 4 ); + final Short val2 = Short.valueOf( (short) 6 ); + log.println("Testing with custom Property tester") ; + testProperty("BackColor", new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if ( oldValue.equals(val1) ) + return val2; + else + return val1; + } + }); + } + + /** + * This property could be changed only when graphic + * URL is set. + */ + public void _BackGraphicFilter() { + executeMethod("BackGraphicURL"); + testProperty("BackGraphicFilter"); + } + + /** + * Redefined method returns value, that differs from property value. + */ + public void _BackGraphicURL() { + log.println("Testing with custom Property tester") ; + testProperty("BackGraphicURL", new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (oldValue.equals(util.utils.getFullTestURL + ("space-metal.jpg"))) + return util.utils.getFullTestURL("crazy-blue.jpg"); + else + return util.utils.getFullTestURL("space-metal.jpg"); + } + }); + } +} + diff --git a/qadevOOo/tests/java/ifc/text/_Defaults.java b/qadevOOo/tests/java/ifc/text/_Defaults.java new file mode 100644 index 0000000000..22ccb88722 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_Defaults.java @@ -0,0 +1,32 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.text.Defaults</code> +* +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.text.Defaults +*/ +public class _Defaults extends MultiPropertyTest { + +} //finish class _Defaults + diff --git a/qadevOOo/tests/java/ifc/text/_DocumentIndex.java b/qadevOOo/tests/java/ifc/text/_DocumentIndex.java new file mode 100644 index 0000000000..5ee2283418 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_DocumentIndex.java @@ -0,0 +1,45 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.text.DocumentIndex</code> +* service properties : +* <ul> +* <li><code> UseAlphabeticalSeparators</code></li> +* <li><code> UseKeyAsEntry</code></li> +* <li><code> UseCombinedEntries</code></li> +* <li><code> IsCaseSensitive</code></li> +* <li><code> UsePP</code></li> +* <li><code> UseDash</code></li> +* <li><code> UseUpperCase</code></li> +* <li><code> MainEntryCharacterStyleName</code></li> +* <li><code> DocumentIndexMarks</code></li> +* <li><code> Locale</code></li> +* <li><code> SortAlgorithm</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.text.DocumentIndex +*/ +public class _DocumentIndex extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/text/_DocumentSettings.java b/qadevOOo/tests/java/ifc/text/_DocumentSettings.java new file mode 100644 index 0000000000..0110aee3d4 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_DocumentSettings.java @@ -0,0 +1,26 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +public class _DocumentSettings extends MultiPropertyTest +{ + +} diff --git a/qadevOOo/tests/java/ifc/text/_FootnoteSettings.java b/qadevOOo/tests/java/ifc/text/_FootnoteSettings.java new file mode 100644 index 0000000000..77cc50d872 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_FootnoteSettings.java @@ -0,0 +1,95 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.text.FootnoteSettings</code> +* service properties : +* <ul> +* <li><code> CharStyleName</code></li> +* <li><code> NumberingType</code></li> +* <li><code> PageStyleName</code></li> +* <li><code> ParaStyleName</code></li> +* <li><code> Prefix</code></li> +* <li><code> StartAt</code></li> +* <li><code> Suffix</code></li> +* <li><code> BeginNotice</code></li> +* <li><code> EndNotice</code></li> +* <li><code> FootnoteCounting</code></li> +* <li><code> PositionEndOfDoc</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.text.FootnoteSettings +*/ +public class _FootnoteSettings extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must be defined. + */ + public void _CharStyleName() { + log.println("Testing with custom Property tester") ; + testProperty("CharStyleName", "Endnote Symbol", "Endnote anchor") ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must be defined. + */ + public void _PageStyleName() { + log.println("Testing with custom Property tester") ; + testProperty("PageStyleName", "Standard", "Endnote") ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must be defined. + */ + public void _ParaStyleName() { + log.println("Testing with custom Property tester") ; + testProperty("ParaStyleName", "Standard", "Endnote") ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must be defined. + */ + public void _NumberingType() { + Short val1 = Short.valueOf(com.sun.star.text.FootnoteNumbering.PER_DOCUMENT); + Short val2 = Short.valueOf(com.sun.star.text.FootnoteNumbering.PER_PAGE); + log.println("Testing with custom Property tester") ; + testProperty("NumberingType", val1, val2) ; + } + + /** + * This property can be VOID, and in case if it is so new + * value must be defined. + */ + public void _FootnoteCounting() { + Short val1 = Short.valueOf( (short) 1 ); + Short val2 = Short.valueOf( (short) 2 ); + log.println("Testing with custom Property tester") ; + testProperty("FootnoteCounting", val1, val2) ; + } + +} + + diff --git a/qadevOOo/tests/java/ifc/text/_GenericTextDocument.java b/qadevOOo/tests/java/ifc/text/_GenericTextDocument.java new file mode 100644 index 0000000000..237d281ec0 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_GenericTextDocument.java @@ -0,0 +1,39 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.text.TextDocument</code> +* service properties : +* <ul> +* <li><code> CharLocale</code></li> +* <li><code> CharacterCount</code></li> +* <li><code> ParagraphCount</code></li> +* <li><code> WordCount</code></li> +* <li><code> WordSeparator</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.text.TextDocument +*/ +public class _GenericTextDocument extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/text/_LineNumberingProperties.java b/qadevOOo/tests/java/ifc/text/_LineNumberingProperties.java new file mode 100644 index 0000000000..b85880dcc4 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_LineNumberingProperties.java @@ -0,0 +1,54 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.text.LineNumberingProperties</code> +* service properties : +* <ul> +* <li><code> IsOn</code></li> +* <li><code> CharStyleName</code></li> +* <li><code> CountEmptyLines</code></li> +* <li><code> CountLinesInFrames</code></li> +* <li><code> Distance</code></li> +* <li><code> Interval</code></li> +* <li><code> SeparatorText</code></li> +* <li><code> SeparatorInterval</code></li> +* <li><code> NumberPosition</code></li> +* <li><code> NumberingType</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.text.LineNumberingProperties +*/ +public class _LineNumberingProperties extends MultiPropertyTest { + + /** + * This property can be VOID, and in case if it is so new + * value must be defined. + */ + public void _CharStyleName() { + log.println("Testing with custom Property tester") ; + testProperty("CharStyleName", "Endnote Symbol", "Endnote anchor") ; + } + +} + + diff --git a/qadevOOo/tests/java/ifc/text/_MailMerge.java b/qadevOOo/tests/java/ifc/text/_MailMerge.java new file mode 100644 index 0000000000..b3c0e1fe43 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_MailMerge.java @@ -0,0 +1,167 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +import com.sun.star.sdbc.XConnection; +import com.sun.star.sdbc.XResultSet; +import com.sun.star.uno.UnoRuntime; + +public class _MailMerge extends MultiPropertyTest { + + /** + * Custom tester for properties which contains URLs. + * Switches between two valid folders + */ + protected PropertyTester URLTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (oldValue.equals(util.utils.getOfficeTemp(tParam.getMSF()))) + return util.utils.getFullTestURL(""); else + return util.utils.getOfficeTemp(tParam.getMSF()); + } + } ; + + /** + * Custom tester for properties which contains document URLs. + * Switches between two document URLs. + */ + protected PropertyTester DocumentURLTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + if (oldValue.equals(util.utils.getFullTestURL("MailMerge.sxw"))) + return util.utils.getFullTestURL("sForm.sxw"); else + return util.utils.getFullTestURL("MailMerge.sxw"); + } + } ; + /** + * Tested with custom property tester. + */ + public void _ResultSet() { + String propName = "ResultSet"; + try{ + + log.println("try to get value from property..."); + UnoRuntime.queryInterface(XResultSet.class,oObj.getPropertyValue(propName)); + + log.println("try to get value from object relation..."); + XResultSet newValue = UnoRuntime.queryInterface(XResultSet.class,tEnv.getObjRelation("MailMerge.XResultSet")); + + log.println("set property to a new value..."); + oObj.setPropertyValue(propName, newValue); + + log.println("get the new value..."); + XResultSet getValue = UnoRuntime.queryInterface(XResultSet.class,oObj.getPropertyValue(propName)); + + tRes.tested(propName, this.compare(newValue, getValue)); + } catch (com.sun.star.beans.PropertyVetoException e){ + log.println("could not set property '"+ propName +"' to a new value!"); + tRes.tested(propName, false); + } catch (com.sun.star.lang.IllegalArgumentException e){ + log.println("could not set property '"+ propName +"' to a new value!"); + tRes.tested(propName, false); + } catch (com.sun.star.beans.UnknownPropertyException e){ + if (this.isOptional(propName)){ + // skipping optional property test + log.println("Property '" + propName + + "' is optional and not supported"); + tRes.tested(propName,true); + + } else { + log.println("could not get property '"+ propName +"' from XPropertySet!"); + tRes.tested(propName, false); + } + } catch (com.sun.star.lang.WrappedTargetException e){ + log.println("could not get property '"+ propName +"' from XPropertySet!"); + tRes.tested(propName, false); + } + } + + /** + * Tested with custom property tester. + */ + + public void _ActiveConnection() { + String propName = "ActiveConnection"; + try{ + + log.println("try to get value from property..."); + UnoRuntime.queryInterface(XConnection.class,oObj.getPropertyValue(propName)); + + log.println("try to get value from object relation..."); + XConnection newValue = UnoRuntime.queryInterface(XConnection.class,tEnv.getObjRelation("MailMerge.XConnection")); + + log.println("set property to a new value..."); + oObj.setPropertyValue(propName, newValue); + + log.println("get the new value..."); + XConnection getValue = UnoRuntime.queryInterface(XConnection.class,oObj.getPropertyValue(propName)); + + tRes.tested(propName, this.compare(newValue, getValue)); + } catch (com.sun.star.beans.PropertyVetoException e){ + log.println("could not set property '"+ propName +"' to a new value! " + e.toString()); + tRes.tested(propName, false); + } catch (com.sun.star.lang.IllegalArgumentException e){ + log.println("could not set property '"+ propName +"' to a new value! " + e.toString()); + tRes.tested(propName, false); + } catch (com.sun.star.beans.UnknownPropertyException e){ + if (this.isOptional(propName)){ + // skipping optional property test + log.println("Property '" + propName + + "' is optional and not supported"); + tRes.tested(propName,true); + + } else { + log.println("could not get property '"+ propName +"' from XPropertySet!"); + tRes.tested(propName, false); + } + } catch (com.sun.star.lang.WrappedTargetException e){ + log.println("could not get property '"+ propName +"' from XPropertySet!"); + tRes.tested(propName, false); + } + } + + /** + * Tested with custom property tester. + */ + public void _DocumentURL() { + log.println("Testing with custom Property tester") ; + testProperty("DocumentURL", DocumentURLTester) ; + } + + /** + * Tested with custom property tester. + */ + public void _OutputURL() { + log.println("Testing with custom Property tester") ; + testProperty("OutputURL", URLTester) ; + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + + +} //finish class _MailMerge + diff --git a/qadevOOo/tests/java/ifc/text/_NumberingLevel.java b/qadevOOo/tests/java/ifc/text/_NumberingLevel.java new file mode 100644 index 0000000000..e3eace4209 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_NumberingLevel.java @@ -0,0 +1,163 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import lib.StatusException; +import lib.TestParameters; +import share.LogWriter; + +import com.sun.star.beans.PropertyValue; + + +/** +* Testing <code>com.sun.star.text.NumberingLevel</code><p> +* This service is currently known as property value of +* com.sun.star.text.ParagraphProperties.NumberingRules +* This test checks only for completeness of implemented properties. +* service properties : +* <ul> +* <li><code> Adjust</code></li> +* <li><code> ParentNumbering</code></li> +* <li><code> Prefix</code></li> +* <li><code> Suffix</code></li> +* <li><code> CharStyleName</code></li> +* <li><code> BulletId</code></li> +* <li><code> BulletChar</code></li> +* <li><code> BulletFontName</code></li> +* <li><code> BulletFont</code></li> +* <li><code> GraphicURL</code></li> +* <li><code> GraphicBitmap</code></li> +* <li><code> GraphicSize</code></li> +* <li><code> VertOrient</code></li> +* <li><code> StartWith</code></li> +* <li><code> LeftMargin</code></li> +* <li><code> SymbolTextDistance</code></li> +* <li><code> FirstLineOffset</code></li> +* <li><code> NumberingType</code></li> +* <li><code> HeadingStyleName</code></li> +* <li><code> BulletColor</code></li> +* <li><code> BulletRelSize</code></li> +* </ul> <p> +* +* @see com.sun.star.text.NumberingLevel +* @see com.sun.star.test.ParagraphProperties +* @see ifc.style._ParagraphProperties +*/ +public class _NumberingLevel { + + private HashMap<String, Boolean> NumberingLevel = new HashMap<String,Boolean>(); + private PropertyValue[] PropertyArray = null; + private LogWriter log = null; + + + /** + * returns an instance of _NumberingLevel + * @param log the log writer + * @param tParam the test parameters + * @param propertyValues a PropertyValue[] which should contain all properties of com.sun.star.text.NumberingLevel + */ + public _NumberingLevel(LogWriter log, TestParameters tParam, PropertyValue[] propertyValues){ + + this.PropertyArray = propertyValues; + + this.log = log; + + //key = PropertyName, value = Ooptional + NumberingLevel.put("Adjust", Boolean.FALSE); + NumberingLevel.put("ParentNumbering", Boolean.TRUE); + NumberingLevel.put("Prefix", Boolean.FALSE); + NumberingLevel.put("Suffix", Boolean.FALSE); + NumberingLevel.put("CharStyleName", Boolean.TRUE); + NumberingLevel.put("BulletId", Boolean.TRUE); + NumberingLevel.put("BulletChar", Boolean.FALSE); + NumberingLevel.put("BulletFontName", Boolean.FALSE); + NumberingLevel.put("BulletFont", Boolean.TRUE); + NumberingLevel.put("GraphicURL", Boolean.FALSE); + NumberingLevel.put("GraphicBitmap", Boolean.TRUE); + NumberingLevel.put("GraphicSize", Boolean.TRUE); + NumberingLevel.put("VertOrient", Boolean.TRUE); + NumberingLevel.put("StartWith", Boolean.TRUE); + NumberingLevel.put("LeftMargin", Boolean.FALSE); + NumberingLevel.put("SymbolTextDistance", Boolean.TRUE); + NumberingLevel.put("FirstLineOffset", Boolean.FALSE); + NumberingLevel.put("NumberingType", Boolean.FALSE); + NumberingLevel.put("HeadingStyleName", Boolean.FALSE); + NumberingLevel.put("BulletColor", Boolean.TRUE); + NumberingLevel.put("BulletRelSize", Boolean.TRUE); + + } + + /** + * This method checks the PropertyValue for completeness. If one or more properties + * are missing the return value is FALSE, else TRUE + * @return returns TRUE if PropertyValue[] is complete, else FALSE + */ + public boolean testPropertyArray(){ + + boolean status = true; + try{ + + // iterate over the given property array and remove it from the must list + for (int i = 0; i < PropertyArray.length; i++){ + String propertyName=PropertyArray[i].Name; + + if ( NumberingLevel.containsKey(propertyName) ) { + NumberingLevel.remove(propertyName); + } else { + if ( status ) { + log.println("FAILED: com.sun.star.text.NumberingLevel -> " + + "found not described property:"); + } + + status = false; + log.println("-> '" + propertyName + "'"); + } + + } + + // get rest of properties and check if they are optional + if (! NumberingLevel.isEmpty()){ + for (Map.Entry<String,Boolean> e : NumberingLevel.entrySet()) { + // if some elements are not optional -> failed + if (!e.getValue().booleanValue()) { + + if ( status ) { + log.println("FAILED: com.sun.star.text.NumberingLevel -> " + + "could not find not optional property:"); + } + + status = false; + log.println("-> '" + e.getKey() + "'"); + } + } + } + + }catch( Exception e ){ + throw new StatusException("ERROR: could not test all properties of com.sun.star.text.NumberingLevel",e); + } + + return status; + } + + +} // finish class _NumberingLevel diff --git a/qadevOOo/tests/java/ifc/text/_NumberingRules.java b/qadevOOo/tests/java/ifc/text/_NumberingRules.java new file mode 100644 index 0000000000..925ccd4f61 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_NumberingRules.java @@ -0,0 +1,39 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.text.NumberingRules</code> +* service properties : +* <ul> +* <li><code> IsAbsoluteMargins</code></li> +* <li><code> IsAutomatic</code></li> +* <li><code> IsContinuousNumbering</code></li> +* <li><code> Name</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.text.NumberingRules +*/ +public class _NumberingRules extends MultiPropertyTest { + +} // finish class _NumberingRules + + diff --git a/qadevOOo/tests/java/ifc/text/_PrintSettings.java b/qadevOOo/tests/java/ifc/text/_PrintSettings.java new file mode 100644 index 0000000000..a1736adab8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_PrintSettings.java @@ -0,0 +1,47 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.text.PrintSettings</code> +* service properties : +* <ul> +* <li><code> PrintGraphics</code></li> +* <li><code> PrintTables</code></li> +* <li><code> PrintDrawings</code></li> +* <li><code> PrintLeftPages</code></li> +* <li><code> PrintRightPages</code></li> +* <li><code> PrintControls</code></li> +* <li><code> PrintReversed</code></li> +* <li><code> PrintPaperFromSetup</code></li> +* <li><code> PrintFaxName</code></li> +* <li><code> PrintAnnotationMode</code></li> +* <li><code> PrintProspect</code></li> +* <li><code> PrintPageBackground</code></li> +* <li><code> PrintBlackFonts</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.text.PrintSettings +*/ +public class _PrintSettings extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/text/_Text.java b/qadevOOo/tests/java/ifc/text/_Text.java new file mode 100644 index 0000000000..abf93948c6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_Text.java @@ -0,0 +1,26 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +public class _Text extends MultiPropertyTest { + +} //finish class _BaseFrame + diff --git a/qadevOOo/tests/java/ifc/text/_TextColumns.java b/qadevOOo/tests/java/ifc/text/_TextColumns.java new file mode 100644 index 0000000000..93ef30505f --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_TextColumns.java @@ -0,0 +1,64 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +import com.sun.star.text.XTextColumns; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.text.TextColumns</code> +* service properties : +* <ul> +* <li><code> IsAutomatic</code></li> +* <li><code> AutomaticDistance</code></li> +* <li><code> SeparatorLineWidth</code></li> +* <li><code> SeparatorLineColor</code></li> +* <li><code> SeparatorLineRelativeHeight</code></li> +* <li><code> SeparatorLineVerticalAlignment</code></li> +* <li><code> SeparatorLineIsOn</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.text.TextColumns +*/ +public class _TextColumns extends MultiPropertyTest { + + + /** + * Redefined method returns specific value, that differs from property + * value. ( (oldValue + referenceValue) / 2 ). + */ + public void _AutomaticDistance() { + log.println("Testing with custom Property tester") ; + testProperty("AutomaticDistance", new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) { + XTextColumns xTC = UnoRuntime.queryInterface + (XTextColumns.class,tEnv.getTestObject()); + int ref = xTC.getReferenceValue(); + int setting = ( ( (Integer) oldValue).intValue() + ref) / 2; + return Integer.valueOf(setting); + } + }); + } + + +} //finish class _TextColumns + diff --git a/qadevOOo/tests/java/ifc/text/_TextContent.java b/qadevOOo/tests/java/ifc/text/_TextContent.java new file mode 100644 index 0000000000..f414e3c2bc --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_TextContent.java @@ -0,0 +1,37 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.text.TextContent</code> +* service properties : +* <ul> +* <li><code> AnchorType</code></li> +* <li><code> AnchorTypes</code></li> +* <li><code> TextWrap</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.text.TextContent +*/ +public class _TextContent extends MultiPropertyTest { + +} //finish class _TextContent + diff --git a/qadevOOo/tests/java/ifc/text/_TextDocument.java b/qadevOOo/tests/java/ifc/text/_TextDocument.java new file mode 100644 index 0000000000..4f668bcdc5 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_TextDocument.java @@ -0,0 +1,39 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +/** +* Testing <code>com.sun.star.text.TextDocument</code> +* service properties : +* <ul> +* <li><code> CharLocale</code></li> +* <li><code> CharacterCount</code></li> +* <li><code> ParagraphCount</code></li> +* <li><code> WordCount</code></li> +* <li><code> WordSeparator</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.text.TextDocument +*/ +public class _TextDocument extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/text/_TextEmbeddedObject.java b/qadevOOo/tests/java/ifc/text/_TextEmbeddedObject.java new file mode 100644 index 0000000000..2ee2609f4b --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_TextEmbeddedObject.java @@ -0,0 +1,59 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.text; + +import lib.MultiPropertyTest; + + +/** + * Testing <code>com.sun.star.text.TextEmbeddedObject</code> + * service properties : + * <ul> + * <li><code> CLSID</code></li> + * <li><code> Model</code></li> + * <li><code> Component</code></li> + * </ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.text.TextEmbeddedObject + */ +public class _TextEmbeddedObject extends MultiPropertyTest { + + /** + * This property can't be set, as soon as the object is inserted + * so the set method will be skipped. + */ + public void _CLSID() { + boolean result = false; + + try { + String clsid = (String) oObj.getPropertyValue("CLSID"); + log.println("Getting " + clsid); + log.println( + "According to the idl-description this property can't be set as soon as the Object is inserted in the document, so setting will be skipped"); + result=true; + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Exception while getting Property 'CLSID' " + + e.getMessage()); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception while getting Property 'CLSID' " + + e.getMessage()); + } + + tRes.tested("CLSID", result); + } +} // finish class _TextEmbeddedObject diff --git a/qadevOOo/tests/java/ifc/text/_TextFieldMaster.java b/qadevOOo/tests/java/ifc/text/_TextFieldMaster.java new file mode 100644 index 0000000000..cb343f482a --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_TextFieldMaster.java @@ -0,0 +1,37 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +/** + * Testing <code>com.sun.star.text.TextFieldMaster</code> + * service properties : + * <ul> + * <li><code> Name</code></li> + * <li><code> DependentTextFields</code></li> + * <li><code> InstanceName</code></li> + * </ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.text.TextFieldMaster + */ +public class _TextFieldMaster extends MultiPropertyTest { + +} + diff --git a/qadevOOo/tests/java/ifc/text/_TextFrame.java b/qadevOOo/tests/java/ifc/text/_TextFrame.java new file mode 100644 index 0000000000..a23d22862a --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_TextFrame.java @@ -0,0 +1,61 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +/** + * Testing <code>com.sun.star.text.TextFrame</code> + * service properties : + * <ul> + * <li><code> FrameHeightAbsolute</code></li> + * <li><code> FrameWidthAbsolute</code></li> + * <li><code> FrameWidthPercent</code></li> + * <li><code> FrameHeightPercent</code></li> + * <li><code> FrameIsAutomaticHeight</code></li> + * <li><code> SizeType</code></li> + * </ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.text.TextFrame + */ +public class _TextFrame extends MultiPropertyTest { + + /** + * Property tester which switches two shorts. + */ + protected PropertyTester WModeTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + if (oldValue.equals(Short.valueOf(com.sun.star.text.WritingMode2.LR_TB))) + return Short.valueOf(com.sun.star.text.WritingMode2.TB_LR); else + return Short.valueOf(com.sun.star.text.WritingMode2.LR_TB); + } + } ; + + /** + * This property must have predefined values + */ + public void _WritingMode() { + log.println("Testing with custom Property tester") ; + testProperty("WritingMode", WModeTester) ; + } + +} //finish class _TextFrame + diff --git a/qadevOOo/tests/java/ifc/text/_TextGraphicObject.java b/qadevOOo/tests/java/ifc/text/_TextGraphicObject.java new file mode 100644 index 0000000000..10d6e8d885 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_TextGraphicObject.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 ifc.text; + +import com.sun.star.awt.Point; +import com.sun.star.container.XIndexContainer; +import com.sun.star.uno.UnoRuntime; + +import java.util.Random; + +import lib.MultiPropertyTest; + +import util.utils; + + +/** + * Testing <code>com.sun.star.text.TextGraphicObject</code> + * service properties : + * <ul> + * <li><code> ImageMap</code></li> + * <li><code> ContentProtected</code></li> + * <li><code> SurroundContour</code></li> + * <li><code> ContourOutside</code></li> + * <li><code> ContourPolyPolygon</code></li> + * <li><code> GraphicCrop</code></li> + * <li><code> HoriMirroredOnEvenPages</code></li> + * <li><code> HoriMirroredOnOddPages</code></li> + * <li><code> VertMirrored</code></li> + * <li><code> GraphicURL</code></li> + * <li><code> GraphicFilter</code></li> + * <li><code> ActualSize</code></li> + * <li><code> AdjustLuminance</code></li> + * <li><code> AdjustContrast</code></li> + * <li><code> AdjustRed</code></li> + * <li><code> AdjustGreen</code></li> + * <li><code> AdjustBlue</code></li> + * <li><code> Gamma</code></li> + * <li><code> GraphicIsInverted</code></li> + * <li><code> Transparency</code></li> + * <li><code> GraphicColorMode</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'ImageMap'</code> (an implementation of + * <code>com.sun.star.image.ImageMapObject</code>): + * is used to insert a new Map into collection + * from 'ImageMap' property. </li> + * <ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.text.TextGraphicObject + */ +public class _TextGraphicObject extends MultiPropertyTest { + public Random rdm = new Random(); + + /** + * The tester which can change a sequence of <code>Point</code>'s + * or create a new one if necessary. + */ + protected PropertyTester PointTester = new PropertyTester() { + @Override + protected Object getNewValue(String propName, Object oldValue) + throws java.lang.IllegalArgumentException { + if (utils.isVoid(oldValue)) { + return newPoint(); + } else { + return changePoint((Point[][]) oldValue); + } + } + }; + + /** + * Tested with custom <code>PointTester</code>. + */ + public void _ContourPolyPolygon() { + log.println("Testing with custom Property tester"); + testProperty("ContourPolyPolygon", PointTester); + } + + /** + * Retrieves an ImageMap from relation and inserts it to the collection + * obtained as property value. Then this collection is set back. + * After that property value is get again. The number of elements + * in the old collection and in just gotten collection is checked. + * + * Has <b>OK</b> status if the number of elements in the new obtained + * collection is greater than in old one. + */ + public void _ImageMap() { + boolean result = true; + + try { + XIndexContainer imgMap = UnoRuntime.queryInterface( + XIndexContainer.class, + oObj.getPropertyValue("ImageMap")); + int previous = imgMap.getCount(); + log.println("Count (previous) " + previous); + + Object im = tEnv.getObjRelation("IMGMAP"); + imgMap.insertByIndex(0, im); + oObj.setPropertyValue("ImageMap", imgMap); + imgMap = UnoRuntime.queryInterface( + XIndexContainer.class, + oObj.getPropertyValue("ImageMap")); + + int after = imgMap.getCount(); + log.println("Count (after) " + after); + result = previous < after; + } catch (Exception ex) { + result = false; + } + + tRes.tested("ImageMap", result); + } + + /** + * Creates a new random points sequence. + */ + public Point[][] newPoint() { + Point[][] res = new Point[1][185]; + + for (int i = 0; i < res[0].length; i++) { + res[0][i] = new Point(); + res[0][i].X = rd() * rd() * rd(); + res[0][i].Y = rd() * rd() * rd(); + } + + return res; + } + + public int rd() { + return rdm.nextInt(6); + } + + /** + * Changes the existing point sequence. + */ + public Point[][] changePoint(Point[][] oldPoint) { + Point[][] res = oldPoint; + + for (int i = 0; i < res[0].length; i++) { + res[0][i].X += 1; + res[0][i].Y += 1; + } + + return res; + } +} // finish class _TextGraphicObject diff --git a/qadevOOo/tests/java/ifc/text/_TextPortion.java b/qadevOOo/tests/java/ifc/text/_TextPortion.java new file mode 100644 index 0000000000..24096fe6da --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_TextPortion.java @@ -0,0 +1,48 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +import com.sun.star.text.ControlCharacter; + +/** + * Testing <code>com.sun.star.text.TextPortion</code> + * service properties : + * <ul> + * <li><code> TextPortionType</code></li> + * <li><code> ControlCharacter</code></li> + * </ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.text.TextPortion + */ +public class _TextPortion extends MultiPropertyTest { + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _ControlCharacter() { + testProperty("ControlCharacter", + Short.valueOf(ControlCharacter.LINE_BREAK), + Short.valueOf(ControlCharacter.PARAGRAPH_BREAK)) ; + } + +} //finish class _TextPortion + diff --git a/qadevOOo/tests/java/ifc/text/_TextSection.java b/qadevOOo/tests/java/ifc/text/_TextSection.java new file mode 100644 index 0000000000..3c756a60f7 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_TextSection.java @@ -0,0 +1,142 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +import com.sun.star.text.XTextColumns; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; + +/** + * Testing <code>com.sun.star.text.TextSection</code> + * service properties : + * <ul> + * <li><code> Condition</code></li> + * <li><code> IsVisible</code></li> + * <li><code> IsProtected</code></li> + * <li><code> FileLink</code></li> + * <li><code> LinkRegion</code></li> + * <li><code> DDECommandType</code></li> + * <li><code> DDECommandFile</code></li> + * <li><code> DDECommandElement</code></li> + * <li><code> BackGraphicURL</code></li> + * <li><code> BackGraphicFilter</code></li> + * <li><code> BackGraphicLocation</code></li> + * <li><code> FootnoteIsCollectAtTextEnd</code></li> + * <li><code> FootnoteIsRestartNumbering</code></li> + * <li><code> FootnoteRestartNumberingAt</code></li> + * <li><code> FootnoteIsOwnNumbering</code></li> + * <li><code> FootnoteNumberingType</code></li> + * <li><code> FootnoteNumberingPrefix</code></li> + * <li><code> FootnoteNumberingSuffix</code></li> + * <li><code> EndnoteIsCollectAtTextEnd</code></li> + * <li><code> EndnoteIsRestartNumbering</code></li> + * <li><code> EndnoteRestartNumberingAt</code></li> + * <li><code> EndnoteIsOwnNumbering</code></li> + * <li><code> EndnoteNumberingType</code></li> + * <li><code> EndnoteNumberingPrefix</code></li> + * <li><code> EndnoteNumberingSuffix</code></li> + * <li><code> IsAutomaticUpdate</code></li> + * </ul> <p> + * The following predefined files needed to complete the test: + * <ul> + * <li> <code>crazy-blue.jpg, space-metal.jpg</code> : are used for + * setting 'BackGraphicURL' property. </li> + * <ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.text.TextSection + */ +public class _TextSection extends MultiPropertyTest { + + /** + * Only image file URL can be used as a value. + */ + public void _BackGraphicURL() { + log.println("Testing with custom Property tester") ; + testProperty("BackGraphicURL", + util.utils.getFullTestURL("crazy-blue.jpg"), + util.utils.getFullTestURL("space-metal.jpg")) ; + } + + /** + * This property can be void, so if old value is <code> null </code> + * new value must be specified. + */ + public void _FootnoteNumberingType() { + log.println("Testing with custom Property tester") ; + testProperty("FootnoteNumberingType", + Short.valueOf(com.sun.star.text.FootnoteNumbering.PER_DOCUMENT), + Short.valueOf(com.sun.star.text.FootnoteNumbering.PER_PAGE)) ; + } + + + /** + * Custom property tester for property <code>TextColumns</code> + */ + protected PropertyTester TextColumnsTester = new PropertyTester() { + + @Override + protected Object getNewValue(String propName, Object oldValue) { + XTextColumns TC = null; + short val2set = 25; + + TC = (XTextColumns) tEnv.getObjRelation("TC"); + try { + val2set += ((XTextColumns) AnyConverter.toObject( + new Type(XTextColumns.class),oldValue)).getColumnCount(); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + log.println("Couldn't change Column count"); + } + TC.setColumnCount(val2set); + + return TC; + } + + @Override + protected boolean compare(Object obj1, Object obj2) { + short val1 = 0; + short val2 = 1; + try { + val1 = ((XTextColumns) AnyConverter.toObject( + new Type(XTextColumns.class),obj1)).getColumnCount(); + val2 = ((XTextColumns) AnyConverter.toObject( + new Type(XTextColumns.class),obj2)).getColumnCount(); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + log.println("comparing values failed"); + } + return val1 == val2; + } + + @Override + protected String toString(Object obj) { + return "XTextColumns: ColumnCount = "+ + ((XTextColumns) obj).getColumnCount(); + } + + }; + + public void _TextColumns() { + log.println("Testing with custom Property tester"); + testProperty("TextColumns", TextColumnsTester); + } + + +} //finish class _TextContent + diff --git a/qadevOOo/tests/java/ifc/text/_TextTable.java b/qadevOOo/tests/java/ifc/text/_TextTable.java new file mode 100644 index 0000000000..ad3645d220 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_TextTable.java @@ -0,0 +1,110 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +/** + * Testing <code>com.sun.star.text.TextTable</code> + * service properties : + * <ul> + * <li><code> BreakType</code></li> + * <li><code> LeftMargin</code></li> + * <li><code> RightMargin</code></li> + * <li><code> HoriOrient</code></li> + * <li><code> KeepTogether</code></li> + * <li><code> Split</code></li> + * <li><code> PageNumberOffset</code></li> + * <li><code> PageDescName</code></li> + * <li><code> RelativeWidth</code></li> + * <li><code> IsWidthRelative</code></li> + * <li><code> RepeatHeadline</code></li> + * <li><code> ShadowFormat</code></li> + * <li><code> TopMargin</code></li> + * <li><code> BottomMargin</code></li> + * <li><code> BackTransparent</code></li> + * <li><code> Width</code></li> + * <li><code> ChartRowAsLabel</code></li> + * <li><code> ChartColumnAsLabel</code></li> + * <li><code> TableBorder</code></li> + * <li><code> TableColumnSeparators</code></li> + * <li><code> TableColumnRelativeSum</code></li> + * <li><code> BackColor</code></li> + * <li><code> BackGraphicURL</code></li> + * <li><code> BackGraphicFilter</code></li> + * <li><code> BackGraphicLocation</code></li> + * </ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.text.TextTable + */ +public class _TextTable extends MultiPropertyTest { + + /** + * This property accepts only restricted range of values. + * The property value is switched between '' and 'Standard' + * strings. + */ + public void _PageDescName() { + testProperty("PageDescName", "Endnote", "Standard"); + } + + /** + * For setting this property, 'HoriOrient' property must be + * set to non-automatic. + */ + public void _Width() { + Short align = Short.valueOf(com.sun.star.text.HoriOrientation.CENTER); + try { + oObj.setPropertyValue("HoriOrient",align); + } + catch (com.sun.star.lang.IllegalArgumentException ex) {} + catch (com.sun.star.lang.WrappedTargetException ex) {} + catch (com.sun.star.beans.PropertyVetoException ex) {} + catch (com.sun.star.beans.UnknownPropertyException ex) {} + + testProperty("Width"); + } + + /** + * For setting this property, 'HoriOrient' property must be + * set to non-automatic. + */ + public void _RelativeWidth() { + Short align = Short.valueOf(com.sun.star.text.HoriOrientation.CENTER); + try { + oObj.setPropertyValue("HoriOrient",align); + } + catch (com.sun.star.lang.IllegalArgumentException ex) {} + catch (com.sun.star.lang.WrappedTargetException ex) {} + catch (com.sun.star.beans.PropertyVetoException ex) {} + catch (com.sun.star.beans.UnknownPropertyException ex) {} + + testProperty("RelativeWidth"); + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + +} // finish class _TextTable + diff --git a/qadevOOo/tests/java/ifc/text/_TextTableRow.java b/qadevOOo/tests/java/ifc/text/_TextTableRow.java new file mode 100644 index 0000000000..7bd23f22e6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_TextTableRow.java @@ -0,0 +1,43 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +/** + * Testing <code>com.sun.star.text.TextTableRow</code> + * service properties : + * <ul> + * <li><code> BackColor</code></li> + * <li><code> BackTransparent</code></li> + * <li><code> VertOrient</code></li> + * <li><code> BackGraphicURL</code></li> + * <li><code> BackGraphicFilter</code></li> + * <li><code> BackGraphicLocation</code></li> + * <li><code> TableColumnSeparators</code></li> + * <li><code> Height</code></li> + * <li><code> IsAutoHeight</code></li> + * </ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.text.TextTableRow + */ +public class _TextTableRow extends MultiPropertyTest { + +} // finish class _TextTableRow + diff --git a/qadevOOo/tests/java/ifc/text/_ViewSettings.java b/qadevOOo/tests/java/ifc/text/_ViewSettings.java new file mode 100644 index 0000000000..676fe27db3 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_ViewSettings.java @@ -0,0 +1,61 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiPropertyTest; + +/** + * Testing <code>com.sun.star.text.ViewSettings</code> + * service properties : + * <ul> + * <li><code> ShowAnnotations</code></li> + * <li><code> ShowBreaks</code></li> + * <li><code> ShowDrawings</code></li> + * <li><code> ShowFieldCommands</code></li> + * <li><code> ShowFootnoteBackground</code></li> + * <li><code> ShowGraphics</code></li> + * <li><code> ShowHiddenParagraphs</code></li> + * <li><code> ShowHiddenText</code></li> + * <li><code> ShowHoriRuler</code></li> + * <li><code> ShowHoriScrollBar</code></li> + * <li><code> ShowIndexMarkBackground</code></li> + * <li><code> ShowParaBreaks</code></li> + * <li><code> ShowProtectedSpaces</code></li> + * <li><code> ShowSoftHyphens</code></li> + * <li><code> ShowSpaces</code></li> + * <li><code> ShowTableBoundaries</code></li> + * <li><code> ShowTables</code></li> + * <li><code> ShowTabstops</code></li> + * <li><code> ShowTextBoundaries</code></li> + * <li><code> ShowTextFieldBackground</code></li> + * <li><code> ShowVertRuler</code></li> + * <li><code> ShowVertScrollBar</code></li> + * <li><code> SmoothScrolling</code></li> + * <li><code> IsVertRulerRightAligned</code></li> + * <li><code> ShowOnlineLayout</code></li> + * <li><code> ZoomType</code></li> + * <li><code> ZoomValue</code></li> + * </ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.text.ViewSettings + */ +public class _ViewSettings extends MultiPropertyTest { + +} // finish class _ViewSettings + diff --git a/qadevOOo/tests/java/ifc/text/_XAutoTextEntry.java b/qadevOOo/tests/java/ifc/text/_XAutoTextEntry.java new file mode 100644 index 0000000000..5f9b19634c --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XAutoTextEntry.java @@ -0,0 +1,69 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.text.XAutoTextEntry; +import com.sun.star.text.XTextDocument; + +/** + * Testing <code>com.sun.star.text.XAutoTextEntry</code> + * interface methods : + * <ul> + * <li><code> applyTo()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'TEXTDOC'</code> (of type <code>XTextDocument</code>): + * the text document for creating a text range.</li> + * <ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XAutoTextEntry + */ +public class _XAutoTextEntry extends MultiMethodTest { + + public XAutoTextEntry oObj = null; + + /** + * Applies the entry to a range created for the text document obtained from + * relation 'TEXTDOC'. <p> + * Has <b> OK </b> status if text of the document was changed. <p> + */ + public void _applyTo() { + XTextDocument textDoc = (XTextDocument)tEnv.getObjRelation("TEXTDOC"); + if (textDoc == null) { + throw new StatusException + (Status.failed("Couldn't get relation 'TEXTDOC'")); + } + + String oldText = textDoc.getText().getString(); + oObj.applyTo(textDoc.getText().createTextCursor()); + String newText = textDoc.getText().getString(); + + log.println("Old text:\n" + oldText + "\nNew text:\n" + newText); + + tRes.tested("applyTo()", ! newText.equals(oldText)); + } + +} // finish class _XAutoTextEntry + + diff --git a/qadevOOo/tests/java/ifc/text/_XAutoTextGroup.java b/qadevOOo/tests/java/ifc/text/_XAutoTextGroup.java new file mode 100644 index 0000000000..9a67c43016 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XAutoTextGroup.java @@ -0,0 +1,299 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import util.ValueComparer; + +import com.sun.star.text.XAutoTextGroup; +import com.sun.star.text.XTextRange; + +/** + * Testing <code>com.sun.star.text.XAutoTextGroup</code> + * interface methods : + * <ul> + * <li><code> getTitles()</code></li> + * <li><code> renameByName()</code></li> + * <li><code> insertNewByName()</code></li> + * <li><code> removeByName()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'TextRange'</code> (of type <code>XTextRange</code>): + * the range for which an entry is added. </li> + * <ul> <p> + * Test is multithread compliant. <p> + * @see com.sun.star.text.XAutoTextGroup + */ +public class _XAutoTextGroup extends MultiMethodTest { + + public XAutoTextGroup oObj = null; + + /** + * Unique number among different interface threads. + */ + protected static int uniq = 0 ; + + /** + * Unique string for AutoTextEntry names among different + * threads. + */ + protected String str = null ; + + /** + * Prefix for unique string. + * @see #str + */ + protected static final String pref = "XAutoTextGroup" ; + protected XTextRange oRange = null; + + /** + * Constructs a unique string for current interface thread + * for naming purposes. All old entries which names are + * started with prefix used for entry names, are deleted + * from the group (they can remain after previous unsuccessful + * test runs). The relation is obtained. + * + * @throws StatusException if the relation is not found. + */ + @Override + public void before() { + str = pref + uniq++ ; + String[] names = oObj.getElementNames() ; + for (int i = 0; i < names.length; i++) { + log.println(" " + names[i]); + if (names[i].toUpperCase().indexOf(pref.toUpperCase()) > 0) { + try { + log.println(" ... removing ..."); + oObj.removeByName(names[i]) ; + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("Element '" + names[i] + "' not found."); + } + } + } + + oRange = (XTextRange) tEnv.getObjRelation("TextRange"); + if (oRange == null) { + throw new StatusException(Status.failed("No relation found")) ; + } + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getTitles() { + + String[] titles = oObj.getTitles(); + tRes.tested("getTitles()",titles != null); + } + + /** + * Firsts inserts a new <code>AutoTextEntry</code> using a range + * from relation, entry titles are checked before and after + * insertion, second tries to add an entry with the same name. <p> + * + * Has <b>OK</b> status if in the first case titles are changed, + * and in the second case <code>ElementExistException</code> is + * thrown. + */ + public void _insertNewByName() { + + boolean result = false; + + try { + String[] before = oObj.getTitles(); + oObj.insertNewByName(str, "For " + str,oRange); + String[] after = oObj.getTitles(); + result = !util.ValueComparer.equalValue(before, after); + } + catch (com.sun.star.container.ElementExistException ex) { + log.println("Exception occurred while testing insertNewByName"); + ex.printStackTrace(log); + result = false; + } + + try { + oObj.insertNewByName(str, "For " + str, oRange); + log.println( + "com::sun::star::container::ElementExistsException wasn't thrown"); + oObj.removeByName(str); + result &= false; + } catch (com.sun.star.container.ElementExistException ex) { + result &= true; + } catch (com.sun.star.container.NoSuchElementException ex) { + log.println("Wrong exception was thrown :"); + ex.printStackTrace(log); + result &= false; + } + + tRes.tested("insertNewByName()",result); + + } + + /** + * Removes <code>AutoTextEntry</code> added before and checks + * titles of the group before and after removing. <p> + * Has <b> OK </b> status if titles are not equal before and after + * removing and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> insertNewByName() </code> : the entry is + * inserted here. </li> + * </ul> + */ + public void _removeByName() { + requiredMethod("insertNewByName()") ; + + try { + String[] before = oObj.getTitles(); + oObj.removeByName(str); + String[] after = oObj.getTitles(); + tRes.tested("removeByName()", + !ValueComparer.equalValue(before,after)); + } + catch (com.sun.star.container.NoSuchElementException ex) { + log.println("Exception occurred while testing removeByName"); + ex.printStackTrace(log); + tRes.tested("removeByName()",false); + } + } + + /** + * Three cases are tested here : + * <ol> + * <li> Trying to rename an entry to a name, which already + * exists in the group. <code>ElementExistException</code> + * must be thrown. </li> + * <li> Trying to rename an element with non-existing name. + * <code>IllegalArgumentException</code> must be thrown.</li> + * <li> The normal situation : no exceptions must be thrown + * and element with a new name must arise. </li> + * </ol> + * + * Has <b>OK</b> status if all three cases were completed successfully. + */ + public void _renameByName() { + boolean result = false; + + try { + oObj.getTitles(); + oObj.getElementNames(); + oObj.insertNewByName(str,"For " + str,oRange); + oObj.insertNewByName(str + "dup","For " + str,oRange); + oObj.getTitles(); + oObj.getElementNames(); + result = true; + } catch (com.sun.star.container.ElementExistException e) { + log.println("Unexpected exception occurred :") ; + e.printStackTrace(log); + } finally { + if (!result) { + try { + oObj.removeByName(str); + } catch (com.sun.star.container.NoSuchElementException e) {} + try { + oObj.removeByName(str + "dup"); + } catch (com.sun.star.container.NoSuchElementException e) {} + tRes.tested("renameByName()", false); + } + } + + + try { + oObj.renameByName(str, str + "dup", "For "+str); + log.println( + "com::sun::star::container::ElementExistsException wasn't thrown"); + result = false; + } catch (com.sun.star.container.ElementExistException e) { + result = true; + } catch (com.sun.star.io.IOException e) { + log.println("Wrong exception was thrown :"); + e.printStackTrace(log); + result = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Wrong exception was thrown :"); + e.printStackTrace(log); + result = false; + } finally { + try { + oObj.removeByName(str); + } catch (com.sun.star.container.NoSuchElementException e) {} + try { + oObj.removeByName(str + "dup"); + } catch (com.sun.star.container.NoSuchElementException e) {} + } + + try { + oObj.renameByName("~"+str,str,str); + log.println( + "com::sun::star::lang::IllegalArgumentException wasn't thrown"); + result &= false; + } catch (com.sun.star.lang.IllegalArgumentException ex) { + result &= true; + } catch (com.sun.star.container.ElementExistException e) { + log.println("Unexpected exception :") ; + e.printStackTrace(log) ; + result = false ; + } catch (com.sun.star.io.IOException e) { + log.println("Unexpected exception :") ; + e.printStackTrace(log) ; + result = false ; + } finally { + try { + oObj.removeByName(str); + } catch (com.sun.star.container.NoSuchElementException e) {} + } + + try { + oObj.insertNewByName(str, "For " + str, oRange); + + oObj.renameByName(str,str+"a",str+"b"); + result &= oObj.hasByName(str + "a"); + } catch (com.sun.star.container.ElementExistException ex) { + log.println("Exception occurred while testing renameByName"); + ex.printStackTrace(log); + result &=false; + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception occurred while testing renameByName"); + ex.printStackTrace(log); + result &=false; + } catch (com.sun.star.io.IOException ex) { + log.println("Exception occurred while testing renameByName"); + ex.printStackTrace(log); + result &=false; + } finally { + try { + oObj.removeByName(str); + } catch (com.sun.star.container.NoSuchElementException e) {} + try { + oObj.removeByName(str + "a"); + } catch (com.sun.star.container.NoSuchElementException e) {} + } + + tRes.tested("renameByName()",result); + + } + +} // finish class _XAutoTextGroup + + diff --git a/qadevOOo/tests/java/ifc/text/_XBookmarksSupplier.java b/qadevOOo/tests/java/ifc/text/_XBookmarksSupplier.java new file mode 100644 index 0000000000..d01fc5686b --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XBookmarksSupplier.java @@ -0,0 +1,55 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import com.sun.star.container.XNameAccess; +import com.sun.star.text.XBookmarksSupplier; +import lib.MultiMethodTest; + + +/** + * Testing <code>com.sun.star.text.XBookmarksSupplier</code> + * interface methods : + * <ul> + * <li><code> getBookmarks()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XBookmarksSupplier + */ +public class _XBookmarksSupplier extends MultiMethodTest { + + public static XBookmarksSupplier oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the collection returned has at least + * one element. + */ + public void _getBookmarks() { + boolean res = false; + + XNameAccess the_bookmarks = oObj.getBookmarks(); + log.println("Found: "); + util.dbg.printArray(the_bookmarks.getElementNames()); + res = the_bookmarks.getElementNames().length>0; + + tRes.tested("getBookmarks()",res); + } + +} // finish class _XBookmarksSupplier diff --git a/qadevOOo/tests/java/ifc/text/_XChapterNumberingSupplier.java b/qadevOOo/tests/java/ifc/text/_XChapterNumberingSupplier.java new file mode 100644 index 0000000000..3cac4bf7cf --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XChapterNumberingSupplier.java @@ -0,0 +1,54 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.container.XIndexReplace; +import com.sun.star.text.XChapterNumberingSupplier; + +/** + * Testing <code>com.sun.star.text.XChapterNumberingSupplier</code> + * interface methods : + * <ul> + * <li><code> getChapterNumberingRules()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XChapterNumberingSupplier + */ +public class _XChapterNumberingSupplier extends MultiMethodTest { + + public static XChapterNumberingSupplier oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the returned collection + * has at least one element. + */ + public void _getChapterNumberingRules() { + boolean res = false; + + XIndexReplace the_chapter = oObj.getChapterNumberingRules(); + res = the_chapter.hasElements(); + + tRes.tested("getChapterNumberingRules()",res); + } + +} // finish class _XChapterNumberingSupplier + diff --git a/qadevOOo/tests/java/ifc/text/_XDefaultNumberingProvider.java b/qadevOOo/tests/java/ifc/text/_XDefaultNumberingProvider.java new file mode 100644 index 0000000000..6a98f0696e --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XDefaultNumberingProvider.java @@ -0,0 +1,65 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.container.XIndexAccess; +import com.sun.star.lang.Locale; +import com.sun.star.text.XDefaultNumberingProvider; + +/** +* Testing <code>com.sun.star.text.XDefaultNumberingProvider</code> +* interface methods : +* <ul> +* <li><code> getDefaultOutlineNumberings()</code></li> +* <li><code> getDefaultContinuousNumberingLevels()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.text.XDefaultNumberingProvider +*/ +public class _XDefaultNumberingProvider extends MultiMethodTest { + + public static XDefaultNumberingProvider oObj = null; + private final Locale loc = new Locale("en", "EN", "") ; + + /** + * Just gets numberings for "en" locale. <p> + * Has <b>OK</b> status if not <code>null</code> value returned + * and no runtime exceptions occurred. + */ + public void _getDefaultOutlineNumberings() { + XIndexAccess xIA[] = oObj.getDefaultOutlineNumberings(loc) ; + + tRes.tested("getDefaultOutlineNumberings()", xIA != null) ; + } + + /** + * Just gets numberings for "en" locale. <p> + * Has <b>OK</b> status if not <code>null</code> value returned + * and no runtime exceptions occurred. + */ + public void _getDefaultContinuousNumberingLevels() { + PropertyValue[][] lev = oObj.getDefaultContinuousNumberingLevels(loc) ; + + tRes.tested("getDefaultContinuousNumberingLevels()", lev != null) ; + } +} + diff --git a/qadevOOo/tests/java/ifc/text/_XDocumentIndex.java b/qadevOOo/tests/java/ifc/text/_XDocumentIndex.java new file mode 100644 index 0000000000..861dbd6817 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XDocumentIndex.java @@ -0,0 +1,115 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.text.XDocumentIndex; +import com.sun.star.text.XText; +import com.sun.star.text.XTextContent; +import com.sun.star.text.XTextDocument; +import com.sun.star.text.XTextRange; +import com.sun.star.uno.UnoRuntime; + +/** + * Testing <code>com.sun.star.text.XDocumentIndex</code> + * interface methods : + * <ul> + * <li><code> getServiceName()</code></li> + * <li><code> update()</code></li> + * </ul> <p> + * + * This test needs the following object relations : + * <ul> + * <li> <code>'TextDoc'</code> (of type <code>XTextDocument</code>): + * the text document for creating and inserting index mark.</li> + * <ul> <p> + * + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XDocumentIndex + */ +public class _XDocumentIndex extends MultiMethodTest { + + public XDocumentIndex oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the returned service name + * is equal to 'com.sun.star.text.DocumentIndex'. + */ + public void _getServiceName() { + String serv = oObj.getServiceName(); + tRes.tested("getServiceName()", + serv.equals("com.sun.star.text.DocumentIndex")); + } + + /** + * Gets the document from relation and insert a new index mark. + * Then it stores the text content of document index before + * update and after.<p> + * + * Has <b> OK </b> status if index content is changed and + * new index contains index mark inserted. <p> + */ + public void _update() { + boolean bOK = true; + + try { + XTextDocument xTextDoc = (XTextDocument) + tEnv.getObjRelation("TextDoc"); + XText xText = xTextDoc.getText(); + XTextRange xTR = xText.getEnd(); + xTR.setString("IndexMark"); + + XMultiServiceFactory xDocMSF = UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDoc); + + Object idxMark = xDocMSF.createInstance + ("com.sun.star.text.DocumentIndexMark"); + XTextContent xTC = UnoRuntime.queryInterface + (XTextContent.class, idxMark); + xText.insertTextContent(xTR, xTC, true); + } catch (com.sun.star.uno.Exception e) { + log.println("Couldn't insert index mark."); + e.printStackTrace(log); + bOK = false ; + } + + String contentBefore = oObj.getAnchor().getString(); + log.println("Content before: '" + contentBefore + "'"); + + oObj.update(); + + waitForEventIdle(); + + + String contentAfter = oObj.getAnchor().getString(); + log.println("Content after: '" + contentAfter + "'"); + + bOK &= !contentAfter.equals(contentBefore); + bOK &= contentAfter.indexOf("IndexMark") > -1; + + tRes.tested("update()",bOK); + } + + + +} // finish class _XDocumentIndex + + diff --git a/qadevOOo/tests/java/ifc/text/_XDocumentIndexesSupplier.java b/qadevOOo/tests/java/ifc/text/_XDocumentIndexesSupplier.java new file mode 100644 index 0000000000..7d985f822f --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XDocumentIndexesSupplier.java @@ -0,0 +1,54 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import com.sun.star.container.XIndexAccess; +import com.sun.star.text.XDocumentIndexesSupplier; + +import lib.MultiMethodTest; + + +/** + * Testing <code>com.sun.star.text.XDocumentIndexesSupplier</code> + * interface methods : + * <ul> + * <li><code> getDocumentIndexes()()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XDocumentIndexesSupplier + */ +public class _XDocumentIndexesSupplier extends MultiMethodTest { + + public static XDocumentIndexesSupplier oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the collection returned has at least + * one element. + */ + public void _getDocumentIndexes() { + boolean res = false; + + XIndexAccess the_documentIndexes = oObj.getDocumentIndexes(); + res = the_documentIndexes.getCount()>0; + + tRes.tested("getDocumentIndexes()",res); + } + +} // finish class _XDocumentIndexesSupplier diff --git a/qadevOOo/tests/java/ifc/text/_XEndnotesSupplier.java b/qadevOOo/tests/java/ifc/text/_XEndnotesSupplier.java new file mode 100644 index 0000000000..b08948a675 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XEndnotesSupplier.java @@ -0,0 +1,72 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexAccess; +import com.sun.star.text.XEndnotesSupplier; + + +/** + * Testing <code>com.sun.star.text.XEndnotesSupplier</code> + * interface methods : + * <ul> + * <li><code> getEndnotes()</code></li> + * <li><code> getEndnoteSettings()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XEndnotesSupplier + */ +public class _XEndnotesSupplier extends MultiMethodTest { + + public static XEndnotesSupplier oObj = null; // oObj filled by MultiMethodTest + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the collection returned has at least + * one element. + */ + public void _getEndnotes() { + boolean res = false; + + XIndexAccess the_endnotes = oObj.getEndnotes(); + res = the_endnotes.hasElements(); + + tRes.tested("getEndnotes()",res); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getEndnoteSettings() { + boolean res = false; + + XPropertySet the_props = oObj.getEndnoteSettings(); + res = ( the_props != null ); + + tRes.tested("getEndnoteSettings()",res); + } + +} // finish class _XEndnotesSupplier + + diff --git a/qadevOOo/tests/java/ifc/text/_XFootnotesSettingsSupplier.java b/qadevOOo/tests/java/ifc/text/_XFootnotesSettingsSupplier.java new file mode 100644 index 0000000000..2b53b9e27b --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XFootnotesSettingsSupplier.java @@ -0,0 +1,54 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.text.XFootnotesSettingsSupplier; + +/** + * Testing <code>com.sun.star.text.XFootnotesSettingsSupplier</code> + * interface methods : + * <ul> + * <li><code> getFootnoteSettings()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XFootnotesSettingsSupplier + */ +public class _XFootnotesSettingsSupplier extends MultiMethodTest { + public XFootnotesSettingsSupplier oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getFootnotesSettings(){ + boolean result = true; + XPropertySet footnoteSettings = null; + + footnoteSettings = oObj.getFootnotesSettings(); + result = footnoteSettings != null; + + tRes.tested("getFootnotesSettings()", result); + } + +} + diff --git a/qadevOOo/tests/java/ifc/text/_XFootnotesSupplier.java b/qadevOOo/tests/java/ifc/text/_XFootnotesSupplier.java new file mode 100644 index 0000000000..1cd7b65d9d --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XFootnotesSupplier.java @@ -0,0 +1,73 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexAccess; +import com.sun.star.text.XFootnotesSupplier; + +/** + * Testing <code>com.sun.star.text.XFootnotesSupplier</code> + * interface methods : + * <ul> + * <li><code> getFootnotes()</code></li> + * <li><code> getFootnoteSettings()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XFootnotesSupplier + */ +public class _XFootnotesSupplier extends MultiMethodTest { + public XFootnotesSupplier oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getFootnotes(){ + boolean result = true; + XIndexAccess footnotes = null; + + log.println("testing getFootnotes() ... "); + + footnotes = oObj.getFootnotes(); + result = footnotes != null; + tRes.tested("getFootnotes()", result); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getFootnoteSettings(){ + boolean result = true; + XPropertySet footnoteSettings = null; + + log.println("testing getFootnoteSettings() ... "); + + footnoteSettings = oObj.getFootnoteSettings(); + result = footnoteSettings != null; + + tRes.tested("getFootnoteSettings()", result); + } +} + diff --git a/qadevOOo/tests/java/ifc/text/_XLineNumberingProperties.java b/qadevOOo/tests/java/ifc/text/_XLineNumberingProperties.java new file mode 100644 index 0000000000..cf39649b43 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XLineNumberingProperties.java @@ -0,0 +1,52 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.text.XLineNumberingProperties; + +/** + * Testing <code>com.sun.star.text.XLineNumberingProperties</code> + * interface methods : + * <ul> + * <li><code> getLineNumberingProperties()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XLineNumberingProperties + */ +public class _XLineNumberingProperties extends MultiMethodTest { + + public XLineNumberingProperties oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getLineNumberingProperties() { + + XPropertySet getting = oObj.getLineNumberingProperties(); + tRes.tested("getLineNumberingProperties()",getting != null); + } + +} // finish class _XLineNumberingProperties + + diff --git a/qadevOOo/tests/java/ifc/text/_XMailMergeBroadcaster.java b/qadevOOo/tests/java/ifc/text/_XMailMergeBroadcaster.java new file mode 100644 index 0000000000..5ac586b430 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XMailMergeBroadcaster.java @@ -0,0 +1,140 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.NamedValue; +import com.sun.star.task.XJob; +import com.sun.star.text.MailMergeEvent; +import com.sun.star.text.XMailMergeBroadcaster; +import com.sun.star.text.XMailMergeListener; + +/** +* Testing <code>com.sun.star.text.XMailMergeBroadcaster</code> +* interface methods: +* <ul> +* <li><code> addMailMergeEventListener() </code></li> +* <li><code> removeMailMergeEventListener() </code></li> +* </ul><p> +* This test needs the following object relations : +* <ul> +* <li> <code>'Job'</code> (of type <code>XJob</code>): +* used to fire MailMergeEvent</li> +* <li> <code>'executeArgs'</code> (of type <code>NamedValue[]</code>): +* used as parameter for <code>'Job'</code> </li> +* </ul> <p> +* +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.text.XMailMergeBroadcaster +*/ +public class _XMailMergeBroadcaster extends MultiMethodTest { + public static XMailMergeBroadcaster oObj = null; + protected boolean changed = false; + + + /** + * Class we need to test methods + */ + protected class MyMailMergeEventListener implements XMailMergeListener { + public void notifyMailMergeEvent ( MailMergeEvent oEvent ) { + System.out.println("Listener called"); + changed = true; + } + } + + protected XMailMergeListener listener = new MyMailMergeEventListener(); + + /** + * Tries to query the tested component for object relation + * <code>executeArgs</code> [<code>NamedValue</code>] and <code>Job</code> + * [<code>XJob</code>] + * @throw StatusException If relations are not found + */ + @Override + public void before() { + NamedValue[] executeArgs = (NamedValue[]) tEnv.getObjRelation("executeArgs") ; + if (executeArgs == null) + throw new StatusException(Status.failed + ("'executeArgs' relation not found ")) ; + XJob Job = (XJob) tEnv.getObjRelation("Job") ; + if (Job == null) + throw new StatusException(Status.failed + ("'Job' relation not found ")) ; + } + + /** + * Test executes mail merge process<p> + * Has <b> OK </b> status if listener was called + */ + public void _addMailMergeEventListener() { + log.println("Testing addMailMergeEventListener ..."); + + oObj.addMailMergeEventListener( listener ); + + NamedValue[] executeArgs = (NamedValue[]) tEnv.getObjRelation("executeArgs"); + XJob Job = (XJob) tEnv.getObjRelation("Job"); + + try { + Job.execute(executeArgs); + } catch ( com.sun.star.lang.IllegalArgumentException e) { + throw new StatusException(Status.failed + ("'could not fire event: " + e)) ; + } catch ( com.sun.star.uno.Exception e) { + throw new StatusException(Status.failed + ("'could not fire event: " + e)) ; + } + + tRes.tested("addMailMergeEventListener()", changed); + } + + /** + * Test executes mail merge process<p> + * Has <b> OK </b> status if listener was not called + */ + public void _removeMailMergeEventListener() { + log.println("Testing removeMailMergeEventListener ..."); + requiredMethod("addMailMergeEventListener()"); + changed = false; + + oObj.removeMailMergeEventListener( listener ); + + NamedValue[] executeArgs = (NamedValue[]) tEnv.getObjRelation("executeArgs"); + XJob Job = (XJob) tEnv.getObjRelation("Job"); + + try { + Job.execute(executeArgs); + } catch ( com.sun.star.lang.IllegalArgumentException e) { + throw new StatusException(Status.failed + ("'could not fire event: " + e)) ; + } catch ( com.sun.star.uno.Exception e) { + throw new StatusException(Status.failed + ("'could not fire event: " + e)) ; + } + + waitForEventIdle(); + + tRes.tested("removeMailMergeEventListener()", !changed); + } + + +} // finished class _XMailMergeBroadcaster + diff --git a/qadevOOo/tests/java/ifc/text/_XPageCursor.java b/qadevOOo/tests/java/ifc/text/_XPageCursor.java new file mode 100644 index 0000000000..6fdcd8bb3a --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XPageCursor.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 ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.text.ControlCharacter; +import com.sun.star.text.XPageCursor; +import com.sun.star.text.XText; +import com.sun.star.text.XTextCursor; +import com.sun.star.text.XTextDocument; + + +/** + * Testing <code>com.sun.star.text.XPageCursor</code> + * interface methods : + * <ul> + * <li><code> jumpToFirstPage()</code></li> + * <li><code> jumpToLastPage()</code></li> + * <li><code> jumpToPage()</code></li> + * <li><code> getPage()</code></li> + * <li><code> jumpToNextPage()</code></li> + * <li><code> jumpToPreviousPage()</code></li> + * <li><code> jumpToEndOfPage()</code></li> + * <li><code> jumpToStartOfPage()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'TEXTDOC'</code> (of type <code>XTextDocument</code>): + * is used to insert text to document to fill at least two pages. </li> + * <ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XPageCursor + */ +public class _XPageCursor extends MultiMethodTest { + + public XPageCursor oObj = null; // oObj filled by MultiMethodTest + short count = 0; + + /** + * First adds text to the document using relation to fill at least two + * pages. Then obtains the number of current page. <p> + * + * Has <b>OK</b> status if the returned value is positive. + */ + public void _getPage(){ + log.println( "test for getPage()" ); + XTextDocument myText = (XTextDocument)tEnv.getObjRelation( "TEXTDOC" ); + XText aText = myText.getText(); + XTextCursor myCursor = aText.createTextCursor(); + + try{ + for (int i = 0; i < 10; i++){ + for (int j = 0; j < 20; j++){ + aText.insertString(myCursor, "The quick brown fox ",false); + aText.insertString(myCursor, "jumps over the lazy dog ", + false); + } + aText.insertControlCharacter(myCursor, + ControlCharacter.PARAGRAPH_BREAK, false); + } + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println( "Exception :" ); + e.printStackTrace(log); + } + + count = oObj.getPage(); + tRes.tested("getPage()", count > 0 ); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns + * <code>true</code> value. + */ + public void _jumpToEndOfPage(){ + log.println( "test for jumpToEndOfPage()" ); + tRes.tested("jumpToEndOfPage()", oObj.jumpToEndOfPage()); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns + * <code>true</code> value. + */ + public void _jumpToFirstPage(){ + log.println( "test for jumpToFirstPage()" ); + tRes.tested("jumpToFirstPage()", oObj.jumpToFirstPage()); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns + * <code>true</code> value. + */ + public void _jumpToLastPage(){ + log.println( "test for jumpToLastPage()" ); + tRes.tested("jumpToLastPage()", oObj.jumpToLastPage()); + } + + /** + * First jumps to the first page to have at least one + * next page, then call the method. <p> + * Has <b> OK </b> status if the method returns + * <code>true</code> value. + */ + public void _jumpToNextPage(){ + oObj.jumpToFirstPage() ; + log.println( "test for jumpToNextPage()" ); + tRes.tested("jumpToNextPage()", oObj.jumpToNextPage()); + } + + /** + * Tries to jump to the page with number 1. <p> + * Has <b> OK </b> status if the method returns + * <code>true</code> value. + */ + public void _jumpToPage(){ + short n = 1; + log.println( "test for jumpToPage()" ); + tRes.tested("jumpToPage()", oObj.jumpToPage(n)); + } + + /** + * First jumps to the last page to have at least one + * previous page, then call the method. <p> + * Has <b> OK </b> status if the method returns + * <code>true</code> value. + */ + public void _jumpToPreviousPage(){ + log.println( "test for jumpToPreviousPage()" ); + oObj.jumpToLastPage(); + tRes.tested("jumpToPreviousPage()", oObj.jumpToPreviousPage()); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns + * <code>true</code> value. + */ + public void _jumpToStartOfPage(){ + log.println( "test for jumpToStartOfPage()" ); + tRes.tested("jumpToStartOfPage()", oObj.jumpToStartOfPage()); + } +} // finish class _XPageCursor + diff --git a/qadevOOo/tests/java/ifc/text/_XPagePrintable.java b/qadevOOo/tests/java/ifc/text/_XPagePrintable.java new file mode 100644 index 0000000000..5b1f699784 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XPagePrintable.java @@ -0,0 +1,152 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; +import util.utils; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.text.XPagePrintable; + +/** + * Testing <code>com.sun.star.text.XPagePrintable</code> + * interface methods : + * <ul> + * <li><code> getPagePrintSettings()</code></li> + * <li><code> setPagePrintSettings()</code></li> + * <li><code> printPages()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XPagePrintable + */ +public class _XPagePrintable extends MultiMethodTest { + + public static XPagePrintable oObj = null; + public PropertyValue[] PrintSettings = new PropertyValue[0]; + + /** + * Types of print settings properties by order they returned by + * <code>getPagePrintSettings()</code>. + */ + public String[] types = new String[]{"Short","Short","Integer","Integer", + "Integer","Integer","Integer","Integer","Boolean"}; + + /** + * Calls the method and examines the returned array of properties. <p> + * + * Has <b>OK</b> status if all properties' types are correspond + * to their expected values of the <code>types</code> array. + * + * @see #types + */ + public void _getPagePrintSettings() { + boolean res = true; + PrintSettings = oObj.getPagePrintSettings(); + + for (int i=0;i<PrintSettings.length;i++) { + String the_type = PrintSettings[i].Value.getClass().toString(); + if (!the_type.endsWith(types[i])) { + log.println("Name: "+PrintSettings[i].Name); + log.println("Value: "+PrintSettings[i].Value); + log.println("Type"+the_type); + log.println("Expected: java.lang."+types[i]); + res = false; + } + } + + tRes.tested("getPagePrintSettings()",res); + } + + /** + * Changes a property 'IsLandscape' in existing print settings, + * and sets these settings back. <p> + * + * Has <b>OK</b> status if settings gotten again has the changed + * 'IsLandscape' property value. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getPagePrintSettings() </code> : to have existing + * print settings. </li> + * </ul> + */ + public void _setPagePrintSettings() { + requiredMethod("getPagePrintSettings()"); + boolean res = true; + + Boolean landscape = (Boolean) PrintSettings[8].Value; + Boolean newlandscape = Boolean.valueOf(!landscape.booleanValue()); + PrintSettings[8].Value = newlandscape; + oObj.setPagePrintSettings(PrintSettings); + res = oObj.getPagePrintSettings()[8].Value.equals(newlandscape); + + tRes.tested("setPagePrintSettings()",res); + } + + /** + * Creates print options for printing into file situated in the SOffice + * temporary directory. If the file already exists it is deleted. + * Then calls the method. <p> + * + * Has <b>OK</b> status if the file to which printing must be performed + * is exists. + */ + public void _printPages() throws Exception { + boolean res = true; + + try { + XMultiServiceFactory xMSF = tParam.getMSF(); + + String printFile = utils.getOfficeTemp(xMSF) + "XPagePrintable.prt"; + log.println("Printing to : "+ printFile); + + PropertyValue[] PrintOptions = new PropertyValue[1]; + PropertyValue firstProp = new PropertyValue(); + firstProp.Name = "FileName"; + + firstProp.Value = printFile; + firstProp.State = com.sun.star.beans.PropertyState.DEFAULT_VALUE; + PrintOptions[0] = firstProp; + + if (! util.utils.deleteFile(xMSF, printFile)){ + log.println("ERROR: could not remove '" + printFile + "'"); + res = false; + } + + oObj.printPages(PrintOptions); + + waitForEventIdle(); + + if (! util.utils.fileExists(xMSF, printFile)){ + log.println("ERROR: could not find '" + printFile + "'"); + res = false; + } + + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception while checking 'printPages'"); + res = false; + ex.printStackTrace(log); + } + + tRes.tested("printPages()",res); + } + +} // finish class _XPagePrintable + diff --git a/qadevOOo/tests/java/ifc/text/_XParagraphCursor.java b/qadevOOo/tests/java/ifc/text/_XParagraphCursor.java new file mode 100644 index 0000000000..1aa58a3008 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XParagraphCursor.java @@ -0,0 +1,128 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; +import com.sun.star.text.XParagraphCursor; + +/** + * Testing <code>com.sun.star.text.XParagraphCursor</code> + * interface methods : + * <ul> + * <li><code> isStartOfParagraph()</code></li> + * <li><code> isEndOfParagraph()</code></li> + * <li><code> gotoStartOfParagraph()</code></li> + * <li><code> gotoEndOfParagraph()</code></li> + * <li><code> gotoNextParagraph()</code></li> + * <li><code> gotoPreviousParagraph()</code></li> + * </ul> <p> + * + * <b>Prerequisites :</b> the text must have at least + * two paragraphs. <p> + * + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XParagraphCursor + */ +public class _XParagraphCursor extends MultiMethodTest { + + public XParagraphCursor oObj = null; // oObj filled by MultiMethodTest + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns + * <code>true</code> value. + */ + public void _gotoEndOfParagraph(){ + log.println( "test for gotoEndOfParagraph()" ); + if (oObj.isEndOfParagraph()) log.println("This is the end of the paragraph"); + else log.println("This isn't the end of the paragraph"); + log.println("gotoEndOfParagraph()"); + boolean result = oObj.gotoEndOfParagraph(false); + tRes.tested("gotoEndOfParagraph()", result ); + if (oObj.isEndOfParagraph()) log.println("This is the end of the paragraph"); + else log.println("This isn't the end of the paragraph"); + if (!result) log.println("But 'gotoEndOfParagraph()' returns false"); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns + * <code>true</code> value. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code>gotoPreviousParagraph()</code> : to be sure next paragraph + * exists. </li> + * </ul> + */ + public void _gotoNextParagraph(){ + requiredMethod( "gotoPreviousParagraph()" ); + log.println( "test for gotoNextParagraph()" ); + tRes.tested("gotoNextParagraph()", oObj.gotoNextParagraph(false) ); + } + + /** + * First moves the cursor to the next paragraph to be sure + * that previous paragraph exists and then calls the method. <p> + * Has <b> OK </b> status if the method returns + * <code>true</code> value. + */ + public void _gotoPreviousParagraph(){ + //requiredMethod( "gotoNextParagraph()" ); + oObj.gotoNextParagraph(false); + log.println( "test for gotoPreviousParagraph()" ); + tRes.tested("gotoPreviousParagraph()", oObj.gotoPreviousParagraph(false) ); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns + * <code>true</code> value. + */ + public void _gotoStartOfParagraph(){ + log.println( "test for gotoStartOfParagraph()" ); + tRes.tested("gotoStartOfParagraph()", oObj.gotoStartOfParagraph(false) ); + } + + /** + * Moves the cursor to the end of paragraph then check if it is + * at the end. <p> + * Has <b> OK </b> status if the method returns + * <code>true</code> value. + */ + public void _isEndOfParagraph(){ + oObj.gotoEndOfParagraph(false); + log.println( "test for isEndOfParagraph()" ); + tRes.tested("isEndOfParagraph()", oObj.isEndOfParagraph() ); + } + + /** + * Moves the cursor to the start of paragraph then check if it is + * at the start. <p> + * Has <b> OK </b> status if the method returns + * <code>true</code> value. + */ + public void _isStartOfParagraph(){ + oObj.gotoStartOfParagraph(false); + log.println( "test for isStartOfParagraph()" ); + tRes.tested("isStartOfParagraph()", oObj.isStartOfParagraph() ); + } + + } // finish class _XParagraphCursor + diff --git a/qadevOOo/tests/java/ifc/text/_XReferenceMarksSupplier.java b/qadevOOo/tests/java/ifc/text/_XReferenceMarksSupplier.java new file mode 100644 index 0000000000..409155f7de --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XReferenceMarksSupplier.java @@ -0,0 +1,57 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.container.XNameAccess; +import com.sun.star.text.XReferenceMarksSupplier; + +/** + * Testing <code>com.sun.star.text.XReferenceMarksSupplier</code> + * interface methods : + * <ul> + * <li><code> getReferenceMarks()</code></li> + * </ul> <p> + * + * <b>Prerequisites: </b> the reference mark collection + * must contain an element named 'SwXTextDocument' <p> + * + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XReferenceMarksSupplier + */ +public class _XReferenceMarksSupplier extends MultiMethodTest { + + public static XReferenceMarksSupplier oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if there is an element + * named 'SwXTextDocument' in the returned collection. + */ + public void _getReferenceMarks() { + boolean res = false; + XNameAccess the_marks = oObj.getReferenceMarks(); + res = the_marks.hasByName("SwXTextDocument"); + tRes.tested("getReferenceMarks()",res); + } + +} // finish class _XReferenceMarksSupplier + + diff --git a/qadevOOo/tests/java/ifc/text/_XRelativeTextContentInsert.java b/qadevOOo/tests/java/ifc/text/_XRelativeTextContentInsert.java new file mode 100644 index 0000000000..af6995662f --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XRelativeTextContentInsert.java @@ -0,0 +1,126 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; +import util.XInstCreator; + +import com.sun.star.text.XRelativeTextContentInsert; +import com.sun.star.text.XText; +import com.sun.star.text.XTextContent; +import com.sun.star.text.XTextCursor; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** + * Testing <code>com.sun.star.text.XRelativeTextContentInsert</code> + * interface methods : + * <ul> + * <li><code> insertTextContentBefore()</code></li> + * <li><code> insertTextContentAfter()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'PARA'</code> (of type <code>XInstCreator</code>): + * the creator which can create instances of + * <code>com.sun.star.text.Paragraph</code> service. </li> + * <li> <code>'XTEXTINFO'</code> (of type <code>XInstCreator</code>): + * the creator which can create instances of some text content + * service (objects which implement <code>XTextContent</code>). + * </li> + * <ul> <p> + * + * Tested component <b>must implement</b> <code>XText</code> + * interface for proper testing. <p> + * + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XRelativeTextContentInsert + */ +public class _XRelativeTextContentInsert extends MultiMethodTest { + + public XRelativeTextContentInsert oObj = null; + public XTextContent content = null; + + /** + * First an instance of <code>Paragraph</code> service created + * using relation and inserted into text. Then an instance + * of text content is created and inserted after the paragraph. <p> + * + * Has <b>OK</b> status if no exceptions occurred. + */ + public void _insertTextContentAfter() { + + try { + XInstCreator para = (XInstCreator)tEnv.getObjRelation( "PARA" ); + XInterface oInt = para.createInstance(); + XTextContent new_content = (XTextContent) oInt; + XText theText = UnoRuntime.queryInterface(XText.class,oObj); + XTextCursor oCursor = theText.createTextCursor(); + XInstCreator info = (XInstCreator) + tEnv.getObjRelation( "XTEXTINFO" ); + oInt = info.createInstance(); + content = (XTextContent) oInt; + theText.insertTextContent(oCursor, content, false); + oObj.insertTextContentAfter(new_content,content); + tRes.tested("insertTextContentAfter()",true); + } + catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception occurred while checking "+ + "insertTextContentAfter()"); + ex.printStackTrace(log); + tRes.tested("insertTextContentAfter()",false); + } + + + } // end _insertTextContentAfter() + + /** + * An instance of text content is created using relation + * and inserted before the paragraph which was added into + * text in <code>insertTextContentAfter</code> method test. <p> + * + * Has <b>OK</b> status if no exceptions occurred. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> insertTextContentAfter() </code> : here the + * <code>Paragraph</code> instance is inserted. </li> + * </ul> + */ + public void _insertTextContentBefore() { + requiredMethod("insertTextContentAfter()"); + try { + XInstCreator para = (XInstCreator)tEnv.getObjRelation( "PARA" ); + XInterface oInt = para.createInstance(); + XTextContent new_content = (XTextContent) oInt; + oObj.insertTextContentBefore(new_content,content); + tRes.tested("insertTextContentBefore()",true); + } + catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception occurred while checking "+ + "insertTextContentBefore()"); + ex.printStackTrace(log); + tRes.tested("insertTextContentBefore()",false); + } + + + } // end _insertTextContentBefore() + +} + diff --git a/qadevOOo/tests/java/ifc/text/_XSentenceCursor.java b/qadevOOo/tests/java/ifc/text/_XSentenceCursor.java new file mode 100644 index 0000000000..7729f42a61 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XSentenceCursor.java @@ -0,0 +1,118 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.text.XSentenceCursor; + +/** + * Testing <code>com.sun.star.text.XSentenceCursor</code> + * interface methods : + * <ul> + * <li><code> isStartOfSentence()</code></li> + * <li><code> isEndOfSentence()</code></li> + * <li><code> gotoNextSentence()</code></li> + * <li><code> gotoPreviousSentence()</code></li> + * <li><code> gotoStartOfSentence()</code></li> + * <li><code> gotoEndOfSentence()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XSentenceCursor + */ +public class _XSentenceCursor extends MultiMethodTest { + + public XSentenceCursor oObj = null; // oObj filled by MultiMethodTest + + /** + * First goes to next sentence (to be sure that previous exists), + * then calls the method. <p> + * + * Has <b>OK</b> status if the method returns <code>true</code>. + */ + public void _gotoPreviousSentence(){ + oObj.gotoNextSentence(false); + oObj.gotoNextSentence(false); + tRes.tested("gotoPreviousSentence()", oObj.gotoPreviousSentence(false) ); + } + + /** + * First goes to previous sentence (to be sure that next exists), + * then calls the method. <p> + * + * Has <b>OK</b> status if the method returns <code>true</code>. + */ + public void _gotoNextSentence(){ + oObj.gotoPreviousSentence(false) ; + oObj.gotoPreviousSentence(false) ; + tRes.tested("gotoNextSentence()", oObj.gotoNextSentence(false) ); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns <code>true</code>. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> gotoPreviousSentence() </code> : to be sure the + * cursor is in range of some sentence. </li> + * </ul> + */ + public void _gotoEndOfSentence(){ + requiredMethod( "gotoPreviousSentence()" ); + tRes.tested("gotoEndOfSentence()", oObj.gotoEndOfSentence(false) ); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns <code>true</code>. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> gotoPreviousSentence() </code> : to be sure the + * cursor is in range of some sentence. </li> + * </ul> + */ + public void _gotoStartOfSentence(){ + requiredMethod( "gotoPreviousSentence()" ); + tRes.tested("gotoStartOfSentence()", oObj.gotoStartOfSentence(false) ); + } + + /** + * First moves the cursor to the start of sentence and then calls + * the method. <p> + * + * Has <b>OK</b> status if the method returns <code>true</code>. + */ + public void _isStartOfSentence(){ + oObj.gotoStartOfSentence(false) ; + tRes.tested("isStartOfSentence()", oObj.isStartOfSentence() ); + } + + /** + * First moves the cursor to the end of sentence and then calls + * the method. <p> + * + * Has <b>OK</b> status if the method returns <code>true</code>. + */ + public void _isEndOfSentence(){ + oObj.gotoEndOfSentence(false) ; + tRes.tested("isEndOfSentence()", oObj.isEndOfSentence() ); + } + + } // finish class _XSentenceCursor + diff --git a/qadevOOo/tests/java/ifc/text/_XSimpleText.java b/qadevOOo/tests/java/ifc/text/_XSimpleText.java new file mode 100644 index 0000000000..bd6d6e294b --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XSimpleText.java @@ -0,0 +1,126 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.text.ControlCharacter; +import com.sun.star.text.XSimpleText; +import com.sun.star.text.XTextCursor; + +/** +* Testing <code>com.sun.star.text.XSimpleText</code> +* interface methods : +* <ul> +* <li><code> createTextCursor()</code></li> +* <li><code> createTextCursorByRange()</code></li> +* <li><code> insertString()</code></li> +* <li><code> insertControlCharacter()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.text.XSimpleText +*/ +public class _XSimpleText extends MultiMethodTest { + + XTextCursor oCursor = null; + public XSimpleText oObj = null; + + /** + * Creates text cursor. <p> + * Has <b> OK </b> status if not null value returned. <p> + */ + public void _createTextCursor() { + + log.println( "Testing createTextCursor()" ); + oCursor = oObj.createTextCursor(); + tRes.tested( "createTextCursor()", oCursor != null ); + } + + /** + * Inserts a string at the cursor position.<p> + * Has <b> OK </b> status if the whole result string has a string + * inserted as its substring. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> createTextCursor() </code> : to have a cursor + * where text should be inserted. </li> + * </ul> + */ + public void _insertString() { + requiredMethod("createTextCursor()"); + log.println( "Testing insertString" ); + String sStr = getInterfaceName() ; + oObj.insertString( oCursor, sStr, false ); + String gStr = oObj.getText().getString() ; + + tRes.tested( "insertString()", gStr != null && + gStr.indexOf(sStr) >= 0) ; + } + + /** + * Inserts paragraph break character into text and then checks + * if this character is present in the result string. <p> + * Has <b> OK </b> status if the result string has + * paragraph break character. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> createTextCursor </code> : to have a cursor object. </li> + * </ul> + */ + public void _insertControlCharacter() { + boolean bOK = true; + + requiredMethod("createTextCursor()"); + log.println( "Testing insertControlCharacter()" ); + try { + oObj.insertControlCharacter( oCursor, + ControlCharacter.PARAGRAPH_BREAK, false); + oObj.insertControlCharacter( oCursor, + ControlCharacter.LINE_BREAK, false); + oObj.insertString(oObj.createTextCursor(),"newLine",false); + } + catch(com.sun.star.lang.IllegalArgumentException e ) { + // Some exception.FAILED + log.println(e.toString()); + bOK = false; + } + String gStr = oObj.getString() ; + + tRes.tested( "insertControlCharacter()", bOK && gStr != null && + gStr.indexOf("\n") > -1); + } + + /** + * Creates another text cursor using existing cursor's range. <p> + * Has <b> OK </b> status if not null value returned. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> createTextCursor </code> : to have a cursor object. </li> + * </ul> + */ + public void _createTextCursorByRange() { + + requiredMethod("createTextCursor()"); + oCursor.gotoStart(false); + log.println( "Testing createTextCursorByRange()" ); + XTextCursor oTCursor = oObj.createTextCursorByRange(oCursor); + tRes.tested("createTextCursorByRange()", oTCursor != null) ; + } +} // finish class _XSimpleText + diff --git a/qadevOOo/tests/java/ifc/text/_XText.java b/qadevOOo/tests/java/ifc/text/_XText.java new file mode 100644 index 0000000000..02e2f57428 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XText.java @@ -0,0 +1,157 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; +import util.XInstCreator; + +import com.sun.star.container.XIndexAccess; +import com.sun.star.text.XText; +import com.sun.star.text.XTextContent; +import com.sun.star.text.XTextCursor; +import com.sun.star.uno.XInterface; +import lib.StatusException; + +/** + * Testing <code>com.sun.star.text.XText</code> + * interface methods : + * <ul> + * <li><code> insertTextContent()</code></li> + * <li><code> removeTextContent()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'XTEXTINFO'</code> (of type <code>lib.XInstCreator</code>): + * creator which can create instances of <code>XTextContent</code> + * implementations. </li> + * <ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XText + */ +public class _XText extends MultiMethodTest { + + public static XText oObj = null; // oObj filled by MultiMethodTest + XTextCursor oCursor = null; // textcursor + XInstCreator info = null; // instance creator + XInterface oInt = null; // instance to insert and remove + + /** + * First an instance of text content is created using relation + * and inserted into text. Then the number of contents is checked + * using the relation. Second a <code>null</code> content is tried + * to insert. <p> + * + * Has <b> OK </b> status if in the first case after inserting number + * of content objects is greater than zero and in the second + * case <code>IllegalArgumentException</code> is thrown. <p> + */ + public void _insertTextContent() { + boolean result = false; + info = (XInstCreator)tEnv.getObjRelation( "XTEXTINFO" ); + oInt = info.createInstance(); + + // write to log what we try next + log.println( "test for createTextCursor()" ); + oCursor = oObj.createTextCursor(); + + // write to log what we try next + log.println( "test for insertTextContent()" ); + try { + oObj.insertTextContent(oCursor, (XTextContent)oInt, false); + } + catch( com.sun.star.lang.IllegalArgumentException iaE ){ + throw new StatusException("Couldn't insert textcontent",iaE); + } + + // get indexaccess to the tablecollection + XIndexAccess xIA = info.getCollection(); + + // this comparison works just because it has to be at least one + // table at this point regardless which thread inserted it + // there is although the possibility that the first threads call + // failed, the second not and comparison happens after second threads + // otherwise if something fails it should have thrown an exception + //tRes.tested("insertTextContent()", xIA.getCount() > 0 ); + + if (xIA != null ) { + result = (xIA.getCount()>0); + } else { + result = true; + } + + if (!result) log.println("The TextContent wasn't inserted"); + + + // try to insert an invalid TextContent + log.println( "test for insertTextContent" ); + try { + oObj.insertTextContent(oCursor, null, false); + log.println("The expected Exception doesn't occurred"); + result &= false; + } + catch( com.sun.star.lang.IllegalArgumentException iaE ){ + // Some exception.FAILED + log.println("Expected Exception occurred"); + String msg = iaE.getMessage(); + if (msg.equals("")) { + log.println("But there is not detailed message"); + } else { + log.println("Detailed message: "+msg); + } + + result &= true; + } + + tRes.tested("insertTextContent()", result ); + } + + + /** + * Removes the text content added before. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> insertTextContent() </code> : inserts the content + * to be removed in this test. </li> + * </ul> + */ + public void _removeTextContent() { + + // leads to a method which should be called previously + requiredMethod( "insertTextContent()" ); + + // write to log what we try next + log.println( "test for removeTextContent" ); + try { + oObj.removeTextContent( (XTextContent)oInt ); + } + catch( com.sun.star.container.NoSuchElementException nseE ){ + // Some exception.FAILED + log.println(nseE.toString()); + return; + } + + // no exception occurred so it works + tRes.tested( "removeTextContent()", true ); + + } +} // finish class _XText + + diff --git a/qadevOOo/tests/java/ifc/text/_XTextColumns.java b/qadevOOo/tests/java/ifc/text/_XTextColumns.java new file mode 100644 index 0000000000..eaf1036745 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextColumns.java @@ -0,0 +1,105 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.text.TextColumn; +import com.sun.star.text.XTextColumns; + +/** + * Testing <code>com.sun.star.text.XTextColumns</code> + * interface methods : + * <ul> + * <li><code> getReferenceValue()</code></li> + * <li><code> getColumnCount()</code></li> + * <li><code> setColumnCount()</code></li> + * <li><code> getColumns()</code></li> + * <li><code> setColumns()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XTextColumns + */ +public class _XTextColumns extends MultiMethodTest { + + public XTextColumns oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns + * positive value. + */ + public void _getColumnCount(){ + + short howmuch = oObj.getColumnCount(); + tRes.tested("getColumnCount()",howmuch >=0); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getColumns(){ + TextColumn[] cols = oObj.getColumns(); + tRes.tested("getColumns()",cols != null); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns + * positive value. + */ + public void _getReferenceValue(){ + + int ref = oObj.getReferenceValue(); + tRes.tested("getReferenceValue()",ref >0); + } + + /** + * Sets the column count property to some value + * then checks it by <code>getColumnCount</code> method. <p> + * + * Has <b>OK</b> status if set and get values are equal. + */ + public void _setColumnCount(){ + + oObj.setColumnCount((short) 3); + short howmuch = oObj.getColumnCount(); + tRes.tested("setColumnCount()",howmuch == 3); + } + + /** + * Sets columns to some array + * then checks it by <code>getColumns</code> method. <p> + * + * Has <b>OK</b> status if set and get arrays are equal. + */ + public void _setColumns(){ + + TextColumn newCol = new TextColumn(5,1,1); + TextColumn[] cols = {newCol}; + oObj.setColumns(cols); + TextColumn[] gCols = oObj.getColumns(); + tRes.tested("setColumns()",util.ValueComparer.equalValue(cols, gCols)); + } + +} // finish class _XTextColumns + + diff --git a/qadevOOo/tests/java/ifc/text/_XTextContent.java b/qadevOOo/tests/java/ifc/text/_XTextContent.java new file mode 100644 index 0000000000..bcb65b8063 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextContent.java @@ -0,0 +1,108 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.text.XTextContent; +import com.sun.star.text.XTextRange; + +/** + * Testing <code>com.sun.star.text.XTextContent</code> + * interface methods : + * <ul> + * <li><code> attach()</code></li> + * <li><code> getAnchor()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'CONTENT'</code> <b>optional</b> + * (of type <code>XTextContent</code>): + * if this relation exists than it is used as the + * tested object. </li> + * <li> <code>'TEXT'</code> <b>optional</b> + * (of type <code>XText</code>): + * the relation must be specified if the 'CONTENT' + * relation exists. From this relation an anchor + * for <code>attach()</code> method is obtained.</li> + * <ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XTextContent + */ +public class _XTextContent extends MultiMethodTest { + public XTextContent oObj = null; + public XTextRange oAnchor = null; + + /** + * Tries to get the anchor of the text content + * an XTextRange is returned. <p> + * The test is OK if a not null text range is returned + */ + public void _getAnchor() { + log.println("getAnchor()"); + oAnchor = oObj.getAnchor(); + tRes.tested("getAnchor()", oAnchor != null ) ; + + } // end getAnchor() + + /** + * Tries to attach the text content to the test range + * gotten with getAnchor(). If relations are found + * then they are used for testing. <p> + * + * The test is OK if the method works without error. + * @see #_getAnchor() + */ + public void _attach() { + requiredMethod("getAnchor()"); + try { + XTextContent aContent = (XTextContent) tEnv.getObjRelation("CONTENT"); + XTextRange aRange = (XTextRange) tEnv.getObjRelation("RANGE"); + + if ( aContent !=null) { + aContent.attach(aRange); + } else { + oObj.attach(aRange); + } + tRes.tested("attach()", true ) ; + } + catch (com.sun.star.lang.IllegalArgumentException ex) { + String noAttach = (String) tEnv.getObjRelation("NoAttach"); + if (noAttach != null) { + log.println("Exception expected for "+noAttach); + log.println("This Component doesn't support attach"); + tRes.tested("attach()",true); + } else { + ex.printStackTrace(log); + tRes.tested("attach()",false); + } + } catch (com.sun.star.uno.RuntimeException re) { + String noAttach = (String) tEnv.getObjRelation("NoAttach"); + if (noAttach != null) { + log.println("Exception expected for "+noAttach); + log.println("This Component doesn't support attach"); + tRes.tested("attach()",true); + } else { + re.printStackTrace(log); + tRes.tested("attach()",false); + } + } + } +} + diff --git a/qadevOOo/tests/java/ifc/text/_XTextCursor.java b/qadevOOo/tests/java/ifc/text/_XTextCursor.java new file mode 100644 index 0000000000..87369a7ec4 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextCursor.java @@ -0,0 +1,235 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.text.XTextCursor; + + +/** + * Testing <code>com.sun.star.text.XTextCursor</code> + * interface methods : + * <ul> + * <li><code> collapseToStart()</code></li> + * <li><code> collapseToEnd()</code></li> + * <li><code> isCollapsed()</code></li> + * <li><code> goLeft()</code></li> + * <li><code> goRight()</code></li> + * <li><code> gotoStart()</code></li> + * <li><code> gotoEnd()</code></li> + * <li><code> gotoRange()</code></li> + * </ul> <p> + * + * During this test the component text is changed, + * that's why it must be stored before methods' tests, + * and restored after. <p> + * + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XTextCursor + */ +public class _XTextCursor extends MultiMethodTest { + + public XTextCursor oObj = null; // oObj filled by MultiMethodTest + String oldText = null ; + + /** + * Stores component's text. + */ + @Override + public void before() { + oObj.gotoStart(false); + oObj.gotoEnd(true); + oldText = oObj.getString() ; + } + + /** + * First some text is set (for component to has at least some + * text), cursor is expanded to the whole text (to be not collapsed), + * the <code>collapseToEnd</code> is called. Then current cursor + * text is examined. <p> + * + * Has <b>OK</b> status if the current cursor text is an + * empty string. + */ + public void _collapseToEnd(){ + boolean bCol = false; + + oObj.setString("XTextCursor"); + oObj.gotoStart(false); + oObj.gotoEnd(true); + oObj.collapseToEnd(); + bCol = oObj.getString().equals(""); + tRes.tested("collapseToEnd()", bCol ); + } + + /** + * First some text is set (for component to has at least some + * text), cursor is expanded to the whole text (to be not collapsed), + * the <code>collapseToStart</code> is called. Then current cursor + * text is examined. <p> + * + * Has <b>OK</b> status if the current cursor text is an + * empty string. + */ + public void _collapseToStart(){ + boolean bCol = false; + oObj.setString("XTextCursor"); + oObj.gotoStart(false); + oObj.gotoEnd(true); + + oObj.collapseToStart(); + bCol = oObj.getString().equals(""); + tRes.tested("collapseToStart()", bCol ); + } + + /** + * First the cursor is moved to the end of text (to have a space + * for left cursor moving, and moves the cursor left by a number + * of characters. <p> + * + * Has <b>OK</b> status if the method returns <code>true</code>, + * and the current cursor string has the same length as number + * of characters the cursor was moved by. + */ + public void _goLeft(){ + boolean bLeft = false; + short n = 5; + + oObj.gotoEnd(false); + bLeft = oObj.goLeft(n, true); + String gStr = oObj.getString() ; + log.println("'" + gStr + "'") ; + bLeft &= gStr.length() == n ; + + tRes.tested("goLeft()", bLeft ); + } + + /** + * First the cursor is moved to the start of text (to have a space + * for right cursor moving, and moves the cursor right by a number + * of characters. <p> + * + * Has <b>OK</b> status if the method returns <code>true</code>, + * and the current cursor string has the same length as number + * of characters the cursor was moved by. + */ + public void _goRight(){ + boolean bRight = false; + short n = 5; + + oObj.gotoStart(false); + bRight = oObj.goRight(n, true); + + String gStr = oObj.getString() ; + log.println("'" + gStr + "'") ; + bRight &= gStr.length() == n ; + + tRes.tested("goRight()", bRight ); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method <code>goRight()</code> + * returns <code>false</code> (cursor can't move to the right). + */ + public void _gotoEnd(){ + boolean bEnd = false; + short n = 1; + + oObj.gotoEnd(false); + bEnd = !oObj.goRight(n, false) ; + + tRes.tested("gotoEnd()", bEnd ); + } + + /** + * First the whole text is set to a string, and cursor + * is moved to the range situated at the start of the + * text. <p> + * + * Has <b>OK</b> status if some characters to the right + * of the current cursor position are the beginning of + * the text. + */ + public void _gotoRange(){ + boolean bRange = false; + + oObj.gotoStart(false); + oObj.gotoEnd(true); + oObj.setString("XTextCursor,XTextCursor"); + oObj.gotoRange(oObj.getStart(),false); + oObj.goRight((short) 5, true); + bRange = oObj.getString().equals("XText"); + + if (!bRange) log.println("getString() returned '" + + oObj.getString() + "'") ; + + tRes.tested("gotoRange()", bRange ); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method <code>goLeft()</code> + * returns <code>false</code> (cursor can't move to the left). + */ + public void _gotoStart(){ + boolean bStart = false; + short n = 1; + + oObj.gotoStart(false); + bStart = !oObj.goLeft(n, false) ; + + tRes.tested("gotoStart()", bStart ); + } + + /** + * First the cursor is moved to start without expanding + * (must be collapsed), and then it's expanded to the + * whole text (must not be collapsed). <p> + * + * Has <b>OK</b> status if in the first case method + * <code>isCollapsed</code> returns <code>true</code>, + * and in the second <code>false</code> + */ + public void _isCollapsed(){ + boolean bCol = false; + + oObj.gotoStart(false); + bCol = oObj.isCollapsed(); + + oObj.gotoEnd(true); + bCol &= !oObj.isCollapsed() ; + + tRes.tested("isCollapsed()", bCol ); + } + + /** + * Restores the text of the component to the + * state it was before this interface test. + */ + @Override + public void after() { + oObj.gotoStart(false); + oObj.gotoEnd(true); + oObj.setString(oldText) ; + } + +} // finish class _XTextCursor + diff --git a/qadevOOo/tests/java/ifc/text/_XTextDocument.java b/qadevOOo/tests/java/ifc/text/_XTextDocument.java new file mode 100644 index 0000000000..10eb5360a8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextDocument.java @@ -0,0 +1,62 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.text.XText; +import com.sun.star.text.XTextDocument; + +/** + * Testing <code>com.sun.star.text.XTextDocument</code> + * interface methods : + * <ul> + * <li><code> getText()</code></li> + * <li><code> reformat()</code></li> + * </ul> <p> + * Test is multithread compliant. <p> + * @see com.sun.star.text.XTextDocument + */ +public class _XTextDocument extends MultiMethodTest { + + public XTextDocument oObj = null; + public XText myText = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getText(){ + myText = oObj.getText(); + tRes.tested("getText()", myText != null ); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _reformat(){ + oObj.reformat(); + tRes.tested("reformat()", true ); + } + +} // finish class _XTextDocument + diff --git a/qadevOOo/tests/java/ifc/text/_XTextEmbeddedObjectsSupplier.java b/qadevOOo/tests/java/ifc/text/_XTextEmbeddedObjectsSupplier.java new file mode 100644 index 0000000000..15e5a1482c --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextEmbeddedObjectsSupplier.java @@ -0,0 +1,52 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.container.XNameAccess; +import com.sun.star.text.XTextEmbeddedObjectsSupplier; + +/** + * Testing <code>com.sun.star.text.XTextEmbeddedObjectsSupplier</code> + * interface methods : + * <ul> + * <li><code> getEmbeddedObjects()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XTextEmbeddedObjectsSupplier + */ +public class _XTextEmbeddedObjectsSupplier extends MultiMethodTest { + + public XTextEmbeddedObjectsSupplier oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getEmbeddedObjects(){ + boolean bResult = false; + XNameAccess oNA = oObj.getEmbeddedObjects(); + bResult = oNA != null ; + tRes.tested("getEmbeddedObjects()", bResult ); + } + + } // finish class _XTextEmbeddedObjectsSupplier + diff --git a/qadevOOo/tests/java/ifc/text/_XTextField.java b/qadevOOo/tests/java/ifc/text/_XTextField.java new file mode 100644 index 0000000000..826718e349 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextField.java @@ -0,0 +1,57 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.text.XTextField; + +/** + * Testing <code>com.sun.star.text.XTextField</code> + * interface methods : + * <ul> + * <li><code> getPresentation()</code></li> + * </ul> <p> + * Test is multithread compliant. <p> + * @see com.sun.star.text.XTextField + */ +public class _XTextField extends MultiMethodTest{ + public XTextField oObj = null; + + /** + * Calls the method with <code>true</code> and <code>false</code> + * parameter. <p> + * Has <b>OK</b> status if in both cases not <code>null</code> + * value returned. + */ + public void _getPresentation() { + + boolean result = true; + + // begin test here + log.println("getting presentetion with bShowCommand flag..."); + result &= oObj.getPresentation(true) != null; + log.println("getting presentetion without bShowCommand flag..."); + result &= oObj.getPresentation(false) != null; + + tRes.tested( "getPresentation()", result ); + + } // end getPresentation() +} + diff --git a/qadevOOo/tests/java/ifc/text/_XTextFieldsSupplier.java b/qadevOOo/tests/java/ifc/text/_XTextFieldsSupplier.java new file mode 100644 index 0000000000..e26fefdd62 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextFieldsSupplier.java @@ -0,0 +1,178 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XEnumeration; +import com.sun.star.container.XEnumerationAccess; +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XNameAccess; +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.text.XDependentTextField; +import com.sun.star.text.XText; +import com.sun.star.text.XTextContent; +import com.sun.star.text.XTextCursor; +import com.sun.star.text.XTextFieldsSupplier; +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.MultiMethodTest; +import lib.StatusException; + +/** + * + */ +public class _XTextFieldsSupplier extends MultiMethodTest { + + public XTextFieldsSupplier oObj = null; // oObj filled by MultiMethodTest + private boolean mDispose = false; + private boolean mbCreateFieldMaster = true; + + /** + * Insert some text fields into a cell on the sheet, so this interface test + * makes sense. + */ + @Override + protected void before() { + Object o = tEnv.getObjRelation("XTextFieldsSupplier.MAKEENTRY"); + if (o != null && ((Boolean)o).booleanValue()) { + mDispose = true; + mbCreateFieldMaster = false; + XCell xCell = (XCell)tEnv.getObjRelation("MAKEENTRYINCELL"); + + XSpreadsheetDocument xSheetDoc = (XSpreadsheetDocument)tEnv.getObjRelation("SPREADSHEET"); + + XText oText = null; + XTextContent oContent = null; + XInterface aField = null; + + try { + // we want to create an instance of ScCellFieldObj. + // to do this we must get an MultiServiceFactory. + + XMultiServiceFactory _oMSF = UnoRuntime.queryInterface(XMultiServiceFactory.class, xSheetDoc); + + aField = (XInterface) + _oMSF.createInstance("com.sun.star.text.TextField.URL"); + oContent = UnoRuntime.queryInterface(XTextContent.class, aField); + + XSpreadsheets oSheets = xSheetDoc.getSheets() ; + XIndexAccess oIndexSheets = UnoRuntime.queryInterface(XIndexAccess.class, oSheets); + AnyConverter.toObject( + new Type(XSpreadsheet.class),oIndexSheets.getByIndex(0)); + + String[] services = _oMSF.getAvailableServiceNames(); + for (int i=0; i<services.length; i++) { + if (services[i].startsWith("com.sun.star.text.FieldMaster")) { + mbCreateFieldMaster = true; + log.println("service " + i + ": " + services[i]); + } + } + + if (mbCreateFieldMaster) { + Object FieldMaster = _oMSF.createInstance("com.sun.star.text.FieldMaster.User"); + XPropertySet PFieldMaster = UnoRuntime.queryInterface + (XPropertySet.class,FieldMaster); + + XDependentTextField xTF = UnoRuntime.queryInterface(XDependentTextField.class,aField); + + PFieldMaster.setPropertyValue("Content","Some content"); + + xTF.attachTextFieldMaster(PFieldMaster); + } + + oText = UnoRuntime.queryInterface(XText.class, xCell); + XTextCursor the_Cursor = oText.createTextCursor(); + + oText.insertTextContent( + the_Cursor, oContent, true); + + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred while creating test Object."); + e.printStackTrace(log); + throw new StatusException("Couldn't insert textField.URL", e); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception occurred while creating test Object."); + e.printStackTrace(log); + throw new StatusException("Couldn't insert textField.URL", e); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception occurred while creating test Object."); + e.printStackTrace(log); + throw new StatusException("Couldn't insert textField.URL", e); + } catch (com.sun.star.uno.Exception e) { + log.println("Exception occurred while creating test Object."); + e.printStackTrace(log); + throw new StatusException("Couldn't insert textField.URL", e); + } + + } + } + + public void _getTextFields() { + XEnumerationAccess xEnumAccess = oObj.getTextFields(); + XEnumeration xEnum = xEnumAccess.createEnumeration(); + while(xEnum != null && xEnum.hasMoreElements()) { + try { + xEnum.nextElement(); + } + catch(com.sun.star.container.NoSuchElementException e) { + setMethodFalse("getTextFields()", e); + } + catch(com.sun.star.lang.WrappedTargetException e) { + setMethodFalse("getTextFields()", e); + } + } + tRes.tested("getTextFields()", xEnum != null); + } + + public void _getTextFieldMasters() { + if (mbCreateFieldMaster) { + XNameAccess xName = oObj.getTextFieldMasters(); + util.dbg.printInterfaces(xName); + tRes.tested("getTextFieldMasters()", xName != null); + } + else { + log.println("Could not test 'getTextFieldMasters' because no field masters can be created on this object."); + tRes.tested("getTextFieldMasters()", true); + } + } + + /** + * Just for convenience: log the exception and set the method false. + * @param method The name of the method to set to false. + * @param e The Exception that occurred. + */ + private void setMethodFalse(String method, Exception e) { + log.println("Exception while executing '" + method + "'"); + e.printStackTrace(log); + tRes.tested(method, false); + } + + @Override + protected void after() { + if (mDispose) + disposeEnvironment(); + } + +} diff --git a/qadevOOo/tests/java/ifc/text/_XTextFrame.java b/qadevOOo/tests/java/ifc/text/_XTextFrame.java new file mode 100644 index 0000000000..50a782f130 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextFrame.java @@ -0,0 +1,59 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.text.XText; +import com.sun.star.text.XTextFrame; + + +/** + * Testing <code>com.sun.star.text.XTextFrame</code> + * interface methods : + * <ul> + * <li><code> getText()</code></li> + * </ul> <p> + * + * The frame <b>must contain</b> the text 'The FrameText' + * for proper interface testing. <p> + * + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XTextFrame + */ +public class _XTextFrame extends MultiMethodTest { + + public XTextFrame oObj = null; + + /** + * Gets the text of the frame. <p> + * + * Has <b>OK</b> status if the text is equal to 'The FrameText'. + */ + public void _getText() { + + log.println("Testing getText ..."); + XText oFrameText = oObj.getText(); + String Content = oFrameText.getString(); + tRes.tested( "getText()",Content.equals("The FrameText") ); + } + +} // finish class _XTextFrame + + diff --git a/qadevOOo/tests/java/ifc/text/_XTextFramesSupplier.java b/qadevOOo/tests/java/ifc/text/_XTextFramesSupplier.java new file mode 100644 index 0000000000..63fcfaa7df --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextFramesSupplier.java @@ -0,0 +1,55 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import com.sun.star.container.XNameAccess; +import com.sun.star.text.XTextFramesSupplier; +import lib.MultiMethodTest; + + +/** + * Testing <code>com.sun.star.text.XTextFramesSupplier</code> + * interface methods : + * <ul> + * <li><code> getTextFrames()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XTextFramesSupplier + */ +public class _XTextFramesSupplier extends MultiMethodTest { + + public static XTextFramesSupplier oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the collection returned has at least + * one element. + */ + public void _getTextFrames() { + boolean res = false; + + XNameAccess the_frames = oObj.getTextFrames(); + log.println("Found: "); + util.dbg.printArray(the_frames.getElementNames()); + res = the_frames.getElementNames().length>0; + + tRes.tested("getTextFrames()",res); + } + +} // finish class _XTextFramesSupplier diff --git a/qadevOOo/tests/java/ifc/text/_XTextGraphicObjectsSupplier.java b/qadevOOo/tests/java/ifc/text/_XTextGraphicObjectsSupplier.java new file mode 100644 index 0000000000..730f4b5eb5 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextGraphicObjectsSupplier.java @@ -0,0 +1,58 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.container.XNameAccess; +import com.sun.star.text.XTextGraphicObjectsSupplier; + +/** + * Testing <code>com.sun.star.text.XTextGraphicObjectsSupplier</code> + * interface methods : + * <ul> + * <li><code> getGraphicObjects()</code></li> + * </ul> <p> + * + * The component <b>must have</b> the graphic object with + * name 'SwXTextDocument'. <p> + * + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XTextGraphicObjectsSupplier + */ +public class _XTextGraphicObjectsSupplier extends MultiMethodTest { + + public static XTextGraphicObjectsSupplier oObj = null; + + /** + * Gets graphic objects collection from the component, and checks + * if the object with name 'SwXTextDocument' exists. <p> + * Has <b>OK</b> status if the object exists. + */ + public void _getGraphicObjects() { + boolean res = false; + + XNameAccess the_graphics = oObj.getGraphicObjects(); + res = the_graphics.hasByName("SwXTextDocument"); + + tRes.tested("getGraphicObjects()",res); + } + +} // finish class _XTextGraphicObjectsSupplier + diff --git a/qadevOOo/tests/java/ifc/text/_XTextRange.java b/qadevOOo/tests/java/ifc/text/_XTextRange.java new file mode 100644 index 0000000000..033f870007 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextRange.java @@ -0,0 +1,170 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.text.XText; +import com.sun.star.text.XTextRange; + + +/** +* Testing <code>com.sun.star.text.XTextRange</code> +* interface methods : +* <ul> +* <li><code> getText()</code></li> +* <li><code> getStart()</code></li> +* <li><code> getEnd()</code></li> +* <li><code> getString()</code></li> +* <li><code> setString()</code></li> +* </ul> <p> +* First the content is set to 'Middle' string value, then +* start range is retrieved and its content is set to 'Start' +* and end range is set to 'End'. Finally the whole TextRange +* is checked and it must be 'StartMiddleEnd'. <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.text.XTextRange +*/ +public class _XTextRange extends MultiMethodTest { + + public XTextRange oObj = null; // oObj is filled by setField() + // in MultiMethodTest + XTextRange oStartRange = null; // startrange of textrang + XTextRange oEndRange = null; // endrange of textrang + + /** + * Retrieves the start range and sets its context to + * 'Start' string. <p> + * Has <b>OK</b> status if the whole range string starts + * with 'Start' substring. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setString </code> </li> + * </ul> + */ + public void _getStart() { + + XText the_text = (XText) tEnv.getObjRelation("XTEXT"); + + if (the_text != null) { + the_text.setString(""); + } + + String exp=""; + + oObj.setString("MiddleEnd"); + + oStartRange = oObj.getStart(); + oStartRange.setString("Start"); + + if (the_text !=null) { + exp = the_text.getString(); + } else exp = oObj.getText().getString(); + + log.println("Start: "+exp); + + tRes.tested( "getStart()", exp.startsWith("Start")); + + oStartRange.setString(""); + + } + + /** + * Retrieves the end range and sets its context to + * 'End' string. <p> + * Has <b>OK</b> status if the whole range string ends + * with 'End' substring. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setString </code> </li> + * </ul> + */ + public void _getEnd() { + XText the_text = (XText) tEnv.getObjRelation("XTEXT"); + + if (the_text != null) { + the_text.setString(""); + } + + String exp=""; + oObj.setString("StartMiddle"); + + oEndRange = oObj.getEnd(); + oEndRange.setString("End"); + + if (the_text !=null) { + exp = the_text.getString(); + } else exp = oObj.getText().getString(); + + log.println("End: "+exp); + + tRes.tested( "getEnd()", exp.endsWith("End")); + + oEndRange.setString(""); + } + + /** + * Gets the text of the range and retrieves its String content. <p> + * Has <b>OK</b> status if the string returned equals to + * 'StartMiddleEnd' value. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setString </code> to get finally the string expected.</li> + * <li> <code> getStart </code> to get finally the string expected.</li> + * <li> <code> getEnd </code> to get finally the string expected.</li> + * </ul> + */ + public void _getText() { + requiredMethod("setString()"); + requiredMethod("getStart()"); + requiredMethod("getEnd()"); + + XText txt = oObj.getText() ; + + tRes.tested( "getText()", txt != null && + txt.getString().equals("StartMiddle")); + } + + /** + * Gets the String of the range. <p> + * Has <b>OK</b> status if the string returned equals to + * 'StartMiddleEnd' value. <p> + */ + public void _getString() { + + oObj.setString("StartMiddleEnd"); + String gStr = oObj.getString() ; + + tRes.tested( "getString()", gStr != null && + gStr.equals("StartMiddleEnd")); + + } + + /** + * Sets the string content of the range to 'Middle' value. <p> + * Has <b>OK</b> status if <code>getString</code> method returns + * 'Middle' value. + */ + public void _setString() { + oObj.setString("Middle") ; + + tRes.tested("setString()", "Middle".equals(oObj.getString())) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/text/_XTextRangeCompare.java b/qadevOOo/tests/java/ifc/text/_XTextRangeCompare.java new file mode 100644 index 0000000000..47d389c9a4 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextRangeCompare.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 ifc.text; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.text.XText; +import com.sun.star.text.XTextCursor; +import com.sun.star.text.XTextDocument; +import com.sun.star.text.XTextRangeCompare; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + +/** + * Testing <code>com.sun.star.text.XTextRangeCompare</code> + * interface methods : + * <ul> + * <li><code> compareRegionStarts()</code></li> + * <li><code> compareRegionEnds()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'TEXTDOC'</code> <b>optional</b> + * (must implement <code>XTextDocument</code>): + * can be used to obtain <code>Text</code> of the document from + * which cursors can be created. + * If the relation does not exist, the relation <code>TEXT</code> + * must be specified. </li> + * <li> <code>'TEXT'</code> <b>optional</b> + * (of type <code>XText</code>): + * used to create text cursor. + * If the relation does not exist, the relation <code>TEXTDOC</code> + * must be specified. </li> + * <ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XTextRangeCompare + */ +public class _XTextRangeCompare extends MultiMethodTest { + + /** + * the test object + */ + public XTextRangeCompare oObj = null; + String nameStr = null; + XTextCursor cursor1 = null; + XTextCursor cursor2 = null; + XText oText = null; + + /** + * Retrieves <code>XText</code> interface from relation 'TEXTDOC' + * or from 'TEXT'. + * @throws StatusException If neither 'TEXTDOC' nor 'TEXT' + * relation exists. + */ + @Override + public void before() { + nameStr = this.getClass().getName(); + + XInterface oIfc = (XInterface)tEnv.getObjRelation("TEXTDOC"); + if (oIfc!=null) { + XTextDocument oTDoc = UnoRuntime.queryInterface( + XTextDocument.class, oIfc); + oText = oTDoc.getText(); + } + XText aText = (XText) tEnv.getObjRelation("TEXT"); + if (aText != null) { + oText = aText; + } + + if (oText == null) { + throw new StatusException(Status.failed + ("Neither 'TEXTDOC' nor 'TEXT' relation not found")) ; + } + } + + /** + * One cursor is created and to its position a paragraph + * inserted, then the first five characters were selected. + * A second cursor was created and the last 7 characters + * were selected.<p> + * + * Has <b>OK</b> status if the compare returns 1, i.e. + * the second cursor end is before the first. + */ + public void _compareRegionEnds() { + boolean bResult = false; + short n = 0; + log.println( "testing compareRegionEnds()" ); + + try{ + cursor1 = oText.createTextCursor(); + oText.insertString(cursor1, nameStr, false); + + cursor1.gotoStart(false); + cursor1.goRight((short)5, true); + cursor2 = oText.createTextCursor(); + cursor2.gotoEnd(false); + cursor2.goLeft((short)7, true); + + log.println("hole text: '" + oText.getString() + "'"); + log.println("cursor1: '"+cursor1.getString() + "'"); + log.println("cursor2: '"+cursor2.getString() + "'"); + log.println("check: oObj.compareRegionStarts(cursor1, cursor2)"); + + n = oObj.compareRegionEnds(cursor1, cursor2); + + log.println( "Result (short) : " + n ); + }catch(com.sun.star.lang.IllegalArgumentException e){ + log.println( "Exception: " + e); + e.printStackTrace(log); + } + + if (n == 1){bResult = true;} + tRes.tested( "compareRegionEnds()", bResult ); + } + + /** + * One cursor is created and to its position a paragraph + * inserted, then the first five characters were selected. + * A second cursor was created and the last 7 characters + * were selected.<p> + * + * Has <b>OK</b> status if the compare returns 1, i.e. + * the second cursor start is before the first. + */ + public void _compareRegionStarts() { + boolean bResult = false; + short n = 0; + + try{ + cursor1 = oText.createTextCursor(); + oText.insertString(cursor1, nameStr, false); + + cursor1.gotoStart(false); + cursor1.goRight((short)5, true); + cursor2 = oText.createTextCursor(); + cursor2.gotoEnd(false); + cursor2.goLeft((short)7, true); + + log.println("hole text: '" + oText.getString() + "'"); + log.println("cursor1: '"+cursor1.getString() + "'"); + log.println("cursor2: '"+cursor2.getString() + "'"); + log.println("check: oObj.compareRegionStarts(cursor1, cursor2)"); + n = oObj.compareRegionStarts(cursor1, cursor2); + + log.println( "Result (short) : " + n ); + }catch(com.sun.star.lang.IllegalArgumentException e){ + log.println( "Exception: " + e); + e.printStackTrace(log); + } + if (n == 1){bResult = true;} + tRes.tested( "compareRegionStarts()", bResult ); + } + +} + diff --git a/qadevOOo/tests/java/ifc/text/_XTextRangeMover.java b/qadevOOo/tests/java/ifc/text/_XTextRangeMover.java new file mode 100644 index 0000000000..affdb6ce88 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextRangeMover.java @@ -0,0 +1,88 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.text.XTextRange; +import com.sun.star.text.XTextRangeMover; + +/** + * Testing <code>com.sun.star.text.XTextRangeMover</code> + * interface methods : + * <ul> + * <li><code> moveTextRange()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'RangeForMove'</code> (of type <code>XTextRange</code>): + * the range to be moved. </li> + * <li> <code>'XTextRange'</code> (of type <code>XTextRange</code>): + * the range that includes moving range. </li> + * <ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XTextRangeMover + */ +public class _XTextRangeMover extends MultiMethodTest { + + public XTextRangeMover oObj = null; + + XTextRange xTextRange = null; + XTextRange oMoveRange = null; + + /** + * Moves the range obtained from relation 'RangeForMove' by 1 paragraph + * and compares index of moved string in the whole text obtained + * from relation 'XTextRange'. <p> + * Has <b>OK</b> status if index of moved range is changed after method call. + */ + public void _moveTextRange(){ + oMoveRange = (XTextRange) tEnv.getObjRelation("RangeForMove"); + xTextRange = (XTextRange) tEnv.getObjRelation("XTextRange"); + + if (oMoveRange == null) { + throw new StatusException( + Status.failed("Couldn't get relation 'RangeForMove'")); + } + + if (xTextRange == null) { + throw new StatusException( + Status.failed("Couldn't get relation 'XTextRange'")); + } + + log.println("Content before moving:"); + log.println(xTextRange.getString()); + log.println("Text range for moving:"); + log.println(oMoveRange.getString()); + int indexBefore = xTextRange.getString().indexOf(oMoveRange.getString()); + oObj.moveTextRange(oMoveRange,(short) 1); + log.println("Content after moving:"); + log.println(xTextRange.getString()); + int indexAfter = xTextRange.getString().indexOf(oMoveRange.getString()); + + boolean res = indexBefore != indexAfter; + log.println("Index before moving:" + indexBefore); + log.println("Index after moving:" + indexAfter); + + tRes.tested("moveTextRange()", res); + } +} + diff --git a/qadevOOo/tests/java/ifc/text/_XTextSection.java b/qadevOOo/tests/java/ifc/text/_XTextSection.java new file mode 100644 index 0000000000..9aeb70c141 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextSection.java @@ -0,0 +1,68 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.text.XTextSection; + +/** + * Testing <code>com.sun.star.text.XTextSection</code> + * interface methods : + * <ul> + * <li><code> getParentSection()</code></li> + * <li><code> getChildSections()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XTextSection + */ +public class _XTextSection extends MultiMethodTest { + + public static XTextSection oObj = null; + public XTextSection child = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns non zero length array. + */ + public void _getChildSections(){ + boolean bResult = false; + XTextSection oSect[] = oObj.getChildSections(); + if (oSect.length > 0){ + bResult = true; + child = oSect[0]; + } + tRes.tested("getChildSections()", bResult); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getParentSection(){ + requiredMethod("getChildSections()"); + boolean bResult = false; + bResult = (child.getParentSection() != null); + tRes.tested("getParentSection()", bResult); + } + + +} // finish class _XTextSection + diff --git a/qadevOOo/tests/java/ifc/text/_XTextSectionsSupplier.java b/qadevOOo/tests/java/ifc/text/_XTextSectionsSupplier.java new file mode 100644 index 0000000000..38b31ad12b --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextSectionsSupplier.java @@ -0,0 +1,66 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.container.XNameAccess; +import com.sun.star.text.XTextSectionsSupplier; + + +public class _XTextSectionsSupplier extends MultiMethodTest { + public XTextSectionsSupplier oObj; + + public void _getTextSections() { + XNameAccess sections = oObj.getTextSections(); + boolean res = checkSections(sections); + tRes.tested("getTextSections()", res); + } + + protected boolean checkSections(XNameAccess sections) { + String[] sNames = sections.getElementNames(); + boolean res = true; + + for (int k = 0; k < sNames.length; k++) { + try { + res &= sections.hasByName(sNames[k]); + res &= (sections.getByName(sNames[k]) != null); + log.println("Works for ... " + sNames[k]); + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("positive test failed " + e.getMessage()); + res = false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("positive test failed " + e.getMessage()); + res = false; + } + } + + try { + sections.getByName("unknown"); + log.println("negative test failed ... no Exception thrown"); + res = false; + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("expected Exception for wrong argument ... OK"); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("negative test failed ... wrong Exception thrown"); + res = false; + } + + return res; + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/text/_XTextTable.java b/qadevOOo/tests/java/ifc/text/_XTextTable.java new file mode 100644 index 0000000000..93ac5a9d95 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextTable.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 ifc.text; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.text.XTextTable; + +/** + * Testing <code>com.sun.star.text.XTextTable</code> + * interface methods : + * <ul> + * <li><code> initialize()</code></li> + * <li><code> getRows()</code></li> + * <li><code> getColumns()</code></li> + * <li><code> getCellByName()</code></li> + * <li><code> getCellNames()</code></li> + * <li><code> createCursorByCellName()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'NROW'</code> : the number of rows in table + * </li> + * <li> <code>'NCOL'</code> : the number of columns in table + * </li> + * + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XTextTable + */ +public class _XTextTable extends MultiMethodTest { + + public XTextTable oObj = null; // oObj filled by MultiMethodTest + int nRow; + int nCol; + + String cellNamesList[] = null ; + + @Override + protected void before() { + Integer num_row = (Integer)tEnv.getObjRelation("NROW"); + if (num_row == null) { + throw new StatusException + (Status.failed("Couldn't get relation 'NROW'")); + } + Integer num_col = (Integer)tEnv.getObjRelation("NCOL"); + if (num_col == null) { + throw new StatusException + (Status.failed("Couldn't get relation 'NCOL'")); + } + nRow = num_row.intValue(); + nCol = num_col.intValue(); + } + + /** + * The method is not called directly here, because it must + * be called before being inserted to the document. <p> + * + * Always has <b> OK </b> status. <p> + */ + public void _initialize() { + + // initialize() + log.println( "test for initialize()" ); + tRes.tested( "initialize()", true); + } + + /** + * Test calls the method passing as cell name the first + * element from names returned by <code>getCellNames</code> + * method. <p> + * + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getCellNames() </code> : its result used by test. </li> + * </ul> + */ + public void _createCursorByCellName(){ + requiredMethod("getCellNames()") ; + + // createCursorByCellName() + log.println( "test for createCursorByCellName()" ); + tRes.tested( "createCursorByCellName()", + oObj.createCursorByCellName( cellNamesList[0] ) != null ); + } + + /** + * Test calls the method passing as cell name the first + * element from names returned by <code>getCellNames</code> + * method. <p> + * + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getCellNames() </code> : its result used by test. </li> + * </ul> + */ + public void _getCellByName(){ + requiredMethod("getCellNames()") ; + + // getCellByName() + log.println( "test for getCellByName()" ); + tRes.tested( "getCellByName()", + oObj.getCellByName( cellNamesList[0] ) != null ); + } + + /** + * Obtains cell names of the table. <p> + * + * Has <b>OK</b> status if number of elements in the returned + * array is equal to [row number] * [column number] + * and if the first name is 'A1'. + */ + public void _getCellNames(){ + // getCellNames() + log.println( "test for getCellNames()" ); + cellNamesList = oObj.getCellNames(); + + boolean result = cellNamesList.length == ( nRow * nCol ) ; + result &= cellNamesList[0].equals( "A1" ) ; + + tRes.tested( "getCellNames()", result ) ; + } + + /** + * Obtains columns of the table. <p> + * + * Has <b>OK</b> status if the number of element of returned + * collection is equal to real number of columns in the table. + */ + public void _getColumns(){ + // getColumns() + log.println( "test for getColumns()" ); + tRes.tested( "getColumns()", nCol == oObj.getColumns().getCount() ); + } + + /** + * Obtains rows of the table. <p> + * + * Has <b>OK</b> status if the number of element of returned + * collection is equal to real number of rows in the table. + */ + public void _getRows(){ + // getRows() + log.println( "test for getRows()" ); + tRes.tested( "getRows()", nRow == oObj.getRows().getCount() ); + } + +} + + diff --git a/qadevOOo/tests/java/ifc/text/_XTextTableCursor.java b/qadevOOo/tests/java/ifc/text/_XTextTableCursor.java new file mode 100644 index 0000000000..ac95453d0d --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextTableCursor.java @@ -0,0 +1,283 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.text.XTextTableCursor; + + +/** + * Testing <code>com.sun.star.text.XTextTableCursor</code> + * interface methods : + * <ul> + * <li><code> getRangeName()</code></li> + * <li><code> gotoCellByName()</code></li> + * <li><code> goLeft()</code></li> + * <li><code> goRight()</code></li> + * <li><code> goUp()</code></li> + * <li><code> goDown()</code></li> + * <li><code> gotoStart()</code></li> + * <li><code> gotoEnd()</code></li> + * <li><code> mergeRange()</code></li> + * <li><code> splitRange()</code></li> + * </ul> <p> + * + * <b>Prerequisites : </b> the table must have a size + * 2x2 and current cursor position must be in the upper + * left cell. <p> + * + * Test is <b> NOT </b> multithread compliant. <p> + * + * After test completion object environment has to be recreated + * because after merging and splitting cells their names + * differ from initial. + * + * @see com.sun.star.text.XTextTableCursor + */ +public class _XTextTableCursor extends MultiMethodTest { + + public XTextTableCursor oObj = null; // oObj filled by MultiMethodTest + + /** + * Moves the cursor to upper-left cell and checks + * its range name. <p> + * + * Has <b>OK</b> status if the name returned is 'A1'. + */ + public void _getRangeName(){ + log.println( "test for getRangeName()" ); + oObj.gotoStart(false); + String oCellName = oObj.getRangeName(); + log.println( "CellName = " + oCellName ); + + tRes.tested("getRangeName()", oCellName.equals("A1") ); + } + + /** + * Calls the method which moves the cursor down by 1 cell, + * after that returns cursor to the old position. <p> + * + * Has <b>OK</b> status if the method returns + * <code>true</code>. + */ + public void _goDown(){ + boolean bDown = false; + log.println( "test for goDown()" ); + short i = 1; + + bDown = oObj.goDown(i,false); + + tRes.tested("goDown()", bDown ); + oObj.goUp(i,false); + } + + /** + * Calls the method which moves the cursor to the right by 1 cell, + * after that returns cursor to the old position. <p> + * + * Has <b>OK</b> status if the method returns + * <code>true</code>. + */ + public void _goRight(){ + boolean bRight = false; + log.println( "test for goRight()" ); + short i = 1; + + bRight = oObj.goRight(i,false); + + tRes.tested("goRight()", bRight ); + oObj.goLeft(i,false); + } + + /** + * Calls the method which moves the cursor to the left by 1 cell, + * after that returns cursor to the old position. <p> + * + * Has <b>OK</b> status if the method returns + * <code>true</code>. + */ + public void _goLeft(){ + boolean bLeft = false; + log.println( "test for goLeft()" ); + short i = 1; + + oObj.goRight(i,false); + bLeft = oObj.goLeft(i,false); + + tRes.tested("goLeft()", bLeft ); + } + + /** + * Calls the method which moves the cursor up by 1 cell, + * after that returns cursor to the old position. <p> + * + * Has <b>OK</b> status if the method returns + * <code>true</code>. + */ + public void _goUp(){ + boolean bUp = false; + log.println( "test for goUp()" ); + short i = 1; + + oObj.gotoEnd(true); + + bUp = oObj.goUp(i,false); + tRes.tested("goUp()", bUp ); + } + + /** + * Moves the cursor to the cell with name 'B1', then + * checks the current range name. <p> + * Has <b>OK</b> status if the returned range name is + * 'B1'. + */ + public void _gotoCellByName(){ + log.println( "test for gotoCellByName()" ); + + oObj.gotoCellByName("B1",false); + String oCellName = oObj.getRangeName(); + + tRes.tested("gotoCellByName()", oCellName.equals("B1") ); + } + + /** + * Moves cursor to the start (upper-left cell). Then + * checks the current range name. <p> + * + * Has <b>OK</b> status if current range name is 'A1'. + */ + public void _gotoStart(){ + log.println( "test for gotoStart()" ); + + oObj.gotoStart(false); + String oCellName = oObj.getRangeName(); + + tRes.tested("gotoStart()", oCellName.equals("A1") ); + } + + /** + * Moves cursor to the end (lower-right cell). Then + * checks the current range name. <p> + * + * Has <b>OK</b> status if current range name is 'B2' + * (the table is assumed to be of size 2x2). + */ + public void _gotoEnd(){ + log.println( "test for gotoEnd()" ); + + oObj.gotoEnd(false); + String oCellName = oObj.getRangeName(); + + tRes.tested("gotoEnd()", oCellName.equals("B2") ); + } + + /** + * Selects all cells in the table and merges them. + * Finally move the cursor to the end and checks + * current range name.<p> + * + * Has <b>OK</b> status if the end cell has a name + * 'A1'. + * + * The following method tests are to be executed before : + * <ul> + * <li> <code> getRangeName(), gotoStart(), gotoEnd() + * goLeft(), goRight(), goUp(), goDown(), gotoCellByName()</code> + * : these methods must be completed before all cells of the + * table are merged into one cell </li> + * </ul> + */ + public void _mergeRange(){ + executeMethod("getRangeName()") ; + executeMethod("gotoStart()") ; + executeMethod("gotoEnd()") ; + executeMethod("goLeft()") ; + executeMethod("goRight()") ; + executeMethod("goUp()") ; + executeMethod("goDown()") ; + executeMethod("gotoCellByName()") ; + + boolean bMerge = false; + log.println( "test for mergeRange()" ); + + oObj.gotoStart(false); + oObj.gotoEnd(true); + bMerge = oObj.mergeRange(); + + oObj.gotoEnd(false); + + String curName = oObj.getRangeName() ; + bMerge &= "A1".equals(curName) ; + + tRes.tested("mergeRange()", bMerge ); + } + + /** + * First splits the cell horizontally. Then the end cell + * name is checked. Second split all cells vertically and + * again the end cell name is checked<p> + * + * Has <b> OK </b> status if in the first case the end cell name + * is not 'A1', and in the second case the end cell name is not + * equal to the name gotten in the first case. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> mergeRange() </code> : to have one cell in a table + * which this test splits. </li> + * </ul> + */ + public void _splitRange(){ + requiredMethod("mergeRange()") ; + + boolean bSplit = true ; + log.println( "test for splitRange" ) ; + short i = 1 ; + + bSplit &= oObj.splitRange(i, true) ; + + oObj.gotoEnd(false); + String horName = oObj.getRangeName() ; + log.println("The end cell after horiz. split : " + horName) ; + bSplit &= !"A1".equals(horName) ; + + oObj.gotoStart(false); + oObj.gotoEnd(true); + bSplit &= oObj.splitRange(i, false) ; + + oObj.gotoEnd(false); + String vertName = oObj.getRangeName() ; + log.println("The end cell after vert. split : " + vertName) ; + bSplit &= !horName.equals(vertName) ; + + tRes.tested("splitRange()", bSplit ) ; + } + + /** + * Forces object environment recreation. + */ + @Override + public void after() { + disposeEnvironment() ; + } + + } // finish class _XTextTableCursor + + diff --git a/qadevOOo/tests/java/ifc/text/_XTextTablesSupplier.java b/qadevOOo/tests/java/ifc/text/_XTextTablesSupplier.java new file mode 100644 index 0000000000..c12072d740 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextTablesSupplier.java @@ -0,0 +1,57 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.container.XNameAccess; +import com.sun.star.text.XTextTablesSupplier; + + +/** + * Testing <code>com.sun.star.text.XTextTablesSupplier</code> + * interface methods : + * <ul> + * <li><code> getTextTables()</code></li> + * </ul> <p> + * The table collection tested <b>must</b> have a table + * with name 'SwXTextDocument'. <p> + * Test is multithread compliant. <p> + * @see com.sun.star.text.XTextTablesSupplier + */ +public class _XTextTablesSupplier extends MultiMethodTest { + + public static XTextTablesSupplier oObj = null; + + /** + * Get the collection of tables. Then check it. <p> + * Has <b>OK</b> status if returned collection contains + * element with name 'SwXTextDocument'. + */ + public void _getTextTables() { + boolean res = false; + + XNameAccess the_tables = oObj.getTextTables(); + res = the_tables.hasByName("SwXTextDocument"); + + tRes.tested("getTextTables()",res); + } + +} // finish class _XTextTablesSupplier + diff --git a/qadevOOo/tests/java/ifc/text/_XTextViewCursorSupplier.java b/qadevOOo/tests/java/ifc/text/_XTextViewCursorSupplier.java new file mode 100644 index 0000000000..24a9c97285 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XTextViewCursorSupplier.java @@ -0,0 +1,53 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.text.XTextViewCursor; +import com.sun.star.text.XTextViewCursorSupplier; + +/** + * Testing <code>com.sun.star.text.XTextViewCursorSupplier</code> + * interface methods : + * <ul> + * <li><code> getViewCursor()</code></li> + * </ul> <p> + * Test is multithread compliant. <p> + * @see com.sun.star.text.XTextViewCursorSupplier + */ +public class _XTextViewCursorSupplier extends MultiMethodTest { + + public XTextViewCursorSupplier oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getViewCursor(){ + + XTextViewCursor oTVC = oObj.getViewCursor(); + tRes.tested("getViewCursor()", oTVC != null); + + } // finish _getViewCursor() + +} // finish class _XTextViewCursorSupplier + + diff --git a/qadevOOo/tests/java/ifc/text/_XWordCursor.java b/qadevOOo/tests/java/ifc/text/_XWordCursor.java new file mode 100644 index 0000000000..47474472af --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XWordCursor.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 ifc.text; + +import lib.MultiMethodTest; + +import com.sun.star.text.XWordCursor; + +/** + * Testing <code>com.sun.star.text.XWordCursor</code> + * interface methods : + * <ul> + * <li><code> isStartOfWord()</code></li> + * <li><code> isEndOfWord()</code></li> + * <li><code> gotoNextWord()</code></li> + * <li><code> gotoPreviousWord()</code></li> + * <li><code> gotoEndOfWord()</code></li> + * <li><code> gotoStartOfWord()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.text.XWordCursor + */ +public class _XWordCursor extends MultiMethodTest { + + public XWordCursor oObj = null; // oObj filled by MultiMethodTest + + /** + * Moves the cursor to start of the text. + */ + @Override + public void before() { + oObj.gotoStart(false); + } + + /** + * First moves the cursor to the next word to be sure that + * at least one word is situated before. Then moves cursor + * to the previous word and checks the value returned. <p> + * + * Has <b>OK</b> status if method returns <code>true</code>. + */ + public void _gotoPreviousWord(){ + oObj.gotoNextWord(false); + tRes.tested("gotoPreviousWord()", oObj.gotoPreviousWord(false) ); + } + + /** + * First moves the cursor to the previous word to be sure that + * at least one word is situated after. Then moves cursor + * to the next word and checks the value returned. <p> + * + * Has <b>OK</b> status if method returns <code>true</code>. + */ + public void _gotoNextWord(){ + oObj.gotoPreviousWord(false) ; + tRes.tested("gotoNextWord()", oObj.gotoNextWord(false) ); + } + + /** + * First moves the cursor to the start of the current word, + * then to the end and checks the value returned. <p> + * + * Has <b>OK</b> status if method returns <code>true</code>. + */ + public void _gotoEndOfWord(){ + oObj.gotoStart(false); + tRes.tested("gotoEndOfWord()", oObj.gotoEndOfWord(false) ); + } + + /** + * Move cursor to the start, then to the end. After that the + * method is called and returned value is checked. <p> + * Has <b>OK</b> status if the method returns <code>true</code>. + */ + public void _isEndOfWord(){ + log.println("gotoStartOfWord() = " + oObj.gotoStartOfWord(false)) ; + log.println("gotoEndOfWord() = " + oObj.gotoEndOfWord(false)); + + tRes.tested("isEndOfWord()", oObj.isEndOfWord() ); + } + + /** + * Move cursor to the end, then to the start. After that the + * method is called and returned value is checked. <p> + * Has <b>OK</b> status if the method returns <code>true</code>. + */ + public void _isStartOfWord(){ + + oObj.gotoEndOfWord(false); + oObj.gotoStartOfWord(false); + tRes.tested("isStartOfWord()", oObj.isStartOfWord() ); + } + + /** + * First moves the cursor to the start of the current word, + * then shifts it 2 symbols to the right. After that the + * method is called and returned value is checked.<p> + * + * Has <b>OK</b> status if method returns <code>true</code>. + */ + public void _gotoStartOfWord(){ + oObj.gotoStartOfWord(false); + oObj.goRight((short) 2, false) ; + tRes.tested("gotoStartOfWord()", oObj.gotoStartOfWord(false) ); + } + + } // finish class _XWordCursor + diff --git a/qadevOOo/tests/java/ifc/ucb/_XCachedContentResultSetFactory.java b/qadevOOo/tests/java/ifc/ucb/_XCachedContentResultSetFactory.java new file mode 100644 index 0000000000..a6dc5da820 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XCachedContentResultSetFactory.java @@ -0,0 +1,106 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.sdbc.XResultSet; +import com.sun.star.ucb.XCachedContentResultSetFactory; + +/** +* Testing <code>com.sun.star.ucb.XCachedContentResultSetFactory</code> +* interface methods : +* <ul> +* <li><code> createCachedContentResultSet()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CachedContentResultSetStub'</code> (of type +* <code>com.sun.star.sdbc.XResultSet</code>): +* this must be an implementation of <code> +* com.sun.star.ucb.CachedContentResultSetStub</code> service.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XCachedContentResultSetFactory +*/ +public class _XCachedContentResultSetFactory extends MultiMethodTest { + + /** + * Contains the tested object. + */ + public XCachedContentResultSetFactory oObj; + private XResultSet resSetStub = null ; + + /** + * Retrieves object relation. + * @throws StatusException If relation not found. + */ + @Override + public void before() { + resSetStub = (XResultSet) + tEnv.getObjRelation("CachedContentResultSetStub") ; + if (resSetStub == null) { + log.println("!!! Relation not found !!!") ; + throw new StatusException + (Status.failed("!!! Relation not found !!!")) ; + } + } + + /** + * Creates result set from result set stub. After that number + * of rows from result set created and its stub are retrieved + * using their static representations and compared. <p> + * Has <b>OK</b> status if numbers of rows are equal and they are + * greater than 0 (because JAR file contains at least one entry). + */ + public void _createCachedContentResultSet() { + boolean result = true ; + + XResultSet resSet = oObj.createCachedContentResultSet + (resSetStub, null) ; + + if (resSet == null) { + log.println("!!! Method returned null !!!") ; + result = false ; + } else { + try { + resSetStub.last() ; + int stubRowNum = resSetStub.getRow() ; + + resSet.last() ; + int setRowNum = resSet.getRow() ; + + result = stubRowNum == setRowNum && setRowNum > 0 ; + + log.println("Number of rows : stub=" + stubRowNum + + " set=" + setRowNum) ; + } catch (com.sun.star.sdbc.SQLException e) { + log.println("!!! Something wrong with result sets :") ; + e.printStackTrace(log) ; + result = false ; + } + } + + tRes.tested("createCachedContentResultSet()", result) ; + + } +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XCachedContentResultSetStubFactory.java b/qadevOOo/tests/java/ifc/ucb/_XCachedContentResultSetStubFactory.java new file mode 100644 index 0000000000..afc6ce77a8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XCachedContentResultSetStubFactory.java @@ -0,0 +1,104 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.sdbc.XResultSet; +import com.sun.star.ucb.XCachedContentResultSetStubFactory; + +/** +* Testing <code>com.sun.star.ucb.XCachedContentResultSetStubFactory</code> +* interface methods : +* <ul> +* <li><code> createCachedContentResultSetStub()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'ContentResultSet'</code> (of type +* <code>com.sun.star.sdbc.XResultSet</code>): +* this must be an implementation of <code> +* com.sun.star.ucb.ContentResultSet</code> service.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XCachedContentResultSetStubFactory +*/ +public class _XCachedContentResultSetStubFactory extends MultiMethodTest { + + /** + * Contains the tested object. + */ + public XCachedContentResultSetStubFactory oObj; + private XResultSet resSet = null ; + + /** + * Retrieves object relation. + * @throws StatusException If relation not found. + */ + @Override + public void before() { + resSet = (XResultSet) tEnv.getObjRelation("ContentResultSet") ; + if (resSet == null) { + log.println("!!! Relation not found !!!") ; + throw new StatusException(Status.failed("!!! Relation not found !!!")) ; + } + } + + /** + * Creates cached result set stub from static result set. After that number + * of rows in cached result set created and its source set are retrieved + * and compared. <p> + * Has <b>OK</b> status if numbers of rows are equal and they are + * greater than 0 (because JAR file contains at least one entry). + */ + public void _createCachedContentResultSetStub() { + boolean result = true ; + + XResultSet resSetStub = oObj.createCachedContentResultSetStub + (resSet) ; + + if (resSetStub == null) { + log.println("!!! Method returned null !!!") ; + result = false ; + } else { + try { + resSetStub.last() ; + int stubRowNum = resSetStub.getRow() ; + + resSet.last() ; + int setRowNum = resSet.getRow() ; + + result = stubRowNum == setRowNum && setRowNum > 0 ; + + log.println("Number of rows : set=" + setRowNum + + " stub=" + stubRowNum) ; + } catch (com.sun.star.sdbc.SQLException e) { + log.println("!!! Something wrong with result sets :") ; + e.printStackTrace(log) ; + result = false ; + } + } + + tRes.tested("createCachedContentResultSetStub()", result) ; + + } +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XCachedDynamicResultSetFactory.java b/qadevOOo/tests/java/ifc/ucb/_XCachedDynamicResultSetFactory.java new file mode 100644 index 0000000000..6ac08147a7 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XCachedDynamicResultSetFactory.java @@ -0,0 +1,114 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.sdbc.XResultSet; +import com.sun.star.ucb.XCachedDynamicResultSetFactory; +import com.sun.star.ucb.XDynamicResultSet; + +/** +* Testing <code>com.sun.star.ucb.XCachedDynamicResultSetFactory</code> +* interface methods : +* <ul> +* <li><code> createCachedDynamicResultSet()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CachedDynamicResultSetStub'</code> (of type +* <code>com.sun.star.sdbc.XDynamicResultSet</code>): +* this must be an implementation of <code> +* com.sun.star.ucb.CachedDynamicResultSetStub</code> service.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XCachedDynamicResultSetFactory +*/ +public class _XCachedDynamicResultSetFactory extends MultiMethodTest { + + /** + * Contains the tested object. + */ + public XCachedDynamicResultSetFactory oObj; + private XDynamicResultSet resSetStub = null ; + + /** + * Retrieves object relation. + * @throws StatusException If relation not found. + */ + @Override + public void before() { + resSetStub = (XDynamicResultSet) + tEnv.getObjRelation("CachedDynamicResultSetStub") ; + if (resSetStub == null) { + log.println("!!! Relation not found !!!") ; + throw new StatusException + (Status.failed("!!! Relation not found !!!")) ; + } + } + + /** + * Creates result set from result set stub. After that number + * of rows from result set created and its stub are retrieved + * using their static representations and compared. <p> + * Has <b>OK</b> status if numbers of rows are equal and they are + * greater than 0 (because JAR file contains at least one entry). + */ + public void _createCachedDynamicResultSet() { + boolean result = true ; + + XDynamicResultSet resSet = oObj.createCachedDynamicResultSet + (resSetStub, null) ; + + if (resSet == null) { + log.println("!!! Method returned null !!!") ; + result = false ; + } else { + try { + XResultSet resSetS = resSet.getStaticResultSet() ; + XResultSet resSetStubS = resSetStub.getStaticResultSet() ; + + resSetStubS.last() ; + int stubRowNum = resSetStubS.getRow() ; + + resSetS.last() ; + int setRowNum = resSetS.getRow() ; + + result = stubRowNum == setRowNum && setRowNum > 0 ; + + log.println("Number of rows : stub=" + stubRowNum + + " set=" + setRowNum) ; + } catch (com.sun.star.sdbc.SQLException e) { + log.println("!!! Something wrong with result sets :") ; + e.printStackTrace(log) ; + result = false ; + } catch (com.sun.star.ucb.ListenerAlreadySetException e) { + log.println("!!! Can't get static result sets :") ; + e.printStackTrace(log) ; + result = false ; + } + } + + tRes.tested("createCachedDynamicResultSet()", result) ; + + } +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XCachedDynamicResultSetStubFactory.java b/qadevOOo/tests/java/ifc/ucb/_XCachedDynamicResultSetStubFactory.java new file mode 100644 index 0000000000..cb38aff5b3 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XCachedDynamicResultSetStubFactory.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 ifc.ucb; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.sdbc.XResultSet; +import com.sun.star.ucb.XCachedDynamicResultSetFactory; +import com.sun.star.ucb.XCachedDynamicResultSetStubFactory; +import com.sun.star.ucb.XDynamicResultSet; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.ucb.XCachedDynamicResultSetStubFactory</code> +* interface methods : +* <ul> +* <li><code> createCachedDynamicResultSetStub()</code></li> +* <li><code> connectToCache()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'DynamicResultSet'</code> (of type +* <code>com.sun.star.sdbc.XDynamicResultSet</code>): +* this must be an implementation of <code> +* com.sun.star.ucb.DynamicResultSet</code> service.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XCachedDynamicResultSetStubFactory +*/ +public class _XCachedDynamicResultSetStubFactory extends MultiMethodTest { + + /** + * Contains the tested object. + */ + public XCachedDynamicResultSetStubFactory oObj; + private XDynamicResultSet resSet = null ; + + /** + * Retrieves object relation. + * @throws StatusException If relation not found. + */ + @Override + public void before() { + resSet = (XDynamicResultSet) tEnv.getObjRelation("DynamicResultSet") ; + if (resSet == null) { + log.println("!!! Relation not found !!!") ; + throw new StatusException(Status.failed("!!! Relation not found !!!")) ; + } + } + + /** + * Creates result set stub from result set. After that number + * of rows from result set stub created and its source set are retrieved + * using their static representations and compared. <p> + * Has <b>OK</b> status if numbers of rows are equal and they are + * greater than 0 (because JAR file contains at least one entry). + */ + public void _createCachedDynamicResultSetStub() { + boolean result = true ; + + XDynamicResultSet resSetStub = oObj.createCachedDynamicResultSetStub(resSet) ; + + if (resSetStub == null) { + log.println("!!! Method returned null !!!") ; + result = false ; + } else { + try { + XResultSet resSetS = resSet.getStaticResultSet() ; + XResultSet resSetStubS = resSetStub.getStaticResultSet() ; + + resSetStubS.last() ; + int stubRowNum = resSetStubS.getRow() ; + + resSetS.last() ; + int setRowNum = resSetS.getRow() ; + + result = stubRowNum == setRowNum && setRowNum > 0 ; + + log.println("Number of rows : stub=" + stubRowNum + + " set=" + setRowNum) ; + } catch (com.sun.star.sdbc.SQLException e) { + log.println("!!! Something wrong with result sets :") ; + e.printStackTrace(log) ; + result = false ; + } catch (com.sun.star.ucb.ListenerAlreadySetException e) { + log.println("!!! Can't get static result sets :") ; + e.printStackTrace(log) ; + result = false ; + } + } + + tRes.tested("createCachedDynamicResultSetStub()", result) ; + } + + /** + * Creates an instance of <code>CachedDynamicResultSet</code> service + * which is not connected to any stub. Then tries to connect it to + * <code>DynamicResultSet</code> created and passed as relation. + * Connection is checked by retrieving and comparing of row numbers + * of connected set and its source set. <p> + * Has <b>OK</b> status if row numbers are equal and they are + * greater than 0 (because JAR file contains at least one entry). + */ + public void _connectToCache() throws Exception { + boolean result = true ; + + Object fac = tParam.getMSF().createInstance + ("com.sun.star.ucb.CachedDynamicResultSetFactory") ; + + XCachedDynamicResultSetFactory setFac = UnoRuntime.queryInterface + (XCachedDynamicResultSetFactory.class, fac) ; + + XDynamicResultSet rmtSet = setFac.createCachedDynamicResultSet(null, null) ; + + try { + oObj.connectToCache(resSet, rmtSet, null, null) ; + } catch (com.sun.star.ucb.ListenerAlreadySetException e) { + log.println("!!! Unexpected exception :" + e) ; + result = false ; + } catch (com.sun.star.ucb.AlreadyInitializedException e) { + log.println("!!! Unexpected exception :" + e) ; + result = false ; + } + + if (result) { + // checking connection to the source + try { + XResultSet statRmtSet = rmtSet.getStaticResultSet() ; + XResultSet statResSet = resSet.getStaticResultSet() ; + + statRmtSet.last() ; + int rmtRowNum = statRmtSet.getRow() ; + + statResSet.last() ; + int resRowNum = statResSet.getRow() ; + + result = rmtRowNum == resRowNum && resRowNum > 0 ; + + log.println("Number of rows : destination=" + rmtRowNum + + " source=" + resRowNum) ; + } catch (com.sun.star.sdbc.SQLException e) { + log.println("!!! Something wrong with result sets :") ; + e.printStackTrace(log) ; + result = false ; + } catch (com.sun.star.ucb.ListenerAlreadySetException e) { + log.println("!!! Something wrong with result sets :") ; + e.printStackTrace(log) ; + result = false ; + } + } + + tRes.tested("connectToCache()", result) ; + } + +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XCommandProcessor.java b/qadevOOo/tests/java/ifc/ucb/_XCommandProcessor.java new file mode 100644 index 0000000000..7fa27bbc86 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XCommandProcessor.java @@ -0,0 +1,234 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import com.sun.star.ucb.Command; +import com.sun.star.ucb.CommandAbortedException; +import com.sun.star.ucb.CommandInfo; +import com.sun.star.ucb.GlobalTransferCommandArgument; +import com.sun.star.ucb.NameClash; +import com.sun.star.ucb.TransferCommandOperation; +import com.sun.star.ucb.UnsupportedCommandException; +import com.sun.star.ucb.XCommandInfo; +import com.sun.star.ucb.XCommandProcessor; +import com.sun.star.uno.Exception; +import com.sun.star.uno.UnoRuntime; +import lib.MultiMethodTest; +import lib.StatusException; + +/** +* Tests <code>XCommandProcessor</code>. The TestCase can pass (but doesn't have +* to) "XCommandProcessor.AbortCommand" relation, to specify command to abort in +* <code>abort()</code> test. +* +* Testing <code>com.sun.star.ucb.XCommandProcessor</code> +* interface methods : +* <ul> +* <li><code> createCommandIdentifier()</code></li> +* <li><code> execute()</code></li> +* <li><code> abort()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XCommandProcessor.AbortCommand'</code> <b>optional</b> +* (of type <code>com.sun.star.ucb.Command</code>): +* specify command to abort in <code>abort()</code> test. +* If the relation is not specified the 'GlobalTransfer' +* command is used.</li> +* <ul> <p> +* The following predefined files needed to complete the test: +* <ul> +* <li> <code>poliball.gif</code> : this file is required in case +* if the relation <code>'XCommandProcessor.AbortCommand'</code> +* is not specified. This file is used by 'GlobalTransfer' +* command as a source file for copying.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XCommandProcessor +*/ +public class _XCommandProcessor extends MultiMethodTest { + + /** + * Contains the tested object. + */ + public XCommandProcessor oObj; + + /** + * Contains the command id returned by <code>createCommandIdentifier() + * </code>. It is used in <code>abort()</code> test. + */ + int cmdId; + + /** + * Tests <code>createCommandIdentifier()</code>. Calls it for two times + * and checks returned values. <p> + * Has <b>OK</b> status if values are unique correct identifiers: not 0. + */ + public void _createCommandIdentifier() { + log.println("creating a command line identifier"); + + int testCmdId = oObj.createCommandIdentifier(); + cmdId = oObj.createCommandIdentifier(); + + if (cmdId == 0 || testCmdId == 0) { + log.println("createCommandLineIdentifier() returned 0 - FAILED"); + } + + if (cmdId == testCmdId) { + log.println("the command identifier is not unique"); + } + + tRes.tested("createCommandIdentifier()", + testCmdId != 0 && cmdId != 0 && cmdId != testCmdId); + } + + /** + * First executes 'geCommandInfo' command and examines returned + * command info information. Second tries to execute improper + * command. <p> + * Has <b> OK </b> status if in the first case returned information + * contains info about 'getCommandInfo' command and in the second + * case an exception is thrown. <p> + */ + public void _execute() { + String commandName = "getCommandInfo"; + Command command = new Command(commandName, -1, null); + + Object result; + + log.println("executing command " + commandName); + try { + result = oObj.execute(command, 0, null); + } catch (CommandAbortedException e) { + log.println("The command aborted " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception", e); + } catch (Exception e) { + log.println("Unexpected exception " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception", e); + } + + XCommandInfo xCmdInfo = UnoRuntime.queryInterface( + XCommandInfo.class, result); + + CommandInfo[] cmdInfo = xCmdInfo.getCommands(); + + boolean found = false; + + for (int i = 0; i < cmdInfo.length; i++) { + if (cmdInfo[i].Name.equals(commandName)) { + found = true; + break; + } + } + + log.println("testing execute with wrong command"); + + Command badCommand = new Command("bad command", -1, null); + + try { + oObj.execute(badCommand, 0, null); + } catch (CommandAbortedException e) { + log.println("CommandAbortedException thrown - OK"); + } catch (UnsupportedCommandException e) { + log.println("UnsupportedCommandException thrown - OK"); + } catch (Exception e) { + log.println("Wrong exception thrown " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception", e); + } + + tRes.tested("execute()", found); + } + + /** + * First a separate thread where <code>abort</code> method + * is called permanently. Then a "long" command (for example, + * "transfer") is started. I case if relation is not + * specified 'GlobalTransfer' command starts to + * copy a file to temporary directory (if the relation is present + * then the its command starts to work). <p> + * Has <b> OK </b> status if the command execution is aborted, i.e. + * <code>CommandAbortedException</code> is thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> createCommandIdentifier() </code> : to have a unique + * identifier which is used to abort started command. </li> + * </ul> + */ + public void _abort() { + executeMethod("createCommandIdentifier()"); + + Command command = (Command)tEnv.getObjRelation( + "XCommandProcessor.AbortCommand"); + + if (command == null) { + String commandName = "globalTransfer"; + + String srcURL = util.utils.getFullTestURL("SwXTextEmbeddedObject.sdw") ; + String tmpURL = util.utils.getOfficeTemp(tParam.getMSF()) ; + log.println("Copying '" + srcURL + "' to '" + tmpURL) ; + + GlobalTransferCommandArgument arg = new + GlobalTransferCommandArgument( + TransferCommandOperation.COPY, srcURL, + tmpURL, "", NameClash.OVERWRITE); + + command = new Command(commandName, -1, arg); + } + + Thread aborter = new Thread() { + @Override + public void run() { + for (int i = 0; i < 10; i++) { + log.println("try to abort command"); + oObj.abort(cmdId); + util.utils.pause(10); + } + } + }; + + aborter.start(); + + util.utils.pause(15); + + log.println("executing command"); + try { + oObj.execute(command, cmdId, null); + log.println("Command execution completed"); + log.println("CommandAbortedException is not thrown"); + log.println("This is OK since there is no command implemented "+ + "that can be aborted"); + tRes.tested("abort()", true); + } catch (CommandAbortedException e) { + tRes.tested("abort()", true); + } catch (Exception e) { + log.println("Unexpected exception " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception", e); + } + + try { + aborter.join(5000); + aborter.interrupt(); + } catch(InterruptedException e) { + } + } +} diff --git a/qadevOOo/tests/java/ifc/ucb/_XCommandProcessor2.java b/qadevOOo/tests/java/ifc/ucb/_XCommandProcessor2.java new file mode 100644 index 0000000000..9c02236966 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XCommandProcessor2.java @@ -0,0 +1,41 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.XCommandProcessor2; + + +public class _XCommandProcessor2 extends MultiMethodTest { + /** + * Contains the tested object. + */ + public XCommandProcessor2 oObj; + + public void _releaseCommandIdentifier() { + int id = oObj.createCommandIdentifier(); + oObj.releaseCommandIdentifier(id); + oObj.createCommandIdentifier(); + System.out.println("id: "+id); + System.out.println("id2: "+id); + tRes.tested("releaseCommandIdentifier()", true); + } + +} diff --git a/qadevOOo/tests/java/ifc/ucb/_XContentIdentifierFactory.java b/qadevOOo/tests/java/ifc/ucb/_XContentIdentifierFactory.java new file mode 100644 index 0000000000..6a66dae9ee --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XContentIdentifierFactory.java @@ -0,0 +1,67 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; +import util.utils; + +import com.sun.star.ucb.XContentIdentifier; +import com.sun.star.ucb.XContentIdentifierFactory; + +/** +* Testing <code>com.sun.star.ucb.XContentIdentifierFactory</code> +* interface methods : +* <ul> +* <li><code> createContentIdentifier()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* After test completion object environment has to be recreated. +* @see com.sun.star.ucb.XContentIdentifierFactory +*/ +public class _XContentIdentifierFactory extends MultiMethodTest { + /** + * Contains the tested object. + */ + public XContentIdentifierFactory oObj; + + /** + * Calls the tested method with a file url and + * gets an identifier. <p> + * Has <b> OK </b> status if content identifier and provider scheme are + * proper. <p> + */ + public void _createContentIdentifier() { + // creating a content identifier string - tmp url + String tmpDir = utils.getOfficeTemp(tParam.getMSF()); + + String contentId = utils.getFullURL(tmpDir); + + // the scheme is file + String scheme = "file"; + + XContentIdentifier identifier = oObj.createContentIdentifier(contentId); + + // verifying results + String resId = identifier.getContentIdentifier(); + String resScheme = identifier.getContentProviderScheme(); + + tRes.tested("createContentIdentifier()", contentId.equals(resId) + && scheme.equals(resScheme)); + } +} diff --git a/qadevOOo/tests/java/ifc/ucb/_XContentProvider.java b/qadevOOo/tests/java/ifc/ucb/_XContentProvider.java new file mode 100644 index 0000000000..7f56233fb9 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XContentProvider.java @@ -0,0 +1,130 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.ucb.XContent; +import com.sun.star.ucb.XContentIdentifier; +import com.sun.star.ucb.XContentIdentifierFactory; +import com.sun.star.ucb.XContentProvider; + +/** +* Testing <code>com.sun.star.ucb.XContentProvider</code> +* interface methods : +* <ul> +* <li><code> queryContent()</code></li> +* <li><code> compareContentIds()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'FACTORY'</code> (of type +* <code>com.sun.star.ucb.XContentIdentifierFactory</code>): +* a suitable factory which can produce content identifiers </li> +* <li> <code>'CONTENT1'</code> (<b>optional</b>) (of type <code>String</code>): +* name of the suitable content for provider tested. If relation +* is not specified the 'vnd.sun.star.help://' name will be used.</li> +* <li> <code>'CONTENT2'</code> (<b>optional</b>) (of type <code>String</code>): +* another name of the suitable content for provider tested. If relation +* is not specified the 'vnd.sun.star.writer://' name will be used.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XContentProvider +*/ +public class _XContentProvider extends MultiMethodTest { + + public static XContentProvider oObj = null; + protected XContentIdentifierFactory CIF = null ; + protected String content1 = "vnd.sun.star.help://" ; + protected String content2 = "vnd.sun.star.writer://" ; + + /** + * Retrieves object relations. + * @throws StatusException If one of relations not found. + */ + @Override + public void before() { + CIF = (XContentIdentifierFactory) tEnv.getObjRelation("FACTORY"); + String tmp = (String) tEnv.getObjRelation("CONTENT1") ; + if (tmp != null) content1 = tmp ; + tmp = (String) tEnv.getObjRelation("CONTENT2") ; + if (tmp != null) content2 = tmp ; + + if (CIF == null) throw new StatusException( + Status.failed("'FACTORY' relation is not found.")) ; + } + + /** + * Tries to query for some content suitable for this provider. <p> + * Has <b>OK</b> status if not null value is returned. + */ + public void _queryContent() { + try { + XContentIdentifierFactory CIF = (XContentIdentifierFactory) + tEnv.getObjRelation("FACTORY"); + String aURL = content1; + log.println("Trying to query "+aURL); + XContentIdentifier CI = CIF.createContentIdentifier(aURL); + XContent aContent = oObj.queryContent(CI); + boolean res = true; + Object nc = tEnv.getObjRelation("NoCONTENT"); + if (nc == null) { + res = aContent != null; + } + tRes.tested("queryContent()",res); + } catch (com.sun.star.ucb.IllegalIdentifierException e) { + log.println("Exception while checking 'queryContent'"); + e.printStackTrace(log); + tRes.tested("queryContent()",false); + } + } + + /** + * Creates two different content identifiers. First two different + * identifiers compared, then two same identifiers. <p> + * Has <b>OK</b> status if in the first case <code>false</code> + * returned, and in the second - <code>true</code>. + */ + public void _compareContentIds() { + XContentIdentifierFactory CIF = (XContentIdentifierFactory) + tEnv.getObjRelation("FACTORY"); + String aURL = content1 ; + XContentIdentifier CI = CIF.createContentIdentifier(aURL); + aURL = content2 ; + XContentIdentifier CI2 = CIF.createContentIdentifier(aURL); + int compare = oObj.compareContentIds(CI,CI2); + boolean res = (compare != 0); + if (!res) { + log.println("Didn't work with different IDs"); + log.println(compare+" was returned"); + } + compare = oObj.compareContentIds(CI,CI); + res &= (compare == 0); + if (!res) { + log.println("Didn't work with equal IDs"); + log.println(compare+" was returned"); + } + tRes.tested("compareContentIds()",res); + } + +} + + diff --git a/qadevOOo/tests/java/ifc/ucb/_XContentProviderFactory.java b/qadevOOo/tests/java/ifc/ucb/_XContentProviderFactory.java new file mode 100644 index 0000000000..688b2bd356 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XContentProviderFactory.java @@ -0,0 +1,51 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.XContentProvider; +import com.sun.star.ucb.XContentProviderFactory; + + +/** +* Testing <code>com.sun.star.ucb.XContentProviderFactory</code> +* interface methods : +* <ul> +* <li><code> createContentProvider()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XContentProviderFactory +*/ +public class _XContentProviderFactory extends MultiMethodTest { + + public static XContentProviderFactory oObj = null; + + /** + * Creates a provider. <p> + * Has <b> OK </b> status if the returned value is not + * <code>null</code>. <p> + */ + public void _createContentProvider() { + XContentProvider CP = oObj.createContentProvider + ("com.sun.star.ucb.ContentProviderFactory"); + tRes.tested("createContentProvider()",CP != null); + } +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XContentProviderManager.java b/qadevOOo/tests/java/ifc/ucb/_XContentProviderManager.java new file mode 100644 index 0000000000..957901775e --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XContentProviderManager.java @@ -0,0 +1,275 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.ucb.ContentProviderInfo; +import com.sun.star.ucb.DuplicateProviderException; +import com.sun.star.ucb.XContentProvider; +import com.sun.star.ucb.XContentProviderManager; +import com.sun.star.uno.Exception; +import com.sun.star.uno.UnoRuntime; + +/** +* Tests XContentProviderManager. The test registers two ContentProviders, calls +* queryXXX methods to verify results, and deregisters them. +* +* Testing <code>com.sun.star.ucb.XContentProviderManager</code> +* interface methods : +* <ul> +* <li><code> registerContentProvider()</code></li> +* <li><code> deregisterContentProvider()</code></li> +* <li><code> queryContentProviders()</code></li> +* <li><code> queryContentProvider()</code></li> +* </ul> <p> +* The test registers two ContentProviders, calls +* queryXXX methods to verify results, and deregisters them. <p> +* +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XContentProviderManager +*/ +public class _XContentProviderManager extends MultiMethodTest { + /** + * Contains the tested object. + */ + public XContentProviderManager oObj; + + /** + * The test scheme name. + */ + static final String myScheme = "test-scheme"; + + /** + * Any preexisting content provider. If it exists it will be hidden by + * <code>firstContentProvider</code>, registered with the same + * <code>myScheme</code>. Typically there is no preexisting content + * provider, unless the catch-all providers GnomeVFSContentProvider or + * GIOContentProvider is installed + */ + XContentProvider preexistingContentProvider; + + /** + * First content provider. It will be hidden by <code>contentProvider + * </code>, registered with the same <code>myScheme</code> to test + * the "hiding" behaviour. + */ + XContentProvider firstContentProvider; + + /** + * The main content provider. + */ + XContentProvider contentProvider; + + /** + * <code>ContentProvider</code>s information which are in the manager + * before registering the testing providers. + */ + ContentProviderInfo[] initialProvidersInfo; + + /** + * Creates two testing providers. + * + * @see #firstContentProvider + * @see #contentProvider + */ + @Override + public void before() { + XMultiServiceFactory xMSF = tParam.getMSF(); + + log.println("creating testing content providers"); + try { + firstContentProvider = UnoRuntime.queryInterface( + XContentProvider.class, xMSF.createInstance( + "com.sun.star.ucb.FileContentProvider")); + + contentProvider = UnoRuntime.queryInterface( + XContentProvider.class, xMSF.createInstance( + "com.sun.star.ucb.FileContentProvider")); + } catch (Exception e) { + log.println("Can't create content providers " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception", e); + } + } + + /** + * At the beginning call <code>queryContentProviders</code> method + * + * to have info about providers existing before new adding. + * It adds two testing contents providers, both for the same scheme. + * The second one is added two times: first, in non-replacing mode, to test + * <code>DuplicateProviderException</code>, and second, in replacing mode, + * to hide the first provider. <p> + * + * The evaluation of results are performed later, in + * <code>queryContentProvider()</code>. + * + * Has <b> OK </b> status if in the first provider is registered + * without exceptions, the second throws + * <code>DuplicateProviderException</code> in non-replacing mode, + * and no exceptions in replacing mode. <p> + * + * @see #_queryContentProvider + */ + public void _registerContentProvider() { + // querying providers info before inserting them, to verify results + initialProvidersInfo = oObj.queryContentProviders(); + + // GnomeVFSContentProvider or GIOContentProvider ?, typically null + preexistingContentProvider = oObj.queryContentProvider(myScheme); + + log.println("registering the first provider"); + try { + oObj.registerContentProvider(firstContentProvider, myScheme,false); + } catch (DuplicateProviderException e) { + log.println("Unexpected exception thrown " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception ", e); + } + + log.println("registering the second provider in non-replacing mode"); + try { + oObj.registerContentProvider(contentProvider, myScheme, false); + throw new StatusException(Status.failed("registerContentProvider(.., .., false)")); + } catch (DuplicateProviderException e) { + log.println("DuplicateProviderException thrown - OK"); + } + + XContentProvider result; + + log.println("registering the second provider in the replace mode"); + try { + result = oObj.registerContentProvider(contentProvider, myScheme, true); + } catch (DuplicateProviderException e) { + log.println("Unexpected exception thrown " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception ", e); + } + + // check the result is the first provider + tRes.tested("registerContentProvider()", + result.equals(firstContentProvider)); + } + + /** + * It calls the method (after registering providers) and compares + * its result with the result before registering. + * + * Has <b> OK </b> status if the number of providers increases + * by one after registering custom provider. + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerContentProvider() </code> : to compare number + * of providers. </li> + * </ul> + * @see #_registerContentProvider + */ + public void _queryContentProviders() { + executeMethod("registerContentProvider()"); + + ContentProviderInfo[] providersInfo = oObj.queryContentProviders(); + // verifying that the number of providers increased by 1 + tRes.tested("queryContentProviders()", + providersInfo.length == initialProvidersInfo.length + 1); + } + + /** + * It queries for added custom provider using its scheme + * and verifies its result with + * <code>queryContentProviders()</code> result and with + * custom provider created in <code>registerContentProvider()</code>. + * Also verifies <code>registerContentProvider()</code>. <p> + * + * Has <b>OK</b> status if the provider returned is found within + * all providers and is equal to provider created before. + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerContentProvider() </code> </li> + * </ul> + */ + public void _queryContentProvider() { + executeMethod("registerContentProvider()"); + + XContentProvider result = oObj.queryContentProvider + ("http://www.sun.com"); + + log.println("finding queryContentProvider() result"); + boolean found = false; + + ContentProviderInfo[] providersInfo = oObj.queryContentProviders(); + + for (int i = 0; i < providersInfo.length; i++) { + if (result.equals(providersInfo[i].ContentProvider)) { + found = true; + break; + } + } + + tRes.tested("queryContentProvider()", found); + } + + /** + * At first one provider is deregistered, after that provider + * is queried, the second provider must be returned for the + * specified scheme. Then the second provider is deregistered. + * Now <code>null</code> value must be returned by the method + * <code>queryContentProvider</code> on the specified scheme. <p> + * + * Has <b>OK</b> status if in the first case the second provider + * remains registered, and after its removing no providers remain + * registered for the scheme specified. + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerContentProvider() </code> : two providers + * must be registered. </li> + * </ul> + * The following method tests are to be executed before : + * <ul> + * <li> <code> queryContentProvider() </code> : to run this test + * finally. </li> + * <li> <code> queryContentProviders() </code> : to run this test + * finally. </li> + * </ul> + */ + public void _deregisterContentProvider() { + executeMethod("queryContentProvider()"); + executeMethod("queryContentProviders()"); + requiredMethod("registerContentProvider()"); + + log.println("deregistering the second provider"); + oObj.deregisterContentProvider(contentProvider, myScheme); + + XContentProvider res = oObj.queryContentProvider(myScheme); + + log.println("deregistering the first provider"); + oObj.deregisterContentProvider(firstContentProvider, myScheme); + + res = oObj.queryContentProvider(myScheme); + + // verifying that the original provider (typically none) is returned. + tRes.tested("deregisterContentProvider()", res == preexistingContentProvider); + } +} diff --git a/qadevOOo/tests/java/ifc/ucb/_XDataContainer.java b/qadevOOo/tests/java/ifc/ucb/_XDataContainer.java new file mode 100644 index 0000000000..d077d1be4a --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XDataContainer.java @@ -0,0 +1,126 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.XDataContainer; + +/** +* Testing <code>com.sun.star.ucb.XDataContainer</code> +* interface methods : +* <ul> +* <li><code> getContentType()</code></li> +* <li><code> setContentType()</code></li> +* <li><code> getData()</code></li> +* <li><code> setData()</code></li> +* <li><code> getDataURL()</code></li> +* <li><code> setDataURL()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XDataContainer +*/ +public class _XDataContainer extends MultiMethodTest { + + public static XDataContainer oObj = null; // oObj filled by MultiMethodTest + private final byte[] data = new byte[] {34, 35, 36} ; + private String dataURL = null; + + /** + * Sets the content type to some value. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _setContentType() { + oObj.setContentType("image/jpeg") ; + tRes.tested("setContentType()", true) ; + } + + /** + * Check if values 'set' and 'get' are equal. <p> + * Has <b>OK</b> status if they are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setContentType() </code> </li> + * </ul> + */ + public void _getContentType() { + requiredMethod("setContentType()") ; + + String type = oObj.getContentType() ; + tRes.tested("getContentType()", "image/jpeg".equals(type)) ; + } + + /** + * Sets the data to some byte array. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _setData() { + oObj.setData(data) ; + tRes.tested("setData()", true) ; + } + + /** + * Check if arrays 'set' and 'get' are equal. <p> + * Has <b>OK</b> status if they are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setData() </code> </li> + * </ul> + */ + public void _getData() { + requiredMethod("setData()") ; + + byte[] gData = oObj.getData() ; + boolean res = true ; + if (res = (gData != null && gData.length == data.length)) { + for (int i = 0; i < data.length; i++) { + res &= data[i] == gData[i] ; + } + } + + tRes.tested("getData()", res) ; + } + + /** + * Sets the data URL to some URL. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _setDataURL() { + dataURL = util.utils.getOfficeTemp(tParam.getMSF()) ; + oObj.setDataURL(dataURL) ; + tRes.tested("setDataURL()", true) ; + } + + /** + * Check if URLs 'set' and 'get' are equal. <p> + * Has <b>OK</b> status if they are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setDataURL() </code> </li> + * </ul> + */ + public void _getDataURL() { + requiredMethod("setDataURL()") ; + + String gURL = oObj.getDataURL() ; + tRes.tested("getDataURL()", dataURL.equals(gURL)) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/ucb/_XFileIdentifierConverter.java b/qadevOOo/tests/java/ifc/ucb/_XFileIdentifierConverter.java new file mode 100644 index 0000000000..fb947ffb65 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XFileIdentifierConverter.java @@ -0,0 +1,90 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.XFileIdentifierConverter; + +/** +* Testing <code>com.sun.star.ucb.XFileIdentifierConverter</code> +* interface methods : +* <ul> +* <li><code> getFileProviderLocality()</code></li> +* <li><code> getFileURLFromSystemPath()</code></li> +* <li><code> getSystemPathFromFileURL()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XFileIdentifierConverter +*/ +public class _XFileIdentifierConverter extends MultiMethodTest { + + /** + * Contains the tested object. + */ + public XFileIdentifierConverter oObj; + + /** + * Gets the locality for SOffice temporary directory. <p> + * Has <b> OK </b> status if the method returns value greater + * than 0 (as office temp directory is supposed to be in the + * same location). <p> + */ + public void _getFileProviderLocality() { + String baseURL = util.utils.getOfficeTemp(tParam.getMSF()); + log.println("Using: "+baseURL); + int loc = oObj.getFileProviderLocality(baseURL); + log.println("Getting: "+loc); + tRes.tested("getFileProviderLocality()",loc > 0); + } + + /** + * Tries to convert URL of SOffice temp directory to system + * dependent path. <p> + * Has <b> OK </b> status if the method returns system dependent + * representation of the URL passed. <p> + */ + public void _getSystemPathFromFileURL() { + String baseURL = util.utils.getOfficeTemp(tParam.getMSF()); + log.println("Using (Base): "+baseURL); + String sysURL = util.utils.getOfficeTempDirSys(tParam.getMSF()); + log.println("Using (System): "+sysURL); + String get = oObj.getSystemPathFromFileURL(baseURL); + log.println("Getting: "+get); + //sysURL = sysURL.substring(0,sysURL.length()-1); + tRes.tested("getSystemPathFromFileURL()",get.equals(sysURL)); + } + + /** + * Tries to convert system dependent path of SOffice temp + * directory to URL representation. <p> + * Has <b> OK </b> status if the method returns URL representation + * of the system dependent path passed. <p> + */ + public void _getFileURLFromSystemPath() { + String baseURL = util.utils.getOfficeTemp(tParam.getMSF()); + log.println("Using (Base): "+baseURL); + String sysURL = util.utils.getOfficeTempDirSys(tParam.getMSF()); + log.println("Using (System): "+sysURL); + String get = oObj.getFileURLFromSystemPath(sysURL,sysURL); + log.println("Getting: "+get); + tRes.tested("getFileURLFromSystemPath()",get.equals(baseURL)); + } + +} diff --git a/qadevOOo/tests/java/ifc/ucb/_XParameterizedContentProvider.java b/qadevOOo/tests/java/ifc/ucb/_XParameterizedContentProvider.java new file mode 100644 index 0000000000..f8dcd4d8a3 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XParameterizedContentProvider.java @@ -0,0 +1,84 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.XContentProvider; +import com.sun.star.ucb.XParameterizedContentProvider; + +/** +* Testing <code>com.sun.star.ucb.XParameterizedContentProvider</code> +* interface methods : +* <ul> +* <li><code> registerInstance()</code></li> +* <li><code> deregisterInstance()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XParameterizedContentProvider +*/ +public class _XParameterizedContentProvider extends MultiMethodTest { + + public static XParameterizedContentProvider oObj = null; + + /** + * Registers an instance with some arguments. <p> + * Has <b>OK</b> status if the method returns non <code>null</code> + * provider. + */ + public void _registerInstance() { + try { + XContentProvider CP = oObj.registerInstance( + "\"vnd.sun.star.pkg://file\".*", + "uno:pipe,name=ucb_soffice;<PIPE>;urp;UCB.Factory", + true); + tRes.tested("registerInstance()",CP != null); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while checking 'registerInstance'"); + e.printStackTrace(log); + tRes.tested("registerInstance()",false); + } + } + + /** + * Deregisters the instance registered before. <p> + * Has <b>OK</b> status if the method returns non <code>null</code> + * provider. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerInstance() </code> : to deregister it here. </li> + * </ul> + */ + public void _deregisterInstance() { + requiredMethod("registerInstance()"); + try { + XContentProvider CP = oObj.deregisterInstance( + "\"vnd.sun.star.pkg://file\".*", + "uno:pipe,name=ucb_soffice;<PIPE>;urp;UCB.Factory"); + tRes.tested("deregisterInstance()",CP != null); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while checking 'deregisterInstance'"); + e.printStackTrace(log); + tRes.tested("deregisterInstance()",false); + } + } + +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XPropertyMatcherFactory.java b/qadevOOo/tests/java/ifc/ucb/_XPropertyMatcherFactory.java new file mode 100644 index 0000000000..084ab52938 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XPropertyMatcherFactory.java @@ -0,0 +1,62 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.RuleOperator; +import com.sun.star.ucb.RuleTerm; +import com.sun.star.ucb.SearchCriterium; +import com.sun.star.ucb.XPropertyMatcher; +import com.sun.star.ucb.XPropertyMatcherFactory; + +/** +* Testing <code>com.sun.star.ucb.XPropertyMatcherFactory</code> +* interface methods : +* <ul> +* <li><code> createPropertyMatcher()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XPropertyMatcherFactory +*/ +public class _XPropertyMatcherFactory extends MultiMethodTest { + + public static XPropertyMatcherFactory oObj = null; + + /** + * Tries to create <code>XPropertyMatcher</code> implementation. <p> + * Has <b>OK</b> status if not null value returned. + */ + public void _createPropertyMatcher() { + RuleTerm term = new RuleTerm() ; + + term.Property = "ContentType" ; + term.Operand = "vnd.sun.star.fsys" ; + term.Operator = RuleOperator.CONTAINS ; + + SearchCriterium crit = new SearchCriterium(new RuleTerm[] {term}) ; + + XPropertyMatcher matcher = oObj.createPropertyMatcher + (new SearchCriterium[] {crit}) ; + + tRes.tested("createPropertyMatcher()", matcher != null) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/ucb/_XPropertySetRegistryFactory.java b/qadevOOo/tests/java/ifc/ucb/_XPropertySetRegistryFactory.java new file mode 100644 index 0000000000..e365b11bfe --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XPropertySetRegistryFactory.java @@ -0,0 +1,50 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.XPropertySetRegistry; +import com.sun.star.ucb.XPropertySetRegistryFactory; + +/** +* Testing <code>com.sun.star.ucb.XPropertySetRegistryFactory</code> +* interface methods : +* <ul> +* <li><code> createPropertySetRegistry()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XPropertySetRegistryFactory +*/ +public class _XPropertySetRegistryFactory extends MultiMethodTest { + + public static XPropertySetRegistryFactory oObj = null; + + /** + * Test calls the method with empty string argument. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _createPropertySetRegistry() { + XPropertySetRegistry PSR = oObj.createPropertySetRegistry(""); + tRes.tested("createPropertySetRegistry()",PSR != null); + } + +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XRemoteContentProviderAcceptor.java b/qadevOOo/tests/java/ifc/ucb/_XRemoteContentProviderAcceptor.java new file mode 100644 index 0000000000..63e41ab9d7 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XRemoteContentProviderAcceptor.java @@ -0,0 +1,89 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.XRemoteContentProviderAcceptor; +import com.sun.star.ucb.XRemoteContentProviderDoneListener; + +/** + * Testing <code>com.sun.star.ucb.XRemoteContentProviderAcceptor</code> + * interface methods : + * <ul> + * <li><code> addRemoteContentProvider()</code></li> + * <li><code> removeRemoteContentProvider()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.ucb.XRemoteContentProviderAcceptor + */ +public class _XRemoteContentProviderAcceptor extends MultiMethodTest { + + public XRemoteContentProviderAcceptor oObj = null; + + /** + * The simple <code>XRemoteContentProviderDoneListener</code> + * implementation. + */ + public static class DoneListener implements XRemoteContentProviderDoneListener { + + public void doneWithRemoteContentProviders + (XRemoteContentProviderAcceptor xRCPA) { + } + + } + + XRemoteContentProviderDoneListener aDoneListener = new DoneListener(); + + /** + * Adds a remote provider. <p> + * Has <b> OK </b> status if the method returns <code>true</code>. + */ + public void _addRemoteContentProvider() { + boolean res = false; + + String[] template = new String[]{"file"}; + res = oObj.addRemoteContentProvider("ContentID",tParam.getMSF(), + template,aDoneListener); + + tRes.tested("addRemoteContentProvider()",res); + } + + /** + * Removes the remote provider added before. <p> + * Has <b> OK </b> status if the method returns <code>true</code>. + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addRemoteContentProvider() </code> : provider must + * be added first </li> + * </ul> + */ + public void _removeRemoteContentProvider() { + requiredMethod("addRemoteContentProvider()") ; + + boolean res = false; + + res = oObj.removeRemoteContentProvider("ContentID"); + tRes.tested("removeRemoteContentProvider()",res); + } + + +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XRemoteContentProviderActivator.java b/qadevOOo/tests/java/ifc/ucb/_XRemoteContentProviderActivator.java new file mode 100644 index 0000000000..c97b8946ea --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XRemoteContentProviderActivator.java @@ -0,0 +1,69 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.XContentProviderManager; +import com.sun.star.ucb.XRemoteContentProviderAcceptor; +import com.sun.star.ucb.XRemoteContentProviderActivator; + +/** + * Testing <code>com.sun.star.ucb.XRemoteContentProviderActivator</code> + * interface methods : + * <ul> + * <li><code> activateRemoteContentProviders()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'RCPA'</code> + * (of type <code>XRemoteContentProviderAcceptor</code>): + * this acceptor is used to add a provider first before + * its activation. </li> + * <ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.ucb.XRemoteContentProviderActivator + */ +public class _XRemoteContentProviderActivator extends MultiMethodTest { + + public XRemoteContentProviderActivator oObj = null; + + /** + * First the relation is retrieved and a remote provider is + * added to the acceptor. Then it is activated and + * removed. <p> + * Has <b> OK </b> status if <code>activateRemoteContentProviders</code> + * method returns not <code>null</code> value. <p> + */ + public void _activateRemoteContentProviders() { + boolean res = false; + + XRemoteContentProviderAcceptor xRCPA = (XRemoteContentProviderAcceptor) + tEnv.getObjRelation("RCPA"); + String[] template = new String[]{"file"}; + xRCPA.addRemoteContentProvider("ContentID",tParam.getMSF(),template,null); + XContentProviderManager CPM = oObj.activateRemoteContentProviders(); + res = (CPM != null); + xRCPA.removeRemoteContentProvider("ContentID"); + + tRes.tested("activateRemoteContentProviders()",res); + } + +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XSimpleFileAccess.java b/qadevOOo/tests/java/ifc/ucb/_XSimpleFileAccess.java new file mode 100644 index 0000000000..b1886f9650 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XSimpleFileAccess.java @@ -0,0 +1,539 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.task.XInteractionHandler; +import com.sun.star.ucb.XSimpleFileAccess; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.DateTime; + +import java.util.Calendar; +import java.util.GregorianCalendar; + +/** +* Testing <code>com.sun.star.ucb.XSimpleFileAccess</code> +* interface methods. <p> +* The following predefined files needed to complete the test: +* <ul> +* <li> <code>XSimpleFileAccess/XSimpleFileAccess.txt</code> : +* text file of length 17 and 2000 year created .</li> +* <li> <code>XSimpleFileAccess/XSimpleFileAccess2.txt</code> : +* text file for <code>openFileReadWrite</code> method test.</li> +* <ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'InteractionHandler'</code> +* (of type <code>XInteractionHandler</code>) +* instance of <code>com.sun.star.sdb.InteractionHandler</code> +* </li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XSimpleFileAccess +*/ +public class _XSimpleFileAccess extends MultiMethodTest { + + public static XSimpleFileAccess oObj = null; + + /** + * Copies <b>XSimpleFileAccess.txt</b> to a new file, checks + * if it was successfully copied and then deletes it. <p> + * Has <b> OK </b> status if after method call new copy of file + * exists and no exceptions were thrown. <p> + */ + public void _copy() { + try { + String copiedFile = ""; + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String dirnameTo = util.utils.getOfficeTemp(tParam.getMSF()) ; + String filename = dirname+"XSimpleFileAccess.txt"; + copiedFile = dirnameTo + "XSimpleFileAccess_copy.txt"; + + if (oObj.exists(copiedFile)) + oObj.kill(copiedFile); + + oObj.copy(filename,copiedFile); + tRes.tested("copy()",oObj.exists(copiedFile)); + oObj.kill(copiedFile); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'copy()'"); + ex.printStackTrace(log); + tRes.tested("copy()",false); + } + + } //EOF copy() + + /** + * Copies <b>XSimpleFileAccess.txt</b> to a new file, tries to + * rename it, then checks + * if it was successfully renamed and then deletes it. <p> + * Has <b> OK </b> status if after method call new file + * exists and no exceptions were thrown. <p> + */ + public void _move() { + try { + String copiedFile = ""; + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String dirnameTo = util.utils.getOfficeTemp(tParam.getMSF()) ; + String filename = dirname+"XSimpleFileAccess.txt"; + copiedFile = dirnameTo + "XSimpleFileAccess_copy.txt"; + + if (oObj.exists(copiedFile)) + oObj.kill(copiedFile); + + oObj.copy(filename,copiedFile); + filename = copiedFile; + copiedFile = dirnameTo + "XSimpleFileAccess_move.txt"; + oObj.move(filename,copiedFile); + tRes.tested("move()",oObj.exists(copiedFile)); + oObj.kill(copiedFile); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'move()'"); + ex.printStackTrace(log); + tRes.tested("move()",false); + } + + } //EOF move() + + /** + * Copies <b>XSimpleFileAccess.txt</b> to a new file, deletes it + * and checks if it isn't exist. <p> + * Has <b> OK </b> status if after method call new copy of file + * doesn't exist and no exceptions were thrown. <p> + */ + public void _kill() { + try { + String copiedFile = ""; + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String dirnameTo = util.utils.getOfficeTemp(tParam.getMSF()) ; + String filename = dirname+"XSimpleFileAccess.txt"; + copiedFile = dirnameTo + "XSimpleFileAccess_copy.txt"; + + if (oObj.exists(copiedFile)) + oObj.kill(copiedFile); + + oObj.copy(filename,copiedFile); + oObj.kill(copiedFile); + tRes.tested("kill()",!oObj.exists(copiedFile)); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'kill()'"); + ex.printStackTrace(log); + tRes.tested("kill()",false); + } + + } //EOF kill() + + /** + * Tries to check if <b>XSimpleFileAccess</b> is folder. <p> + * Has <b>OK</b> status if the method returns <code>true</code> + */ + public void _isFolder() { + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + tRes.tested("isFolder()",oObj.isFolder(dirname)); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'isFolder()'"); + ex.printStackTrace(log); + tRes.tested("isFolder()",false); + } + + } //EOF isFolder() + + /** + * Copies <b>XSimpleFileAccess.txt</b> to a new file, sets + * 'READONLY' attribute and checks it. Second clears 'READONLY' + * attribute and checks it again. The copy of file is deleted + * finally.<p> + * + * Has <b> OK </b> status if in the first case method returns + * <code></code>, and in the second case - <code>false</code> + * and no exceptions were thrown. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setReadOnly </code> </li> + * </ul> + */ + public void _isReadOnly() { + requiredMethod("setReadOnly()"); + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String filename = dirname+"XSimpleFileAccess.txt"; + boolean result = true; + + String dirnameTo = util.utils.getOfficeTemp(tParam.getMSF()) ; + String readonlyCopy = dirnameTo + "XSimpleFileAccess_copy.txt" ; + + if (oObj.exists(readonlyCopy)) + oObj.kill(readonlyCopy); + + oObj.copy(filename, readonlyCopy); + + oObj.setReadOnly(readonlyCopy, true); + result &= oObj.isReadOnly(readonlyCopy); + oObj.setReadOnly(readonlyCopy, false); + result &= !oObj.isReadOnly(readonlyCopy); + + oObj.kill(readonlyCopy); + tRes.tested("isReadOnly()",result); + } catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'isReadOnly()'"); + ex.printStackTrace(log); + tRes.tested("isReadOnly()",false); + } + + } //EOF isReadOnly() + + + /** + * Copies <b>XSimpleFileAccess.txt</b> to a new file, sets + * 'READONLY' attribute and checks it. Second clears 'READONLY' + * attribute and checks it again. The copy of file is deleted + * finally.<p> + * + * Has <b> OK </b> status if in the first case method returns + * <code></code>, and in the second case - <code>false</code> + * and no exceptions were thrown. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setReadOnly </code> </li> + * </ul> + */ + public void _setReadOnly() { + boolean result = true ; + + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String filename = dirname+"XSimpleFileAccess.txt"; + + String dirnameTo = util.utils.getOfficeTemp(tParam.getMSF()) ; + String readonlyCopy = dirnameTo + "XSimpleFileAccess_copy.txt" ; + + if (oObj.exists(readonlyCopy)) + oObj.kill(readonlyCopy); + + oObj.copy(filename, readonlyCopy); + + oObj.setReadOnly(readonlyCopy, true); + result &= oObj.isReadOnly(readonlyCopy) ; + oObj.setReadOnly(readonlyCopy, false); + result &= !oObj.isReadOnly(readonlyCopy) ; + tRes.tested("setReadOnly()", result); + + oObj.kill(readonlyCopy); + } + catch (Exception ex) { + log.println("Exception occurred while testing 'setReadOnly()'"); + ex.printStackTrace(log); + tRes.tested("setReadOnly()",false); + } + } //EOF setReadOnly() + + /** + * Creates folder and then checks if it was successfully created. <p> + * Has <b>OK</b> status if folder was created and no exceptions + * were thrown. + */ + public void _createFolder() { + try { + String tmpdirname = util.utils.getOfficeTemp(tParam.getMSF()) ; + String newFolder = tmpdirname+"SimpleSubFolder"; + + if (oObj.exists(newFolder)) + oObj.kill(newFolder); + + oObj.createFolder(newFolder); + tRes.tested("createFolder()",oObj.isFolder(newFolder)); + oObj.kill(newFolder); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'createFolder()'"); + ex.printStackTrace(log); + tRes.tested("createFolder()",false); + } + + } //EOF createFolder() + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <b>XSimpleFileAccess.txt</b> + * file tested.<p> + * Has <b> OK </b> status if the method returns <code>17</code> + * and no exceptions were thrown. <p> + */ + public void _getSize() { + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String filename = dirname+"XSimpleFileAccess.txt"; + int fSize = oObj.getSize(filename); + tRes.tested("getSize()", fSize == 17 ); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'getSize()'"); + ex.printStackTrace(log); + tRes.tested("getSize()",false); + } + + } //EOF getSize() + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <b>XSimpleFileAccess.txt</b> + * file tested.<p> + * Has <b> OK </b> status if the method returns String + * <code>'application/vnd.sun.staroffice.fsys-file'</code> + * and no exceptions were thrown. <p> + */ + public void _getContentType() { + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String filename = dirname+"XSimpleFileAccess.txt"; + String fType = oObj.getContentType(filename); + tRes.tested("getContentType()", + "application/vnd.sun.staroffice.fsys-file".equals(fType) ); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'getContentType()'"); + ex.printStackTrace(log); + tRes.tested("getContentType()",false); + } + + } //EOF getContentType() + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <b>XSimpleFileAccess.txt</b> + * file tested.<p> + * Has <b> OK </b> status if the method returns date with + * 2001 year and no exceptions were thrown. <p> + */ + public void _getDateTimeModified() { + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String filename = dirname+"XSimpleFileAccess.txt"; + DateTime fTime = oObj.getDateTimeModified(filename); + + java.io.File the_file = new java.io.File(filename); + long lastModified = the_file.lastModified(); + java.util.Date lastMod = new java.util.Date(lastModified); + GregorianCalendar lastModCal = new GregorianCalendar(); + lastModCal.setTime(lastMod); + + //compare the dates gained by java with those gained by this method + boolean res = true; + boolean partResult = (fTime.Day == lastModCal.get(Calendar.DAY_OF_WEEK)); + if (!partResult) { + log.println("Wrong Day"); + log.println("Expected: "+lastModCal.get(Calendar.DAY_OF_WEEK)); + log.println("Gained: "+fTime.Day); + log.println("------------------------------"); + } + partResult = (fTime.Month == lastModCal.get(Calendar.MONTH)); + if (!partResult) { + log.println("Wrong Month"); + log.println("Expected: "+lastModCal.get(Calendar.MONTH)); + log.println("Gained: "+fTime.Month); + log.println("------------------------------"); + } + + partResult = (fTime.Year == (lastModCal.get(Calendar.MONTH) - 1900)); + if (!partResult) { + log.println("Wrong Year"); + log.println("Expected: "+(lastModCal.get(Calendar.MONTH) - 1900)); + log.println("Gained: "+fTime.Year); + log.println("------------------------------"); + } + + tRes.tested("getDateTimeModified()", res); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'getDateTimeModified()'"); + ex.printStackTrace(log); + tRes.tested("getDateTimeModified()",false); + } + + } //EOF getDateTimeModified() + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <b>XSimpleFileAccess</b> + * directory used.<p> + * Has <b> OK </b> status if the method returns non zero length + * array and no exceptions were thrown. <p> + */ + public void _getFolderContents() { + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String[] cont = oObj.getFolderContents(dirname,false); + tRes.tested("getFolderContents()", cont.length>0); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'getFolderContents()'"); + ex.printStackTrace(log); + tRes.tested("getFolderContents()",false); + } + + } //EOF getFolderContents() + + /** + * First it check file <b>XSimpleFileAccess.txt</b> for + * existence, second file <b>I_do_not_exists.txt</b> is checked + * for existence. <p> + * Has <b> OK </b> status if in the first case method returns + * <code>true</code> and in the second - <code>false</code> + * and no exceptions were thrown. <p> + */ + public void _exists() { + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String filename = dirname+"XSimpleFileAccess.txt"; + String wrongname = dirname+"I_do_not_exists.txt"; + tRes.tested("exists()", + oObj.exists(filename) && !oObj.exists(wrongname)); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'exists()'"); + ex.printStackTrace(log); + tRes.tested("exists()",false); + } + + } //EOF exists() + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <b>XSimpleFileAccess.txt</b> + * file used.<p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value and no exceptions were thrown. <p> + */ + public void _openFileRead() { + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String filename = dirname+"XSimpleFileAccess.txt"; + com.sun.star.io.XInputStream iStream = oObj.openFileRead(filename); + tRes.tested("openFileRead()", iStream != null); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'openFileRead()'"); + ex.printStackTrace(log); + tRes.tested("openFileRead()",false); + } + + } //EOF openFileRead() + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <b>XSimpleFileAccess.txt</b> + * file used.<p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value and no exceptions were thrown. <p> + */ + public void _openFileWrite() { + try { + String tmpdirname = util.utils.getOfficeTemp(tParam.getMSF()) ; + + String copiedFile = tmpdirname+"XSimpleFileAccess_openWrite.txt"; + + if (oObj.exists(copiedFile)) + oObj.kill(copiedFile); + + com.sun.star.io.XOutputStream oStream = + oObj.openFileWrite(copiedFile); + + oStream.closeOutput(); + oObj.kill(copiedFile); + + tRes.tested("openFileWrite()", true); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'openFileWrite()'"); + ex.printStackTrace(log); + tRes.tested("openFileWrite()", false); + } + + } //EOF openFileWrite() + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <b>XSimpleFileAccess2.txt</b> + * file used.<p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value and no exceptions were thrown. <p> + */ + public void _openFileReadWrite() { + try { + String dirnameTo = util.utils.getOfficeTemp(tParam.getMSF()) ; + String copiedFile = dirnameTo + "XSimpleFileAccess2.txt" ; + + if (oObj.exists(copiedFile)) + oObj.kill(copiedFile); + + com.sun.star.io.XStream aStream = + oObj.openFileReadWrite(copiedFile); + + aStream.getInputStream().closeInput(); + aStream.getOutputStream().closeOutput(); + + oObj.kill(copiedFile); + + tRes.tested("openFileReadWrite()", true); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'openFileReadWrite()'"); + ex.printStackTrace(log); + tRes.tested("openFileReadWrite()", false); + } + + } //EOF openFileReadWrite() + + /** + * Test calls the method and checks that no exceptions were thrown. + * Has <b> OK </b> status if no exceptions were thrown. <p> + */ + public void _setInteractionHandler() { + XInteractionHandler handler = null; + Object oHandler = tEnv.getObjRelation("InteractionHandler"); + + if (oHandler == null) + throw new StatusException + (Status.failed("Relation InteractionHandler not found")); + + try { + handler = UnoRuntime.queryInterface + (XInteractionHandler.class, oHandler); + oObj.setInteractionHandler(handler); + tRes.tested("setInteractionHandler()", true); + } catch (Exception ex) { + log.println("Exception occurred while testing 'setInteractionHandler()'"); + ex.printStackTrace(log); + tRes.tested("setInteractionHandler()", false); + } + + } //EOF setInteractionHandler() + +} // finish class _XSimpleFileAccess + diff --git a/qadevOOo/tests/java/ifc/ucb/_XSimpleFileAccess2.java b/qadevOOo/tests/java/ifc/ucb/_XSimpleFileAccess2.java new file mode 100644 index 0000000000..6e1acd537d --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XSimpleFileAccess2.java @@ -0,0 +1,70 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.io.XInputStream; +import com.sun.star.ucb.XSimpleFileAccess2; + +/** +* Testing <code>com.sun.star.ucb.XSimpleFileAccess2</code> +* interface methods. <p> +* @see com.sun.star.ucb.XSimpleFileAccess2 +*/ +public class _XSimpleFileAccess2 extends MultiMethodTest { + + public static XSimpleFileAccess2 oObj = null; + + /** + * Writes <b>XSimpleFileAccess_new.txt</b> to disk, checks + * if it was successfully created and then deletes it. <p> + * Has <b> OK </b> status if after method call the file + * exists and no exceptions were thrown. <p> + */ + public void _writeFile() { + boolean result = true; + try { + String dirnameTo = util.utils.getOfficeTemp(tParam.getMSF()) ; + String fileURL = dirnameTo + "XSimpleFileAccess_new.txt"; + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String filename = dirname+"XSimpleFileAccess.txt"; + XInputStream iStream = oObj.openFileRead(filename); + oObj.writeFile(fileURL,iStream); + util.utils.pause(1000); + result = oObj.exists(fileURL); + oObj.kill(fileURL); + tRes.tested("writeFile()",result); + } + catch (com.sun.star.ucb.CommandAbortedException ex) { + log.println("CommandAbortedException occurred while testing "+ + "'writeFile()'"); + ex.printStackTrace(log); + tRes.tested("writeFile()",false); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'writeFile()'"); + ex.printStackTrace(log); + tRes.tested("writeFile()",false); + } + + } //EOF writeFile() + +} // finish class _XSimpleFileAccess + diff --git a/qadevOOo/tests/java/ifc/ucb/_XSortedDynamicResultSetFactory.java b/qadevOOo/tests/java/ifc/ucb/_XSortedDynamicResultSetFactory.java new file mode 100644 index 0000000000..588a05129a --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XSortedDynamicResultSetFactory.java @@ -0,0 +1,150 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ucb; + +import com.sun.star.beans.Property; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.sdbc.XResultSet; +import com.sun.star.ucb.Command; +import com.sun.star.ucb.NumberedSortingInfo; +import com.sun.star.ucb.OpenCommandArgument2; +import com.sun.star.ucb.OpenMode; +import com.sun.star.ucb.XCommandProcessor; +import com.sun.star.ucb.XContent; +import com.sun.star.ucb.XContentIdentifier; +import com.sun.star.ucb.XContentIdentifierFactory; +import com.sun.star.ucb.XContentProvider; +import com.sun.star.ucb.XDynamicResultSet; +import com.sun.star.ucb.XSortedDynamicResultSetFactory; +import com.sun.star.uno.UnoRuntime; +import lib.MultiMethodTest; + +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; + +/** +* Testing <code>com.sun.star.ucb.XSortedDynamicResultSetFactory</code> +* interface methods : +* <ul> +* <li><code> createSortedDynamicResultSet()</code></li> +* </ul> <p> +* The following predefined files needed to complete the test: +* <ul> +* <li> <code>solibrary.jar</code> : is used to retrieve +* content of its root directory.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XSortedDynamicResultSetFactory +*/ +public class _XSortedDynamicResultSetFactory extends MultiMethodTest { + + /** + * Contains the tested object. + */ + public XSortedDynamicResultSetFactory oObj; + + /** + * Creates sorted dynamic result set from result set. For this + * a dynamic result set is to be created. It is created by + * retrieving content list from JAR archive. + * Has <b>OK</b> status if numbers of rows are equal and they are + * greater than 0 (because JAR file contains at least one entry). + */ + public void _createSortedDynamicResultSet() { + boolean result = true ; + + XMultiServiceFactory xMSF = tParam.getMSF(); + XDynamicResultSet dynResSet = null ; + try { + Object oUCB = xMSF.createInstanceWithArguments + ("com.sun.star.ucb.UniversalContentBroker", + new Object[0]) ; + + XContentIdentifierFactory ciFac = UnoRuntime.queryInterface + (XContentIdentifierFactory.class,oUCB) ; + + String url = util.utils.getFullTestURL("SwXTextEmbeddedObject.sxw") ; + StringBuilder escUrl = new StringBuilder(); + + // In base URL of a JAR file in content URL all directory + // separators ('/') must be replaced with escape symbol '%2F'. + int idx = url.indexOf("/") ; + int lastIdx = -1 ; + while (idx >= 0) { + escUrl.append(url.substring(lastIdx + 1, idx)).append("%2F"); + lastIdx = idx ; + idx = url.indexOf("/", idx + 1) ; + } + escUrl.append(url.substring(lastIdx + 1)); + String cntUrl = "vnd.sun.star.pkg://" + escUrl.toString() + "/" ; + + XContentIdentifier CI = ciFac.createContentIdentifier(cntUrl) ; + + XContentProvider cntProv = UnoRuntime.queryInterface(XContentProvider.class, oUCB) ; + + XContent cnt = cntProv.queryContent(CI) ; + + XCommandProcessor cmdProc = UnoRuntime.queryInterface(XCommandProcessor.class, cnt) ; + + Property prop = new Property() ; + prop.Name = "Title" ; + + Command cmd = new Command("open", -1, new OpenCommandArgument2 + (OpenMode.ALL, 10000, null, new Property[] {prop}, + new NumberedSortingInfo[0])) ; + + dynResSet = (XDynamicResultSet) AnyConverter.toObject( + new Type(XDynamicResultSet.class),cmdProc.execute(cmd, 0, null)); + } catch (com.sun.star.uno.Exception e) { + e.printStackTrace(log); + } + + XDynamicResultSet sortedSet = oObj.createSortedDynamicResultSet + (dynResSet, new NumberedSortingInfo[0], null) ; + + int rowCount = -1 ; + if (sortedSet != null) { + XResultSet set = null ; + try { + set = sortedSet.getStaticResultSet() ; + } catch (com.sun.star.ucb.ListenerAlreadySetException e) { + e.printStackTrace(log); + } + + try { + set.last() ; + rowCount = set.getRow(); + log.println("Number of rows in result set: " + rowCount); + } catch (com.sun.star.sdbc.SQLException e) { + log.println("Exception occurred while accessing "+ + "sorted result set :"); + e.printStackTrace(log); + } + } else { + log.println("Null returned !!!"); + result &= false ; + } + + result &= rowCount > 1 ; + + tRes.tested("createSortedDynamicResultSet()", result) ; + } + + +} diff --git a/qadevOOo/tests/java/ifc/ui/_XContextMenuInterception.java b/qadevOOo/tests/java/ifc/ui/_XContextMenuInterception.java new file mode 100644 index 0000000000..0628107305 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XContextMenuInterception.java @@ -0,0 +1,201 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + + +package ifc.ui; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleComponent; +import com.sun.star.accessibility.XAccessibleContext; +import com.sun.star.awt.Point; +import com.sun.star.awt.Rectangle; +import com.sun.star.awt.XExtendedToolkit; +import com.sun.star.awt.XWindow; +import com.sun.star.frame.XModel; +import com.sun.star.lang.IndexOutOfBoundsException; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.ui.XContextMenuInterception; +import com.sun.star.ui.XContextMenuInterceptor; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; +import helper.ContextMenuInterceptor; +import java.awt.Robot; +import java.awt.event.InputEvent; +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import util.AccessibilityTools; +import util.DesktopTools; + +public class _XContextMenuInterception extends MultiMethodTest { + + private XModel docModel = null; + private XContextMenuInterceptor xCI = null; + public XContextMenuInterception oObj = null; + private XWindow xWindow = null; + private XMultiServiceFactory xMSF = null; + private Point point = null; + + @Override + public void before() { + docModel = UnoRuntime.queryInterface( + XModel.class,tEnv.getObjRelation("FirstModel")); + + xCI = UnoRuntime.queryInterface( + XContextMenuInterceptor.class, new ContextMenuInterceptor()); + + xMSF = tParam.getMSF(); + + //ensure that the first model is focused + + log.println("ensure that the first model is focused"); + DesktopTools.bringWindowToFront(docModel); + + waitForEventIdle(); + } + + @Override + public void after() { + if (xCI != null) { + oObj.releaseContextMenuInterceptor(xCI); + } + } + + public void _registerContextMenuInterceptor() { + oObj.registerContextMenuInterceptor(xCI); + openContextMenu(docModel); + boolean res = checkHelpEntry(); + releasePopUp(); + tRes.tested("registerContextMenuInterceptor()",res); + } + + public void _releaseContextMenuInterceptor() { + requiredMethod("registerContextMenuInterceptor()"); + oObj.releaseContextMenuInterceptor(xCI); + openContextMenu(docModel); + boolean res = checkHelpEntry(); + releasePopUp(); + tRes.tested("releaseContextMenuInterceptor()",!res); + } + + private boolean checkHelpEntry(){ + XInterface toolkit = null; + boolean res = true; + + log.println("get accessibility..."); + try{ + toolkit = (XInterface) xMSF.createInstance("com.sun.star.awt.Toolkit"); + } catch (com.sun.star.uno.Exception e){ + log.println("could not get Toolkit " + e.toString()); + } + XExtendedToolkit tk = UnoRuntime.queryInterface( + XExtendedToolkit.class, toolkit); + + XAccessible xRoot = null; + + try { + xWindow = UnoRuntime.queryInterface(XWindow.class, + tk.getTopWindow(0)); + + xRoot = AccessibilityTools.getAccessibleObject(xWindow); + AccessibilityTools.printAccessibleTree(log, xRoot, tParam.getBool(util.PropertyName.DEBUG_IS_ACTIVE)); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Couldn't get Window"); + } + + XAccessibleContext oPopMenu = AccessibilityTools.getAccessibleObjectForRole(xRoot, AccessibleRole.POPUP_MENU,true); + + log.println("ImplementationName: " + util.utils.getImplName(oPopMenu)); + + XAccessible xHelp = null; + try{ + log.println("Try to get second entry of context menu..."); + xHelp = oPopMenu.getAccessibleChild(1); + + } catch (IndexOutOfBoundsException e){ + throw new StatusException("Not possible to get second entry of context menu",e); + } + + if (xHelp == null) throw new StatusException(new Status("second entry of context menu is NULL", false)); + + XAccessibleContext xHelpCont = xHelp.getAccessibleContext(); + + if ( xHelpCont == null ) + throw new StatusException(new Status("No able to retrieve accessible context from first entry of context menu",false)); + + String aAccessibleName = xHelpCont.getAccessibleName(); + if ( !aAccessibleName.equals( "Help" )) { + log.println("Accessible name found = "+aAccessibleName ); + log.println("Second entry of context menu is not from context menu interceptor"); + res=false; + } + + return res; + + } + + private void openContextMenu(XModel xModel){ + + log.println("try to open context menu..."); + + xWindow = AccessibilityTools.getCurrentWindow(xModel); + + XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); + + XInterface oObj = AccessibilityTools.getAccessibleObjectForRole(xRoot, AccessibleRole.PANEL); + + XAccessibleComponent window = UnoRuntime.queryInterface( + XAccessibleComponent.class, oObj); + + point = window.getLocationOnScreen(); + Rectangle rect = window.getBounds(); + + log.println("click mouse button..."); + try { + Robot rob = new Robot(); + int x = point.X + (rect.Width / 2); + int y = point.Y + (rect.Height / 2); + rob.mouseMove(x, y); + System.out.println("Press Button"); + rob.mousePress(InputEvent.BUTTON3_MASK); + System.out.println("Release Button"); + rob.mouseRelease(InputEvent.BUTTON3_MASK); + System.out.println("done"); + } catch (java.awt.AWTException e) { + log.println("couldn't press mouse button"); + } + + waitForEventIdle(); + + } + + private void releasePopUp() { + log.println("release the popup menu"); + try { + Robot rob = new Robot(); + int x = point.X; + int y = point.Y; + rob.mouseMove(x, y); + rob.mousePress(InputEvent.BUTTON1_MASK); + rob.mouseRelease(InputEvent.BUTTON1_MASK); + } catch (java.awt.AWTException e) { + log.println("couldn't press mouse button"); + } + } +} diff --git a/qadevOOo/tests/java/ifc/ui/_XModuleUIConfigurationManager.java b/qadevOOo/tests/java/ifc/ui/_XModuleUIConfigurationManager.java new file mode 100644 index 0000000000..ec3a14d6b2 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XModuleUIConfigurationManager.java @@ -0,0 +1,73 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui; + +import com.sun.star.container.XIndexAccess; +import com.sun.star.ui.XModuleUIConfigurationManager; +import lib.MultiMethodTest; + +public class _XModuleUIConfigurationManager extends MultiMethodTest { + + public XModuleUIConfigurationManager oObj = null; + private String resourceUrl = null; + + @Override + public void before() { + resourceUrl = (String)tEnv.getObjRelation("XModuleUIConfigurationManager.ResourceURL"); + } + + public void _isDefaultSettings() { + boolean result; + try { + result = oObj.isDefaultSettings(resourceUrl); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("'" + resourceUrl + "' is an illegal resource."); + result = false; + } + String notPossibleUrl = "private:resource/menubar/dingsbums"; + try { + result &= !oObj.isDefaultSettings(notPossibleUrl); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("'" + notPossibleUrl + "' is an illegal resource."); + result = false; + } + + tRes.tested("isDefaultSettings()", result); + } + + public void _getDefaultSettings() { + boolean result; + try { + XIndexAccess xIndexAcc = oObj.getDefaultSettings(resourceUrl); + result = xIndexAcc != null; + } + catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("'" + resourceUrl + "' is an illegal resource."); + result = false; + } + catch(com.sun.star.container.NoSuchElementException e) { + log.println("No resource '" + resourceUrl + "' available."); + result = false; + } + tRes.tested("getDefaultSettings()", result); + } + +} diff --git a/qadevOOo/tests/java/ifc/ui/_XModuleUIConfigurationManagerSupplier.java b/qadevOOo/tests/java/ifc/ui/_XModuleUIConfigurationManagerSupplier.java new file mode 100644 index 0000000000..8a9dfe7b3b --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XModuleUIConfigurationManagerSupplier.java @@ -0,0 +1,55 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui; + +import com.sun.star.lang.XServiceInfo; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.ui.XModuleUIConfigurationManagerSupplier; +import lib.MultiMethodTest; + +public class _XModuleUIConfigurationManagerSupplier extends MultiMethodTest { + + public XModuleUIConfigurationManagerSupplier oObj; + + public void _getUIConfigurationManager() { + String configManagerName = null; + String implementationName = null; + try { + configManagerName = (String)tEnv.getObjRelation("XModuleUIConfigurationManagerSupplier.ConfigurationManager"); + implementationName = (String)tEnv.getObjRelation("XModuleUIConfigurationManagerSupplier.ConfigManagerImplementationName"); + + // get a config manager for the StartModule + Object o = oObj.getUIConfigurationManager(configManagerName); + XServiceInfo xServiceInfo = UnoRuntime.queryInterface(XServiceInfo.class, o); + String impName = xServiceInfo.getImplementationName(); + boolean result = impName.equals(implementationName); + if (!result) { + log.println("Returned implementation was '" + impName + + "' but should have been '" + implementationName + "'"); + } + tRes.tested("getUIConfigurationManager()", result); + return; + } + catch(com.sun.star.container.NoSuchElementException e) { + log.println("Could not get a configuration manager called '" + configManagerName + "'"); + e.printStackTrace(log); + } + tRes.tested("getUIConfigurationManager()", false); + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/ui/_XUIConfiguration.java b/qadevOOo/tests/java/ifc/ui/_XUIConfiguration.java new file mode 100644 index 0000000000..73290288c8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XUIConfiguration.java @@ -0,0 +1,94 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui; + +import com.sun.star.ui.XUIConfiguration; +import com.sun.star.ui.XUIConfigurationListener; +import lib.MultiMethodTest; + +/** +* Testing <code>com.sun.star.ui.XUIConfiguration</code> +* interface methods : +* <ul> +* <li><code> addConfigurationListener()</code></li> +* <li><code> removeConfigurationListener()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* After test completion object environment has to be recreated. +* @see com.sun.star.ui.XUIConfiguration +*/ + +public class _XUIConfiguration extends MultiMethodTest { + + public XUIConfiguration oObj; + XUIConfigurationListenerImpl xListener = null; + + /** + * Interface for the Listener of the object relation + * <CODE>XUIConfiguration.XUIConfigurationListenerImpl</CODE> + * @see com.sun.star.ui.XUIConfigurationListener + */ + public interface XUIConfigurationListenerImpl + extends XUIConfigurationListener { + void reset(); + void fireEvent(); + boolean actionWasTriggered(); + } + + + /** + * try to get a listener out of the object relation + * <CODE>XUIConfiguration.XUIConfigurationListenerImpl</CODE> + */ + @Override + public void before() { + xListener = (XUIConfigurationListenerImpl)tEnv.getObjRelation( + "XUIConfiguration.XUIConfigurationListenerImpl"); + } + + /** + * adds a listener and fires an event + * Has <B>OK</B> status if listener was called + */ + public void _addConfigurationListener() { + oObj.addConfigurationListener(xListener); + xListener.fireEvent(); + tRes.tested("addConfigurationListener()", xListener.actionWasTriggered()); + } + + /** + * removes the listener and calls an event. + * Has <B>OK</B> status if listener is not called. + */ + public void _removeConfigurationListener() { + requiredMethod("addConfigurationListener()"); + oObj.removeConfigurationListener(xListener); + xListener.reset(); + xListener.fireEvent(); + tRes.tested("removeConfigurationListener()", !xListener.actionWasTriggered()); + } + + /** + * Dispose because the UIConfigurationManager has to be recreated + */ + @Override + public void after() { + disposeEnvironment(); + } +} diff --git a/qadevOOo/tests/java/ifc/ui/_XUIConfigurationListener.java b/qadevOOo/tests/java/ifc/ui/_XUIConfigurationListener.java new file mode 100644 index 0000000000..b1ef75528d --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XUIConfigurationListener.java @@ -0,0 +1,44 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui; + +import com.sun.star.ui.ConfigurationEvent; +import com.sun.star.ui.XUIConfigurationListener; +import lib.MultiMethodTest; + +public class _XUIConfigurationListener extends MultiMethodTest { + + public XUIConfigurationListener oObj = null; + + public void _elementInserted() { + ConfigurationEvent event = new ConfigurationEvent(); + oObj.elementInserted(event); + tRes.tested("elementInserted()", true); + } + public void _elementRemoved() { + ConfigurationEvent event = new ConfigurationEvent(); + oObj.elementRemoved(event); + tRes.tested("elementRemoved()", true); + } + public void _elementReplaced() { + ConfigurationEvent event = new ConfigurationEvent(); + oObj.elementReplaced(event); + tRes.tested("elementReplaced()", true); + } +} diff --git a/qadevOOo/tests/java/ifc/ui/_XUIConfigurationManager.java b/qadevOOo/tests/java/ifc/ui/_XUIConfigurationManager.java new file mode 100644 index 0000000000..83923634be --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XUIConfigurationManager.java @@ -0,0 +1,354 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.ui; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XIndexContainer; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.lang.XServiceInfo; +import com.sun.star.lang.XSingleComponentFactory; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XComponentContext; +import com.sun.star.ui.UIElementType; +import com.sun.star.ui.XImageManager; +import com.sun.star.ui.XUIConfigurationManager; +import java.io.PrintWriter; +import lib.MultiMethodTest; + +public class _XUIConfigurationManager extends MultiMethodTest { + + public XUIConfigurationManager oObj; + private static final String msResourceUrl = "private:resource/menubar/menubar"; + private static final String msMyResourceUrl = "private:resource/menubar/mymenubar"; + private XIndexContainer mxSettings = null; + private XIndexAccess mxMenuBarSettings = null; + private XMultiServiceFactory mxMSF = null; + private String sShortCutManagerServiceName = null; + + + /** + * Some stuff before the tests: + * extract the multi service factory. + */ + @Override + protected void before() { + mxMSF = tParam.getMSF(); + sShortCutManagerServiceName = (String)tEnv.getObjRelation("XConfigurationManager.ShortCutManager"); + + } + + /** + * reset all changes: do at the end. + */ + public void _reset() { + requiredMethod("removeSettings()"); + oObj.reset(); + tRes.tested("reset()", true); + } + + public void _getUIElementsInfo() { + boolean result = true; + try { + PropertyValue[][]props = oObj.getUIElementsInfo(UIElementType.UNKNOWN); + for (int i=0; i<props.length; i++) + for(int j=0; j<props[i].length; j++) + log.println("Prop["+i+"]["+j+"]: " + props[i][j].Name + " " + props[i][j].Value.toString()); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + result = false; + e.printStackTrace(log); + } + tRes.tested("getUIElementsInfo()", result); + } + + public void _createSettings() { + mxSettings = oObj.createSettings(); + util.dbg.printInterfaces(mxSettings); + tRes.tested("createSettings()", mxSettings != null); + } + + public void _hasSettings() { + boolean result = false; + try { + result = oObj.hasSettings(msResourceUrl); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + log.println(e); + result = false; + } + tRes.tested("hasSettings()", result); + } + + public void _getSettings() { + requiredMethod("hasSettings()"); + boolean result = true; + try { + mxMenuBarSettings = oObj.getSettings(msResourceUrl, true); + for (int i=0; i<mxMenuBarSettings.getCount(); i++) { + Object[] o = (Object[])mxMenuBarSettings.getByIndex(i); + log.println("+++++++++ i = " + i); + for (int j=0; j<o.length; j++) { + PropertyValue prop = (PropertyValue)o[j]; + log.println("Property" + j + ": " + prop.Name + " " + prop.Value.toString()); + } + } + } + catch(com.sun.star.container.NoSuchElementException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IndexOutOfBoundsException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.WrappedTargetException e) { + result = false; + e.printStackTrace(log); + } + tRes.tested("getSettings()", result); + } + + public void _replaceSettings() { + requiredMethod("getSettings()"); + boolean result = true; + PropertyValue[] prop = createMenuBarEntry("My Entry", mxMenuBarSettings, mxMSF, log); + if (prop == null) { + tRes.tested("replaceSettings()", false); + return; + } + + createMenuBarItem("Click for Macro", UnoRuntime.queryInterface( + XIndexContainer.class, prop[3].Value), log); + + XIndexContainer x = UnoRuntime.queryInterface(XIndexContainer.class, mxMenuBarSettings); + try { + x.insertByIndex(x.getCount(), prop); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IndexOutOfBoundsException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.WrappedTargetException e) { + result = false; + e.printStackTrace(log); + } + + try { + oObj.replaceSettings(msResourceUrl, mxMenuBarSettings); + } + catch(com.sun.star.container.NoSuchElementException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IllegalAccessException e) { + result = false; + e.printStackTrace(log); + } + _getSettings(); + tRes.tested("replaceSettings()", result); + } + + public void _removeSettings() { + requiredMethod("insertSettings()"); + boolean result = true; + try { + oObj.removeSettings(msMyResourceUrl); + } + catch(com.sun.star.container.NoSuchElementException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IllegalAccessException e) { + e.printStackTrace(log); + result = false; + } + tRes.tested("removeSettings()", result); + } + + public void _insertSettings() { + requiredMethod("createSettings()"); + requiredMethod("replaceSettings()"); + boolean result = true; + util.dbg.printInterfaces(mxSettings); + PropertyValue[] prop = createMenuBarEntry("A new entry", mxSettings, mxMSF, log); + if (prop == null) { + tRes.tested("replaceSettings()", false); + return; + } + + createMenuBarItem("A new sub entry", UnoRuntime.queryInterface( + XIndexContainer.class, prop[3].Value), log); + + XIndexContainer x = UnoRuntime.queryInterface(XIndexContainer.class,mxSettings); + try { + int count = x.getCount(); + x.insertByIndex(count, prop); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IndexOutOfBoundsException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.WrappedTargetException e) { + result = false; + e.printStackTrace(log); + } + + try { + oObj.insertSettings(msMyResourceUrl, mxSettings); + } + catch(com.sun.star.container.ElementExistException e) { + e.printStackTrace(log); + result = false; + } + catch(com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log); + result = false; + } + catch(com.sun.star.lang.IllegalAccessException e) { + e.printStackTrace(log); + result = false; + } + tRes.tested("insertSettings()", result); + } + + /** + * Only a short test. + * See complex.imageManager.CheckImageManager for a more extensive test of + * this implementation. + */ + public void _getImageManager() { + Object o = oObj.getImageManager(); + log.println("###### ImageManager "); + XImageManager xImageManager = UnoRuntime.queryInterface(XImageManager.class, o); + tRes.tested("getImageManager()", xImageManager != null); + } + + + /** + * get a shortcut manager + */ + public void _getShortCutManager() { + Object o = oObj.getShortCutManager(); + XServiceInfo xSI = UnoRuntime.queryInterface(XServiceInfo.class,o); + String[] serviceNames = xSI.getSupportedServiceNames(); + boolean bSupportedServiceFound = false; + for (int i=0; i<serviceNames.length; i++) { + log.println("SuppService: " + serviceNames[i]); + if (serviceNames[i].equals(sShortCutManagerServiceName)) { + bSupportedServiceFound = true; + } + } + tRes.tested("getShortCutManager()", bSupportedServiceFound); + } + + public void _getEventsManager() { + Object o = oObj.getEventsManager(); + tRes.tested("getEventsManager()", o == null); + } + + /** + * Create a menu bar entry for adding to the menu bar of the Office. + * @param sLabelName The name of the new entry. + * @param xMenuBarSettings The existing menu bar settings, used for creating the new entry. + * @return An array of properties of the new entry. + */ + public static PropertyValue[] createMenuBarEntry(String sLabelName, XIndexAccess xMenuBarSettings, XMultiServiceFactory xMSF, PrintWriter log) { + PropertyValue[] prop = new PropertyValue[4]; + prop[0] = new PropertyValue(); + prop[0].Name = "CommandURL"; + prop[0].Value = "vnd.openoffice.org:MyMenu"; + prop[1] = new PropertyValue(); + prop[1].Name = "Label"; + prop[1].Value = sLabelName; + prop[2] = new PropertyValue(); + prop[2].Name = "Type"; + prop[2].Value = Short.valueOf((short)0); + prop[3] = new PropertyValue(); + prop[3].Name = "ItemDescriptorContainer"; + + XSingleComponentFactory xFactory = UnoRuntime.queryInterface( + XSingleComponentFactory.class, xMenuBarSettings); + try { + XPropertySet xProp = UnoRuntime.queryInterface(XPropertySet.class, xMSF); + XComponentContext xContext = UnoRuntime.queryInterface( + XComponentContext.class, xProp.getPropertyValue("DefaultContext")); + prop[3].Value = xFactory.createInstanceWithContext(xContext); + } + catch(com.sun.star.uno.Exception e) { + log.println("Could not create an instance for ItemDescriptorContainer property."); + e.printStackTrace(log); + return null; + } + return prop; + } + + /** + * Create a sub entry to the menu bar. + * @param sLabelName The name of the entry in the UI. + * @param xDescriptionContainer The parent entry in the menu bar where + * this entry is added. + */ + public static void createMenuBarItem(String sLabelName, XIndexContainer xDescriptionContainer, PrintWriter log) { + PropertyValue[]aMenuItem = new PropertyValue[3]; + // create a menu item + aMenuItem[0] = new PropertyValue(); + aMenuItem[0].Name = "CommandURL"; + aMenuItem[0].Value = "macro:///Standard.Module1.Test()"; + aMenuItem[1] = new PropertyValue(); + aMenuItem[1].Name = "Label"; + aMenuItem[1].Value = sLabelName; + aMenuItem[2] = new PropertyValue(); + aMenuItem[2].Name = "Type"; + aMenuItem[2].Value = Short.valueOf((short)0); + + try { + xDescriptionContainer.insertByIndex(0, aMenuItem); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log); + } + catch(com.sun.star.lang.IndexOutOfBoundsException e) { + e.printStackTrace(log); + } + catch(com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + } + } +} diff --git a/qadevOOo/tests/java/ifc/ui/_XUIConfigurationPersistence.java b/qadevOOo/tests/java/ifc/ui/_XUIConfigurationPersistence.java new file mode 100644 index 0000000000..a7a7b5c436 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XUIConfigurationPersistence.java @@ -0,0 +1,75 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui; + +import com.sun.star.embed.XStorage; +import com.sun.star.ui.XUIConfigurationPersistence; +import lib.MultiMethodTest; + +public class _XUIConfigurationPersistence extends MultiMethodTest { + + public XUIConfigurationPersistence oObj; + private XStorage xStore = null; + + @Override + public void before() { + xStore = (XStorage)tEnv.getObjRelation("XUIConfigurationStorage.Storage"); + } + + public void _reload() { + try { + oObj.reload(); + } + catch(com.sun.star.uno.Exception e) { + e.printStackTrace(log); + } + tRes.tested("reload()", true); + } + + public void _store() { + try { + oObj.store(); + } + catch(com.sun.star.uno.Exception e) { + e.printStackTrace(log); + } + tRes.tested("store()", true); + } + + public void _storeToStorage() { + boolean result = true; + try { + oObj.storeToStorage(xStore); + } + catch(com.sun.star.uno.Exception e) { + result = false; + e.printStackTrace(log); + } + tRes.tested("storeToStorage()", result); + } + + public void _isModified() { + tRes.tested("isModified()", !oObj.isModified()); + } + + public void _isReadOnly() { + tRes.tested("isReadOnly()", !oObj.isReadOnly()); + } + +} diff --git a/qadevOOo/tests/java/ifc/ui/_XUIConfigurationStorage.java b/qadevOOo/tests/java/ifc/ui/_XUIConfigurationStorage.java new file mode 100644 index 0000000000..1e40a0577e --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XUIConfigurationStorage.java @@ -0,0 +1,68 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui; + +import com.sun.star.embed.XStorage; +import com.sun.star.ui.XUIConfigurationStorage; +import lib.MultiMethodTest; +/** +* Testing <code>com.sun.star.ui.XUIConfigurationStorage</code> +* interface methods : +* <ul> +* <li><code> setStorage()</code></li> +* <li><code> hasStorage()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ui.XUIConfigurationStorage +*/ + +public class _XUIConfigurationStorage extends MultiMethodTest { + + public XUIConfigurationStorage oObj; + private XStorage xStore = null; + + @Override + public void before() { + xStore = (XStorage)tEnv.getObjRelation("XUIConfigurationStorage.Storage"); + } + + /** + * Set the object relation <code>XUIConfigurationStorage.Storage</code> + * as storage. + * Has <b>OK</b> status if no exception is thrown. + */ + public void _setStorage() { + if (!oObj.hasStorage()) + oObj.setStorage(xStore); + else + log.println("For initializing this object, the setStorage() method was already called at the object."); + tRes.tested("setStorage()", true); + } + + /** + * Queries object for a storage. + * Has <b>OK</b> status if <code>hasStorage</code> returns <code>OK</code> + */ + public void _hasStorage() { + requiredMethod("setStorage()"); + boolean has = oObj.hasStorage(); + tRes.tested("hasStorage()", has); + } + +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/ui/_XUIElementFactory.java b/qadevOOo/tests/java/ifc/ui/_XUIElementFactory.java new file mode 100644 index 0000000000..1883c081d9 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XUIElementFactory.java @@ -0,0 +1,47 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.ui.XUIElement; +import com.sun.star.ui.XUIElementFactory; +import lib.MultiMethodTest; + +public class _XUIElementFactory extends MultiMethodTest { + + public XUIElementFactory oObj; + + public void _createUIElement() { + boolean result = true; + PropertyValue[] prop = new PropertyValue[0]; + try { + XUIElement element = oObj.createUIElement("private:resource/menubar/menubar", prop); + result = (element!= null); + } + catch(com.sun.star.container.NoSuchElementException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + result = false; + e.printStackTrace(log); + } + tRes.tested("createUIElement()", result); + } +} diff --git a/qadevOOo/tests/java/ifc/ui/_XUIElementFactoryRegistration.java b/qadevOOo/tests/java/ifc/ui/_XUIElementFactoryRegistration.java new file mode 100644 index 0000000000..e2540e49dd --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XUIElementFactoryRegistration.java @@ -0,0 +1,72 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.ui.XUIElementFactory; +import com.sun.star.ui.XUIElementFactoryRegistration; +import lib.MultiMethodTest; + +public class _XUIElementFactoryRegistration extends MultiMethodTest { + + public XUIElementFactoryRegistration oObj; + + public void _registerFactory() { + boolean result = true; + try { + oObj.registerFactory("private:resource/menubar/menubar", "MyOwnMenubar", "", "com.sun.star.comp.framework.MenuBarFactory"); + } + catch(com.sun.star.container.ElementExistException e) { + result = false; + e.printStackTrace(log); + } + tRes.tested("registerFactory()", result); + } + + public void _getRegisteredFactories() { + requiredMethod("registerFactory()"); + PropertyValue[][]props = oObj.getRegisteredFactories(); + if (props == null) { + log.println("Null was returned as PropertyValue[][]"); + props = new PropertyValue[0][0]; + } + for(int i=0; i<props.length; i++) + for(int j=0; j<props[i].length; j++) + log.println("Factory: " + props[i][j].Name + " - " + props[i][j].Value); + tRes.tested("getRegisteredFactories()", props.length != 0); + } + + public void _getFactory() { + requiredMethod("registerFactory()"); + XUIElementFactory xFactory = oObj.getFactory("private:resource/menubar/menubar", ""); + tRes.tested("getFactory()", xFactory != null); + } + + public void _deregisterFactory() { + executeMethod("getRegisteredFactory()"); + executeMethod("getFactory()"); + try { + oObj.deregisterFactory("private:resource/menubar/menubar", "MyOwnMenubar", ""); + } + catch(com.sun.star.container.NoSuchElementException e) { + e.printStackTrace(log); + } + tRes.tested("deregisterFactory()", true); + } +} diff --git a/qadevOOo/tests/java/ifc/ui/dialogs/_FilePicker.java b/qadevOOo/tests/java/ifc/ui/dialogs/_FilePicker.java new file mode 100644 index 0000000000..32f8c1f166 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/dialogs/_FilePicker.java @@ -0,0 +1,27 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui.dialogs; + +import lib.MultiPropertyTest; + +public class _FilePicker extends MultiPropertyTest { + + +} // EOF Calendar + diff --git a/qadevOOo/tests/java/ifc/ui/dialogs/_XControlAccess.java b/qadevOOo/tests/java/ifc/ui/dialogs/_XControlAccess.java new file mode 100644 index 0000000000..e290ab4d91 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/dialogs/_XControlAccess.java @@ -0,0 +1,133 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui.dialogs; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.ui.dialogs.XControlAccess; +import com.sun.star.ui.dialogs.XControlInformation; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.ui.XFilePicker</code> +* interface methods : +* <ul> +* <li><code> setControlProperty()</code></li> +* <li><code> getControlProperty()</code></li> +* </ul> <p> +* +* For testing this interface the component must implement +* <code>com.sun.star.ui.dialogs.XControlInformation</code> +* interface. <p> +* +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ui.XFolderPicker +*/ +public class _XControlAccess extends MultiMethodTest { + + public XControlAccess oObj = null; + private String[] supControls = null ; + private String[][] supProperties = null ; + + /** + * Tries to query <code>com.sun.star.ui.dialogs.XControlInformation</code> + * interface, and obtain properties' names of each available + * control. <p> + * + * @throw StatusException if interface is not supported or + * properties couldn't be get. + */ + @Override + protected void before() { + XControlInformation xCI = UnoRuntime.queryInterface + (XControlInformation.class, oObj); + + if (xCI == null) throw new StatusException + (Status.failed("XControlInformation not supported")) ; + + supControls = xCI.getSupportedControls(); + supProperties = new String[supControls.length][]; + for (int i = 0; i < supControls.length; i++) { + try { + supProperties[i] = + xCI.getSupportedControlProperties(supControls[i]); + } catch (com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log); + throw new StatusException + ("Exception while init.", e) ; + } + } + } + + /** + * Tries to change each property of each control. + * Has <b>OK</b> status if values are properly changed. + */ + public void _setControlProperty() { + boolean result = true ; + String error = ""; + + for (int i = 0; i < supControls.length; i++) { + log.println("Checking properties for control " + supControls[i]); + for (int j = 0; j < supProperties[i].length; j++) { + log.println("\t" + supProperties[i][j]); + try { + Object oldVal = oObj.getControlProperty(supControls[i], + supProperties[i][j]); + Object newVal = util.ValueChanger.changePValue(oldVal); + if (supProperties[i][j].startsWith("Help")) { + newVal = "HID:133"; + } + oObj.setControlProperty + (supControls[i], supProperties[i][j], newVal) ; + Object resVal = oObj.getControlProperty(supControls[i], + supProperties[i][j]); + log.println("\t Old:" + oldVal + ",New:" + newVal + + ",Result:" + resVal); + if (!util.ValueComparer.equalValue(newVal, resVal)) { + error += "####Property '"+supProperties[i][j]+ + " of "+supControls[i]+" didn't work\n\r"+ + "\t Old:" + oldVal + ",New:" + newVal + + ",Result:" + resVal+ "\n\r"; + } + result &= util.ValueComparer.equalValue(newVal, resVal); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Unexpected exception:" ); + e.printStackTrace(log); + result = false ; + } + } + } + + log.println(error); + + tRes.tested("setControlProperty()", result) ; + tRes.tested("getControlProperty()", result) ; + } + + /** + * Does nothing. Testing performed in <code>setControlProperty</code> + * method test. + */ + public void _getControlProperty() {} +} + + diff --git a/qadevOOo/tests/java/ifc/ui/dialogs/_XControlInformation.java b/qadevOOo/tests/java/ifc/ui/dialogs/_XControlInformation.java new file mode 100644 index 0000000000..1da743110a --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/dialogs/_XControlInformation.java @@ -0,0 +1,178 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui.dialogs; + +import lib.MultiMethodTest; + +import com.sun.star.ui.dialogs.XControlInformation; + +/** +* Testing <code>com.sun.star.ui.XControlInformation</code> +* interface methods : +* <ul> +* <li><code> getSupportedControls()</code></li> +* <li><code> isControlSupported()</code></li> +* <li><code> getSupportedControlProperties()</code></li> +* <li><code> isControlPropertySupported()</code></li> +* </ul> <p> +* +* @see com.sun.star.ui.XFolderPicker +*/ +public class _XControlInformation extends MultiMethodTest { + + public XControlInformation oObj = null; + private String[] supControls = null ; + private String[][] supProperties = null ; + + /** + * Gets supported controls and stores them. <p> + * Has <b>OK</b> status if not <code>null</code> returned. + */ + public void _getSupportedControls() { + supControls = oObj.getSupportedControls(); + + tRes.tested("getSupportedControls()", supControls != null) ; + } + + /** + * For every available control check if it is supported. + * Also wrong control name (non-existent and empty) are checked.<p> + * + * Has <b>OK</b> status if <code>true</code> returned for valid + * control names and <code>false</code> for invalid.<p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getSupportedControls </code> to have + * valid control names</li> + * </ul> + */ + public void _isControlSupported() { + requiredMethod("getSupportedControls()") ; + + boolean result = true ; + + log.println("Supported controls :"); + for (int i = 0; i < supControls.length; i++) { + log.println(" " + supControls[i]); + result &= oObj.isControlSupported(supControls[i]) ; + } + + result &= !oObj.isControlSupported("SuchNameMustNotExist"); + result &= !oObj.isControlSupported(""); + + tRes.tested("isControlSupported()", result) ; + } + + /** + * For each control obtains its properties and stores them. Then tries to + * obtain properties for control with invalid name. <p> + * + * Has <b>OK</b> status if properties arrays are not null and exception + * thrown or null returned for control with invalid name <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getSupportedControls </code> to have + * valid control names</li> + * </ul> + */ + public void _getSupportedControlProperties() { + requiredMethod("getSupportedControls()") ; + + supProperties = new String[supControls.length][]; + for (int i = 0; i < supControls.length; i++) { + log.println("Getting properties for control: " + supControls[i]); + try { + supProperties[i] = + oObj.getSupportedControlProperties(supControls[i]); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Unexpected exception:" + e); + } + } + + try { + oObj.getSupportedControlProperties("NoSuchControl"); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Expected exception getting properties " + + "for wrong control:" + e); + } + + tRes.tested("getSupportedControlProperties()", true) ; + } + + /** + * <ul> + * <li>For each property of each control checks if it is supported.</li> + * <li>For each control checks if non-existent property + * (with wrong name and with empty name) supported.</li> + * <li>Tries to check the property of non-existent control </li> + * </ul> + * <p> + * Has <b>OK</b> status if <code>true</code> returned for the first case, + * <code>false</code> for the second, and <code>false</code> or exception + * for the third.<p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getSupportedControlProperties </code> to have a set of + * valid properties </li> + * </ul> + */ + public void _isControlPropertySupported() { + requiredMethod("getSupportedControlProperties()") ; + + boolean result = true; + + for (int i = 0; i < supControls.length; i++) { + log.println("Checking properties for control " + supControls[i]); + for (int j = 0; j < supProperties[i].length; j++) { + log.println(" " + supProperties[i][j]); + try { + result &= oObj.isControlPropertySupported + (supControls[i], supProperties[i][j]) ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Unexpected exception:" + e); + result = false ; + } + } + + try { + result &= !oObj.isControlPropertySupported + (supControls[i], "NoSuchPropertyForThisControl") ; + result &= !oObj.isControlPropertySupported + (supControls[i], "") ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println + ("Unexpected exception (just false must be returned):" + e); + result = false ; + } + } + + try { + result &= !oObj.isControlPropertySupported("NoSuchControl", "") ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Expected exception: " + e); + } + + tRes.tested("isControlPropertySupported()", result) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/ui/dialogs/_XExecutableDialog.java b/qadevOOo/tests/java/ifc/ui/dialogs/_XExecutableDialog.java new file mode 100644 index 0000000000..eddf139c60 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/dialogs/_XExecutableDialog.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 ifc.ui.dialogs; + +import lib.MultiMethodTest; + +import com.sun.star.ui.dialogs.XExecutableDialog; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.XCancellable; + +/** + * Testing <code>com.sun.star.ui.dialogs.XExecutableDialog</code> + * interface methods : + * <ul> + * <li><code> setTitle()</code></li> + * <li><code> execute()</code></li> + * </ul> <p> + * + * These interface methods can't be checked, thereby methods + * are just called. <code>execute</code> method is not called + * at all as the dialog shown can't be disposed. <p> + * + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.ui.dialogs.XExecutableDialog + */ +public class _XExecutableDialog extends MultiMethodTest { + + public XExecutableDialog oObj = null; + private ExecThread eThread = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _setTitle() { + oObj.setTitle("The Title"); + tRes.tested("setTitle()",true); + } + + /** + * This method is excluded from automated test since + * we can't close the dialog. <p> + * Always has <b>OK</b> status. + */ + public void _execute() { + String aName = tEnv.getTestCase().getObjectName(); + boolean result = false; + if (aName.startsWith("OData") || aName.startsWith("OSQL")) { + log.println("dbaccess dialogs can't be closed via API"); + log.println("therefore they aren't executed"); + log.println("and the result is set to true"); + result = true; + } else { + eThread = new ExecThread(oObj); + log.println("Starting Dialog"); + eThread.start(); + XCancellable canc = UnoRuntime.queryInterface + (XCancellable.class, tEnv.getTestObject()); + waitForEventIdle(); + if (canc != null) { + closeDialog(); + short res = eThread.execRes; + log.println("result: "+res); + result = (res == 0); + } else { + this.disposeEnvironment(); + result=true; + log.println("XCancellable isn't supported and the "+ + "environment is killed hard"); + } + + + } + tRes.tested("execute()",result); + } + + /** + * Calls <code>execute()</code> method in a separate thread. + * Necessary to check if this method works + */ + protected class ExecThread extends Thread { + + public short execRes = (short) 17; + private final XExecutableDialog Diag; + + public ExecThread(XExecutableDialog Diag) { + this.Diag = Diag ; + } + + @Override + public void run() { + try { + execRes = Diag.execute(); + System.out.println("HERE: "+execRes); + } catch(Exception e) { + log.println("Thread has been interrupted ... "); + } + } + } + + @Override + public void after() { + if (eThread.isAlive()) { + log.println("Thread didn't die ... cleaning up"); + disposeEnvironment(); + } + } + + private void closeDialog() { + XCancellable canc = UnoRuntime.queryInterface( + XCancellable.class, tEnv.getTestObject()); + if (canc != null) { + log.println("Cancelling Dialog"); + canc.cancel(); + } else { + this.disposeEnvironment(); + } + + long st = System.currentTimeMillis(); + boolean toLong = false; + + log.println("waiting for dialog to close"); + + while (eThread.isAlive() && !toLong) { + //wait for dialog to close + toLong = (System.currentTimeMillis()-st > 10000); + } + + log.println("done"); + + try { + if (eThread.isAlive()) { + log.println("Interrupting Thread"); + eThread.interrupt(); + Thread.yield(); + } + } catch (Exception e) { + // who cares ;-) + } + + st = System.currentTimeMillis(); + toLong = false; + + log.println("waiting for interruption to work"); + + while (eThread.isAlive() && !toLong) { + //wait for dialog to close + toLong = (System.currentTimeMillis()-st > 10000); + } + + log.println("DialogThread alive: "+eThread.isAlive()); + + log.println("done"); + + } + +} + + diff --git a/qadevOOo/tests/java/ifc/ui/dialogs/_XFilePicker.java b/qadevOOo/tests/java/ifc/ui/dialogs/_XFilePicker.java new file mode 100644 index 0000000000..3a2a71ec9e --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/dialogs/_XFilePicker.java @@ -0,0 +1,151 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui.dialogs; + +import lib.MultiMethodTest; + +import com.sun.star.ui.dialogs.XFilePicker2; + +/** +* Testing <code>com.sun.star.ui.XFilePicker</code> +* interface methods : +* <ul> +* <li><code> setMultiSelectionMode()</code></li> +* <li><code> setDefaultName()</code></li> +* <li><code> setDisplayDirectory()</code></li> +* <li><code> getDisplayDirectory()</code></li> +* <li><code> getPath()</code></li> +* </ul> <p> +* The following predefined files needed to complete the test: +* <ul> +* <li> <code>'space-metal.jpg'</code> : just to exist. </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ui.XFolderPicker +*/ +public class _XFilePicker extends MultiMethodTest { + + public XFilePicker2 oObj = null; + private String dir = null ; + private static final String fname = "space-metal.jpg" ; + + /** + * Sets the current directory to the test document directory. <p> + * Has <b>OK</b> status if no exceptions occurred. + */ + public void _setDisplayDirectory() { + boolean result = true ; + dir = util.utils.getFullTestURL("") ; + + log.println("Trying to set dir '" + dir + "'") ; + try { + oObj.setDisplayDirectory(dir) ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Directory '" + dir + "' not found :" + e) ; + result = false ; + } + + tRes.tested("setDisplayDirectory()", result) ; + } + + /** + * Gets the current directory. <p> + * Has <b>OK</b> status if get value is equal to set value + * passed to <code>setDisplayDirectory</code> <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setDisplayDirectory </code> </li> + * </ul> + */ + public void _getDisplayDirectory() { + requiredMethod("setDisplayDirectory()") ; + + String gDir = oObj.getDisplayDirectory() ; + + log.println("Get dir '" + gDir + "'") ; + + tRes.tested("getDisplayDirectory()", dir.equals(gDir)) ; + } + + /** + * Sets default name to file name existing in test document + * directory ('space-metal.jpg'). <p> + * Has <b>OK</b> status if no exceptions occurred. + */ + public void _setDefaultName() { + boolean result = true ; + + try { + oObj.setDefaultName(fname) ; + } catch (Exception e) { + log.println("Exception setting default name :" + e) ; + result = false ; + } + + tRes.tested("setDefaultName()", result) ; + } + + /** + * Just switch object to MultiSelectionMode. There is no ways + * to check this method (only interactively). <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _setMultiSelectionMode() { + + oObj.setMultiSelectionMode(true) ; + + tRes.tested("setMultiSelectionMode()", true) ; + } + + /** + * Gets completed path from dialog. If <code>execute()</code> + * method was not called then zero length array is returned. + * So to check actual functionality of this method interactive + * testing is required. <p> + * Has <b>OK</b> status if zero length array returned (this + * occurs if <code>execute()</code> + * method was not called yet) or if array contains at least one + * element and it equals to <code>[Directory set] + + * [Default file name set]</code>. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setDisplayDirectory </code> </li> + * <li> <code> setDefaultName </code> </li> + * </ul> + */ + public void _getFiles() { + requiredMethod("setDisplayDirectory()"); + requiredMethod("setDefaultName()"); + + String[] files = oObj.getSelectedFiles(); + + if (files.length > 0) { + log.println("Path get : '" + files[0] + "'") ; + + tRes.tested("getFiles()", (dir + fname).equals(files[0])) ; + } else { + log.println("No files were selected or execute() method was not called.") ; + + tRes.tested("getFiles()", true); + } + } + +} + + diff --git a/qadevOOo/tests/java/ifc/ui/dialogs/_XFilePickerControlAccess.java b/qadevOOo/tests/java/ifc/ui/dialogs/_XFilePickerControlAccess.java new file mode 100644 index 0000000000..d559716a04 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/dialogs/_XFilePickerControlAccess.java @@ -0,0 +1,194 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui.dialogs; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import util.ValueChanger; +import util.ValueComparer; + +import com.sun.star.ui.dialogs.XFilePickerControlAccess; + +/** +* Testing <code>com.sun.star.ui.XFilePickerControlAccess</code> +* interface methods : +* <ul> +* <li><code> setValue()</code></li> +* <li><code> getValue()</code></li> +* <li><code> setLabel()</code></li> +* <li><code> getLabel()</code></li> +* <li><code> getFocused()</code></li> +* <li><code> enableControl()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XFilePickerControlAccess.ControlID'</code> (of type +* <code>Short</code>) : control identifier in the extended +* FilePicker dialog. </li> +* <li> <code>'XFilePickerControlAccess.ControlValue'</code> (of type +* <code>Object</code>) <b>optional</b> (but mostly desirable +* since the control has empty initial value): +* the value which can set for the control . </li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ui.XFilePickerControlAccess +*/ +public class _XFilePickerControlAccess extends MultiMethodTest { + + public XFilePickerControlAccess oObj = null; + private short cntlID = -1 ; + private Object oldVal = null ; + private String oldLab = null ; + + /** + * Retrieves object relations. + * @throws StatusException If one of relations not found. + */ + @Override + public void before() { + Short ID = (Short) tEnv.getObjRelation + ("XFilePickerControlAccess.ControlID") ; + if (ID == null) { + log.println("!!! Relation not found !!!") ; + throw new StatusException(Status.failed("Relation not found")) ; + } + + cntlID = ID.shortValue() ; + } + + /** + * Gets the value of the control and stores it. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getValue() { + boolean result = true ; + + try { + oldVal = oObj.getValue(cntlID,(short)0); + } catch (Exception e) { + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("getValue()", result) ; + } + + /** + * Changes the value gotten by <code>getValue</code> method, + * or gets the value from relation if it exits. + * Sets this value and then check if it was properly set. <p> + * Has <b>OK</b> status if <code>getValue</code> method returns + * the same value which was set. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getValue </code> </li> + * </ul> + */ + public void _setValue() { + requiredMethod("getValue()") ; + boolean result = true ; + + Object newVal = tEnv.getObjRelation + ("XFilePickerControlAccess.ControlValue"); + if (newVal == null) { + newVal = ValueChanger.changePValue(oldVal) ; + } + + Object getVal = null ; + + try { + oObj.setValue(cntlID, (short)0 , newVal) ; + getVal = oObj.getValue(cntlID,(short)0) ; + } catch (Exception e) { + e.printStackTrace(log) ; + result = false ; + } + + result &= ValueComparer.equalValue(newVal, getVal) ; + + tRes.tested("setValue()", result) ; + } + + /** + * Gets the label of the control and stores it. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _getLabel() { + + try { + oldLab = oObj.getLabel(cntlID); + } catch (Exception e) { + e.printStackTrace(log) ; + } + + tRes.tested("getLabel()", oldLab != null) ; + } + + /** + * Changes the label gotten by <code>getLabel</code> method, + * set this label and then check if it was properly set. <p> + * Has <b>OK</b> status if <code>getLabel</code> method returns + * the same value which was set. <p> + * The following method tests are to be completed successfully before: + * <ul> + * <li> <code> getLabel </code> </li> + * </ul> + */ + public void _setLabel() { + requiredMethod("getLabel()") ; + boolean result = true ; + + String newVal = oldLab + "_" ; + String getVal = null ; + + try { + oObj.setLabel(cntlID, newVal) ; + getVal = oObj.getLabel(cntlID) ; + } catch (Exception e) { + e.printStackTrace(log) ; + result = false ; + } + + result &= newVal.equals(getVal) ; + + tRes.tested("setLabel()", result) ; + } + + /** + * Disables and then enables the control. Can be checked only + * interactively. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _enableControl() { + boolean result = true ; + + try { + oObj.enableControl(cntlID, false) ; + oObj.enableControl(cntlID, true) ; + } catch (Exception e) { + e.printStackTrace(log) ; + result = false ; + } + + tRes.tested("enableControl()", result) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/ui/dialogs/_XFilePickerNotifier.java b/qadevOOo/tests/java/ifc/ui/dialogs/_XFilePickerNotifier.java new file mode 100644 index 0000000000..54858bfcf1 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/dialogs/_XFilePickerNotifier.java @@ -0,0 +1,270 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui.dialogs; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.lang.EventObject; +import com.sun.star.ui.dialogs.FilePickerEvent; +import com.sun.star.ui.dialogs.XExecutableDialog; +import com.sun.star.ui.dialogs.XFilePicker; +import com.sun.star.ui.dialogs.XFilePickerListener; +import com.sun.star.ui.dialogs.XFilePickerNotifier; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.XCancellable; + + +/** + * Testing <code>com.sun.star.ui.XFilePickerNotifier</code> + * interface methods : + * <ul> + * <li><code> addFilePickerListener()</code></li> + * <li><code> removeFilePickerListener()</code></li> + * </ul> <p> + * The object must implement <code>XFilePicker</code> + * interface to check if a listener was called. <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.ui.XFilePickerNotifier + */ +public class _XFilePickerNotifier extends MultiMethodTest { + + public XFilePickerNotifier oObj = null; + private XFilePicker fps = null ; + private String dir1 = null, + dir2 = null ; + ExecThread eThread = null; + + + /** + * Listener implementation which sets a flag if some of its + * methods was called. + */ + protected class TestListener implements XFilePickerListener { + public boolean called = false ; + + public void dialogSizeChanged() { + called = true; + } + + public void fileSelectionChanged(FilePickerEvent e) { + called = true; + } + + public void directoryChanged(FilePickerEvent e) { + log.println("***** Directory Changed *****"); + called = true; + } + + public String helpRequested(FilePickerEvent e) { + called = true; + return "help"; + } + + public void controlStateChanged(FilePickerEvent e) { + called = true; + } + + public void disposing(EventObject e) {} + } + + TestListener listener = new TestListener() ; + + /** + * Tries to query object for <code>XFilePicker</code> interface, and + * initializes two different URLs for changing file picker directory. <p> + * @throw StatusException If object doesn't support <code>XFilePicker</code> + * interface. + */ + @Override + public void before() { + fps = UnoRuntime.queryInterface + (XFilePicker.class, oObj) ; + + if (fps == null) { + log.println("The object doesn't implement XFilePicker") ; + throw new StatusException(Status.failed + ("The object doesn't implement XFilePicker")); + } + + XExecutableDialog exD = UnoRuntime.queryInterface( + XExecutableDialog.class, tEnv.getTestObject()); + + dir1 = util.utils.getOfficeTemp(tParam.getMSF()); + dir2 = util.utils.getFullTestURL(""); + eThread = new ExecThread(exD); + } + + /** + * Adds a listener, then tries to change display directory and + * checks if the listener was called. <p> + * Has <b>OK</b> status if a listener method was called. + */ + public void _addFilePickerListener() { + oObj.addFilePickerListener(listener) ; + + try { + log.println("***** Setting DisplayDirectory to " + dir1); + fps.setDisplayDirectory(dir1) ; + log.println("***** Getting: " + fps.getDisplayDirectory()); + openDialog(); + log.println("***** Setting DisplayDirectory to " + dir2); + fps.setDisplayDirectory(dir2) ; + log.println("***** Getting: " + fps.getDisplayDirectory()); + + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("!!! Exception changing dir !!!") ; + e.printStackTrace(log) ; + } + + waitForEventIdle(); + + if (!listener.called) { + log.println("Listener wasn't called :-("); + } + + closeDialog(); + + tRes.tested("addFilePickerListener()", listener.called) ; + } + + /** + * Removes the listener and changes display directory. <p> + * Has <b>OK</b> status if the listener wasn't called. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addFilePickerListener </code> </li> + * </ul> + */ + public void _removeFilePickerListener() { + requiredMethod("addFilePickerListener()") ; + + oObj.removeFilePickerListener(listener) ; + + listener.called = false ; + + try { + fps.setDisplayDirectory(dir1) ; + openDialog(); + fps.setDisplayDirectory(dir2) ; + } catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("!!! Exception changing dir !!!") ; + e.printStackTrace(log) ; + } + + waitForEventIdle(); + + closeDialog(); + + tRes.tested("removeFilePickerListener()", !listener.called) ; + } + + /** + * Calls <code>execute()</code> method in a separate thread. + * Necessary to check if this method works + */ + protected class ExecThread extends Thread { + + public short execRes = (short) 17 ; + private final XExecutableDialog Diag; + + public ExecThread(XExecutableDialog Diag) { + this.Diag = Diag ; + } + + @Override + public void run() { + try { + execRes = Diag.execute(); + System.out.println("HERE: "+execRes); + } catch (Exception e) { + log.println("Thread has been interrupted ..."); + } + } + } + + private void closeDialog() { + XCancellable canc = UnoRuntime.queryInterface( + XCancellable.class, tEnv.getTestObject()); + if (canc != null) { + log.println("Cancelling Dialog"); + canc.cancel(); + } else { + this.disposeEnvironment(); + } + + long st = System.currentTimeMillis(); + boolean toLong = false; + + log.println("waiting for dialog to close"); + + while (eThread.isAlive() && !toLong) { + //wait for dialog to close + toLong = (System.currentTimeMillis()-st > 10000); + } + + log.println("done"); + + try { + if (eThread.isAlive()) { + log.println("Interrupting Thread"); + eThread.interrupt(); + Thread.yield(); + } + } catch (Exception e) { + // who cares ;-) + } + + st = System.currentTimeMillis(); + toLong = false; + + log.println("waiting for interruption to work"); + + while (eThread.isAlive() && !toLong) { + //wait for dialog to close + toLong = (System.currentTimeMillis()-st > 10000); + } + + log.println("DialogThread alive: "+eThread.isAlive()); + + log.println("done"); + + } + + private void openDialog() { + log.println("Starting Dialog"); + if (eThread.isAlive()) { + log.println("second interrupt"); + eThread.interrupt(); + Thread.yield(); + } + + XExecutableDialog exD = UnoRuntime.queryInterface( + XExecutableDialog.class, tEnv.getTestObject()); + + dir1 = util.utils.getOfficeTemp(tParam.getMSF()); + dir2 = util.utils.getFullTestURL(""); + eThread = new ExecThread(exD); + + eThread.start(); + } +} + + diff --git a/qadevOOo/tests/java/ifc/ui/dialogs/_XFilePreview.java b/qadevOOo/tests/java/ifc/ui/dialogs/_XFilePreview.java new file mode 100644 index 0000000000..9ba9c78257 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/dialogs/_XFilePreview.java @@ -0,0 +1,113 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui.dialogs; + +import lib.MultiMethodTest; +import lib.StatusException; + +import com.sun.star.ui.dialogs.XFilePreview; + +public class _XFilePreview extends MultiMethodTest { + + public XFilePreview oObj=null; + + /** + * _getSupportedImageFormats() gets all formats and + * stores them in an Array of short.<br> + * Is OK is the resulting Array isn't empty + */ + public void _getSupportedImageFormats() { + short[] formats = oObj.getSupportedImageFormats(); + tRes.tested("getSupportedImageFormats()", formats.length > 0); + } + + /** + * _getTargetColorDepth() gets the color depth + * and stores it in an int.<br> + * Is OK is the resulting int isn't 1 + */ + public void _getTargetColorDepth() { + int CDepth = oObj.getTargetColorDepth(); + tRes.tested("getTargetColorDepth()",CDepth != 1); + } + + /** + * _getAvailableWidth() gets the width + * and stores it in an int.<br> + * Is OK is the resulting int isn't 1 + */ + public void _getAvailableWidth() { + int the_width = oObj.getAvailableWidth(); + tRes.tested("getAvailableWidth()", the_width != 1); + } + + /** + * _getAvailableHeight() gets the width + * and stores it in an int.<br> + * Is OK is the resulting int isn't 1 + */ + public void _getAvailableHeight() { + int the_height = oObj.getAvailableHeight(); + tRes.tested("getAvailableHeight()", the_height != 1); + } + + /** + * sets the empty image. + * Is OK if no exception no exceptions were thrown. + */ + public void _setImage() { + boolean bOK = true; + try { + oObj.setImage + (com.sun.star.ui.dialogs.FilePreviewImageFormats.BITMAP,null); + } catch(com.sun.star.lang.IllegalArgumentException e) { + bOK = false; + throw new StatusException( "Can't set empty image", e ); + } + tRes.tested("setImage()", bOK); + } + + boolean prev_state; + + /** + * _setShowState() sets the state + * to the opposite value returned by getShowState.<br> + * Is OK is the returned result is false or if + * the value that was set is equal to the value + * that was returned by getShowState. + */ + public void _setShowState() { + requiredMethod("getShowState()"); + boolean success = oObj.setShowState(!prev_state); + boolean res_state = oObj.getShowState(); + tRes.tested("setShowState()", !success || res_state != prev_state); + } + + /** + * _getShowState() gets the state + * and sets it to the opposite.<br> + * Is OK if no exceptions were thrown + */ + public void _getShowState() { + prev_state = oObj.getShowState(); + tRes.tested("getShowState()", true); + } + +} + diff --git a/qadevOOo/tests/java/ifc/ui/dialogs/_XFilterGroupManager.java b/qadevOOo/tests/java/ifc/ui/dialogs/_XFilterGroupManager.java new file mode 100644 index 0000000000..cd47c96c35 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/dialogs/_XFilterGroupManager.java @@ -0,0 +1,55 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui.dialogs; + +import lib.MultiMethodTest; + +import com.sun.star.beans.StringPair; +import com.sun.star.ui.dialogs.XFilterGroupManager; + +/** +* Testing <code>com.sun.star.ui.dialogs.XFilterGroupManager</code> +* @see com.sun.star.ui.XFilterGroupManager +*/ +public class _XFilterGroupManager extends MultiMethodTest { + + public XFilterGroupManager oObj = null; + + /** + * Appends a new FilterGroup (for extension 'txt'). <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _appendFilterGroup() { + boolean res = true; + try { + StringPair[] args = new StringPair[1]; + args[0] = new StringPair(); + args[0].First = "ApiTextFiles"; + args[0].Second = "txt"; + oObj.appendFilterGroup("TestFilter", args); + } catch (com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log); + res=false; + } + + tRes.tested("appendFilterGroup()", res) ; + } + +} + diff --git a/qadevOOo/tests/java/ifc/ui/dialogs/_XFilterManager.java b/qadevOOo/tests/java/ifc/ui/dialogs/_XFilterManager.java new file mode 100644 index 0000000000..d9eb5a5b19 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/dialogs/_XFilterManager.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 ifc.ui.dialogs; + +import lib.MultiMethodTest; + +import com.sun.star.ui.dialogs.XFilterManager; + +/** +* Testing <code>com.sun.star.ui.XFilterManager</code> +* interface methods : +* <ul> +* <li><code> appendFilter()</code></li> +* <li><code> setCurrentFilter()</code></li> +* <li><code> getCurrentFilter()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ui.XFilterManager +*/ +public class _XFilterManager extends MultiMethodTest { + + public XFilterManager oObj = null; + + /** + * Appends a new filter (for extension 'txt'). <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _appendFilter() { + boolean res = true; + try { + oObj.appendFilter("TestFilter", "txt"); + } catch (com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log); + res=false; + } + + tRes.tested("appendFilter()", res) ; + } + + /** + * Sets the current filter to that which was appended before.<p> + * Has <b>OK</b> status if no exceptions occurred, else one of + * <code>appendFilter</code> and <code>setCurrentFilter</code> + * methods failed. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> appendFilter </code> </li> + * </ul> + */ + public void _setCurrentFilter() { + requiredMethod("appendFilter()") ; + boolean result = true; + + try { + oObj.setCurrentFilter("TestFilter") ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("setCurrentFilter() or appendFilter() failed") ; + result = false ; + } + + tRes.tested("setCurrentFilter()", result) ; + } + + /** + * Gets current filter name and compares it filter name set before.<p> + * Has <b>OK</b> status if set and get filter names are equal.<p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setCurrentFilter </code> </li> + * </ul> + */ + public void _getCurrentFilter() { + requiredMethod("setCurrentFilter()") ; + + String gVal = oObj.getCurrentFilter() ; + + tRes.tested("getCurrentFilter()", "TestFilter".equals(gVal)) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/ui/dialogs/_XFolderPicker.java b/qadevOOo/tests/java/ifc/ui/dialogs/_XFolderPicker.java new file mode 100644 index 0000000000..07c6e014f4 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/dialogs/_XFolderPicker.java @@ -0,0 +1,105 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.ui.dialogs; + +import lib.MultiMethodTest; + +import com.sun.star.ui.dialogs.XFolderPicker; + +/** +* Testing <code>com.sun.star.ui.XFolderPicker</code> +* interface methods : +* <ul> +* <li><code> setDisplayDirectory()</code></li> +* <li><code> getDisplayDirectory()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ui.XFolderPicker +*/ +public class _XFolderPicker extends MultiMethodTest { + + public XFolderPicker oObj = null; + private String dir = null ; + + /** + * Sets the current directory to SOffice temp dir. <p> + * Has <b>OK</b> status if no exceptions occurred. + */ + public void _setDisplayDirectory() { + boolean result = true ; + dir = util.utils.getOfficeTemp(tParam.getMSF()) ; + + log.println("Trying to set dir '" + dir + "'") ; + try { + oObj.setDisplayDirectory(dir) ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Directory '" + dir + "' not found :" + e) ; + result = false ; + } + + tRes.tested("setDisplayDirectory()", result) ; + } + + /** + * Gets the current directory. <p> + * Has <b>OK</b> status if get value is equal to set value + * passed to <code>setDisplayDirectory</code> <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setDisplayDirectory </code> </li> + * </ul> + */ + public void _getDisplayDirectory() { + requiredMethod("setDisplayDirectory()") ; + + String gDir = oObj.getDisplayDirectory() ; + + log.println("Get dir '" + gDir + "'") ; + + tRes.tested("getDisplayDirectory()", dir.equals(gDir)) ; + } + + /** + * Gets the directory chosen by the user. <p> + * Has <b>OK</b> status if get value is not NULL <p> + */ + public void _getDirectory() { + + String gDir = oObj.getDirectory() ; + + log.println("Get dir '" + gDir + "'") ; + + tRes.tested("getDirectory()", gDir != null) ; + } + + /** + * Sets the Description for the dialog. <p> + * Has <b>OK</b> status if no error occurs <p> + */ + public void _setDescription() { + + oObj.setDescription("XFolderPicker") ; + //to visually check if the method works + //oObj.execute(); + tRes.tested("setDescription()", true) ; + } + +} + + diff --git a/qadevOOo/tests/java/ifc/uno/_XComponentContext.java b/qadevOOo/tests/java/ifc/uno/_XComponentContext.java new file mode 100644 index 0000000000..a776f7e211 --- /dev/null +++ b/qadevOOo/tests/java/ifc/uno/_XComponentContext.java @@ -0,0 +1,72 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.uno; + +import lib.MultiMethodTest; +import util.ValueComparer; + +import com.sun.star.lang.XMultiComponentFactory; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XComponentContext; + + +public class _XComponentContext extends MultiMethodTest { + public XComponentContext oObj; + protected XMultiComponentFactory byValue = null; + protected XMultiComponentFactory directly = null; + + public void _getServiceManager() { + log.println("getting manager"); + + directly = oObj.getServiceManager(); + String[] names = directly.getAvailableServiceNames(); + boolean res = true; + + for (int i = 0; i < names.length; i++) { + try { + if (names[i].equals("com.sun.star.i18n.ConversionDictionary_ko")) continue; + if (names[i].equals("com.sun.star.i18n.TextConversion_ko")) continue; + log.println("try to instantiate found servicename " + + names[i]); + directly.createInstanceWithContext(names[i], oObj); + log.println("worked... ok"); + res &= true; + } catch (com.sun.star.uno.Exception e) { + log.println("Exception occurred " + e.getMessage()); + res &= false; + } + } + + tRes.tested("getServiceManager()", res); + } + + public void _getValueByName() { + requiredMethod("getServiceManager()"); + + Object value = oObj.getValueByName( + "/singletons/com.sun.star.lang.theServiceManager"); + byValue = UnoRuntime.queryInterface( + XMultiComponentFactory.class, value); + + byValue.getAvailableServiceNames(); + directly.getAvailableServiceNames(); + + boolean res = ValueComparer.equalValue(byValue, directly); + tRes.tested("getValueByName()", res); + } +} diff --git a/qadevOOo/tests/java/ifc/uno/_XNamingService.java b/qadevOOo/tests/java/ifc/uno/_XNamingService.java new file mode 100644 index 0000000000..e2469d1389 --- /dev/null +++ b/qadevOOo/tests/java/ifc/uno/_XNamingService.java @@ -0,0 +1,147 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.uno; + +import lib.MultiMethodTest; +import lib.StatusException; + +import com.sun.star.uno.XInterface; +import com.sun.star.uno.XNamingService; + + +/** +* Testing <code>com.sun.star.uno.XNamingService</code> +* interface methods. <p> +* This test need the following object relations : +* <ul> +* <li> <code>'XNamingService.RegisterObject'</code> : +* object to be registered.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* After test completion object environment has to be recreated. +*/ +public class _XNamingService extends MultiMethodTest { + + public static XNamingService oObj = null; + + private XInterface regObject = null ; + + /** + * Retrieves object relation. + * @throws StatusException If the relation not found. + */ + @Override + public void before() { + regObject = (XInterface) + tEnv.getObjRelation("XNamingService.RegisterObject") ; + if (regObject == null) + throw new StatusException("Can't create object to register", + new NullPointerException()) ; + } + + /** + * Test calls the method and checks that + * no exceptions were thrown. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + */ + public void _registerObject() throws StatusException{ + try { + oObj.registerObject("MyFactory", regObject) ; + } catch (com.sun.star.uno.Exception e) { + log.println("Exception while registering object :" + e) ; + tRes.tested("registerObject()", false) ; + return ; + } + + tRes.tested("registerObject()", true) ; + } + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <p> + * Has <b> OK </b> status if the method returns the same object + * that was registered and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerObject </code> : to get in this test the + * object that was registered.</li> + * </ul> + */ + public void _getRegisteredObject() { + requiredMethod("registerObject()") ; + + try { + Object getObject = oObj.getRegisteredObject("MyFactory") ; + + tRes.tested("getRegisteredObject()" , + regObject.equals(getObject)) ; + } catch (com.sun.star.uno.Exception e) { + log.println("Exception calling method :" + e) ; + tRes.tested("getRegisteredObject()", false) ; + return ; + } + } + + /** + * Test calls the method and trying to get revoked object. <p> + * Has <b> OK </b> status if the method successfully returns + * and if the method <code>getRegisteredObject</code> returns NULL or + * throws expected exception. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerObject </code> : to revoke the object registered</li> + * </ul> + * The following method tests are to be executed before : + * <ul> + * <li> <code> getRegisteredObject </code> : before object will be + * revoked </li> + * </ul> + */ + public void _revokeObject() { + requiredMethod("registerObject()") ; + executeMethod("getRegisteredObject()") ; + + try { + oObj.revokeObject("MyFactory"); + log.println("Object was revoked"); + } catch (com.sun.star.uno.Exception e) { + log.println("Exception revoking object :" + e) ; + tRes.tested("revokeObject()", false) ; + } + + boolean res = true; + + try { + log.println("Trying to getRegistered object ..."); + Object objregObj = oObj.getRegisteredObject("MyFactory"); + log.println("No exception"); + res &= objregObj == null; + if (res) { + log.println("But NULL was returned"); + } + } catch(com.sun.star.uno.Exception e) { + log.println("Expected exception - OK"); + } + + tRes.tested("revokeObject()", res); + } +} + diff --git a/qadevOOo/tests/java/ifc/util/_PathSettings.java b/qadevOOo/tests/java/ifc/util/_PathSettings.java new file mode 100644 index 0000000000..7d6e42f7f9 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_PathSettings.java @@ -0,0 +1,79 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import lib.MultiPropertyTest; +import util.utils; + +/** + * Testing <code>com.sun.star.util.PathSettings</code> + * service properties : + * <ul> + * <li><code> Addin </code></li> + * <li><code> AutoCorrect </code></li> + * <li><code> AutoText </code></li> + * <li><code> Backup </code></li> + * <li><code> Basic </code></li> + * <li><code> Bitmap </code></li> + * <li><code> Config </code></li> + * <li><code> Dictionary </code></li> + * <li><code> Favorites </code></li> + * <li><code> Filter </code></li> + * <li><code> Gallery </code></li> + * <li><code> Graphic </code></li> + * <li><code> Help </code></li> + * <li><code> Linguistic </code></li> + * <li><code> Module </code></li> + * <li><code> Palette </code></li> + * <li><code> Plugin </code></li> + * <li><code> Storage </code></li> + * <li><code> Temp </code></li> + * <li><code> Template </code></li> + * <li><code> UIConfig </code></li> + * <li><code> UserConfig </code></li> + * <li><code> UserDictionary</code></li> + * <li><code> Work </code></li> + * </ul> <p> + * + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.util.PathSettings + */ +public class _PathSettings extends MultiPropertyTest { + + /** + * This path list could be empty after SO installation. + * And the URL is validated to match the pattern 'file:///*' + * that's why the custom changing of this property required. + */ + public void _UIConfig() { + testProperty("UIConfig", new PropertyTester() { + @Override + public Object getNewValue(String propName, Object oldVal) { + String path = (String) oldVal; + if (path == null) path = ""; + if (path.length() > 0 && !path.endsWith(";")) { + path += ";"; + } + path += utils.getOfficeTemp(tParam.getMSF()); + return path; + } + }); + } +} + diff --git a/qadevOOo/tests/java/ifc/util/_SearchDescriptor.java b/qadevOOo/tests/java/ifc/util/_SearchDescriptor.java new file mode 100644 index 0000000000..e9e883e1b1 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_SearchDescriptor.java @@ -0,0 +1,44 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import lib.MultiPropertyTest; + +/** + * Testing <code>com.sun.star.util.SearchDescriptor</code> + * service properties : + * <ul> + * <li><code> SearchBackwards</code></li> + * <li><code> SearchCaseSensitive</code></li> + * <li><code> SearchWords</code></li> + * <li><code> SearchRegularExpression</code></li> + * <li><code> SearchStyles</code></li> + * <li><code> SearchSimilarity</code></li> + * <li><code> SearchSimilarityRelax</code></li> + * <li><code> SearchSimilarityRemove</code></li> + * <li><code> SearchSimilarityAdd</code></li> + * <li><code> SearchSimilarityExchange</code></li> + * </ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.util.SearchDescriptor + */ +public class _SearchDescriptor extends MultiPropertyTest { + +} //finish class _SearchDescriptor + diff --git a/qadevOOo/tests/java/ifc/util/_XCancellable.java b/qadevOOo/tests/java/ifc/util/_XCancellable.java new file mode 100644 index 0000000000..85ab779df5 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XCancellable.java @@ -0,0 +1,57 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XCancellable; + +/** +* Testing <code>com.sun.star.util.XCancellable</code> +* interface methods : +* <ul> +* <li><code> cancel()</code></li> +* </ul> <p> +* @see com.sun.star.util.XCancellable +*/ +public class _XCancellable extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XCancellable oObj = null ; + + /** + * Just calls the method. <p> + * Has <b>OK</b> status if no exception has occurred. <p> + */ + public void _cancel() { + oObj.cancel() ; + + tRes.tested("cancel()", true) ; + } + + /** + * Forces object recreation. + */ + @Override + public void after() { + disposeEnvironment() ; + } + +} // finish class _XCancellable + diff --git a/qadevOOo/tests/java/ifc/util/_XChangesBatch.java b/qadevOOo/tests/java/ifc/util/_XChangesBatch.java new file mode 100644 index 0000000000..c0e87f3ada --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XChangesBatch.java @@ -0,0 +1,164 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XNameReplace; +import com.sun.star.util.ElementChange; +import lib.MultiMethodTest; + +import com.sun.star.util.XChangesBatch; +import lib.Status; +import lib.StatusException; + +public class _XChangesBatch extends MultiMethodTest { + + public XChangesBatch oObj; + private Object changeElement = null; + private Object originalElement = null; + private String elementName = null; + private XPropertySet xProp = null; + private XNameReplace xNameReplace = null; + + /** + * add a change that can be committed + */ + @Override + protected void before() { + changeElement = tEnv.getObjRelation("XChangesBatch.ChangeElement"); + originalElement = tEnv.getObjRelation("XChangesBatch.OriginalElement"); + elementName = (String)tEnv.getObjRelation("XChangesBatch.PropertyName"); + + // to do a change, get an XPropertySet + xProp = (XPropertySet)tEnv.getObjRelation("XChangesBatch.PropertySet"); + try { + if (originalElement == null && xProp != null) + originalElement = xProp.getPropertyValue(elementName); + } + catch(com.sun.star.uno.Exception e) { + throw new StatusException("Could not get property '" + elementName + "'.", e); + } + + // or get an XNameReplace + xNameReplace = (XNameReplace)tEnv.getObjRelation("XChangesBatch.NameReplace"); + try { + if (originalElement == null && xNameReplace != null) + originalElement = xNameReplace.getByName(elementName); + } + catch(com.sun.star.uno.Exception e) { + throw new StatusException("Could not get element by name '" + elementName + "'.", e); + } + + if (changeElement == null || originalElement == null || elementName == null || (xProp == null && xNameReplace == null)) { + log.println( + (changeElement == null?"Missing property 'XChangesBatch.ChangeElement'\n":"") + + (originalElement == null?"Missing property 'XChangesBatch.OriginalElement'\n":"") + + (elementName == null?"Missing property 'XChangesBatch.PropertyName'\n":"") + + (xProp == null?"Missing property 'XChangesBatch.PropertySet'":"") + + (xNameReplace == null?"Missing property 'XChangesBatch.NameReplace'":"") + ); + throw new StatusException("Some needed object relations are missing.", new Exception()); + } + } + + public void _commitChanges() { + requiredMethod("getPendingChanges()"); + try { + log.println("Committing changes."); + oObj.commitChanges(); + } + catch(com.sun.star.lang.WrappedTargetException e) { + tRes.tested("commitChanges()", Status.exception(e)); + return; + } + try { + executeChange(originalElement); + } + catch(StatusException e) { + tRes.tested("hasPendingChanges()", Status.exception(e)); + return; + } + + try { + log.println("Commit changes back."); + oObj.commitChanges(); + } + catch(com.sun.star.lang.WrappedTargetException e) { + tRes.tested("commitChanges()", Status.exception(e)); + return; + } + tRes.tested("commitChanges()", true); + } + + public void _getPendingChanges() { + requiredMethod("hasPendingChanges()"); + ElementChange[]changes = oObj.getPendingChanges(); + if (changes == null) { + log.println("Returned changes was 'null'"); + log.println("It should have been 1 change."); + tRes.tested("getPendingChanges()", false); + } else if (changes.length != 1) { + int amount = changes.length; + log.println("Found not the right number of changes: " + amount); + log.println("It should have been 1 change."); + for (int i=0; i<amount; i++) { + System.out.println("Detailed Change " + i + " -> new Element: '" + + changes[i].Element.toString() + "' ReplacedElement: '" + + changes[i].ReplacedElement.toString() + "'"); + } + tRes.tested("getPendingChanges()", false); + } + else { + boolean result = changes[0].ReplacedElement.equals(originalElement); + result &= changes[0].Element.equals(changeElement); + tRes.tested("getPendingChanges()", result); + } + } + + public void _hasPendingChanges() { + try { + executeChange(changeElement); + } + catch(StatusException e) { + tRes.tested("hasPendingChanges()", Status.exception(e)); + return; + } + boolean hasPendingChanges = oObj.hasPendingChanges(); + tRes.tested("hasPendingChanges()", hasPendingChanges); + } + + private void executeChange(Object element) throws StatusException { + if (xProp != null) { + try { + xProp.setPropertyValue(elementName, element); + } + catch(com.sun.star.uno.Exception e) { + throw new StatusException("Could not set property '" + elementName + "'.", e); + } + } + else if (xNameReplace != null) { + try { + xNameReplace.replaceByName(elementName, element); + } + catch(com.sun.star.uno.Exception e) { + throw new StatusException("Could not replace '" + elementName + "' by name.", e); + } + } + } +} diff --git a/qadevOOo/tests/java/ifc/util/_XChangesNotifier.java b/qadevOOo/tests/java/ifc/util/_XChangesNotifier.java new file mode 100644 index 0000000000..73592df4e2 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XChangesNotifier.java @@ -0,0 +1,213 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XNameReplace; +import com.sun.star.util.XChangesBatch; +import com.sun.star.util.XChangesListener; +import com.sun.star.util.XChangesNotifier; +import lib.StatusException; +import lib.MultiMethodTest; + +/** + * Test the XChangesNotifier interface. To produce some changes, + * XChangesBatch is used. + * @see com.sun.star.util.XChangesNotifier + * @see com.sun.star.util.XChangesBatch + */ +public class _XChangesNotifier extends MultiMethodTest { + + public XChangesNotifier oObj = null; + private XChangesBatch xBatch = null; + private Object changeElement = null; + private Object originalElement = null; + private String elementName = null; + private XPropertySet xProp = null; + private XNameReplace xNameReplace = null; + private _XChangesNotifier.MyChangesListener xListener = null; + + /** + * Own implementation of the XChangesListener interface + * @see com.sun.star.util.XChangesListener + */ + private static class MyChangesListener implements XChangesListener { + /** Just lo a call of the listener **/ + boolean bChangesOccurred = false; + + /** A change did occur + * @param changesEvent The event. + **/ + public void changesOccurred(com.sun.star.util.ChangesEvent changesEvent) { + bChangesOccurred = true; + } + + /** Disposing of the listener + * @param eventObject The event. + **/ + public void disposing(com.sun.star.lang.EventObject eventObject) { + bChangesOccurred = true; + } + + /** + * Reset the listener + */ + public void reset() { + bChangesOccurred = false; + } + + /** + * Has the listener been called? + * @return True, if the listener has been called. + */ + public boolean didChangesOccur() { + return bChangesOccurred; + } + } + + /** + * Before the test: get the 'XChangesNotifier.ChangesBatch' object relation + * and create the listener. + */ + @Override + protected void before() { + xBatch = (XChangesBatch)tEnv.getObjRelation("XChangesNotifier.ChangesBatch"); + changeElement = tEnv.getObjRelation("XChangesNotifier.ChangeElement"); + originalElement = tEnv.getObjRelation("XChangesNotifier.OriginalElement"); + elementName = (String)tEnv.getObjRelation("XChangesNotifier.PropertyName"); + + xProp = (XPropertySet)tEnv.getObjRelation("XChangesNotifier.PropertySet"); + try { + if (originalElement == null && xProp != null) + originalElement = xProp.getPropertyValue(elementName); + } + catch(com.sun.star.uno.Exception e) { + throw new StatusException("Could not get property '" + elementName + "'.", e); + } + + // or get an XNameReplace + xNameReplace = (XNameReplace)tEnv.getObjRelation("XChangesNotifier.NameReplace"); + try { + if (originalElement == null && xNameReplace != null) + originalElement = xNameReplace.getByName(elementName); + } + catch(com.sun.star.uno.Exception e) { + throw new StatusException("Could not get element by name '" + elementName + "'.", e); + } + + if (changeElement == null || originalElement == null || elementName == null || (xProp == null && xNameReplace == null) || xBatch == null) { + log.println( + (changeElement == null?"Missing property 'XChangesNotifier.ChangeElement'\n":"") + + (originalElement == null?"Missing property 'XChangesNotifier.OriginalElement'\n":"") + + (elementName == null?"Missing property 'XChangesNotifier.PropertyName'\n":"") + + (xProp == null?"Missing property 'XChangesNotifier.PropertySet'":"") + + (xNameReplace == null?"Missing property 'XChangesNotifier.NameReplace'":"") + + (xBatch == null?"Missing property 'XChangesNotifier.ChangesBatch'":"") + ); + throw new StatusException("Some needed object relations are missing.", new Exception()); + } + + xListener = new _XChangesNotifier.MyChangesListener(); + } + + /** test addChangesListener **/ + public void _addChangesListener() { + oObj.addChangesListener(xListener); + tRes.tested("addChangesListener()", true); + } + + /** test removeChangesListener **/ + public void _removeChangesListener() { + requiredMethod("addChangesListener()"); + boolean result = true; + result &= commitChanges(); + result &= xListener.didChangesOccur(); + if (!result) + log.println("Listener has not been called."); + oObj.removeChangesListener(xListener); + xListener.reset(); + result &= redoChanges(); + boolean result2 = xListener.didChangesOccur(); + if (result2) + log.println("Removed listener has been called."); + + tRes.tested("removeChangesListener()", result && !result2); + } + + /** + * Commit a change, using an implementation of the XChangesBatch interface. + * @return true, if changing worked. + */ + private boolean commitChanges() { + if (!executeChange(changeElement)) return false; + if (!xBatch.hasPendingChanges()) return false; + try { + xBatch.commitChanges(); + } + catch(com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + return false; + } + return true; + } + + /** + * Redo the change, using an implementation of the XChangesBatch interface. + * @return true, if changing worked. + */ + private boolean redoChanges() { + if (!executeChange(originalElement)) return false; + if (!xBatch.hasPendingChanges()) return false; + try { + xBatch.commitChanges(); + } + catch(com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + return false; + } + return true; + } + + /** + * Execute the change, use XPropertySet or XNameReplace + * @return False, if changing did throw an exception. + */ + private boolean executeChange(Object element) throws StatusException { + if (xProp != null) { + try { + xProp.setPropertyValue(elementName, element); + } + catch(com.sun.star.uno.Exception e) { + e.printStackTrace(log); + return false; + } + } + else if (xNameReplace != null) { + try { + xNameReplace.replaceByName(elementName, element); + } + catch(com.sun.star.uno.Exception e) { + e.printStackTrace(log); + return false; + } + } + return true; + } + +} diff --git a/qadevOOo/tests/java/ifc/util/_XCloneable.java b/qadevOOo/tests/java/ifc/util/_XCloneable.java new file mode 100644 index 0000000000..1f446d801a --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XCloneable.java @@ -0,0 +1,108 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import java.util.Arrays; + +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XServiceInfo; +import com.sun.star.lang.XTypeProvider; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; +import com.sun.star.util.XCloneable; + +/** +* Testing <code>com.sun.star.util.XCloneable</code> +* interface methods : +* <ul> +* <li><code> createClone()</code></li> +* </ul> <p> +* @see com.sun.star.util.XCloneable +*/ +public class _XCloneable extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XCloneable oObj = null ; + protected XCloneable clone = null; + + /** + * calls the method. <p> + * Has <b>OK</b> status if no exception has occurred. <p> + */ + public void _createClone() { + boolean result = true; + clone = oObj.createClone(); + + //check if the implementationname equals + result &= checkImplementationName(oObj,clone); + + //check ImplementationID + result &= checkImplementationID(oObj, clone); + + tRes.tested("createClone()", result) ; + + XComponent comp = UnoRuntime.queryInterface(XComponent.class, clone); + if (comp != null) { + comp.dispose(); + } + } + + protected byte[] getImplementationID(XInterface ifc) { + byte[] res = new byte[0]; + XTypeProvider provider = UnoRuntime.queryInterface(XTypeProvider.class, ifc); + if (provider != null) { + res = provider.getImplementationId(); + } + return res; + } + + protected boolean checkImplementationID(XInterface org, XInterface clone) { + boolean res = Arrays.equals(getImplementationID(org), getImplementationID(clone)); + if (res && getImplementationID(org).length > 0) { + log.println("ImplementationID equals the clone has the same id as the original Object"); + log.println("------------------------------------------------------------------------"); + } + return res; + } + + protected String getImplementationName(XInterface ifc) { + String res = ""; + XServiceInfo info = UnoRuntime.queryInterface(XServiceInfo.class, ifc); + if (info != null) { + res = info.getImplementationName(); + } + return res; + } + + protected boolean checkImplementationName(XInterface org, XInterface clone) { + boolean res = getImplementationName(org).equals( + getImplementationName(clone)); + if (!res) { + log.println("ImplementationName differs: "); + log.println("Expected: "+getImplementationName(org)); + log.println("Gained: "+getImplementationName(clone)); + log.println("----------------------------------------"); + } + return res; + } + +} // finish class _XCloneable + diff --git a/qadevOOo/tests/java/ifc/util/_XFlushable.java b/qadevOOo/tests/java/ifc/util/_XFlushable.java new file mode 100644 index 0000000000..d8a56bd8d6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XFlushable.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 ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XFlushListener; +import com.sun.star.util.XFlushable; + +/** + * Testing <code>com.sun.star.util.XFlushable</code> + * interface methods : + * <ul> + * <li><code> flush()</code></li> + * <li><code> addFlushListener()</code></li> + * <li><code> removeFlushListener()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.util.XFlushable + */ +public class _XFlushable extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XFlushable oObj = null ; + + /** + * Simple <code>XFlushListener</code> implementation which + * just registers if any calls to its methods were made. + */ + private static class MyFlushListener implements XFlushListener{ + boolean called = false ; + public void flushed(com.sun.star.lang.EventObject e) { + called = true ; + } + public void disposing(com.sun.star.lang.EventObject e) {} + public boolean wasFlushed() { return called; } + } + + private final MyFlushListener listener1 = new MyFlushListener(), + listener2 = new MyFlushListener() ; + + /** + * Test call method <code>flush</code> and checks if added listener + * was called and removed one wasn't. <p> + * Has OK status if no exception has occurred. <p> + * Methods to be executed before : + * {@link #_addFlushListener}, + * {@link #_removeFlushListener} + */ + public void _flush() { + executeMethod("addFlushListener()") ; + executeMethod("removeFlushListener()") ; + + oObj.flush() ; + + tRes.tested("flush()", true) ; + tRes.tested("addFlushListener()", listener2.wasFlushed()) ; + tRes.tested("removeFlushListener()", !listener1.wasFlushed()) ; + } + + /** + * Test adds two listeners, one of which will be removed then.<p> + * Has OK status if the listener was called on <code>flush()</code> + * method call. + */ + public void _addFlushListener() { + oObj.addFlushListener(listener1) ; + oObj.addFlushListener(listener2) ; + } + + /** + * Test removes one of two listeners added before. <p> + * Has OK status if the listener removed wasn't called on + * <code>flush()</code> method call. + * Methods to be executed before : + * {@link #_addFlushListener}, + */ + public void _removeFlushListener() { + executeMethod("addFlushListener()") ; + + oObj.removeFlushListener(listener1) ; + } + +} // finish class _XFlushable + diff --git a/qadevOOo/tests/java/ifc/util/_XImportable.java b/qadevOOo/tests/java/ifc/util/_XImportable.java new file mode 100644 index 0000000000..6a36526db9 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XImportable.java @@ -0,0 +1,192 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.table.XCellRange; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.XImportable; + + +/** + * checks the Interface XImportable + */ +public class _XImportable extends MultiMethodTest { + public XImportable oObj; + protected PropertyValue[] descriptor = null; + protected String[] names = new String[] { + "DatabaseName", "SourceType", "SourceObject", "IsNative" + }; + protected Type[] types = new Type[] { + new Type(String.class), new Type(com.sun.star.sheet.DataImportMode.class), + new Type(String.class), new Type(Boolean.class) + }; + + /** + * creates an ImportDescriptor, the gained PropertyValues can be found + * in com.sun.star.sheet.DatabaseImportDescriptor.<br> + * Returns OK state is all propertynames and types are the specified. + */ + + public void _createImportDescriptor() { + boolean res = true; + boolean locResult = false; + + descriptor = oObj.createImportDescriptor(true); + log.print("Getting when calling createImportDescriptor(true) --"); + + + log.println("done"); + + log.print("Checking PropertyNames -- "); + locResult = checkPropertyNames(descriptor, names); + log.println("Worked: " + locResult); + res &= locResult; + + log.print("Checking PropertyTypes -- "); + locResult = checkPropertyTypes(descriptor, types); + log.println("Worked: " + locResult); + res &= locResult; + + descriptor = oObj.createImportDescriptor(false); + log.print("Getting when calling createImportDescriptor(false) -- "); + + + log.println("done"); + + log.print("Checking PropertyNames -- "); + locResult = checkPropertyNames(descriptor, names); + log.println("Worked: " + locResult); + res &= locResult; + + log.print("Checking PropertyTypes -- "); + locResult = checkPropertyTypes(descriptor, types); + log.println("Worked - " + locResult); + res &= locResult; + + tRes.tested("createImportDescriptor()", res); + } + + public void _doImport() { + requiredMethod("createImportDescriptor()"); + boolean res = true; + + log.print("Setting the ImportDescriptor (Bibliograpy, Table, biblio) -- "); + descriptor[0].Value = "Bibliography"; + descriptor[1].Value = com.sun.star.sheet.DataImportMode.TABLE; + descriptor[2].Value = "biblio"; + log.println("done"); + + log.print("Importing data (Bibliograpy, Table, biblio) -- "); + oObj.doImport(descriptor); + log.println("done"); + + log.println("Checking data"); + res &= checkA1("Identifier"); + + log.print("Setting the ImportDescriptor (Bibliograpy, SQL, select Author from biblio) -- "); + descriptor[0].Value = "Bibliography"; + descriptor[1].Value = com.sun.star.sheet.DataImportMode.SQL; + descriptor[2].Value = "select Author from biblio"; + log.println("done"); + + log.print("Importing data (Bibliograpy, SQL, select Author from biblio) -- "); + oObj.doImport(descriptor); + log.println("done"); + + log.println("Checking data"); + res &= checkA1("Author"); + + tRes.tested("doImport()",res); + } + + protected void printPropertyValue(PropertyValue[] props) { + for (int i = 0; i < props.length; i++) { + log.println("\tName: " + props[i].Name); + log.println("\tValue: " + props[i].Value); + } + } + + protected boolean checkPropertyNames(PropertyValue[] props, String[] names) { + boolean res = true; + + for (int i = 0; i < props.length; i++) { + boolean locResult = props[i].Name.equals(names[i]); + + if (!locResult) { + log.println("PropertyName differs for index " + i); + log.println("\tGetting: " + props[i].Name); + log.println("\tExpected: " + names[i]); + } + + res &= locResult; + } + + return res; + } + + protected boolean checkPropertyTypes(PropertyValue[] props, Type[] types) { + boolean res = true; + + for (int i = 0; i < props.length; i++) { + Type ValueType = new Type(props[i].Value.getClass()); + boolean locResult = ValueType.equals(types[i]); + + if (!locResult) { + log.println("PropertyType differs for " + props[i].Name); + log.println("\tGetting: " + ValueType.getTypeName()); + log.println("\tExpected: " + types[i].getTypeName()); + } + + res &= locResult; + } + + return res; + } + + protected boolean checkA1(String expected) { + XCellRange range = UnoRuntime.queryInterface(XCellRange.class, tEnv.getTestObject()); + boolean res = false; + try{ + String a1 = range.getCellByPosition(0,0).getFormula(); + res = a1.equals(expected); + if (!res) { + log.println("\tResult differs from expectation"); + log.println("\tGetting: "+a1); + log.println("\tExpected: "+expected); + } else { + log.println("successful"); + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Couldn't get Cell to check"); + } + return res; + } + + /** + * Dispose environment. + */ + @Override + protected void after() { + disposeEnvironment(); + } + +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/util/_XModeSelector.java b/qadevOOo/tests/java/ifc/util/_XModeSelector.java new file mode 100644 index 0000000000..d787eea427 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XModeSelector.java @@ -0,0 +1,95 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XModeSelector; + +/** +* Testing <code>com.sun.star.util.XModeSelector</code> +* interface methods : +* <ul> +* <li><code>setMode()</code></li> +* <li><code>getMode()</code></li> +* <li><code>getSupportedModes()</code></li> +* <li><code>supportsMode()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.util.XModeSelector +*/ +public class _XModeSelector extends MultiMethodTest { + public XModeSelector oObj = null; + + String[] supportedModes; + /** + * Calls the method and as argument pass one of the supported modes + * that was returned by method getSupportedMode.<p> + * Has <b> OK </b> status if no runtime exceptions occurred. + */ + public void _setMode() { + requiredMethod("getSupportedModes()"); + try { + oObj.setMode(supportedModes[0]); + } catch(com.sun.star.lang.NoSupportException e) { + log.println("Method setMode() doesn't support mode '" + + supportedModes[0] + "'"); + tRes.tested("setMode()", false); + return ; + } + tRes.tested("setMode()", true); + } + + /** + * Calls the method and check returned value.<p> + * Has <b> OK </b> status if no runtime exceptions occurred + * and returned value is equal to value that was set by method setMode. + */ + public void _getMode() { + requiredMethod("setMode()"); + String curMode = oObj.getMode(); + tRes.tested("getMode()", curMode.equals(supportedModes[0])); + } + + /** + * Calls the method and checks value returned by method.<p> + * Has <b> OK </b> status if no runtime exceptions occurred + * and returned value is not null. + */ + public void _getSupportedModes() { + supportedModes = oObj.getSupportedModes(); + tRes.tested("getSupportedModes()", supportedModes != null); + } + + /** + * Calls the method. First one of the supported modes that was returned + * by method getSupportedMode is passed as argument. + * Then the method is called again and the mode that is certainly not supported + * is passed. Checks up returned values in both cases.<p> + * Has <b> OK </b> status if no runtime exceptions occurred, + * returned value is true in first call and is false in second call. + */ + public void _supportsMode() { + requiredMethod("getSupportedModes()"); + boolean result = oObj.supportsMode(supportedModes[0]) && + ! oObj.supportsMode(supportedModes[0] + "_ForTest"); + tRes.tested("supportsMode()", result); + } +}// finish class _XModeSelector + diff --git a/qadevOOo/tests/java/ifc/util/_XModifiable.java b/qadevOOo/tests/java/ifc/util/_XModifiable.java new file mode 100644 index 0000000000..df3e000212 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XModifiable.java @@ -0,0 +1,48 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XModifiable; + + +public class _XModifiable extends MultiMethodTest { + public XModifiable oObj; + + public void _isModified() { + requiredMethod("setModified()"); + tRes.tested("isModified()", true); + } + + public void _setModified() { + boolean res = true; + + try { + oObj.setModified(true); + res = oObj.isModified(); + oObj.setModified(false); + res &= !oObj.isModified(); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("Exception while using method " + e.getMessage()); + res = false; + } + + tRes.tested("setModified()", res); + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/util/_XModifyBroadcaster.java b/qadevOOo/tests/java/ifc/util/_XModifyBroadcaster.java new file mode 100644 index 0000000000..22fa066ab4 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XModifyBroadcaster.java @@ -0,0 +1,73 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.lang.EventObject; +import com.sun.star.util.XModifyBroadcaster; +import com.sun.star.util.XModifyListener; + +/** +* Testing <code>com.sun.star.util.XModifyBroadcaster</code> +* interface methods : +* <ul> +* <li><code>addModifyListener()</code></li> +* <li><code>removeModifyListener()</code></li> +* </ul> <p> +* +* Result checking is not performed. Modify +* listeners are called only in case of +* interaction with UI. <p> +* +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.util.XModifyBroadcaster +*/ +public class _XModifyBroadcaster extends MultiMethodTest { + public XModifyBroadcaster oObj = null; + + private static class TestModifyListener implements XModifyListener { + public void disposing ( EventObject oEvent ) {} + public void modified (EventObject aEvent ) {} + } + + private final TestModifyListener listener = new TestModifyListener(); + + /** + * Just calls the method. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _addModifyListener() { + log.println("'Modified' events are called only in case"+ + " of user interaction."); + oObj.addModifyListener(listener); + tRes.tested("addModifyListener()", true); + } + + /** + * Just calls the method. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _removeModifyListener() { + requiredMethod("addModifyListener()"); + oObj.removeModifyListener(listener); + tRes.tested("removeModifyListener()", true); + } +}// finish class _XModifyBroadcaster + diff --git a/qadevOOo/tests/java/ifc/util/_XNumberFormatsSupplier.java b/qadevOOo/tests/java/ifc/util/_XNumberFormatsSupplier.java new file mode 100644 index 0000000000..65785807d2 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XNumberFormatsSupplier.java @@ -0,0 +1,89 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.util.XNumberFormats; +import com.sun.star.util.XNumberFormatsSupplier; + +/** + * Testing <code>com.sun.star.util.XNumberFormatsSupplier</code> + * interface methods : + * <ul> + * <li><code> getNumberFormatSettings()</code></li> + * <li><code> getNumberFormats()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.util.XNumberFormatsSupplier + */ +public class _XNumberFormatsSupplier extends MultiMethodTest { + + public XNumberFormatsSupplier oObj = null; + + /** + * Get format settings and checks some properties for existence. <p> + * + * Has <b> OK </b> status if a number properties inherent to + * <code>NumberFormatSettings</code> service exist in the + * returned <code>XPropertySet</code>. <p> + * + * @see com.sun.star.util.NumberFormatSettings + */ + public void _getNumberFormatSettings() { + boolean result = true ; + XPropertySet props = oObj.getNumberFormatSettings(); + + if (props != null) { + try { + result &= props.getPropertyValue("NullDate") != null && + props.getPropertyValue("StandardDecimals") != null && + props.getPropertyValue("NoZero") != null && + props.getPropertyValue("TwoDigitDateStart") != null ; + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Some property doesn't exist") ; + e.printStackTrace(log) ; + result = false ; + } catch (com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log) ; + result = false ; + } + } else { + log.println("Method returns null") ; + result = false ; + } + + tRes.tested("getNumberFormatSettings()", result) ; + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getNumberFormats() { + XNumberFormats formats = oObj.getNumberFormats(); + + tRes.tested("getNumberFormats()", formats != null) ; + } + +} + + diff --git a/qadevOOo/tests/java/ifc/util/_XNumberFormatter.java b/qadevOOo/tests/java/ifc/util/_XNumberFormatter.java new file mode 100644 index 0000000000..01f419ac7c --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XNumberFormatter.java @@ -0,0 +1,119 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XNumberFormatter; + + +/** + * Testing <code>com.sun.star.util.XNumberFormatter</code> + * interface methods : + * <ul> + * <li><code> attachNumberFormatsSupplier()</code></li> + * <li><code> convertNumberToString() </code></li> + * <li><code> convertStringToNumber() </code></li> + * <li><code> detectNumberFormat() </code></li> + * <li><code> formatString() </code></li> + * <li><code> getInputString() </code></li> + * <li><code> getNumberFormatsSupplier() </code></li> + * <li><code> queryColorForNumber() </code></li> + * <li><code> queryColorForString() </code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.util.XNumberFormatter + */ +public class _XNumberFormatter extends MultiMethodTest { + + public XNumberFormatter oObj = null; + + /** + * Not implemented yet. + */ + public void _attachNumberFormatsSupplier() { + log.println("Not yet implemented"); + } + + /** + * Tries to convert a number to a string. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _convertNumberToString() { + double dValue = 1.56; + int key = 15; + + String gString = oObj.convertNumberToString(key,dValue); + + log.println("Getting: "+gString); + tRes.tested("convertNumberToString",gString!=null); + } + + /** + * Not implemented yet. + */ + public void _convertStringToNumber() { + log.println("Not yet implemented"); + } + + /** + * Not implemented yet. + */ + public void _detectNumberFormat() { + log.println("Not yet implemented"); + } + + /** + * Not implemented yet. + */ + public void _formatString() { + log.println("Not yet implemented"); + } + + /** + * Not implemented yet. + */ + public void _getInputString() { + log.println("Not yet implemented"); + } + + /** + * Not implemented yet. + */ + public void _getNumberFormatsSupplier() { + log.println("Not yet implemented"); + } + + /** + * Not implemented yet. + */ + public void _queryColorForNumber() { + log.println("Not yet implemented"); + } + + /** + * Not implemented yet. + */ + public void _queryColorForString() { + log.println("Not yet implemented"); + } +} // finish class _XNumberFormatter + + diff --git a/qadevOOo/tests/java/ifc/util/_XProtectable.java b/qadevOOo/tests/java/ifc/util/_XProtectable.java new file mode 100644 index 0000000000..127d309710 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XProtectable.java @@ -0,0 +1,75 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.util; + +import com.sun.star.util.XProtectable; +import lib.MultiMethodTest; + +/** + * Check the XProtectable interface. + */ +public class _XProtectable extends MultiMethodTest { + public XProtectable oObj = null; + String sPassWord = "TopSecret"; + + /** + * Check, if the sheet is protected. + * Has OK status, if this is the case. + */ + public void _isProtected() { + requiredMethod("protect()"); + boolean result = oObj.isProtected(); + tRes.tested("isProtected()", result); + } + + /** + * Protect the sheet + */ + public void _protect() { + oObj.protect(sPassWord); + tRes.tested("protect()", true); + } + + /** + * Unprotect with wrong password, see if it's still protected. + * Unprotect with correct password, see if it's unprotected. + */ + public void _unprotect() { + requiredMethod("isProtected()"); + boolean result = true; + try { + oObj.unprotect("WrongPassword"); +// result = false; + } + catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Correct Exception thrown."); + } + // just check if it's still protected + result &= oObj.isProtected(); + try { + oObj.unprotect(sPassWord); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Wrong Exception thrown: password is correct."); + result = false; + } + result &= !oObj.isProtected(); + tRes.tested("unprotect()", result); + } + +} diff --git a/qadevOOo/tests/java/ifc/util/_XRefreshable.java b/qadevOOo/tests/java/ifc/util/_XRefreshable.java new file mode 100644 index 0000000000..1edfae0d55 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XRefreshable.java @@ -0,0 +1,110 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XRefreshListener; +import com.sun.star.util.XRefreshable; + +/** +* Testing <code>com.sun.star.util.XRefreshable</code> +* interface methods : +* <ul> +* <li><code> refresh()</code></li> +* <li><code> addRefreshListener()</code></li> +* <li><code> removeRefreshListener()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.util.XRefreshable +*/ +public class _XRefreshable extends MultiMethodTest { + + public XRefreshable oObj = null; + + final boolean listenerCalled[] = new boolean[1]; + + + /** + * <code>XRefreshListener</code> implementation which + * sets a flag when <code>refreshed</code> method is + * called. + */ + public class MyRefreshListener implements XRefreshListener { + public void refreshed (com.sun.star.lang.EventObject e) { + listenerCalled[0] = true; + } + + public void disposing (com.sun.star.lang.EventObject obj) {} + } + + XRefreshListener listener = new MyRefreshListener(); + + /** + * Just adds a listener. <p> + * Always has <b>OK</b> status. + */ + public void _addRefreshListener() { + + oObj.addRefreshListener(listener) ; + tRes.tested("addRefreshListener()", true); + } + + /** + * Calls the method and checks if the listener was called. <p> + * Has <b>OK</b> status if listener's flag is set after call. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addRefreshListener </code> : to have a listener added.</li> + * </ul> + */ + public void _refresh() { + + requiredMethod("addRefreshListener()"); + + oObj.refresh(); + + tRes.tested("refresh()", listenerCalled[0]); + if (!listenerCalled[0]) + log.println("RefreshListener wasn't called after refresh"); + + } + + /** + * Removes the listener added before and calls <code>refresh</code> + * method. Listener must not be called. <p> + * Has <b>OK</b> status if listener's flag isn't changed. + * <ul> + * <li> <code> refresh </code> : listener added must be already + * tested.</li> + * </ul> + */ + public void _removeRefreshListener() { + requiredMethod("refresh()"); + listenerCalled[0] = false; + + oObj.removeRefreshListener(listener) ; + oObj.refresh(); + + tRes.tested("removeRefreshListener()", !listenerCalled[0]); + if (listenerCalled[0]) + log.println("RefreshListener was called after removing"); + } +} // finish class _XRefreshable + diff --git a/qadevOOo/tests/java/ifc/util/_XReplaceDescriptor.java b/qadevOOo/tests/java/ifc/util/_XReplaceDescriptor.java new file mode 100644 index 0000000000..98249a9dbf --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XReplaceDescriptor.java @@ -0,0 +1,65 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XReplaceDescriptor; + +/** + * Testing <code>com.sun.star.util.XReplaceDescriptor</code> + * interface methods : + * <ul> + * <li><code> getReplaceString()</code></li> + * <li><code> setReplaceString()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.util.XReplaceDescriptor + */ +public class _XReplaceDescriptor extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XReplaceDescriptor oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getReplaceString(){ + log.println("test for getReplaceString() "); + tRes.tested("getReplaceString()", oObj.getReplaceString()!=null); + } + + /** + * Set a new string and checks the result. <p> + * Has <b> OK </b> status if the string before setting differs + * from string after setting. <p> + */ + public void _setReplaceString(){ + log.println("test for setReplaceString() "); + String oldReplaceStr = oObj.getReplaceString(); + oObj.setReplaceString("XReplaceDescriptor"); + String cmpReplaceStr = oObj.getReplaceString(); + tRes.tested("setReplaceString()", !(cmpReplaceStr.equals(oldReplaceStr))); + } + +} // finish class _XReplaceDescriptor + + diff --git a/qadevOOo/tests/java/ifc/util/_XReplaceable.java b/qadevOOo/tests/java/ifc/util/_XReplaceable.java new file mode 100644 index 0000000000..db80a4ed30 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XReplaceable.java @@ -0,0 +1,140 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import com.sun.star.table.XCell; +import lib.MultiMethodTest; + +import com.sun.star.util.XReplaceDescriptor; +import com.sun.star.util.XReplaceable; +import com.sun.star.util.XSearchDescriptor; + +/** + * Testing <code>com.sun.star.util.XReplaceable</code> + * interface methods : + * <ul> + * <li><code> createReplaceDescriptor()</code></li> + * <li><code> replaceAll()</code></li> + * </ul> <p> + * + * The requipment for the tested object is that it + * <b>must contain</b> string 'xTextDoc'. Only + * in that case this interface is tested correctly. <p> + * + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.util.XReplaceable + */ +public class _XReplaceable extends MultiMethodTest { + + public XReplaceable oObj = null; + public XReplaceDescriptor Rdesc = null; + private String mSearchString = "xTextDoc"; + private static final String mReplaceString = "** xTextDoc"; + private boolean mDispose = false; + + /** + * Creates an entry to search for, if the current object does not provide + * one. In this case, the environment is disposed after the test, since + * the inserted object may influence following tests. + * + */ + @Override + protected void before() { + Object o = tEnv.getObjRelation("SEARCHSTRING"); + if (o != null) { + mSearchString = (String)o; + } + // use object relation for XSearchable + o = tEnv.getObjRelation("XSearchable.MAKEENTRYINCELL"); + if (o != null) { + XCell[] cells = new XCell[0]; + if (o instanceof XCell) { + cells = new XCell[]{(XCell)o}; + } + else if (o instanceof XCell[]) { + cells = (XCell[])o; + } + else { + log.println("Needed object relation 'XSearchable.MAKEENTRYINCELL' is there, but is of type '" + + o.getClass().getName() + "'. Should be 'XCell' or 'XCell[]' instead."); + } + for (int i=0; i<cells.length; i++) { + cells[i].setFormula(mSearchString); + } + mDispose = true; + } + } + + /** + * Creates the descriptor for replacing string 'xTextDoc' + * with string '** xTextDoc'. <p> + * Has <b> OK </b> status if the returned descriptor is not + * <code>null</code>. <p> + */ + public void _createReplaceDescriptor() { + + log.println("testing createReplaceDescriptor() ... "); + + Rdesc = oObj.createReplaceDescriptor(); + Rdesc.setSearchString(mSearchString); + Rdesc.setReplaceString(mReplaceString); + tRes.tested("createReplaceDescriptor()", true); + + } + + /** + * Replaces the text using descriptor created before. Then + * search is performed in the target text. <p> + * + * Has <b> OK </b> status if the string '**' is found in + * the text. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> createReplaceDescriptor() </code> : replace + * descriptor is created. </li> + * </ul> + */ + public void _replaceAll() { + requiredMethod("createReplaceDescriptor()"); + oObj.replaceAll(Rdesc); + XSearchDescriptor SDesc = oObj.createSearchDescriptor(); + SDesc.setSearchString("**"); + boolean res = (oObj.findFirst(SDesc) != null); + // redo replacement + Rdesc.setSearchString(mReplaceString); + Rdesc.setReplaceString(mSearchString); + oObj.replaceAll(Rdesc); + res &= (oObj.findFirst(SDesc) == null); + + tRes.tested("replaceAll()",res); + } + + /** + * In case the interface itself made the entry to search for, the environment + * must be disposed + */ + @Override + protected void after() { + if(mDispose) { + disposeEnvironment(); + } + } +} + diff --git a/qadevOOo/tests/java/ifc/util/_XSearchDescriptor.java b/qadevOOo/tests/java/ifc/util/_XSearchDescriptor.java new file mode 100644 index 0000000000..bc7fc15107 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XSearchDescriptor.java @@ -0,0 +1,77 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XSearchDescriptor; + +/** + * Testing <code>com.sun.star.util.XSearchDescriptor</code> + * interface methods : + * <ul> + * <li><code> getSearchString()</code></li> + * <li><code> setSearchString()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.util.XSearchDescriptor + */ +public class _XSearchDescriptor extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XSearchDescriptor oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getSearchString(){ + boolean bResult = false; + String searchStr = null; + + log.println("test for getSearchString() "); + searchStr = oObj.getSearchString(); + + if (searchStr != null){ bResult = true; } + tRes.tested("getSearchString()", bResult); + } + + /** + * Set a new string and checks the result. <p> + * Has <b> OK </b> status if the string before setting differs + * from string after setting. <p> + */ + public void _setSearchString(){ + boolean bResult = false; + String oldSearchStr = null; + String cmpSearchStr = null; + String newSearchStr = "_XSearchDescriptor"; + log.println("test for setSearchString() "); + + oldSearchStr = oObj.getSearchString(); + oObj.setSearchString(newSearchStr); + cmpSearchStr = oObj.getSearchString(); + + if(!(cmpSearchStr.equals(oldSearchStr))){ bResult = true; } + tRes.tested("setSearchString()", bResult); + } + +} // finish class _XSearchDescriptor + diff --git a/qadevOOo/tests/java/ifc/util/_XSearchable.java b/qadevOOo/tests/java/ifc/util/_XSearchable.java new file mode 100644 index 0000000000..5c0f6789a1 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XSearchable.java @@ -0,0 +1,178 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.container.XIndexAccess; +import com.sun.star.table.XCell; +import com.sun.star.util.XSearchDescriptor; +import com.sun.star.util.XSearchable; + +/** + * Testing <code>com.sun.star.util.XSearchable</code> + * interface methods : + * <ul> + * <li><code> createSearchDescriptor()</code></li> + * <li><code> findAll()</code></li> + * <li><code> findFirst()</code></li> + * <li><code> findNext()</code></li> + * </ul> <p> + * + * The requipment for the tested object is that it + * <b>must contain</b> string 'xTextDoc'. Only + * in that case this interface is tested correctly. <p> + * + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.util.XSearchable + */ +public class _XSearchable extends MultiMethodTest { + + public XSearchable oObj = null; // oObj filled by MultiMethodTest + public XSearchDescriptor Sdesc = null; + public Object start = null; + private String mSearchString = "xTextDoc"; + private boolean mDispose = false; + private boolean mExcludeFindNext = false; + + /** + * Creates an entry to search for, if the current object does not provide + * one. In this case, the environment is disposed after the test, since + * the inserted object may influence following tests. + * + */ + @Override + protected void before() { + Object o = tEnv.getObjRelation("SEARCHSTRING"); + if (o != null) { + mSearchString = (String)o; + } + o = tEnv.getObjRelation("XSearchable.MAKEENTRYINCELL"); + if (o != null) { + XCell[] cells = new XCell[0]; + if (o instanceof XCell) { + cells = new XCell[]{(XCell)o}; + } + else if (o instanceof XCell[]) { + cells = (XCell[])o; + } + else { + log.println("Needed object relation 'XSearchable.MAKEENTRYINCELL' is there, but is of type '" + + o.getClass().getName() + "'. Should be 'XCell' or 'XCell[]' instead."); + } + for (int i=0; i<cells.length; i++) { + cells[i].setFormula(mSearchString); + } + mDispose = true; + } + mExcludeFindNext = (tEnv.getObjRelation("EXCLUDEFINDNEXT")==null)?false:true; + } + + /** + * Creates the search descriptor which searches for + * 'xTextDoc' string. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _createSearchDescriptor() { + + log.println("testing createSearchDescriptor() ... "); + + Sdesc = oObj.createSearchDescriptor(); + Sdesc.setSearchString(mSearchString); + tRes.tested("createSearchDescriptor()", true); + + } + + /** + * Performs search using descriptor created before. <p> + * Has <b> OK </b> status if the method not <code>null</code> + * collections. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> createSearchDescriptor() </code> : creates the descriptor + * required for search. </li> + * </ul> + */ + public void _findAll() { + + requiredMethod("createSearchDescriptor()"); + log.println("testing findAll()"); + + XIndexAccess IA = oObj.findAll(Sdesc); + tRes.tested("findAll()", IA != null); + } + + /** + * Performs search using descriptor created before. Storing the + * first occurrence result. <p> + * Has <b> OK </b> status if the method not <code>null</code> + * value. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> createSearchDescriptor() </code> : creates the descriptor + * required for search. </li> + * </ul> + */ + public void _findFirst() { + + requiredMethod("createSearchDescriptor()"); + log.println("testing findFirst()"); + start = oObj.findFirst(Sdesc); + tRes.tested("findFirst()", start != null); + } + + /** + * Performs search using descriptor and first search result + * created before. <p> + * Has <b> OK </b> status if the method not <code>null</code> + * value. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> findFirst() </code> : to have first search result. </li> + * </ul> + */ + public void _findNext() { + if (mExcludeFindNext) { + log.println("Testing findNext() excluded, because only one" + + " search result is available."); + tRes.tested("findNext()", true); + } + else{ + requiredMethod("findFirst()"); + + log.println("testing findNext()"); + Object xI = oObj.findNext(start,Sdesc); + tRes.tested("findNext()", xI != null); + } + } + + /** + * In case the interface itself made the entry to search for, the environment + * must be disposed + */ + @Override + protected void after() { + if(mDispose) { + disposeEnvironment(); + } + } +} + + diff --git a/qadevOOo/tests/java/ifc/util/_XSortable.java b/qadevOOo/tests/java/ifc/util/_XSortable.java new file mode 100644 index 0000000000..e43c93c16a --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XSortable.java @@ -0,0 +1,231 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.util; + +import java.io.PrintWriter; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.table.TableSortField; +import com.sun.star.util.XSortable; + + +/** + * Testing <code>com.sun.star.util.XSortable</code> + * interface methods : + * <ul> + * <li><code> createSortDescriptor()</code></li> + * <li><code> sort()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'SORTCHECKER'</code> : <code> +* _XSortable.XSortChecker</code> interface implementation + * </li> + * <ul><p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.util.XSortable + */ +public class _XSortable extends MultiMethodTest { + // oObj filled by MultiMethodTest + public XSortable oObj = null; + XSortChecker checker = null; + PropertyValue[] oPV = null; + + @Override + protected void before() { + checker = (XSortChecker) tEnv.getObjRelation("SORTCHECKER"); + + if (checker == null) { + throw new StatusException(Status.failed( + "Couldn't get relation 'SORTCHECKER'")); + } + + checker.setPrintWriter(log); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the length of the returned array + * is greater than zero. <p> + */ + public void _createSortDescriptor() { + boolean bResult = false; + + log.println("test for createSortDescriptor() "); + oPV = oObj.createSortDescriptor(); + + if (oPV.length > 0) { + bResult = true; + + for (int k = 0; k < oPV.length; k++) { + log.println("DescriptorProperty " + k + ": Name=" + + oPV[k].Name + "; Value=" + oPV[k].Value); + + if (oPV[k].Name.equals("SortFields")) { + TableSortField[] tsf = (TableSortField[]) oPV[k].Value; + + for (int l = 0; l < tsf.length; l++) { + log.println("\t isAscending: " + + tsf[l].IsAscending); + log.println("\t IsCaseSensitive: " + + tsf[l].IsCaseSensitive); + log.println("\t CollatorAlgorithm: " + + tsf[l].CollatorAlgorithm); + } + } + } + } + + log.println("Found " + oPV.length + " PropertyValues"); + tRes.tested("createSortDescriptor()", bResult); + } + + /** + * Test calls the method using descriptor created before as + * parameter. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> createSortDescriptor() </code> : to have a descriptor + * for sort. </li> + * </ul> + */ + public void _sort() { + + checker.prepareToSort(); + + log.println( + "############## Sort algorithm: Alphanumeric Order: Ascending"); + modifyDescriptor(false, true); + oObj.sort(oPV); + + boolean res = checker.checkSort(false, true); + log.println( + "############################################################"); + + log.println( + "############# Sort algorithm: Alphanumeric Order: Descending"); + modifyDescriptor(false, false); + oObj.sort(oPV); + res = checker.checkSort(false, false); + log.println( + "############################################################"); + + log.println( + "################# Sort algorithm: Numeric Order: Ascending"); + modifyDescriptor(true, true); + oObj.sort(oPV); + res = checker.checkSort(true, true); + log.println( + "############################################################"); + + log.println( + "################## Sort algorithm: Numeric Order: Descending"); + modifyDescriptor(true, false); + oObj.sort(oPV); + res = checker.checkSort(true, false); + log.println( + "############################################################"); + + tRes.tested("sort()", res); + } + + protected void modifyDescriptor(boolean isSortNumeric, + boolean isSortAscending) { + for (int i = 0; i < oPV.length; i++) { + if (oPV[i].Name.equals("SortFields")) { + TableSortField[] TableFields = (TableSortField[]) oPV[i].Value; + + if (TableFields.length == 0) { + TableFields = new TableSortField[1]; + TableFields[0] = new TableSortField(); + } + + for (int k = 0; k < TableFields.length; k++) { + TableFields[k].IsAscending = isSortAscending; + + if (isSortNumeric) { + TableFields[k].FieldType = com.sun.star.table.TableSortFieldType.NUMERIC; + TableFields[k].CollatorAlgorithm = "numeric"; + } else { + TableFields[k].FieldType = com.sun.star.table.TableSortFieldType.ALPHANUMERIC; + TableFields[k].CollatorAlgorithm = "alphanumeric"; + } + } + + oPV[i].Value = TableFields; + } + + if (oPV[i].Name.equals("isSortInTable")) { + oPV[i].Value = Boolean.TRUE; + } + + if (oPV[i].Name.equals("IsSortColumns")) { + oPV[i].Value = Boolean.FALSE; + } + } + + log.println("Modified sort descriptor: "); + + if (oPV.length > 0) { + for (int k = 0; k < oPV.length; k++) { + log.println("DescriptorProperty " + k + ": Name=" + + oPV[k].Name + "; Value=" + oPV[k].Value); + + if (oPV[k].Name.equals("SortFields")) { + TableSortField[] tsf = (TableSortField[]) oPV[k].Value; + + for (int l = 0; l < tsf.length; l++) { + log.println("\t isAscending: " + + tsf[l].IsAscending); + log.println("\t IsCaseSensitive: " + + tsf[l].IsCaseSensitive); + log.println("\t CollatorAlgorithm: " + + tsf[l].CollatorAlgorithm); + } + } + } + } + } + + /** + * The interface for sort checking. + */ + public interface XSortChecker { + void prepareToSort(); + + boolean checkSort(boolean isSortNumbering, + boolean isSortAscending); + + void setPrintWriter(PrintWriter log); + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + +} // finish class _XSortable diff --git a/qadevOOo/tests/java/ifc/util/_XStringEscape.java b/qadevOOo/tests/java/ifc/util/_XStringEscape.java new file mode 100644 index 0000000000..edd4a2d838 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XStringEscape.java @@ -0,0 +1,55 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XStringEscape; + +public class _XStringEscape extends MultiMethodTest { + + public XStringEscape oObj; + + public void _escapeString() { + log.println("The Implementation of this Interface doesn't really do anything"); + boolean res = true; + try { + String toCheck = ";:<>/*"; + String eString = oObj.escapeString(toCheck); + res = toCheck.equals(eString); + } catch (com.sun.star.lang.IllegalArgumentException e) { + System.out.println("IllegalArgument"); + } + tRes.tested("escapeString()",res); + } + + public void _unescapeString() { + log.println("The Implementation of this Interface doesn't really do anything"); + boolean res = true; + try { + String toCheck = ";:<>/*"; + String ueString = oObj.unescapeString(toCheck); + res = toCheck.equals(ueString); + } catch (com.sun.star.lang.IllegalArgumentException e) { + System.out.println("IllegalArgument"); + } + tRes.tested("unescapeString()",res); + } + +} diff --git a/qadevOOo/tests/java/ifc/util/_XStringSubstitution.java b/qadevOOo/tests/java/ifc/util/_XStringSubstitution.java new file mode 100644 index 0000000000..77d5fe5fbb --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XStringSubstitution.java @@ -0,0 +1,92 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import com.sun.star.util.XStringSubstitution; +import lib.MultiMethodTest; + +public class _XStringSubstitution extends MultiMethodTest { + + public XStringSubstitution oObj; + + public void _getSubstituteVariableValue() { + boolean res = true; + try { + log.println("try to get the valid variable $(user) ..."); + String toCheck = "$(user)"; + String eString = oObj.getSubstituteVariableValue(toCheck); + res = eString.startsWith("file:///"); + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("$(user) does not exist"); + tRes.tested("getSubstituteVariableValue()",false); + } + try { + log.println("try to get an invalid variable..."); + String toCheck = "$(ThisVariableShouldNoExist)"; + oObj.getSubstituteVariableValue(toCheck); + log.println("$(ThisVariableShouldNoExist) should not exist"); + tRes.tested("getSubstituteVariableValue()",false); + + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("expected exception was thrown."); + res &= true; + } + + tRes.tested("getSubstituteVariableValue()",res); + } + + public void _substituteVariables() { + boolean res = true; + try { + log.println("try to get a valid variable..."); + String toCheck = "$(user)"; + String eString = oObj.substituteVariables(toCheck, false); + log.println(eString); + res = eString.startsWith("file:///"); + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("$(user) does not exist"); + tRes.tested("substituteVariables()",false); + } + try { + log.println("try to get an invalid variable..."); + String toCheck = "$(ThisVariableShouldNoExist)"; + oObj.substituteVariables(toCheck,true); + log.println("$(ThisVariableShouldNoExist) should not exist"); + tRes.tested("substituteVariables()",false); + + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("expected exception was thrown."); + res &= true; + } + + tRes.tested("substituteVariables()",res); + } + + public void _reSubstituteVariables() { + boolean res = true; + log.println("try to get a valid variable..."); + String toCheck = "file:///"; + String eString = oObj.reSubstituteVariables(toCheck); + log.println(eString); + res = eString.startsWith("file:///"); + + tRes.tested("reSubstituteVariables()",res); + } + +} diff --git a/qadevOOo/tests/java/ifc/util/_XURLTransformer.java b/qadevOOo/tests/java/ifc/util/_XURLTransformer.java new file mode 100644 index 0000000000..9ce968cdf1 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XURLTransformer.java @@ -0,0 +1,461 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.util; + +import com.sun.star.util.URL; +import com.sun.star.util.XURLTransformer; +import lib.MultiMethodTest; + +/** +* Testing <code>com.sun.star.util.XURLTransformer</code> +* interface methods : +* <ul> +* <li><code> assemble() </code></li> +* <li><code> parseStrict() </code></li> +* <li><code> parseSmart() </code></li> +* <li><code> getPresentation() </code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.util.XURLTransformer +*/ +public class _XURLTransformer extends MultiMethodTest { + + public XURLTransformer oObj = null; + + static final String user = "user"; + static final String invalidUserPrefix = "1"; + static final String password = "password"; + static final String server = "server"; + static final String invalidServerPrefix = "1"; + static final String port = "8080"; + static final String path = "/pub/path"; + static final String name = "file.txt"; + static final String arguments = "a=b"; + static final String mark = "mark"; + + static final String expectedCompleteHTTP = "http://" + + server + ":" + port + path + + "/" + name + "?" + arguments + "#" + mark; + static final String expectedCompleteFTP = "ftp://" + + user + ":" + password + "@" + server + ":" + port + path + + "/" + name; + + /** + * First the complete URL (all URL fields are filled) is + * passed and assembled. Then incomplete URL (only + * <code>Server</code> field is set) is passed. <p> + * Has <b> OK </b> status if in the first case <code>true</code> + * returned and <code>Complete</code> field is set and in the + * second case <code>false</code> is returned. <p> + */ + public void _assemble(){ + URL[] url = new URL[1]; + url[0] = new URL(); + + url[0].Protocol = "http://"; + url[0].Server = server; + url[0].Port = Short.parseShort(port); + url[0].Path = path; + url[0].Name = name; + url[0].Arguments = arguments; + url[0].Mark = mark; + url[0].Main = "http://" + server + ":" + + port + path + "/" + name; + + boolean res = true; + + log.print("assemble http-URL: "); + boolean complete = oObj.assemble(url); + log.println(complete); + res &= complete; + + if (!expectedCompleteHTTP.equals(url[0].Complete)) { + log.println("assemble works wrong"); + log.println("complete field : " + url[0].Complete); + log.println("expected : " + expectedCompleteHTTP); + res = false; + } + + url[0] = new URL(); + url[0].Protocol = "ftp://"; + url[0].User = user; + url[0].Password = password; + url[0].Server = server; + url[0].Port = Short.parseShort(port); + url[0].Path = path; + url[0].Name = name; + url[0].Main = "ftp://" + user + ":" + password + "@" + server + ":" + + port + path + "/" + name; + + log.print("assemble ftp-URL: "); + complete = oObj.assemble(url); + log.println(complete); + res &= complete; + + if (!expectedCompleteFTP.equals(url[0].Complete)) { + log.println("assemble works wrong"); + log.println("complete field : " + url[0].Complete); + log.println("expected : " + expectedCompleteFTP); + res = false; + } + + URL[] incompleteUrl = new URL[1]; + incompleteUrl[0] = new URL(); + incompleteUrl[0].Server = server; + + log.print("assemble incomplete URL: "); + complete = oObj.assemble(incompleteUrl); + log.println(complete); + res &= !complete; + + // should be incomplete + tRes.tested("assemble()", res); + } + + /** + * First the complete URL (<code>Complete</code> field is set + * to proper URL) is passed and parsed. Then incomplete URL (only + * <code>Server</code> field is set) is passed. <p> + * Has <b> OK </b> status if in the first case <code>true</code> + * returned and all URL fields are set to proper values and in the + * second case <code>false</code> is returned. <p> + */ + public void _parseStrict() { + URL[] url = new URL[1]; + + url[0] = new URL(); + url[0].Complete = expectedCompleteHTTP; + + boolean res = true; + log.print("parseStrict(" + expectedCompleteHTTP + "): "); + boolean complete = oObj.parseStrict(url); + log.println(complete); + res &= complete; + + if (!url[0].Protocol.equals("http://")) { + log.println("parseStrict works wrong"); + log.println("protocol field : " + url[0].Protocol); + log.println("expected : http://"); + res = false; + } + + if (!url[0].Server.equals(server)) { + log.println("parseStrict works wrong"); + log.println("server field : " + url[0].Server); + log.println("expected : " + server); + res = false; + } + + if (url[0].Port != Short.parseShort(port)) { + log.println("parseStrict works wrong"); + log.println("port field : " + url[0].Port); + log.println("expected : " + port); + res = false; + } + + if ((!url[0].Path.equals(path)) && (!url[0].Path.equals(path + "/"))) { + log.println("parseStrict works wrong"); + log.println("path field : " + url[0].Path); + log.println("expected : " + path); + res = false; + } + + if (!url[0].Name.equals(name)) { + log.println("parseStrict works wrong"); + log.println("name field : " + url[0].Name); + log.println("expected : " + name); + res = false; + } + + if (!url[0].Arguments.equals(arguments)) { + log.println("parseStrict works wrong"); + log.println("arguments field : " + url[0].Arguments); + log.println("expected : " + arguments); + res = false; + } + + if (!url[0].Mark.equals(mark)) { + log.println("parseStrict works wrong"); + log.println("mark field : " + url[0].Mark); + log.println("expected : " + mark); + res = false; + } + + url[0] = new URL(); + url[0].Complete = expectedCompleteFTP; + + log.print("parseStrict(" + expectedCompleteFTP + "): "); + complete = oObj.parseStrict(url); + log.println(complete); + res &= complete; + + if (!url[0].Protocol.equals("ftp://")) { + log.println("parseStrict works wrong"); + log.println("protocol field : " + url[0].Protocol); + log.println("expected : ftp://"); + res = false; + } + + if (!url[0].User.equals(user)) { + log.println("parseStrict works wrong"); + log.println("user field : " + url[0].User); + log.println("expected : " + user); + res = false; + } + + if (!url[0].Password.equals(password)) { + log.println("parseStrict works wrong"); + log.println("password field : " + url[0].Password); + log.println("expected : " + password); + res = false; + } + + if (!url[0].Server.equals(server)) { + log.println("parseStrict works wrong"); + log.println("server field : " + url[0].Server); + log.println("expected : " + server); + res = false; + } + + if (url[0].Port != Short.parseShort(port)) { + log.println("parseStrict works wrong"); + log.println("port field : " + url[0].Port); + log.println("expected : " + port); + res = false; + } + + if ((!url[0].Path.equals(path)) && (!url[0].Path.equals(path + "/"))) { + log.println("parseStrict works wrong"); + log.println("path field : " + url[0].Path); + log.println("expected : " + path); + res = false; + } + + if (!url[0].Name.equals(name)) { + log.println("parseStrict works wrong"); + log.println("name field : " + url[0].Name); + log.println("expected : " + name); + res = false; + } + + URL[] incompleteUrl = new URL[1]; + incompleteUrl[0] = new URL(); + incompleteUrl[0].Complete = server; + + log.print("parseStrict(" + server + "): "); + complete = oObj.parseStrict(incompleteUrl); + log.println(complete); + // should be incomplete + res &= !complete; + + tRes.tested("parseStrict()", res); + } + + /** + * Tries to parse WWW server name. <p> + * Has <b> OK </b> status if the method return <code>true</code> + * value and <code>Protocol, Server, Port</code> URL fields are + * set properly. + */ + public void _parseSmart() { + URL[] url = new URL[1]; + + String httpURL = invalidServerPrefix + server + ":" + port + path + "/" + name + "?" + + arguments + "#" + mark; + + url[0] = new URL(); + url[0].Complete = httpURL; + + boolean res = true; + log.print("parseSmart('" + httpURL + "', 'http://'): "); + boolean complete = oObj.parseSmart(url, "http://"); + log.println(complete); + res &= complete; + + if (!url[0].Protocol.equals("http://")) { + log.println("parseSmart works wrong"); + log.println("protocol field : " + url[0].Protocol); + log.println("expected : http://"); + res = false; + } + + if (!url[0].Server.equals(invalidServerPrefix+server)) { + log.println("parseSmart works wrong"); + log.println("server field : " + url[0].Server); + log.println("expected : " + server); + res = false; + } + + if (url[0].Port != Short.parseShort(port)) { + log.println("parseSmart works wrong"); + log.println("port field : " + url[0].Port); + log.println("expected : " + port); + res = false; + } + + if ((!url[0].Path.equals(path)) && (!url[0].Path.equals(path + "/"))) { + log.println("parseSmart works wrong"); + log.println("path field : " + url[0].Path); + log.println("expected : " + path); + res = false; + } + + if (!url[0].Name.equals(name)) { + log.println("parseSmart works wrong"); + log.println("name field : " + url[0].Name); + log.println("expected : " + name); + res = false; + } + + if (!url[0].Arguments.equals(arguments)) { + log.println("parseSmart works wrong"); + log.println("arguments field : " + url[0].Arguments); + log.println("expected : " + arguments); + res = false; + } + + if (!url[0].Mark.equals(mark)) { + log.println("parseSmart works wrong"); + log.println("mark field : " + url[0].Mark); + log.println("expected : " + mark); + res = false; + } + + String ftpURL = invalidUserPrefix +user + ":" + password + "@" + server + ":" + + port + path + "/" + name; + + url[0] = new URL(); + url[0].Complete = ftpURL; + log.print("parseSmart('" + ftpURL + "', 'ftp://'): "); + complete = oObj.parseSmart(url, "ftp://"); + log.println(complete); + res &= complete; + + if (!url[0].Protocol.equals("ftp://")) { + log.println("parseSmart works wrong"); + log.println("protocol field : " + url[0].Protocol); + log.println("expected : ftp://"); + res = false; + } + + if (!url[0].User.equals(invalidUserPrefix+user)) { + log.println("parseSmart works wrong"); + log.println("user field : " + url[0].User); + log.println("expected : " + user); + res = false; + } + + if (!url[0].Password.equals(password)) { + log.println("parseSmart works wrong"); + log.println("password field : " + url[0].Password); + log.println("expected : " + password); + res = false; + } + + if (!url[0].Server.equals(server)) { + log.println("parseSmart works wrong"); + log.println("server field : " + url[0].Server); + log.println("expected : " + server); + res = false; + } + + if (url[0].Port != Short.parseShort(port)) { + log.println("parseSmart works wrong"); + log.println("port field : " + url[0].Port); + log.println("expected : " + port); + res = false; + } + + if ((!url[0].Path.equals(path)) && (!url[0].Path.equals(path + "/"))) { + log.println("parseSmart works wrong"); + log.println("path field : " + url[0].Path); + log.println("expected : " + path); + res = false; + } + + if (!url[0].Name.equals(name)) { + log.println("parseSmart works wrong"); + log.println("name field : " + url[0].Name); + log.println("expected : " + name); + res = false; + } + + tRes.tested("parseSmart()", res); + } + + /** + * Gets the presentation of a URL. <p> + * Has <b> OK </b> status if the method returns the same + * URL as was passed in parameter. + */ + public void _getPresentation() { + URL url = new URL(); + + url.Complete = expectedCompleteHTTP; + + log.println("getPresentation('" + expectedCompleteHTTP + "', true): "); + String presentation = oObj.getPresentation(url, true); + boolean res = presentation.equals(expectedCompleteHTTP); + log.println("Resulted presentation: " + presentation); + log.println("Expected presentation: " + expectedCompleteHTTP); + log.println("Result: " + res); + + url.Complete = expectedCompleteFTP; + log.println("getPresentation('" + expectedCompleteFTP + "', false): "); + // the password must be masquerade with <****> + StringBuilder sb = new StringBuilder(); + for (int n = 0 ; n < password.length(); n++){ + sb.append("*"); + } + String asterisk = sb.toString(); + asterisk = "<" + asterisk.substring(1,asterisk.length()); + asterisk = asterisk.substring(0,asterisk.length()-1) + ">"; + + presentation = oObj.getPresentation(url, false); + String expectedPresentation = "ftp://" + user + ":" + asterisk + "@" + + server + ":" + port + path + "/" + name; + res &= presentation.equals(expectedPresentation); + log.println("Resulted presentation: " + presentation); + log.println("Expected presentation: " + expectedPresentation); + log.println("Result: " + res); + + log.println("getPresentation('" + expectedCompleteFTP + "', true): "); + presentation = oObj.getPresentation(url, true); + expectedPresentation = "ftp://" + user + ":" + password + "@" + + server + ":" + port + path + "/" + name; + res &= presentation.equals(expectedPresentation); + log.println("Resulted presentation: " + presentation); + log.println("Expected presentation: " + expectedPresentation); + log.println("Result: " + res); + + String incorrectURL = "*bla-bla*"; + url.Complete = incorrectURL; + log.println("getPresentation('" + incorrectURL + "', false): "); + presentation = oObj.getPresentation(url, false); + expectedPresentation = ""; + res &= presentation.equals(expectedPresentation); + log.println("Resulted presentation: " + presentation); + log.println("Expected presentation: " + expectedPresentation); + log.println("Result: " + res); + + tRes.tested("getPresentation()", res); + } + +} // finish class _XURLTransformer + diff --git a/qadevOOo/tests/java/ifc/view/_XControlAccess.java b/qadevOOo/tests/java/ifc/view/_XControlAccess.java new file mode 100644 index 0000000000..65287304c1 --- /dev/null +++ b/qadevOOo/tests/java/ifc/view/_XControlAccess.java @@ -0,0 +1,115 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.view; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import util.FormTools; + +import com.sun.star.awt.XControl; +import com.sun.star.awt.XControlModel; +import com.sun.star.drawing.XControlShape; +import com.sun.star.drawing.XDrawPage; +import com.sun.star.drawing.XDrawPageSupplier; +import com.sun.star.drawing.XDrawPagesSupplier; +import com.sun.star.drawing.XShape; +import com.sun.star.drawing.XShapes; +import com.sun.star.lang.XComponent; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.view.XControlAccess; + +/** + * Testing <code>com.sun.star.view.XControlAccess</code> + * interface methods : + * <ul> + * <li><code> getControl()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'DOCUMENT'</code> (of type <code>XComponent</code>): + * the document, which controller is tested here. Is used + * for adding a component (such as CommandButton) and obtaining + * its control via tested interface. </li> + * <ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.view.XControlAccess + */ +public class _XControlAccess extends MultiMethodTest { + + public XControlAccess oObj = null; + + /** + * Retrieves a document from relation, then using it adds + * a CommandButton to a document and obtains button model. + * After that button control is tried to get using the + * tested interface. <p> + * Has <b> OK </b> status if non <code>null</code> control + * is returned. <p> + * @throws StatusException If the relation was not found. + */ + public void _getControl() + throws com.sun.star.uno.Exception + { + boolean bResult = true; + try { + XComponent oDoc = (XComponent)tEnv.getObjRelation("DOCUMENT"); + if (oDoc == null) { + throw new StatusException + (Status.failed("NO 'DOCUMENT' ObjRelation!")); + } + Boolean isSheet = (Boolean) tEnv.getObjRelation("XControlAccess.isSheet"); + XDrawPage oDP = null; + if (isSheet != null) { + XDrawPagesSupplier oDPS = UnoRuntime.queryInterface(XDrawPagesSupplier.class, oDoc); + oDP = UnoRuntime.queryInterface(XDrawPage.class, oDPS.getDrawPages().getByIndex(0)); + } else { + + + XDrawPageSupplier oDPS = UnoRuntime.queryInterface(XDrawPageSupplier.class, oDoc); + oDP = oDPS.getDrawPage(); + } + XShapes shapes = UnoRuntime.queryInterface + (XShapes.class, oDP); + XShape button = FormTools.createControlShape + (oDoc, 100, 100, 10000, 50000, "CommandButton"); + shapes.add(button); + + XControlModel CM = ((XControlShape)button).getControl(); + log.println("Getting ControlModel " + + ((CM == null) ? "FAILED" : "OK")); + + XControl oControl = oObj.getControl(CM); + log.println("Getting Control " + ((CM == null) ? "FAILED" : "OK")); + + bResult &= oControl != null; + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("Exception occurred calling the method: " + e); + bResult = false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception occurred calling the method: " + e); + bResult = false; + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Exception occurred calling the method: " + e); + bResult = false; + } + tRes.tested("getControl()", bResult); + } +} + diff --git a/qadevOOo/tests/java/ifc/view/_XFormLayerAccess.java b/qadevOOo/tests/java/ifc/view/_XFormLayerAccess.java new file mode 100644 index 0000000000..3d45c5474c --- /dev/null +++ b/qadevOOo/tests/java/ifc/view/_XFormLayerAccess.java @@ -0,0 +1,150 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.view; + +import com.sun.star.form.XForm; +import com.sun.star.form.runtime.XFormController; +import lib.MultiMethodTest; + +import com.sun.star.view.XFormLayerAccess; +import lib.Status; +import lib.StatusException; + + +/** + * Testing <code>com.sun.star.view.XFormLayerAccess</code> + * interface methods : + * <ul> + * <li><code> getFromController()</code></li> + * <li><code> isFormDesignMode()</code></li> + * <li><code> setFormDesignMode()</code></li> + * </ul> <p> + * + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.view.XFormLayerAccess + */ +public class _XFormLayerAccess extends MultiMethodTest { + + // oObj filled by MultiMethodTest + + public XFormLayerAccess oObj = null; + + private XForm xForm = null; + + /** + * checks if the object relation <CODE>XFormLayerAccess.XForm</CODE> + * is available + */ + @Override + public void before() { + xForm = (XForm) tEnv.getObjRelation("XFormLayerAccess.XForm"); + if (xForm == null) { + throw new StatusException(Status.failed("Object raltion 'XFormLayerAccess.XForm' is null")); + } + } + + /** + * Test disables the FormDesignMode and calls the method. <p> + * Has <b> OK </b> status if the method returns + * a not empty object of kind of com.sun.star.form.XFormController<P> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setFormDesignMode() </code></li> + * </ul> + * @see com.sun.star.view.XFormLayerAccess + */ + public void _getFromController(){ + requiredMethod("setFormDesignMode()") ; + + log.println("try to get current DesignMode..."); + boolean currentMode = oObj.isFormDesignMode(); + log.println("DesignMode is " + currentMode); + + log.println("enable DesignMode"); + oObj.setFormDesignMode(false); + + log.println("test for getFromController() "); + XFormController xFormCont = oObj.getFormController(xForm); + + if (xFormCont == null) + log.println("ERROR: Could not get FromContoller"); + + log.println("set back DesignMode to previous state"); + oObj.setFormDesignMode(currentMode); + + tRes.tested("getFromController()", xFormCont != null ); + } + + /** + * This test calls the test for <code>setFormDesignMode()</CODE>. + * Has <b> OK </b> status if the test for setFormDesignMode() returns + * <code>true</code> since the tests use <CODE>isFormDesignMode()</CODE><P> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setFormDesignMode() </code></li> + * </ul> + */ + public void _isFormDesignMode(){ + requiredMethod("setFormDesignMode()") ; + + log.println("test for isFormDesignMode() is ok since test for 'setFormDesingMode()' use it"); + tRes.tested("isFormDesignMode()", true); + } + + /** + * This test gets the current FormDesignMode, change it to the opposite and checks if the expected value of + * method isFormDesignmode() was given. Then the FormDesignmode was set back to the original value.<P> + * Has <B> OK </B> if expected values are returned. + * + */ + + public void _setFormDesignMode(){ + log.println("test for setFormDesignMode() and isFormDesignMode() "); + + log.println("try to get current DesignMode..."); + boolean currentMode = oObj.isFormDesignMode(); + log.println("DesignMode is " + currentMode); + + log.println("try to change to " + !currentMode + "..."); + oObj.setFormDesignMode(!currentMode); + log.println("try to get new DesignMode..."); + boolean newMode = oObj.isFormDesignMode(); + log.println("DesignMode is " + newMode); + + boolean bOK = (newMode != currentMode); + + if ( !bOK) + log.println("ERROR: both modes are equal"); + + log.println("set back DesignMode to " + currentMode); + oObj.setFormDesignMode(currentMode); + + log.println("try to get DesignMode..."); + boolean oldMode = oObj.isFormDesignMode(); + + bOK &= (bOK &(currentMode == oldMode)); + + if (currentMode != oldMode) + log.println("ERROR: could not change back"); + + tRes.tested("setFormDesignMode()", bOK ); + } + +} // finish class _XFormLayerAccess + diff --git a/qadevOOo/tests/java/ifc/view/_XMultiSelectionSupplier.java b/qadevOOo/tests/java/ifc/view/_XMultiSelectionSupplier.java new file mode 100644 index 0000000000..310e37e94e --- /dev/null +++ b/qadevOOo/tests/java/ifc/view/_XMultiSelectionSupplier.java @@ -0,0 +1,428 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.view; + +import com.sun.star.container.NoSuchElementException; +import com.sun.star.container.XEnumeration; +import com.sun.star.lang.WrappedTargetException; +import com.sun.star.view.XMultiSelectionSupplier; +import java.util.Comparator; +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +/** + * Testing <code>com.sun.star.view.XSelectionSupplier</code> + * interface methods : + * <ul> + * <li><code> addSelection()</code></li> + * <li><code> removeSelection()</code></li> + * <li><code> clearSelection()</code></li> + * <li><code> getSelectionCount()</code></li> + * <li><code> createSelectionEnumeration()</code></li> + * <li><code> createReverseSelectionEnumeration()</code></li> + * </ul> + * This test needs the following object relations : + * <ul> + * <li> <code>'Selections'</code> of type <code>Object[]</code> : + * the array of the instances which can be selected.</li> + * <li> <code>'Comparer'</code> of type <code>Comparator</code> : + * the interface for comparing of selected instances</li> + * <ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.view.XSelectionSupplier + */ +public class _XMultiSelectionSupplier extends MultiMethodTest { + + public XMultiSelectionSupplier oObj = null; + Object[] selections = null; + Comparator<Object> ObjCompare = null; + + @SuppressWarnings("unchecked") + @Override + protected void before() { + selections = (Object[])tEnv.getObjRelation("Selections"); + if (selections == null) { + throw new StatusException(Status.failed( + "Couldn't get relation 'Selections'")); + } + + ObjCompare = (Comparator<Object>)tEnv.getObjRelation("Comparer"); + } + + @Override + protected void after() { + disposeEnvironment(); + } + + /** + * Selects an instance from relation 'First'. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + */ + public void _addSelection() { + + boolean bOK = true; + + log.println("clear selections"); + oObj.clearSelection(); + + int count = oObj.getSelectionCount(); + + bOK &= (count == 0); + + if ( ! bOK) log.println("ERROR: after clear selection I got a selection count of '" + count + "' => FAILED"); + + for(int i = 0; i < selections.length; i++) { + try { + log.println("select object from object relation 'selections["+i+"]'"); + oObj.addSelection(selections[i]); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: could not add selection from object relation 'selections[" + i + "]': " + ex.toString()); + bOK = false; + } + count = oObj.getSelectionCount(); + if (count != (i+1)){ + log.println("ERROR: add a selection but selection count ("+count+ ") " + + "is not as expected (" + (i+1) + ") => FAILED"); + bOK = false; + } + } + + log.println("try to select object relation 'selections[0]' second time..."); + try { + count = oObj.getSelectionCount(); + oObj.addSelection(selections[0]); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: could not add selection from object relation 'selections[0] a second time': " + ex.toString()); + } + if (count != oObj.getSelectionCount()){ + log.println("ERROR: the selected count ("+oObj.getSelectionCount() +") is not that before (" + count + ")"); + bOK = false; + } + + log.println("try to select invalid object..."); + try { + + oObj.addSelection(oObj); + + log.println("ERROR: expected exception 'com.sun.star.lang.IllegalArgumentException' was not thrown => FAILED"); + bOK = false; + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("expected exception 'com.sun.star.lang.IllegalArgumentException' => OK"); + } + + tRes.tested("addSelection()", bOK); + } + + public void _removeSelection() { + requiredMethod("addSelection()"); + + boolean bOK = true; + + log.println("clear selections"); + oObj.clearSelection(); + + int count = oObj.getSelectionCount(); + + bOK &= (count == 0); + + if ( ! bOK) log.println("ERROR: after clear selection I got a selection count of '" + count + "' => FAILED"); + + log.println("add some selections..."); + for(int i = 0; i < selections.length; i++) { + try { + log.println("select object from object relation 'selections["+i+"]'"); + oObj.addSelection(selections[i]); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: could not add selection from object relation 'selections[" + i + "]': " + ex.toString()); + bOK = false; + } + count = oObj.getSelectionCount(); + if (count != (i+1)){ + log.println("ERROR: added a selection but selection count ("+count+ ") " + + "is not as expected (" + (i+1) + ") => FAILED"); + bOK = false; + } + } + + log.println("try now to remove selections..."); + + count = oObj.getSelectionCount(); + int oldCount = oObj.getSelectionCount(); + for(int i = 0; i < selections.length; i++) { + try { + log.println("remove selection for object relation 'selections["+i+"]'"); + oObj.removeSelection(selections[i]); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: could not remove selection from object relation 'selections[" + i + "]': " + ex.toString()); + bOK = false; + } + count = oObj.getSelectionCount(); + if (count != (oldCount - i - 1)){ + log.println("ERROR: removed a selection but selection count ("+count+ ") " + + "is not as expected (" + (oldCount -i -1) + ") => FAILED"); + bOK = false; + } + } + + log.println("try to remove a removed selection a second time..."); + count = oObj.getSelectionCount(); + try { + oObj.removeSelection(selections[0]); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: could not remove selection from object relation 'selections[0] a second time': " + ex.toString()); + } + if (count != oObj.getSelectionCount()){ + log.println("ERROR: the selected count ("+oObj.getSelectionCount() +") is not that before (" + count + ")"); + bOK = false; + } + + log.println("try to remove invalid object..."); + try { + + oObj.removeSelection(oObj); + + log.println("ERROR: expected exception 'com.sun.star.lang.IllegalArgumentException' was not thrown => FAILED"); + bOK = false; + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("expected exception 'com.sun.star.lang.IllegalArgumentException' => OK"); + } + + tRes.tested("removeSelection()", bOK); + } + + + /** + * First test changes selection of the object : if nothing is + * currently selected or first instance ('First' relation) is + * selected then selects second instance; if second instance + * is currently selected then the first instance is selected. <p> + * Then <code>getSelection</code> is called and values set and + * get are compared. Comparison has some special cases. For + * example if selection is a Cell, then the values contained + * in cells are compared. <p> + * Has <b>OK</b> status if selection changed properly. + */ + public void _getSelectionCount() { + requiredMethod("addSelection()"); + tRes.tested("getSelectionCount()", true); + } + + public void _clearSelection() { + requiredMethod("addSelection()"); + boolean bOK = true; + + log.println("clear selections"); + oObj.clearSelection(); + + int count = oObj.getSelectionCount(); + + bOK &= (count == 0); + + if ( ! bOK) log.println("ERROR: after clear selection I got a selection count of '" + count + "' => FAILED"); + + log.println("add some selections..."); + for(int i = 0; i < selections.length; i++) { + try { + log.println("select object from object relation 'selections["+i+"]'"); + oObj.addSelection(selections[i]); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: could not add selection from object relation 'selections[" + i + "]': " + ex.toString()); + bOK = false; + } + count = oObj.getSelectionCount(); + if (count != (i+1)){ + log.println("ERROR: added a selection but selection count ("+count+ ") " + + "is not as expected (" + (i+1) + ") => FAILED"); + bOK = false; + } + } + + count = oObj.getSelectionCount(); + + log.println("clear selections..."); + oObj.clearSelection(); + + count = oObj.getSelectionCount(); + + bOK &= (count == 0); + + if ( ! bOK) log.println("ERROR: after clear selection I got a selection count of '" + count + "' => FAILED"); + + tRes.tested("clearSelection()", bOK); + } + + public void _createSelectionEnumeration() { + requiredMethod("addSelection()"); + boolean bOK = true; + + log.println("clear selections"); + oObj.clearSelection(); + + int count = oObj.getSelectionCount(); + + bOK &= (count == 0); + + if ( ! bOK) log.println("ERROR: after clear selection I got a selection count of '" + count + "' => FAILED"); + + log.println("add some selections..."); + for(int i = 0; i < selections.length; i++) { + try { + log.println("select object from object relation 'selections["+i+"]'"); + oObj.addSelection(selections[i]); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: could not add selection from object relation 'selections[" + i + "]': " + ex.toString()); + bOK = false; + } + count = oObj.getSelectionCount(); + if (count != (i+1)){ + log.println("ERROR: added a selection but selection count ("+count+ ") " + + "is not as expected (" + (i+1) + ") => FAILED"); + bOK = false; + } + } + + log.println("create enumeration..."); + XEnumeration xEnum = oObj.createSelectionEnumeration(); + + boolean compRes = true; //compare result + int i = 0; + + while (xEnum.hasMoreElements()){ + log.println("try to get first element.."); + Object nextElement = null; + try { + nextElement = xEnum.nextElement(); + } catch (WrappedTargetException ex) { + log.println("ERROR: could not get nextElement: " + ex.toString()); + bOK = false; + } catch (NoSuchElementException ex) { + log.println("ERROR: could not get nextElement: " + ex.toString()); + bOK = false; + } + Object shouldElement = selections[i]; + i++; + + if (nextElement != null) + { + if (ObjCompare != null) { + compRes = ObjCompare.compare(shouldElement, nextElement) == 0; + } else { + compRes = util.ValueComparer.equalValue(shouldElement, nextElement); + } + + log.println("nextElement()-object and expected object 'selections["+i+"]' are equal: "+compRes); + + if (!compRes && (selections[i]) instanceof Object[]) { + if (((Object[])selections[i])[0] instanceof Integer) { + log.println("Getting: "+((Integer) ((Object[])shouldElement)[0]).intValue()); + log.println("Expected: "+((Integer) ((Object[])selections[i])[0]).intValue()); + } + } + bOK &= compRes; + + } else { + bOK = false; + } + } + + tRes.tested("createSelectionEnumeration()", bOK); + } + + public void _createReverseSelectionEnumeration() { + requiredMethod("addSelection()"); + boolean bOK = true; + + log.println("clear selections"); + oObj.clearSelection(); + + int count = oObj.getSelectionCount(); + + bOK &= (count == 0); + + if ( ! bOK) log.println("ERROR: after clear selection I got a selection count of '" + count + "' => FAILED"); + + log.println("add some selections..."); + for(int i = 0; i < selections.length; i++) { + try { + log.println("select object from object relation 'selections["+i+"]'"); + oObj.addSelection(selections[i]); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("ERROR: could not add selection from object relation 'selections[" + i + "]': " + ex.toString()); + bOK = false; + } + count = oObj.getSelectionCount(); + if (count != (i+1)){ + log.println("ERROR: added a selection but selection count ("+count+ ") " + + "is not as expected (" + (i+1) + ") => FAILED"); + bOK = false; + } + } + + log.println("create enumeration..."); + XEnumeration xEnum = oObj.createSelectionEnumeration(); + + boolean compRes = true; //compare result + int i = selections.length - 1; + + while (xEnum.hasMoreElements()){ + log.println("try to get first element.."); + Object nextElement = null; + try { + nextElement = xEnum.nextElement(); + } catch (WrappedTargetException ex) { + log.println("ERROR: could not get nextElement: " + ex.toString()); + bOK = false; + } catch (NoSuchElementException ex) { + log.println("ERROR: could not get nextElement: " + ex.toString()); + bOK = false; + } + Object shouldElement = selections[i]; + i--; + + if (nextElement != null) { + if (ObjCompare != null) { + compRes = ObjCompare.compare(shouldElement, nextElement) == 0; + } else { + compRes = util.ValueComparer.equalValue(shouldElement, nextElement); + } + + log.println("nextElement()-object and expected object 'selections["+i+"]' are equal: "+compRes); + + if (!compRes && (selections[i]) instanceof Object[]){ + if (((Object[])selections[i])[0] instanceof Integer) { + log.println("Getting: "+((Integer) ((Object[])shouldElement)[0]).intValue()); + log.println("Expected: "+((Integer) ((Object[])selections[i])[0]).intValue()); + } + } + bOK &= compRes; + + } else { + bOK = false; + } + + } + + tRes.tested("createReverseSelectionEnumeration()", bOK); + } + +} // finish class _XMultiSelectionSupplier + + + diff --git a/qadevOOo/tests/java/ifc/view/_XPrintJobBroadcaster.java b/qadevOOo/tests/java/ifc/view/_XPrintJobBroadcaster.java new file mode 100644 index 0000000000..99d30f9946 --- /dev/null +++ b/qadevOOo/tests/java/ifc/view/_XPrintJobBroadcaster.java @@ -0,0 +1,146 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.view; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.view.PrintJobEvent; +import com.sun.star.view.XPrintJobBroadcaster; +import com.sun.star.view.XPrintJobListener; +import com.sun.star.view.XPrintable; +import java.io.File; +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +/** + * Test the XPrintJobBroadcaster interface + */ +public class _XPrintJobBroadcaster extends MultiMethodTest { + public XPrintJobBroadcaster oObj = null; + MyPrintJobListener listenerImpl = null; + + /** + * Get an object implementation of the _XPrintJobListener interface from the + * test environment. + */ + @Override + public void before() { + listenerImpl = (MyPrintJobListener)tEnv.getObjRelation("XPrintJobBroadcaster.XPrintJobListener"); + if (listenerImpl == null) { + throw new StatusException(Status.failed(" No test possible. The XPrintJobListener interface has to be implemented.")); + } + } + + /** + * add the listener, see if it's called. + */ + public void _addPrintJobListener() { + oObj.addPrintJobListener(listenerImpl); + listenerImpl.fireEvent(); + waitForEventIdle(); + tRes.tested("addPrintJobListener()", listenerImpl.actionTriggered()); + } + + /** + * remove the listener, see if it's still called. + */ + public void _removePrintJobListener() { + requiredMethod("addPrintJobListener"); + oObj.removePrintJobListener(listenerImpl); + + waitForEventIdle(); + + listenerImpl.reset(); + listenerImpl.fireEvent(); + tRes.tested("removePrintJobListener()", !listenerImpl.actionTriggered()); + } + + /** + * Implementation for testing the XPrintJobBroadcaster interface: + * a listener to add. + */ + public static class MyPrintJobListener implements XPrintJobListener { + boolean eventCalled = false; + // object to trigger the event + XPrintable xPrintable = null; + PropertyValue[]printProps = null; + String printFileName = null; + + /** + * Constructor + * @param printable An object that can be cast to an XPrintable. + */ + public MyPrintJobListener(Object printable, String printFileName) { + this.printFileName = printFileName; + xPrintable = UnoRuntime.queryInterface(XPrintable.class, printable); + printProps = new PropertyValue[2]; + printProps[0] = new PropertyValue(); + printProps[0].Name = "FileName"; + printProps[0].Value = printFileName; + printProps[0].State = com.sun.star.beans.PropertyState.DEFAULT_VALUE; + printProps[1] = new PropertyValue(); + printProps[1].Name = "Wait"; + printProps[1].Value = Boolean.TRUE; + } + + /** + * Has the action been triggered? + * @return True if "printJobEvent" has been called. + */ + public boolean actionTriggered() { + return eventCalled; + } + + /** + * Fire the event that calls the printJobEvent + */ + public void fireEvent() { + try { + xPrintable.print(printProps); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + } + } + + public void reset() { + File f = new File(printFileName); + if (f.exists()) { + boolean bDeleteOk = f.delete(); + if (!bDeleteOk) { + System.out.println("delete failed"); + } + } + eventCalled = false; + } + + /** + * The print job event: has to be called when the action is triggered. + */ + public void printJobEvent(PrintJobEvent printJobEvent) { + eventCalled = true; + } + + /** + * Disposing event: ignore. + */ + public void disposing(com.sun.star.lang.EventObject eventObject) { + } + } + +} diff --git a/qadevOOo/tests/java/ifc/view/_XPrintSettingsSupplier.java b/qadevOOo/tests/java/ifc/view/_XPrintSettingsSupplier.java new file mode 100644 index 0000000000..cb11b303dd --- /dev/null +++ b/qadevOOo/tests/java/ifc/view/_XPrintSettingsSupplier.java @@ -0,0 +1,53 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.view; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.view.XPrintSettingsSupplier; + + +/** + * Testing <code>com.sun.star.view.XPrintSettingsSupplier</code> + * interface methods : + * <ul> + * <li><code> getPrintSettings()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.view.XPrintSettingsSupplier + */ +public class _XPrintSettingsSupplier extends MultiMethodTest { + + public XPrintSettingsSupplier oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getPrintSettings(){ + + XPropertySet oPSS = oObj.getPrintSettings(); + tRes.tested("getPrintSettings()", oPSS != null); + + } // finish _getPrintSettings + +} // finish class _XPrintSettingsSupplier + diff --git a/qadevOOo/tests/java/ifc/view/_XPrintable.java b/qadevOOo/tests/java/ifc/view/_XPrintable.java new file mode 100644 index 0000000000..06515f66db --- /dev/null +++ b/qadevOOo/tests/java/ifc/view/_XPrintable.java @@ -0,0 +1,179 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.view; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import util.utils; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.ucb.XSimpleFileAccess; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.view.PaperOrientation; +import com.sun.star.view.XPrintable; + +/** + * Testing <code>com.sun.star.view.XPrintable</code> + * interface methods : + * <ul> + * <li><code> getPrinter()</code></li> + * <li><code> setPrinter()</code></li> + * <li><code> print()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.view.XPrintable + */ +public class _XPrintable extends MultiMethodTest { + + public XPrintable oObj = null; + public PropertyValue[] the_printer = null; + + /** + * Test calls the method and stores returned value. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getPrinter(){ + + the_printer = oObj.getPrinter(); + tRes.tested("getPrinter()",the_printer != null); + } // finish _getPrinter + + /** + * Changes <code>PaperOrientation</code> property in the old + * printer configuration and sets changed value as a new printer.<p> + * + * Has <b> OK </b> status if the <code>getPrinter</code> method + * returns printer with changed property. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getPrinter() </code> : to change one property + * in existing printer configuration. </li> + * </ul> + */ + public void _setPrinter(){ + requiredMethod("getPrinter()"); + int propIdx = 0 ; + while (!"PaperOrientation".equals(the_printer[propIdx].Name)) { + propIdx++ ; + } + PaperOrientation newVal = null ; + if (the_printer[propIdx].Value == PaperOrientation.PORTRAIT) + newVal = PaperOrientation.LANDSCAPE ; + else + newVal = PaperOrientation.PORTRAIT ; + + the_printer[propIdx].Value = newVal ; + + try { + oObj.setPrinter(the_printer); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("couldn't set printer"); + ex.printStackTrace(log); + tRes.tested("setPrinter()",false); + } + + the_printer = oObj.getPrinter() ; + + propIdx = 0 ; + while (!"PaperOrientation".equals(the_printer[propIdx].Name)) { + propIdx++ ; + } + + boolean the_same = the_printer[propIdx].Value == newVal; + tRes.tested("setPrinter()", the_same); + + } // finish _setPrinter + + /** + * Printing performed into file in SOffice temp directory. + * First this file is deleted if it already exist (using + * <code>com.sun.star.ucb.SimpleFileAccess</code> service. + * After that the method with appropriate parameter is + * called.<p> + * + * Has <b> OK </b> status if the file to which printing is made + * exists. <p> + * + * @throws StatusException if service + * <code>com.sun.star.ucb.SimpleFileAccess</code> can't be + * created. + */ + public void _print() throws Exception { + boolean result = true ; + + final String file = "XPrintable.prt" ; + final String fileName = utils.getOfficeTempDirSys(tParam.getMSF())+file ; + final String fileURL = utils.getOfficeTemp(tParam.getMSF()) + file ; + + Object oFAcc = + tParam.getMSF().createInstance + ("com.sun.star.ucb.SimpleFileAccess") ; + XSimpleFileAccess fAcc = UnoRuntime.queryInterface + (XSimpleFileAccess.class, oFAcc) ; + if (fAcc == null) throw new StatusException + (Status.failed("Can't create SimpleFileAccess service")) ; + if (fAcc.exists(fileURL)) { + log.println("Old file exists and will be deleted"); + fAcc.kill(fileURL); + } + + try { + PropertyValue[] PrintOptions = new PropertyValue[2]; + PropertyValue firstProp = new PropertyValue(); + firstProp.Name = "FileName"; + log.println("Printing to :"+fileName); + firstProp.Value = fileName; + firstProp.State = com.sun.star.beans.PropertyState.DEFAULT_VALUE; + PrintOptions[0] = firstProp; + PrintOptions[1] = new PropertyValue(); + PrintOptions[1].Name = "Wait"; + PrintOptions[1].Value = Boolean.TRUE; + oObj.print(PrintOptions); + } + catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("couldn't print"); + ex.printStackTrace(log); + result = false ; + } + + try { + boolean fileExists = fAcc.exists(fileURL); + + log.println("File "+fileName+" exists = "+fileExists); + + if (result) { + result &= fileExists ; + } + } catch (com.sun.star.uno.Exception e) { + log.println("Error while checking file '" + + fileURL + "': "); + e.printStackTrace(log); + result = false ; + } + + tRes.tested("print()", result) ; + + } // finish _print + +} // finish class _XPrintable + + diff --git a/qadevOOo/tests/java/ifc/view/_XScreenCursor.java b/qadevOOo/tests/java/ifc/view/_XScreenCursor.java new file mode 100644 index 0000000000..aad7257e36 --- /dev/null +++ b/qadevOOo/tests/java/ifc/view/_XScreenCursor.java @@ -0,0 +1,78 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.view; + +import lib.MultiMethodTest; + +import com.sun.star.view.XScreenCursor; + + +/** + * Testing <code>com.sun.star.view.XScreenCursor</code> + * interface methods : + * <ul> + * <li><code> screenDown()</code></li> + * <li><code> screenUp()</code></li> + * </ul> <p> + * + * Uses test parameter <b><code>soapi.test.hidewindows</code></b>. + * Methods of this interface works with view representation, + * thereby their calls have no effect when document is opened + * in hidden mode. <p> + * + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.view.XScreenCursor + */ +public class _XScreenCursor extends MultiMethodTest { + + // oObj filled by MultiMethodTest + + public XScreenCursor oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns + * <code>true</code> value or if document is + * opened in hidden mode. + */ + public void _screenDown(){ + log.println("test for screenDown() "); + tRes.tested("screenDown()", oObj.screenDown() ); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns + * <code>true</code> value or if document is + * opened in hidden mode. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> screenDown() </code> : by default view is on the + * top of page, thereby it's needed first to move down. </li> + * </ul> + */ + public void _screenUp(){ + requiredMethod("screenDown()") ; + + log.println("test for screenUp() "); + tRes.tested("screenUp()", oObj.screenUp() ); + } + +} // finish class _XScreenCursor + diff --git a/qadevOOo/tests/java/ifc/view/_XSelectionSupplier.java b/qadevOOo/tests/java/ifc/view/_XSelectionSupplier.java new file mode 100644 index 0000000000..cc6bc4120a --- /dev/null +++ b/qadevOOo/tests/java/ifc/view/_XSelectionSupplier.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 ifc.view; + +import com.sun.star.lang.EventObject; +import com.sun.star.view.XSelectionChangeListener; +import com.sun.star.view.XSelectionSupplier; +import java.util.Comparator; +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + + +/** + * Testing <code>com.sun.star.view.XSelectionSupplier</code> + * interface methods : + * <ul> + * <li><code> select()</code></li> + * <li><code> getSelection()</code></li> + * <li><code> addSelectionChangeListener()</code></li> + * <li><code> removeSelectionChangeListener()</code></li> + * </ul> + * This test needs the following object relations : + * <ul> + * <li> <code>'Selections'</code> of type <code>Object[]</code> : + * the array of the instances which can be selected.</li> + * <li> <code>'Comparer'</code> of type <code>Comparator</code> : + * the interface for comparing of selected instances</li> + * <ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.view.XSelectionSupplier + */ +public class _XSelectionSupplier extends MultiMethodTest { + + public XSelectionSupplier oObj = null; + public boolean selectionChanged = false; + Object[] selections = null; + Comparator<Object> ObjCompare = null; + + @SuppressWarnings("unchecked") + @Override + protected void before() { + selections = (Object[])tEnv.getObjRelation("Selections"); + if (selections == null) { + throw new StatusException(Status.failed( + "Couldn't get relation 'Selections'")); + } + + ObjCompare = (Comparator<Object>)tEnv.getObjRelation("Comparer"); + } + + @Override + protected void after() { + disposeEnvironment(); + } + + /** + * Listener implementation which just set flag when listener + * method is called. + */ + public class MyChangeListener implements XSelectionChangeListener { + public void disposing( EventObject oEvent ) {} + public void selectionChanged(EventObject ev) { + log.println("listener called"); + selectionChanged = true; + } + + } + + XSelectionChangeListener listener = new MyChangeListener(); + + /** + * Test adds listener to the object, then selects first and + * then second instances to be sure that selection was changed.<p> + * Has <b>OK</b> status if selection listener was called. + */ + public void _addSelectionChangeListener(){ + boolean res = true; + try { + selectionChanged = false; + oObj.addSelectionChangeListener(listener); + oObj.select(selections[0]); + oObj.select(selections[1]); + res = selectionChanged; + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception occurred during addSelectionChangeListener()"); + ex.printStackTrace(log); + res = false; + } + tRes.tested("addSelectionChangeListener()", res); + } + + /** + * Selects an instance from relation 'First'. <p> + * Has <b> OK </b> status if no exceptions were thrown. <p> + */ + public void _select() { + boolean res = true; + boolean locRes = true; + boolean compRes = true; + Object oldSelection = null; + try { + for(int i = 0; i < selections.length; i++) { + oldSelection = oObj.getSelection(); + locRes = oObj.select(selections[i]); + log.println("select #" + i + ": " + locRes); + Object curSelection = oObj.getSelection(); + if (locRes) { + + if (ObjCompare != null) { + compRes = ObjCompare.compare(selections[i], curSelection) == 0; + } else { + compRes = util.ValueComparer.equalValue(selections[i], curSelection); + } + log.println("selected object and current selection are equal: "+compRes); + if (!compRes && (selections[i]) instanceof Object[]){ + if (((Object[])selections[i])[0] instanceof Integer) { + log.println("Getting: "+((Integer) ((Object[])curSelection)[0]).intValue()); + log.println("Expected: "+((Integer) ((Object[])selections[i])[0]).intValue()); + } + } + res &= compRes; + } else { + compRes = util.ValueComparer.equalValue(curSelection, oldSelection); + log.println("previous selection and current selection are equal: "+compRes); + res &= compRes; + } + } + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception occurred during select()"); + ex.printStackTrace(log); + res = false; + } + + tRes.tested("select()", res); + } + + /** + * Test removes listener, then selects first and + * then second instances to be sure that selection was changed.<p> + * Has <b>OK</b> status if selection listener was not called. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addSelectionChangeListener() </code> : to have + * the listener added. </li> + * </ul> + */ + public void _removeSelectionChangeListener() { + boolean res = false; + requiredMethod("addSelectionChangeListener()"); + try { + selectionChanged = false; + oObj.removeSelectionChangeListener(listener); + oObj.select(selections[0]); + oObj.select(selections[1]); + res = !selectionChanged; + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception occurred during removeSelectionChangeListener()"); + ex.printStackTrace(log); + res = false; + } + tRes.tested("removeSelectionChangeListener()", res); + } + + /** + * First test changes selection of the object : if nothing is + * currently selected or first instance ('First' relation) is + * selected then selects second instance; if second instance + * is currently selected then the first instance is selected. <p> + * Then <code>getSelection</code> is called and values set and + * get are compared. Comparison has some special cases. For + * example if selection is a Cell, then the values contained + * in cells are compared. <p> + * Has <b>OK</b> status if selection changed properly. + */ + public void _getSelection() { + requiredMethod("select()"); + tRes.tested("getSelection()", true); + } + +} // finish class _XSelectionSupplier + + + diff --git a/qadevOOo/tests/java/ifc/view/_XViewSettingsSupplier.java b/qadevOOo/tests/java/ifc/view/_XViewSettingsSupplier.java new file mode 100644 index 0000000000..e84a5b7b14 --- /dev/null +++ b/qadevOOo/tests/java/ifc/view/_XViewSettingsSupplier.java @@ -0,0 +1,53 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.view; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.view.XViewSettingsSupplier; + + +/** + * Testing <code>com.sun.star.view.XViewSettingsSupplier</code> + * interface methods : + * <ul> + * <li><code> getViewSettings()</code></li> + * </ul> <p> + * Test is multithread compliant. <p> + * @see com.sun.star.view.XViewSettingsSupplier + */ +public class _XViewSettingsSupplier extends MultiMethodTest { + + public XViewSettingsSupplier oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getViewSettings(){ + + XPropertySet oTVS = oObj.getViewSettings(); + tRes.tested("getViewSettings()", oTVS != null); + } // finish _getViewSettings + +} // finish class _XViewSettingsSupplier + + diff --git a/qadevOOo/tests/java/ifc/xml/_UserDefinedAttributesSupplier.java b/qadevOOo/tests/java/ifc/xml/_UserDefinedAttributesSupplier.java new file mode 100644 index 0000000000..28ff8a0037 --- /dev/null +++ b/qadevOOo/tests/java/ifc/xml/_UserDefinedAttributesSupplier.java @@ -0,0 +1,63 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.xml; +import com.sun.star.container.XNameContainer; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.xml.AttributeData; + +public class _UserDefinedAttributesSupplier extends lib.MultiPropertyTest { + + public void _UserDefinedAttributes() { + XNameContainer uda = null; + boolean res = false; + try { + uda = (XNameContainer) AnyConverter.toObject( + new Type(XNameContainer.class), + oObj.getPropertyValue("UserDefinedAttributes")); + AttributeData attr = new AttributeData(); + attr.Namespace = "http://www.sun.com/staroffice/apitest/Chartprop"; + attr.Type="CDATA"; + attr.Value="true"; + uda.insertByName("Chartprop:has-first-alien-attribute",attr); + uda.getElementNames(); + oObj.setPropertyValue("UserDefinedAttributes",uda); + uda = (XNameContainer) AnyConverter.toObject( + new Type(XNameContainer.class), + oObj.getPropertyValue("UserDefinedAttributes")); + uda.getElementNames(); + uda.getByName("Chartprop:has-first-alien-attribute"); + res = true; + } catch (com.sun.star.beans.UnknownPropertyException upe) { + log.println("Don't know the Property 'UserDefinedAttributes'"); + } catch (com.sun.star.lang.WrappedTargetException wte) { + log.println("WrappedTargetException while getting Property 'UserDefinedAttributes'"); + } catch (com.sun.star.container.NoSuchElementException nee) { + log.println("added Element isn't part of the NameContainer"); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + log.println("IllegalArgumentException while getting Property 'UserDefinedAttributes'"); + } catch (com.sun.star.beans.PropertyVetoException pve) { + log.println("PropertyVetoException while getting Property 'UserDefinedAttributes'"); + } catch (com.sun.star.container.ElementExistException eee) { + log.println("ElementExistException while getting Property 'UserDefinedAttributes'"); + } + tRes.tested("UserDefinedAttributes",res); + } + +} diff --git a/qadevOOo/tests/java/ifc/xml/sax/_XDocumentHandler.java b/qadevOOo/tests/java/ifc/xml/sax/_XDocumentHandler.java new file mode 100644 index 0000000000..27daceaa80 --- /dev/null +++ b/qadevOOo/tests/java/ifc/xml/sax/_XDocumentHandler.java @@ -0,0 +1,392 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +package ifc.xml.sax; + +import java.io.PrintWriter; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import util.XMLTools; + +import com.sun.star.xml.sax.SAXException; +import com.sun.star.xml.sax.XDocumentHandler; +import com.sun.star.xml.sax.XLocator; + +/** +* Testing <code>com.sun.star.xml.sax.XDocumentHandler</code> +* interface methods : +* <ul> +* <li><code> startDocument()</code></li> +* <li><code> endDocument()</code></li> +* <li><code> startElement()</code></li> +* <li><code> endElement()</code></li> +* <li><code> characters()</code></li> +* <li><code> ignorableWhitespace()</code></li> +* <li><code> processingInstruction()</code></li> +* <li><code> setDocumentLocator()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XDocumentHandler.XMLData'</code> (of type <code>String[][] +* </code>):the XML data which will be passed to the handler. Each +* array of strings corresponds to some handler event. The first +* string of event array is the type of the event they can have +* the following values : +* <ul> +* <li>'start' : startElement() event. The string with index 1 +* is the name of element, the next array elements are attributes +* of XML element in order Name, Type, Value, Name, Type, Value, etc. +* </li> +* <li>'end' : endElement() event. The string with index 1 +* is the name of element. </li> +* <li>'chars' : characters() event. The string with index 1 +* is characters. </li> +* <li>'spaces' : ignorableWhitespace() event. The string with index 1 +* is spaces. </li> +* <li>'instruct' : processingInstruction() event. The string with +* index 1 is the target of instruction. The string with index +* 2 is the data of instruction. </li> +* </ul> </li> +* <li> <code>'XDocumentHandler.ImportChecker'</code> +* (of type <code>ifc.xml.sax._XDocumentHandler.ImportChecker</code>) : +* this relation must be implementation of the interface above +* ant it must check if the XML data was successfully imported to +* the document. </li> +* </li> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.xml.sax.XDocumentHandler +*/ +public class _XDocumentHandler extends MultiMethodTest { + + private static class DocumentLocator implements XLocator { + private final PrintWriter log; + public DocumentLocator(PrintWriter log) { + this.log = log ; + } + public int getColumnNumber() { + log.println("getColumnNumber() method called.") ; + return 10 ; + } + public int getLineNumber() { + log.println("getLineNumber() method called.") ; + return 9 ; + } + public String getPublicId() { + log.println("getPublicId() method called.") ; + return "file://d:/file.txt"; + } + public String getSystemId() { + log.println("getSystemId() method called.") ; + return "system"; + } + } + + /** + * This interface implementation must be passed by component test + * for checking the whole import process. + */ + public interface ImportChecker { + /** + * Returns <code>true</code> if the XML data was successfully + * imported, <code>false</code> in other case. + */ + boolean checkImport() ; + } + + /** + * This interface implementation must be passed by component test + * for setting a target document to the import process + */ + public interface TargetDocumentSetter { + + void setTargetDocument(); + } + + public XDocumentHandler oObj = null; + private String[][] xmlData = null ; + private DocumentLocator locator = null ; + private ImportChecker checker = null ; + private boolean locatorResult = true ; + private SAXException locatorException = null ; + private boolean ToBeSkipped = false; + + /** + * Retrieves object relations. + * @throws StatusException If one of relations not found. + */ + @Override + public void before() { + locator = new DocumentLocator(log) ; + if (tEnv.getTestCase().getObjectName().equals("XMLSettingsImporter")) { + log.println("Settings can't be imported in the current Implementation"); + ToBeSkipped = true; + } + xmlData = (String[][])tEnv.getObjRelation("XDocumentHandler.XMLData") ; + checker = (ImportChecker) + tEnv.getObjRelation("XDocumentHandler.ImportChecker") ; + + TargetDocumentSetter targetDocSet = (TargetDocumentSetter) + tEnv.getObjRelation("XDocumentHandler.TargetDocumentSetter"); + + if (xmlData == null || checker == null) throw new StatusException + (Status.failed("Relation wasn't found")) ; + + if (targetDocSet == null){ + log.println("object relation 'XDocumentHandler.TargetDocumentSetter' not used."); + log.println("be sure that the test have a target to write through"); + } + } + + /** + * Sets document locator to dummy locator implementation and + * calls the <code>startDocument</code> method. <p> + * + * Has <b> OK </b> status if no runtime exceptions occurred. + */ + public void _startDocument() { + if (ToBeSkipped) { + tRes.tested("startDocument()", Status.skipped(true)); + return; + } + + try { + oObj.setDocumentLocator(locator) ; + } catch (SAXException e) { + locatorException = e ; + locatorResult = false ; + } + + boolean result = true ; + try { + oObj.startDocument() ; + } catch (SAXException e) { + e.printStackTrace(log) ; + log.println("Wrapped exception :" + e.WrappedException) ; + result = false ; + } + + tRes.tested("startDocument()", result) ; + } + + /** + * This test is finally executed. It finishes XML data + * transferring with <code>endDocument</code> method call. <p> + * + * Has <b>OK</b> status if no exceptions occurred during + * the whole transferring and if the appropriate changes + * occurred in the document where XML data was transferred to. + * This check is performed by checker relation. + */ + public void _endDocument() { + if (ToBeSkipped) { + tRes.tested("endDocument()", Status.skipped(true)); + return; + } + requiredMethod("startElement()") ; + executeMethod("endElement()") ; + executeMethod("characters()") ; + executeMethod("ignorableWhitespace()") ; + executeMethod("processingInstruction()") ; + + boolean result = true ; + try { + oObj.endDocument() ; + } catch (SAXException e) { + e.printStackTrace(log) ; + log.println("Wrapped exception :" + e.WrappedException) ; + result = false ; + } + + log.println("Check if import was successful ...") ; + result &= checker.checkImport() ; + + tRes.tested("endDocument()", result) ; + } + + /** + * Transfers XML data obtained from relation + * <code>'XDocumentHandler.XMLData'</code>. <p> + * + * Has <b>OK</b> status if no exceptions occurred during XML data + * transferring in <code>startDocument</code> and + * <code>startElement</code> method tests. <p> + * + * Exact checking of XML transfer is made in <code>endDocument</code> + */ + public void _startElement() { + if (ToBeSkipped) { + tRes.tested("startElement()", Status.skipped(true)); + return; + } + boolean result = true ; + + try { + log.println("StartElement Processing XML data ...") ; + for(int i = 0; i < xmlData.length; i++) { + String[] elem = xmlData[i] ; + if ("start".equals(elem[0])) { + StringBuilder xmlTag = new StringBuilder(); + xmlTag.append("<"); + String tagName = elem[1] ; + xmlTag.append(tagName); + XMLTools.AttributeList attr = new XMLTools.AttributeList() ; + for (int j = 2; j < elem.length; j+=3) { + attr.add(elem[j], elem[j+1], elem[j+2]); + xmlTag.append(" ").append(elem[j]).append("(").append(elem[j+1]).append( + ")=\"").append(elem[j+2]).append("\""); + } + xmlTag.append(">"); + + log.println(xmlTag.toString()) ; + oObj.startElement(tagName, attr) ; + } else + if ("end".equals(elem[0])) { + log.println("</" + elem[1] + ">") ; + oObj.endElement(elem[1]) ; + } else + if ("chars".equals(elem[0])) { + log.println("'" + elem[1] + "'") ; + oObj.characters(elem[1]) ; + } else + if ("spaces".equals(elem[0])) { + log.println("(spaces)'" + elem[1] + "'") ; + oObj.ignorableWhitespace(elem[1]) ; + } else + if ("instruct".equals(elem[0])) { + log.println("<?" + elem[1] + " " + elem[2] + "?>") ; + oObj.processingInstruction(elem[1], elem[2]) ; + } else { + log.println("!!! Bad object relation !!!") ; + throw new StatusException(Status.failed("Bad relation")) ; + } + } + } catch (SAXException e) { + e.printStackTrace(log) ; + log.println("Wrapped exception :" + e.WrappedException) ; + result = false ; + } + + tRes.tested("startElement()", result) ; + } + + /** + * Does nothing. <p> + * + * Has <b>OK</b> status if no exceptions occurred during XML data + * transferring in <code>startDocument</code> and + * <code>startElement</code> method tests. + */ + public void _endElement() { + if (ToBeSkipped) { + tRes.tested("endElement()", Status.skipped(true)); + return; + } + requiredMethod("startElement()") ; + + boolean result = true ; + + tRes.tested("endElement()", result) ; + } + + /** + * Does nothing. <p> + * + * Has <b>OK</b> status if no exceptions occurred during XML data + * transferring in <code>startDocument</code> and + * <code>startElement</code> method tests. + */ + public void _characters() { + if (ToBeSkipped) { + tRes.tested("characters()", Status.skipped(true)); + return; + } + requiredMethod("startElement()") ; + + boolean result = true ; + + tRes.tested("characters()", result) ; + } + + /** + * Does nothing. <p> + * + * Has <b>OK</b> status if no exceptions occurred during XML data + * transferring in <code>startDocument</code> and + * <code>startElement</code> method tests. + */ + public void _ignorableWhitespace() { + if (ToBeSkipped) { + tRes.tested("ignorableWhitespace()", Status.skipped(true)); + return; + } + requiredMethod("startElement()") ; + + boolean result = true ; + + tRes.tested("ignorableWhitespace()", result) ; + } + + /** + * Does nothing. <p> + * + * Has <b>OK</b> status if no exceptions occurred during XML data + * transferring in <code>startDocument</code> and + * <code>startElement</code> method tests. + */ + public void _processingInstruction() { + if (ToBeSkipped) { + tRes.tested("processingInstruction()", Status.skipped(true)); + return; + } + requiredMethod("startElement()") ; + + boolean result = true ; + + tRes.tested("processingInstruction()", result) ; + } + + /** + * Does nothing. <p> + * + * Has <b>OK</b> status if no exceptions occurred during XML data + * transferring in <code>startDocument</code> and + * <code>startElement</code> method tests. + */ + public void _setDocumentLocator() { + if (ToBeSkipped) { + tRes.tested("setDocumentLocator()", Status.skipped(true)); + return; + } + executeMethod("endDocument()") ; + + boolean result = locatorResult ; + if (locatorException != null) { + log.println("Exception occurred during setDocumentLocator() call:") ; + locatorException.printStackTrace(log) ; + log.println("Wrapped exception :" + + locatorException.WrappedException) ; + result = false ; + } + + tRes.tested("setDocumentLocator()", result) ; + } + +} + |