1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski package ifc.beans; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import lib.MultiMethodTest; 27*b1cdbd2cSJim Jagielski import lib.Status; 28*b1cdbd2cSJim Jagielski import lib.StatusException; 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski import com.sun.star.beans.Property; 31*b1cdbd2cSJim Jagielski import com.sun.star.beans.PropertyAttribute; 32*b1cdbd2cSJim Jagielski import com.sun.star.beans.PropertyState; 33*b1cdbd2cSJim Jagielski import com.sun.star.beans.XMultiPropertyStates; 34*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertySet; 35*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertySetInfo; 36*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski /** 39*b1cdbd2cSJim Jagielski * Testing <code>com.sun.star.beans.XMultiPropertyStates</code> 40*b1cdbd2cSJim Jagielski * interface methods : 41*b1cdbd2cSJim Jagielski * <ul> 42*b1cdbd2cSJim Jagielski * <li><code> getPropertyStates()</code></li> 43*b1cdbd2cSJim Jagielski * <li><code> setAllPropertiesToDefault()</code></li> 44*b1cdbd2cSJim Jagielski * <li><code> getPropertyValues()</code></li> 45*b1cdbd2cSJim Jagielski * <li><code> setPropertiesToDefault()</code></li> 46*b1cdbd2cSJim Jagielski * <li><code> getPropertyDefaults()</code></li> 47*b1cdbd2cSJim Jagielski * </ul> 48*b1cdbd2cSJim Jagielski * @see com.sun.star.beans.XMultiPropertyStates 49*b1cdbd2cSJim Jagielski */ 50*b1cdbd2cSJim Jagielski public class _XMultiPropertyStates extends MultiMethodTest { 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski public XMultiPropertyStates oObj = null; 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski private PropertyState[] states = null; 55*b1cdbd2cSJim Jagielski private String[] names = null; 56*b1cdbd2cSJim Jagielski before()57*b1cdbd2cSJim Jagielski public void before() { 58*b1cdbd2cSJim Jagielski names = (String[]) tEnv.getObjRelation("PropertyNames"); 59*b1cdbd2cSJim Jagielski if (names == null) { 60*b1cdbd2cSJim Jagielski throw new StatusException(Status.failed("No PropertyNames given")); 61*b1cdbd2cSJim Jagielski } 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski log.println("Totally " + names.length + " properties encountered:"); 64*b1cdbd2cSJim Jagielski log.print("{"); 65*b1cdbd2cSJim Jagielski for (int i = 0; i < names.length; i++) 66*b1cdbd2cSJim Jagielski log.print(names[i] + " "); 67*b1cdbd2cSJim Jagielski log.print("}"); 68*b1cdbd2cSJim Jagielski log.println(""); 69*b1cdbd2cSJim Jagielski } 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski 72*b1cdbd2cSJim Jagielski /** 73*b1cdbd2cSJim Jagielski * Test calls the method and checks return value. 74*b1cdbd2cSJim Jagielski * <code>PropertyDefaults</code> are stored<p> 75*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method returns not null value 76*b1cdbd2cSJim Jagielski * and no exceptions were thrown. <p> 77*b1cdbd2cSJim Jagielski */ _getPropertyDefaults()78*b1cdbd2cSJim Jagielski public void _getPropertyDefaults() { 79*b1cdbd2cSJim Jagielski boolean result = false; 80*b1cdbd2cSJim Jagielski try { 81*b1cdbd2cSJim Jagielski Object[] defaults = oObj.getPropertyDefaults(names); 82*b1cdbd2cSJim Jagielski result = (defaults != null) && defaults.length == names.length; 83*b1cdbd2cSJim Jagielski log.println("Number of default values: " + defaults.length); 84*b1cdbd2cSJim Jagielski } catch (com.sun.star.beans.UnknownPropertyException e) { 85*b1cdbd2cSJim Jagielski log.println("some properties seem to be unknown: " + e.toString()); 86*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.WrappedTargetException e) { 87*b1cdbd2cSJim Jagielski log.println("Wrapped target Exception was thrown: " + e.toString()); 88*b1cdbd2cSJim Jagielski } 89*b1cdbd2cSJim Jagielski tRes.tested("getPropertyDefaults()", result) ; 90*b1cdbd2cSJim Jagielski } 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski /** 93*b1cdbd2cSJim Jagielski * Test calls the method and checks return value. 94*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method returns not null value 95*b1cdbd2cSJim Jagielski * and no exceptions were thrown. <p> 96*b1cdbd2cSJim Jagielski */ _getPropertyStates()97*b1cdbd2cSJim Jagielski public void _getPropertyStates() { 98*b1cdbd2cSJim Jagielski boolean result = false; 99*b1cdbd2cSJim Jagielski try { 100*b1cdbd2cSJim Jagielski states = oObj.getPropertyStates(names); 101*b1cdbd2cSJim Jagielski result = (states != null) && (states.length == names.length); 102*b1cdbd2cSJim Jagielski log.println("Number of states: " + states.length); 103*b1cdbd2cSJim Jagielski } catch (com.sun.star.beans.UnknownPropertyException e) { 104*b1cdbd2cSJim Jagielski log.println("some properties seem to be unknown: " + e.toString()); 105*b1cdbd2cSJim Jagielski } 106*b1cdbd2cSJim Jagielski tRes.tested("getPropertyStates()", result) ; 107*b1cdbd2cSJim Jagielski } 108*b1cdbd2cSJim Jagielski 109*b1cdbd2cSJim Jagielski /** 110*b1cdbd2cSJim Jagielski * Test calls the method and checks return value. 111*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the Property 112*b1cdbd2cSJim Jagielski * has default state afterwards. <p> 113*b1cdbd2cSJim Jagielski */ _setPropertiesToDefault()114*b1cdbd2cSJim Jagielski public void _setPropertiesToDefault() { 115*b1cdbd2cSJim Jagielski requiredMethod("getPropertyStates()"); 116*b1cdbd2cSJim Jagielski // searching for property which currently don't have default value 117*b1cdbd2cSJim Jagielski // and preferable has MAYBEDEFAULT attr 118*b1cdbd2cSJim Jagielski // if no such properties are found then the first one is selected 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski String ro = (String) tEnv.getObjRelation("allReadOnly"); 121*b1cdbd2cSJim Jagielski if (ro != null) { 122*b1cdbd2cSJim Jagielski log.println(ro); 123*b1cdbd2cSJim Jagielski tRes.tested("setPropertiesToDefault()",Status.skipped(true)); 124*b1cdbd2cSJim Jagielski return; 125*b1cdbd2cSJim Jagielski } 126*b1cdbd2cSJim Jagielski 127*b1cdbd2cSJim Jagielski boolean mayBeDef = false; 128*b1cdbd2cSJim Jagielski String propName = names[0]; 129*b1cdbd2cSJim Jagielski 130*b1cdbd2cSJim Jagielski for(int i = 0; i < names.length; i++) { 131*b1cdbd2cSJim Jagielski if (!mayBeDef && states[i] != PropertyState.DEFAULT_VALUE ) { 132*b1cdbd2cSJim Jagielski propName = names[i]; 133*b1cdbd2cSJim Jagielski XPropertySet xPropSet = (XPropertySet) 134*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface(XPropertySet.class, oObj); 135*b1cdbd2cSJim Jagielski XPropertySetInfo xPropSetInfo = xPropSet.getPropertySetInfo(); 136*b1cdbd2cSJim Jagielski Property prop = null; 137*b1cdbd2cSJim Jagielski try { 138*b1cdbd2cSJim Jagielski prop = xPropSetInfo.getPropertyByName(names[i]); 139*b1cdbd2cSJim Jagielski } 140*b1cdbd2cSJim Jagielski catch(com.sun.star.beans.UnknownPropertyException e) { 141*b1cdbd2cSJim Jagielski log.println("couldn't get property info: " + e.toString()); 142*b1cdbd2cSJim Jagielski throw new StatusException(Status.failed 143*b1cdbd2cSJim Jagielski ("couldn't get property info")); 144*b1cdbd2cSJim Jagielski } 145*b1cdbd2cSJim Jagielski if ( (prop.Attributes & PropertyAttribute.MAYBEDEFAULT) != 0){ 146*b1cdbd2cSJim Jagielski log.println("Property " + names[i] + 147*b1cdbd2cSJim Jagielski " 'may be default' and doesn't have default value"); 148*b1cdbd2cSJim Jagielski mayBeDef = true; 149*b1cdbd2cSJim Jagielski } 150*b1cdbd2cSJim Jagielski } 151*b1cdbd2cSJim Jagielski } 152*b1cdbd2cSJim Jagielski log.println("The property " + propName + " selected"); 153*b1cdbd2cSJim Jagielski 154*b1cdbd2cSJim Jagielski boolean result = false; 155*b1cdbd2cSJim Jagielski try { 156*b1cdbd2cSJim Jagielski String[] the_first = new String[1]; 157*b1cdbd2cSJim Jagielski the_first[0] = propName; 158*b1cdbd2cSJim Jagielski log.println("Setting " + propName + " to default"); 159*b1cdbd2cSJim Jagielski oObj.setPropertiesToDefault(the_first); 160*b1cdbd2cSJim Jagielski result = (oObj.getPropertyStates(the_first)[0].equals 161*b1cdbd2cSJim Jagielski (PropertyState.DEFAULT_VALUE)); 162*b1cdbd2cSJim Jagielski } catch (com.sun.star.beans.UnknownPropertyException e) { 163*b1cdbd2cSJim Jagielski log.println("some properties seem to be unknown: " + e.toString()); 164*b1cdbd2cSJim Jagielski } 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim Jagielski if (!result) { 167*b1cdbd2cSJim Jagielski log.println("The property didn't change its state to default ..."); 168*b1cdbd2cSJim Jagielski if (mayBeDef) { 169*b1cdbd2cSJim Jagielski log.println(" ... and it may be default - FAILED"); 170*b1cdbd2cSJim Jagielski } else { 171*b1cdbd2cSJim Jagielski log.println(" ... but it may not be default - OK"); 172*b1cdbd2cSJim Jagielski result = true; 173*b1cdbd2cSJim Jagielski } 174*b1cdbd2cSJim Jagielski } 175*b1cdbd2cSJim Jagielski 176*b1cdbd2cSJim Jagielski tRes.tested("setPropertiesToDefault()", result) ; 177*b1cdbd2cSJim Jagielski } 178*b1cdbd2cSJim Jagielski 179*b1cdbd2cSJim Jagielski /** 180*b1cdbd2cSJim Jagielski * Test calls the method and checks return value. 181*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the all Properties 182*b1cdbd2cSJim Jagielski * have default state afterwards. <p> 183*b1cdbd2cSJim Jagielski */ _setAllPropertiesToDefault()184*b1cdbd2cSJim Jagielski public void _setAllPropertiesToDefault() { 185*b1cdbd2cSJim Jagielski requiredMethod("setPropertiesToDefault()"); 186*b1cdbd2cSJim Jagielski boolean result = true; 187*b1cdbd2cSJim Jagielski 188*b1cdbd2cSJim Jagielski try { 189*b1cdbd2cSJim Jagielski oObj.setAllPropertiesToDefault(); 190*b1cdbd2cSJim Jagielski } catch(RuntimeException e) { 191*b1cdbd2cSJim Jagielski log.println("Ignore Runtime Exception: " + e.getMessage()); 192*b1cdbd2cSJim Jagielski } 193*b1cdbd2cSJim Jagielski log.println("Checking that all properties are now in DEFAULT state" + 194*b1cdbd2cSJim Jagielski " excepting may be those which 'cann't be default'"); 195*b1cdbd2cSJim Jagielski 196*b1cdbd2cSJim Jagielski try { 197*b1cdbd2cSJim Jagielski states = oObj.getPropertyStates(names); 198*b1cdbd2cSJim Jagielski for (int i = 0; i < states.length; i++) { 199*b1cdbd2cSJim Jagielski boolean part_result = states[i].equals 200*b1cdbd2cSJim Jagielski (PropertyState.DEFAULT_VALUE); 201*b1cdbd2cSJim Jagielski if (!part_result) { 202*b1cdbd2cSJim Jagielski log.println("Property '" + names[i] + 203*b1cdbd2cSJim Jagielski "' wasn't set to default"); 204*b1cdbd2cSJim Jagielski XPropertySet xPropSet = (XPropertySet) 205*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface(XPropertySet.class, oObj); 206*b1cdbd2cSJim Jagielski XPropertySetInfo xPropSetInfo = 207*b1cdbd2cSJim Jagielski xPropSet.getPropertySetInfo(); 208*b1cdbd2cSJim Jagielski Property prop = xPropSetInfo.getPropertyByName(names[i]); 209*b1cdbd2cSJim Jagielski if ( (prop.Attributes & 210*b1cdbd2cSJim Jagielski PropertyAttribute.MAYBEDEFAULT) != 0 ) { 211*b1cdbd2cSJim Jagielski log.println(" ... and it has MAYBEDEFAULT "+ 212*b1cdbd2cSJim Jagielski "attribute - FAILED"); 213*b1cdbd2cSJim Jagielski } else { 214*b1cdbd2cSJim Jagielski log.println(" ... but it has no MAYBEDEFAULT "+ 215*b1cdbd2cSJim Jagielski "attribute - OK"); 216*b1cdbd2cSJim Jagielski part_result = true; 217*b1cdbd2cSJim Jagielski } 218*b1cdbd2cSJim Jagielski } 219*b1cdbd2cSJim Jagielski 220*b1cdbd2cSJim Jagielski result &= part_result; 221*b1cdbd2cSJim Jagielski } 222*b1cdbd2cSJim Jagielski } catch (com.sun.star.beans.UnknownPropertyException e) { 223*b1cdbd2cSJim Jagielski log.println("some properties seem to be unknown: " + e.toString()); 224*b1cdbd2cSJim Jagielski result=false; 225*b1cdbd2cSJim Jagielski } 226*b1cdbd2cSJim Jagielski 227*b1cdbd2cSJim Jagielski tRes.tested("setAllPropertiesToDefault()", result) ; 228*b1cdbd2cSJim Jagielski } 229*b1cdbd2cSJim Jagielski 230*b1cdbd2cSJim Jagielski } 231*b1cdbd2cSJim Jagielski 232