/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this 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.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 com.sun.star.view.XSelectionSupplier
* interface methods :
*
select()
getSelection()
addSelectionChangeListener()
removeSelectionChangeListener()
'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 _XSelectionSupplier extends MultiMethodTest { public XSelectionSupplier 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(); } /** * 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.
* Has OK status if selection lisener 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 occured during addSelectionChangeListener()"); ex.printStackTrace(log); res = false; } tRes.tested("addSelectionChangeListener()", res); } /** * Selects an instance from relation 'First'.
* Has OK status if no exceptions were thrown.
*/ 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) { ObjCompare.compare(selections[i], curSelection); } else { compRes = util.ValueComparer.equalValue(selections[i], curSelection); } log.println("selected object and current selection are equal: "+compRes); if (!compRes) { if ((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 occured 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.
* Has OK status if selection lisener was not called. * The following method tests are to be completed successfully before : *
addSelectionChangeListener()
: to have
* the listener added.
* 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 _getSelection() { requiredMethod("select()"); tRes.tested("getSelection()", true); } } // finish class _XSelectionSupplier