/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
package ifc.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 com.sun.star.view.XSelectionSupplier
* interface methods :
*
addSelection()
removeSelection()
clearSelection()
getSelectionCount()
createSelectionEnumeration()
createReverseSelectionEnumeration()
'Selections'
of type Object[]
:
* the array of the instances which can be selected.'Comparer'
of type Comparator
:
* the interface for comparing of selected instances* Test is NOT multithread compilant.
* @see com.sun.star.view.XSelectionSupplier */ public class _XMultiSelectionSupplier extends MultiMethodTest { public XMultiSelectionSupplier oObj = null; public boolean selectionChanged = false; Object[] selections = null; Comparator ObjCompare = null; protected void before() { selections = (Object[])tEnv.getObjRelation("Selections"); if (selections == null) { throw new StatusException(Status.failed( "Couldn't get relation 'Selections'")); } ObjCompare = (Comparator)tEnv.getObjRelation("Comparer"); } protected void after() { disposeEnvironment(); } /** * Selects an instance from relation 'First'.
* Has OK status if no exceptions were thrown.
*/ 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("ERORR: 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("ERORR: 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.
* Then getSelection
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.
* Has OK 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 (ObjCompare != null) { ObjCompare.compare(shouldElement, nextElement); } else { compRes = util.ValueComparer.equalValue(shouldElement, nextElement); } log.println("nextElement()-object and expected object 'selections["+i+"]' are equal: "+compRes); if (!compRes) { if ((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; } 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 (ObjCompare != null) { ObjCompare.compare(shouldElement, nextElement); } else { compRes = util.ValueComparer.equalValue(shouldElement, nextElement); } log.println("nextElement()-object and expected object 'selections["+i+"]' are equal: "+compRes); if (!compRes) { if ((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; } tRes.tested("createReverseSelectionEnumeration()", bOK); } } // finish class _XMultiSelectionSupplier