1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 package ifc.container; 28 29 import com.sun.star.container.XNamed; 30 31 import lib.MultiMethodTest; 32 33 import util.utils; 34 35 36 /** 37 * Testing <code>com.sun.star.container.XNamed</code> 38 * interface methods : 39 * <ul> 40 * <li><code> getName()</code></li> 41 * <li><code> setName()</code></li> 42 * </ul> 43 * This test need the following object relations : 44 * <ul> 45 * <li> <code>'setName'</code> : of <code>Boolean</code> 46 * type. If it exists then <code>setName</code> method 47 * isn't to be tested and result of this test will be 48 * equal to relation value.</li> 49 * <ul> <p> 50 * Test is <b> NOT </b> multithread compilant. <p> 51 * @see com.sun.star.container.XNamed 52 */ 53 public class _XNamed extends MultiMethodTest { 54 public XNamed oObj = null; // oObj filled by MultiMethodTest 55 56 /** 57 * Test calls the method and checks return value and that 58 * no exceptions were thrown. <p> 59 * Has <b> OK </b> status if the method returns non null value 60 * and no exceptions were thrown. <p> 61 */ 62 public void _getName() { 63 // write to log what we try next 64 log.println("test for getName()"); 65 66 boolean result = true; 67 boolean loc_result = true; 68 String name = null; 69 70 loc_result = ((name = oObj.getName()) != null); 71 log.println("getting the name \"" + name + "\""); 72 73 if (loc_result) { 74 log.println("... getName() - OK"); 75 } else { 76 log.println("... getName() - FAILED"); 77 } 78 79 result &= loc_result; 80 tRes.tested("getName()", result); 81 } 82 83 /** 84 * Sets a new name for object and checks if it was properly 85 * set. Special cases for the following objects : 86 * <ul> 87 * <li><code>ScSheetLinkObj</code> : name must be in form of URL.</li> 88 * <li><code>ScDDELinkObj</code> : name must contain link to cell in 89 * some external Sheet.</li> 90 * </ul> 91 * Has <b> OK </b> status if new name was successfully set, or if 92 * object environment contains relation <code>'setName'</code> with 93 * value <code>true</code>. <p> 94 * The following method tests are to be completed successfully before : 95 * <ul> 96 * <li> <code> getName() </code> : to be sure the method works</li> 97 * </ul> 98 */ 99 public void _setName() { 100 String Oname = tEnv.getTestCase().getObjectName(); 101 String nsn = (String) tEnv.getObjRelation("NoSetName"); 102 103 if (nsn != null) { 104 Oname = nsn; 105 } 106 107 if ((Oname.indexOf("Exporter") > 0) || (nsn != null)) { 108 log.println("With " + Oname + " setName() doesn't work"); 109 log.println("see idl-file for further information"); 110 tRes.tested("setName()", true); 111 112 return; 113 } 114 115 requiredMethod("getName()"); 116 log.println("testing setName() ... "); 117 118 String oldName = oObj.getName(); 119 String NewName = (oldName == null) ? "XNamed" : oldName + "X"; 120 121 String testobjname = tEnv.getTestCase().getObjectName(); 122 123 if (testobjname.equals("ScSheetLinkObj")) { 124 // special case, here name is equals to links URL. 125 NewName = "file:///c:/somename/from/XNamed"; 126 } else if (testobjname.equals("ScDDELinkObj")) { 127 String fileName = utils.getFullTestDocName("ScDDELinksObj.sdc"); 128 NewName = "soffice|" + fileName + "!Sheet1.A2"; 129 } else if (testobjname.equals("SwXAutoTextGroup")) { 130 //This avoids a GPF 131 NewName = "XNamed*1"; 132 } 133 134 boolean result = true; 135 boolean loc_result = true; 136 Boolean sName = (Boolean) tEnv.getObjRelation("setName"); 137 138 if (sName == null) { 139 log.println("set the name of object to \"" + NewName + "\""); 140 oObj.setName(NewName); 141 log.println("check that container has element with this name"); 142 143 String name = oObj.getName(); 144 log.println("getting the name \"" + name + "\""); 145 loc_result = name.equals(NewName); 146 147 if (loc_result) { 148 log.println("... setName() - OK"); 149 } else { 150 log.println("... setName() - FAILED"); 151 } 152 153 result &= loc_result; 154 oObj.setName(oldName); 155 } else { 156 log.println("The names for the object '" + testobjname + 157 "' are fixed."); 158 log.println("It is not possible to rename."); 159 log.println("So 'setName()' is always OK"); 160 result = sName.booleanValue(); 161 } 162 163 tRes.tested("setName()", result); 164 } 165 }