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 com.sun.star.beans.PropertyValue; 27*b1cdbd2cSJim Jagielski import com.sun.star.beans.PropertyVetoException; 28*b1cdbd2cSJim Jagielski import com.sun.star.lang.WrappedTargetException; 29*b1cdbd2cSJim Jagielski import lib.MultiMethodTest; 30*b1cdbd2cSJim Jagielski import com.sun.star.beans.UnknownPropertyException; 31*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertyAccess; 32*b1cdbd2cSJim Jagielski import lib.Status; 33*b1cdbd2cSJim Jagielski import lib.StatusException; 34*b1cdbd2cSJim Jagielski 35*b1cdbd2cSJim Jagielski /** 36*b1cdbd2cSJim Jagielski * Testing <code>com.sun.star.beans.XPropertyAccess</code> 37*b1cdbd2cSJim Jagielski * interface methods : 38*b1cdbd2cSJim Jagielski * <ul> 39*b1cdbd2cSJim Jagielski * <li><code>getPropertyValues()</code></li> 40*b1cdbd2cSJim Jagielski * <li><code>setPropertyValues()</code></li> 41*b1cdbd2cSJim Jagielski * </ul> 42*b1cdbd2cSJim Jagielski * @see com.sun.star.beans.XPropertyAccess 43*b1cdbd2cSJim Jagielski */ 44*b1cdbd2cSJim Jagielski public class _XPropertyAccess extends MultiMethodTest { 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski /** 47*b1cdbd2cSJim Jagielski * oObj filled by MultiMethodTest 48*b1cdbd2cSJim Jagielski */ 49*b1cdbd2cSJim Jagielski public XPropertyAccess oObj = null;// oObj filled by MultiMethodTest 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski /** 52*b1cdbd2cSJim Jagielski * object relation X<CODE>PropertyAccess.propertyToChange</CODE><br> 53*b1cdbd2cSJim Jagielski * This relation must be filled from the module. It contains a property which must 54*b1cdbd2cSJim Jagielski * be kind of String property, available at <CODE>getPropertyValues()</CODE> and changeable by 55*b1cdbd2cSJim Jagielski * <CODE>setPropertyValues()</CODE> 56*b1cdbd2cSJim Jagielski */ 57*b1cdbd2cSJim Jagielski public PropertyValue propertyToChange = null; 58*b1cdbd2cSJim Jagielski 59*b1cdbd2cSJim Jagielski /** 60*b1cdbd2cSJim Jagielski * checks if the object relation <CODE>XPropertyAccess.propertyToChange</CODE> 61*b1cdbd2cSJim Jagielski * is available 62*b1cdbd2cSJim Jagielski */ before()63*b1cdbd2cSJim Jagielski public void before() { 64*b1cdbd2cSJim Jagielski propertyToChange = (PropertyValue) tEnv.getObjRelation("XPropertyAccess.propertyToChange"); 65*b1cdbd2cSJim Jagielski if (propertyToChange == null) { 66*b1cdbd2cSJim Jagielski throw new StatusException(Status.failed("Object raltion 'XPropertyAccess.propertyToChange' is null")); 67*b1cdbd2cSJim Jagielski } 68*b1cdbd2cSJim Jagielski } 69*b1cdbd2cSJim Jagielski 70*b1cdbd2cSJim Jagielski /** 71*b1cdbd2cSJim Jagielski * Test calls the method and checks if the returned sequenze contanis a propterty which is named 72*b1cdbd2cSJim Jagielski * in the object relation <code>XPropertyAccess.propertyToChange</code>. 73*b1cdbd2cSJim Jagielski */ _getPropertyValues()74*b1cdbd2cSJim Jagielski public void _getPropertyValues() { 75*b1cdbd2cSJim Jagielski PropertyValue[] properties = oObj.getPropertyValues(); 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski boolean ok = true; 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski if (properties != null){ 80*b1cdbd2cSJim Jagielski 81*b1cdbd2cSJim Jagielski boolean found = false; 82*b1cdbd2cSJim Jagielski for (int i=0; i < properties.length; i++){ 83*b1cdbd2cSJim Jagielski if (properties[i].Name.equals(propertyToChange.Name)) found = true; 84*b1cdbd2cSJim Jagielski } 85*b1cdbd2cSJim Jagielski if (! found){ 86*b1cdbd2cSJim Jagielski log.println("ERROR: could not find desired property '"+ propertyToChange.Name+"'"); 87*b1cdbd2cSJim Jagielski ok=false; 88*b1cdbd2cSJim Jagielski } 89*b1cdbd2cSJim Jagielski 90*b1cdbd2cSJim Jagielski } else { 91*b1cdbd2cSJim Jagielski log.println("ERROR: the method returned NULL"); 92*b1cdbd2cSJim Jagielski ok =false; 93*b1cdbd2cSJim Jagielski } 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski tRes.tested("getPropertyValues()", ok ); 96*b1cdbd2cSJim Jagielski return; 97*b1cdbd2cSJim Jagielski } 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski /** 100*b1cdbd2cSJim Jagielski * Test calls the method and checks if: 101*b1cdbd2cSJim Jagielski * <ul> 102*b1cdbd2cSJim Jagielski * <li>the property given by the object relation 103*b1cdbd2cSJim Jagielski * <CODE>XPropertyAccess.propertyToChange</CODE> has changed</LI> 104*b1cdbd2cSJim Jagielski * <li><CODE>com.sun.star.lang.IllegalArgumentException</CODE> was thrown if a <CODE>Integer</CODE> 105*b1cdbd2cSJim Jagielski * value was set to a <CODE>String</CODE> property</LI> 106*b1cdbd2cSJim Jagielski * <li><CODE>com.sun.star.beans.UnknownPropertyException</CODE> was throen if an invalid property 107*b1cdbd2cSJim Jagielski * was set</LI> 108*b1cdbd2cSJim Jagielski * </ul> 109*b1cdbd2cSJim Jagielski */ _setPropertyValues()110*b1cdbd2cSJim Jagielski public void _setPropertyValues(){ 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski boolean ok = true; 113*b1cdbd2cSJim Jagielski boolean test = true; 114*b1cdbd2cSJim Jagielski boolean exp = false; 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski try { 117*b1cdbd2cSJim Jagielski PropertyValue[] newProps = new PropertyValue[1]; 118*b1cdbd2cSJim Jagielski newProps[0] = propertyToChange; 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski log.println("try to set property vlaues given by object relation 'XPropertyAccess.propertyToChange'..."); 121*b1cdbd2cSJim Jagielski oObj.setPropertyValues(newProps); 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski } catch (UnknownPropertyException ex) { 124*b1cdbd2cSJim Jagielski log.println("ERROR: Exception was thrown while trying to set property value: " + 125*b1cdbd2cSJim Jagielski ex.toString()); 126*b1cdbd2cSJim Jagielski test = false; 127*b1cdbd2cSJim Jagielski } catch (PropertyVetoException ex) { 128*b1cdbd2cSJim Jagielski log.println("ERROR: Exception was thrown while trying to set property value: " + 129*b1cdbd2cSJim Jagielski ex.toString()); 130*b1cdbd2cSJim Jagielski test = false; 131*b1cdbd2cSJim Jagielski } catch (WrappedTargetException ex) { 132*b1cdbd2cSJim Jagielski log.println("ERROR: Exception was thrown while trying to set property value: " + 133*b1cdbd2cSJim Jagielski ex.toString()); 134*b1cdbd2cSJim Jagielski test = false; 135*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.IllegalArgumentException ex) { 136*b1cdbd2cSJim Jagielski log.println("ERROR: Exception was thrown while trying to set property value: " + 137*b1cdbd2cSJim Jagielski ex.toString()); 138*b1cdbd2cSJim Jagielski test = false; 139*b1cdbd2cSJim Jagielski } 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski if ( test){ 142*b1cdbd2cSJim Jagielski log.println("... OK"); 143*b1cdbd2cSJim Jagielski } 144*b1cdbd2cSJim Jagielski 145*b1cdbd2cSJim Jagielski ok &= test; 146*b1cdbd2cSJim Jagielski test = false; 147*b1cdbd2cSJim Jagielski exp = false; 148*b1cdbd2cSJim Jagielski try { 149*b1cdbd2cSJim Jagielski log.println("try to set integer value to string property, " + 150*b1cdbd2cSJim Jagielski "expect 'com.sun.star.lang.IllegalArgumentException'..."); 151*b1cdbd2cSJim Jagielski PropertyValue[] newProps = new PropertyValue[1]; 152*b1cdbd2cSJim Jagielski PropertyValue failedProp = new PropertyValue(); 153*b1cdbd2cSJim Jagielski failedProp.Name = propertyToChange.Name; 154*b1cdbd2cSJim Jagielski failedProp.Value = new Integer(10); 155*b1cdbd2cSJim Jagielski newProps[0] = failedProp; 156*b1cdbd2cSJim Jagielski oObj.setPropertyValues(newProps); 157*b1cdbd2cSJim Jagielski } catch (PropertyVetoException ex) { 158*b1cdbd2cSJim Jagielski log.println("ERROR: unexptected exception was thrown while trying to set null value: " + 159*b1cdbd2cSJim Jagielski ex.toString()); 160*b1cdbd2cSJim Jagielski exp = true; 161*b1cdbd2cSJim Jagielski } catch (WrappedTargetException ex) { 162*b1cdbd2cSJim Jagielski log.println("ERROR: unexptected exception was thrown while trying to set null value: " + 163*b1cdbd2cSJim Jagielski ex.toString()); 164*b1cdbd2cSJim Jagielski exp = true; 165*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.IllegalArgumentException ex) { 166*b1cdbd2cSJim Jagielski log.println("OK: exptected exception was thrown while trying to set null value: " + 167*b1cdbd2cSJim Jagielski ex.toString()); 168*b1cdbd2cSJim Jagielski test = true; 169*b1cdbd2cSJim Jagielski exp = true; 170*b1cdbd2cSJim Jagielski } catch (UnknownPropertyException ex) { 171*b1cdbd2cSJim Jagielski log.println("ERROR: unexptected exception was thrown while trying to set null value: " + 172*b1cdbd2cSJim Jagielski ex.toString()); 173*b1cdbd2cSJim Jagielski exp = true; 174*b1cdbd2cSJim Jagielski } 175*b1cdbd2cSJim Jagielski 176*b1cdbd2cSJim Jagielski if (! exp){ 177*b1cdbd2cSJim Jagielski log.println("FAILED: expected exception 'UnknownPropertyException' was not thrown"); 178*b1cdbd2cSJim Jagielski } else { 179*b1cdbd2cSJim Jagielski if (test) log.println("... OK"); 180*b1cdbd2cSJim Jagielski } 181*b1cdbd2cSJim Jagielski 182*b1cdbd2cSJim Jagielski ok &= test; 183*b1cdbd2cSJim Jagielski test = false; 184*b1cdbd2cSJim Jagielski exp = false; 185*b1cdbd2cSJim Jagielski try { 186*b1cdbd2cSJim Jagielski 187*b1cdbd2cSJim Jagielski log.println("try to set values with invalid property name. " + 188*b1cdbd2cSJim Jagielski "Expect 'com.sun.star.beans.UnknownPropertyException'..."); 189*b1cdbd2cSJim Jagielski 190*b1cdbd2cSJim Jagielski PropertyValue[] newProps = new PropertyValue[1]; 191*b1cdbd2cSJim Jagielski PropertyValue newProp = new PropertyValue(); 192*b1cdbd2cSJim Jagielski newProp.Name = "XPropertyAccess.InvalidPropertyName"; 193*b1cdbd2cSJim Jagielski newProp.Value = "invalid property"; 194*b1cdbd2cSJim Jagielski newProps[0] = newProp; 195*b1cdbd2cSJim Jagielski 196*b1cdbd2cSJim Jagielski oObj.setPropertyValues(newProps); 197*b1cdbd2cSJim Jagielski 198*b1cdbd2cSJim Jagielski } catch (WrappedTargetException ex) { 199*b1cdbd2cSJim Jagielski log.println("ERROR: unexptected exception was thrown while trying to set invalid value: " + 200*b1cdbd2cSJim Jagielski ex.toString()); 201*b1cdbd2cSJim Jagielski exp = true; 202*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.IllegalArgumentException ex) { 203*b1cdbd2cSJim Jagielski log.println("ERROR: unexptected exception was thrown while trying to set invalid value: " + 204*b1cdbd2cSJim Jagielski ex.toString()); 205*b1cdbd2cSJim Jagielski exp = true; 206*b1cdbd2cSJim Jagielski } catch (PropertyVetoException ex) { 207*b1cdbd2cSJim Jagielski log.println("ERROR: unexptected exception was thrown while trying to set invalid value: " + 208*b1cdbd2cSJim Jagielski ex.toString()); 209*b1cdbd2cSJim Jagielski exp = true; 210*b1cdbd2cSJim Jagielski } catch (UnknownPropertyException ex) { 211*b1cdbd2cSJim Jagielski log.println("OK: Exptected exception was thrown while trying to set invalid value: " + 212*b1cdbd2cSJim Jagielski ex.toString()); 213*b1cdbd2cSJim Jagielski exp = true; 214*b1cdbd2cSJim Jagielski test = true; 215*b1cdbd2cSJim Jagielski } 216*b1cdbd2cSJim Jagielski 217*b1cdbd2cSJim Jagielski ok &= test; 218*b1cdbd2cSJim Jagielski 219*b1cdbd2cSJim Jagielski if (! exp){ 220*b1cdbd2cSJim Jagielski log.println("FAILED: expected exception 'UnknownPropertyException' was not thrown"); 221*b1cdbd2cSJim Jagielski } else { 222*b1cdbd2cSJim Jagielski if (test) log.println("... OK"); 223*b1cdbd2cSJim Jagielski } 224*b1cdbd2cSJim Jagielski 225*b1cdbd2cSJim Jagielski tRes.tested("setPropertyValues()", ok); 226*b1cdbd2cSJim Jagielski return; 227*b1cdbd2cSJim Jagielski 228*b1cdbd2cSJim Jagielski } 229*b1cdbd2cSJim Jagielski 230*b1cdbd2cSJim Jagielski } /// finish class XPropertyAccess 231*b1cdbd2cSJim Jagielski 232*b1cdbd2cSJim Jagielski 233