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 package ifc.frame; 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski import com.sun.star.beans.PropertyValue; 26*b1cdbd2cSJim Jagielski import com.sun.star.frame.XController; 27*b1cdbd2cSJim Jagielski import com.sun.star.frame.XModel; 28*b1cdbd2cSJim Jagielski import com.sun.star.view.XSelectionSupplier; 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski import lib.MultiMethodTest; 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielski 33*b1cdbd2cSJim Jagielski /** 34*b1cdbd2cSJim Jagielski * Testing <code>com.sun.star.frame.XModel</code> 35*b1cdbd2cSJim Jagielski * interface methods: 36*b1cdbd2cSJim Jagielski * <ul> 37*b1cdbd2cSJim Jagielski * <li><code> attachResource() </code></li> 38*b1cdbd2cSJim Jagielski * <li><code> connectController() </code></li> 39*b1cdbd2cSJim Jagielski * <li><code> disconnectController() </code></li> 40*b1cdbd2cSJim Jagielski * <li><code> getArgs() </code></li> 41*b1cdbd2cSJim Jagielski * <li><code> getCurrentController() </code></li> 42*b1cdbd2cSJim Jagielski * <li><code> getCurrentSelection() </code></li> 43*b1cdbd2cSJim Jagielski * <li><code> getURL() </code></li> 44*b1cdbd2cSJim Jagielski * <li><code> hasControllersLocked() </code></li> 45*b1cdbd2cSJim Jagielski * <li><code> lockControllers() </code></li> 46*b1cdbd2cSJim Jagielski * <li><code> setCurrentController() </code></li> 47*b1cdbd2cSJim Jagielski * <li><code> unlockControllers() </code></li> 48*b1cdbd2cSJim Jagielski * </ul><p> 49*b1cdbd2cSJim Jagielski * This test needs the following object relations : 50*b1cdbd2cSJim Jagielski * <ul> 51*b1cdbd2cSJim Jagielski * <li> <code>'CONT2'</code> (of type <code>XController</code>): 52*b1cdbd2cSJim Jagielski * a controller used as an argument for several test methods </li> 53*b1cdbd2cSJim Jagielski * <li> <code>'TOSELECT'</code> (of type <code>Object</code>): 54*b1cdbd2cSJim Jagielski * something, we want to select from document </li> 55*b1cdbd2cSJim Jagielski * <li> <code>'SELSUPP'</code> (of type <code>XSelectionSupplier</code>): 56*b1cdbd2cSJim Jagielski * supplier, we use to select something in a document </li> 57*b1cdbd2cSJim Jagielski * </ul> <p> 58*b1cdbd2cSJim Jagielski * Test is <b> NOT </b> multithread compilant. <p> 59*b1cdbd2cSJim Jagielski * @see com.sun.star.frame.XModel 60*b1cdbd2cSJim Jagielski */ 61*b1cdbd2cSJim Jagielski public class _XModel extends MultiMethodTest { 62*b1cdbd2cSJim Jagielski public XModel oObj = null; 63*b1cdbd2cSJim Jagielski boolean result = true; 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski /** 66*b1cdbd2cSJim Jagielski * Test calls the method. <p> 67*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method returns true. 68*b1cdbd2cSJim Jagielski */ _attachResource()69*b1cdbd2cSJim Jagielski public void _attachResource() { 70*b1cdbd2cSJim Jagielski log.println("opening DataSourceBrowser"); 71*b1cdbd2cSJim Jagielski 72*b1cdbd2cSJim Jagielski PropertyValue[] noArgs = new PropertyValue[0]; 73*b1cdbd2cSJim Jagielski result = oObj.attachResource(".component:DB/DataSourceBrowser", noArgs); 74*b1cdbd2cSJim Jagielski tRes.tested("attachResource()", result); 75*b1cdbd2cSJim Jagielski } 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski /** 78*b1cdbd2cSJim Jagielski * After obtaining object relation 'CONT2' and storing old controller, 79*b1cdbd2cSJim Jagielski * test calls the method, then result is checked.<p> 80*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if controller, gotten after method call is not 81*b1cdbd2cSJim Jagielski * equal to a previous controller. 82*b1cdbd2cSJim Jagielski */ _connectController()83*b1cdbd2cSJim Jagielski public void _connectController() { 84*b1cdbd2cSJim Jagielski XController cont2 = (XController) tEnv.getObjRelation("CONT2"); 85*b1cdbd2cSJim Jagielski XController old = oObj.getCurrentController(); 86*b1cdbd2cSJim Jagielski result = false; 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski if (cont2 == null) { 89*b1cdbd2cSJim Jagielski log.println("No controller no show"); 90*b1cdbd2cSJim Jagielski } else { 91*b1cdbd2cSJim Jagielski oObj.connectController(cont2); 92*b1cdbd2cSJim Jagielski 93*b1cdbd2cSJim Jagielski String oldFrame = old.getFrame().getName(); 94*b1cdbd2cSJim Jagielski String newFrame = cont2.getFrame().getName(); 95*b1cdbd2cSJim Jagielski result = (!oldFrame.equals(newFrame)); 96*b1cdbd2cSJim Jagielski } 97*b1cdbd2cSJim Jagielski 98*b1cdbd2cSJim Jagielski tRes.tested("connectController()", result); 99*b1cdbd2cSJim Jagielski } 100*b1cdbd2cSJim Jagielski 101*b1cdbd2cSJim Jagielski /** 102*b1cdbd2cSJim Jagielski * After obtaining object relation 'CONT2', test calls the method, 103*b1cdbd2cSJim Jagielski * then result is checked.<p> 104*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if controller, gotten after method call is not 105*b1cdbd2cSJim Jagielski * equal to a controller we use as an argument to method. 106*b1cdbd2cSJim Jagielski */ _disconnectController()107*b1cdbd2cSJim Jagielski public void _disconnectController() { 108*b1cdbd2cSJim Jagielski XController cont2 = (XController) tEnv.getObjRelation("CONT2"); 109*b1cdbd2cSJim Jagielski result = false; 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski if (cont2 == null) { 112*b1cdbd2cSJim Jagielski log.println("No controller no show"); 113*b1cdbd2cSJim Jagielski } else { 114*b1cdbd2cSJim Jagielski oObj.disconnectController(cont2); 115*b1cdbd2cSJim Jagielski result = (oObj.getCurrentController() != cont2); 116*b1cdbd2cSJim Jagielski } 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski tRes.tested("disconnectController()", result); 119*b1cdbd2cSJim Jagielski } 120*b1cdbd2cSJim Jagielski 121*b1cdbd2cSJim Jagielski /** 122*b1cdbd2cSJim Jagielski * Test calls the method. <p> 123*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method does not return null. 124*b1cdbd2cSJim Jagielski */ _getArgs()125*b1cdbd2cSJim Jagielski public void _getArgs() { 126*b1cdbd2cSJim Jagielski tRes.tested("getArgs()", oObj.getArgs() != null); 127*b1cdbd2cSJim Jagielski } 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski /** 130*b1cdbd2cSJim Jagielski * Test calls the method. <p> 131*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method does not return null. 132*b1cdbd2cSJim Jagielski */ _getCurrentController()133*b1cdbd2cSJim Jagielski public void _getCurrentController() { 134*b1cdbd2cSJim Jagielski XController ctrl = oObj.getCurrentController(); 135*b1cdbd2cSJim Jagielski tRes.tested("getCurrentController()", ctrl != null); 136*b1cdbd2cSJim Jagielski } 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski /** 139*b1cdbd2cSJim Jagielski * After obtaining object relations 'SELSUPP' and 'TOSELECT', test prepares 140*b1cdbd2cSJim Jagielski * selection and calls the method. <p> 141*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method does not return null. 142*b1cdbd2cSJim Jagielski */ _getCurrentSelection()143*b1cdbd2cSJim Jagielski public void _getCurrentSelection() { 144*b1cdbd2cSJim Jagielski XSelectionSupplier selsupp = (XSelectionSupplier) tEnv.getObjRelation( 145*b1cdbd2cSJim Jagielski "SELSUPP"); 146*b1cdbd2cSJim Jagielski Object toSelect = tEnv.getObjRelation("TOSELECT"); 147*b1cdbd2cSJim Jagielski result = false; 148*b1cdbd2cSJim Jagielski 149*b1cdbd2cSJim Jagielski if (selsupp == null) { 150*b1cdbd2cSJim Jagielski log.println("No Selection Supplier no show"); 151*b1cdbd2cSJim Jagielski } else { 152*b1cdbd2cSJim Jagielski try { 153*b1cdbd2cSJim Jagielski selsupp.select(toSelect); 154*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.IllegalArgumentException e) { 155*b1cdbd2cSJim Jagielski log.println("Exception occured while select:"); 156*b1cdbd2cSJim Jagielski e.printStackTrace(log); 157*b1cdbd2cSJim Jagielski 158*b1cdbd2cSJim Jagielski return; 159*b1cdbd2cSJim Jagielski } 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski Object sel = oObj.getCurrentSelection(); 162*b1cdbd2cSJim Jagielski result = (sel != null); 163*b1cdbd2cSJim Jagielski } 164*b1cdbd2cSJim Jagielski 165*b1cdbd2cSJim Jagielski tRes.tested("getCurrentSelection()", result); 166*b1cdbd2cSJim Jagielski } 167*b1cdbd2cSJim Jagielski 168*b1cdbd2cSJim Jagielski /** 169*b1cdbd2cSJim Jagielski * Test calls the method. <p> 170*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method does not return null. 171*b1cdbd2cSJim Jagielski */ _getURL()172*b1cdbd2cSJim Jagielski public void _getURL() { 173*b1cdbd2cSJim Jagielski String url = oObj.getURL(); 174*b1cdbd2cSJim Jagielski log.println("The url: " + url); 175*b1cdbd2cSJim Jagielski tRes.tested("getURL()", url != null); 176*b1cdbd2cSJim Jagielski } 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski /** 179*b1cdbd2cSJim Jagielski * if controller is not locked, test calls the method. <p> 180*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method returns true. <p> 181*b1cdbd2cSJim Jagielski * The following method tests are to be completed successfully before : 182*b1cdbd2cSJim Jagielski * <ul> 183*b1cdbd2cSJim Jagielski * <li> <code> lockControllers() </code> : locks controllers </li> 184*b1cdbd2cSJim Jagielski * </ul> 185*b1cdbd2cSJim Jagielski */ _hasControllersLocked()186*b1cdbd2cSJim Jagielski public void _hasControllersLocked() { 187*b1cdbd2cSJim Jagielski requiredMethod("lockControllers()"); 188*b1cdbd2cSJim Jagielski tRes.tested("hasControllersLocked()", oObj.hasControllersLocked()); 189*b1cdbd2cSJim Jagielski } 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski /** 192*b1cdbd2cSJim Jagielski * Test calls the method, then result is checked.<p> 193*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if method locks controllers. 194*b1cdbd2cSJim Jagielski */ _lockControllers()195*b1cdbd2cSJim Jagielski public void _lockControllers() { 196*b1cdbd2cSJim Jagielski oObj.lockControllers(); 197*b1cdbd2cSJim Jagielski result = oObj.hasControllersLocked(); 198*b1cdbd2cSJim Jagielski tRes.tested("lockControllers()", result); 199*b1cdbd2cSJim Jagielski } 200*b1cdbd2cSJim Jagielski 201*b1cdbd2cSJim Jagielski /** 202*b1cdbd2cSJim Jagielski * After obtaining object relation 'CONT2' and storing old controller, 203*b1cdbd2cSJim Jagielski * controller cont2 is connected, then this controller is 204*b1cdbd2cSJim Jagielski * setting as current. 205*b1cdbd2cSJim Jagielski * Sets the old controller as current. 206*b1cdbd2cSJim Jagielski * <p>Has <b> OK </b> status if set and gotten controllers are not equal. 207*b1cdbd2cSJim Jagielski */ _setCurrentController()208*b1cdbd2cSJim Jagielski public void _setCurrentController() { 209*b1cdbd2cSJim Jagielski XController cont2 = (XController) tEnv.getObjRelation("CONT2"); 210*b1cdbd2cSJim Jagielski XController old = oObj.getCurrentController(); 211*b1cdbd2cSJim Jagielski result = false; 212*b1cdbd2cSJim Jagielski 213*b1cdbd2cSJim Jagielski if (cont2 == null) { 214*b1cdbd2cSJim Jagielski log.println("No controller no show"); 215*b1cdbd2cSJim Jagielski } else { 216*b1cdbd2cSJim Jagielski oObj.connectController(cont2); 217*b1cdbd2cSJim Jagielski 218*b1cdbd2cSJim Jagielski try { 219*b1cdbd2cSJim Jagielski oObj.setCurrentController(cont2); 220*b1cdbd2cSJim Jagielski } catch (com.sun.star.container.NoSuchElementException e) { 221*b1cdbd2cSJim Jagielski log.print("Cannot set current controller:"); 222*b1cdbd2cSJim Jagielski e.printStackTrace(log); 223*b1cdbd2cSJim Jagielski } 224*b1cdbd2cSJim Jagielski 225*b1cdbd2cSJim Jagielski result = (oObj.getCurrentController() != old); 226*b1cdbd2cSJim Jagielski 227*b1cdbd2cSJim Jagielski try { 228*b1cdbd2cSJim Jagielski oObj.setCurrentController(old); 229*b1cdbd2cSJim Jagielski } catch (com.sun.star.container.NoSuchElementException e) { 230*b1cdbd2cSJim Jagielski log.print("Cannot set current controller:"); 231*b1cdbd2cSJim Jagielski e.printStackTrace(log); 232*b1cdbd2cSJim Jagielski } 233*b1cdbd2cSJim Jagielski } 234*b1cdbd2cSJim Jagielski 235*b1cdbd2cSJim Jagielski tRes.tested("setCurrentController()", result); 236*b1cdbd2cSJim Jagielski } 237*b1cdbd2cSJim Jagielski 238*b1cdbd2cSJim Jagielski /** 239*b1cdbd2cSJim Jagielski * Test calls the method. <p> 240*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if method unlocks controllers. 241*b1cdbd2cSJim Jagielski * <p> 242*b1cdbd2cSJim Jagielski * The following method tests are to be completed successfully before : 243*b1cdbd2cSJim Jagielski * <ul> 244*b1cdbd2cSJim Jagielski * <li> <code> hasControllersLocked() </code> : checks if controllers are 245*b1cdbd2cSJim Jagielski * locked </li> 246*b1cdbd2cSJim Jagielski * </ul> 247*b1cdbd2cSJim Jagielski */ _unlockControllers()248*b1cdbd2cSJim Jagielski public void _unlockControllers() { 249*b1cdbd2cSJim Jagielski requiredMethod("hasControllersLocked()"); 250*b1cdbd2cSJim Jagielski oObj.unlockControllers(); 251*b1cdbd2cSJim Jagielski result = !oObj.hasControllersLocked(); 252*b1cdbd2cSJim Jagielski tRes.tested("unlockControllers()", result); 253*b1cdbd2cSJim Jagielski } 254*b1cdbd2cSJim Jagielski } 255