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.frame; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import com.sun.star.awt.XWindow; 27*b1cdbd2cSJim Jagielski //import com.sun.star.awt.XWindow; 28*b1cdbd2cSJim Jagielski import com.sun.star.frame.FrameAction; 29*b1cdbd2cSJim Jagielski import com.sun.star.frame.FrameActionEvent; 30*b1cdbd2cSJim Jagielski import com.sun.star.frame.XController; 31*b1cdbd2cSJim Jagielski import com.sun.star.frame.XFrame; 32*b1cdbd2cSJim Jagielski import com.sun.star.frame.XFrameActionListener; 33*b1cdbd2cSJim Jagielski import com.sun.star.frame.XFramesSupplier; 34*b1cdbd2cSJim Jagielski import com.sun.star.lang.EventObject; 35*b1cdbd2cSJim Jagielski import java.io.PrintWriter; 36*b1cdbd2cSJim Jagielski import lib.MultiMethodTest; 37*b1cdbd2cSJim Jagielski import lib.TestEnvironment; 38*b1cdbd2cSJim Jagielski 39*b1cdbd2cSJim Jagielski /** 40*b1cdbd2cSJim Jagielski * Testing <code>com.sun.star.frame.XFrame</code> 41*b1cdbd2cSJim Jagielski * interface methods: 42*b1cdbd2cSJim Jagielski * <ul> 43*b1cdbd2cSJim Jagielski * <li><code> getName() </code></li> 44*b1cdbd2cSJim Jagielski * <li><code> setName() </code></li> 45*b1cdbd2cSJim Jagielski * <li><code> activate() </code></li> 46*b1cdbd2cSJim Jagielski * <li><code> deactivate() </code></li> 47*b1cdbd2cSJim Jagielski * <li><code> isActive() </code></li> 48*b1cdbd2cSJim Jagielski * <li><code> addFrameActionListener() </code></li> 49*b1cdbd2cSJim Jagielski * <li><code> removeFrameActionListener() </code></li> 50*b1cdbd2cSJim Jagielski * <li><code> getCreator() </code></li> 51*b1cdbd2cSJim Jagielski * <li><code> getComponentWindow() </code></li> 52*b1cdbd2cSJim Jagielski * <li><code> getContainerWindow() </code></li> 53*b1cdbd2cSJim Jagielski * <li><code> getController() </code></li> 54*b1cdbd2cSJim Jagielski * <li><code> isTop() </code></li> 55*b1cdbd2cSJim Jagielski * <li><code> findFrame() </code></li> 56*b1cdbd2cSJim Jagielski * <li><code> contextChanged() </code></li> 57*b1cdbd2cSJim Jagielski * <li><code> setCreator() </code></li> 58*b1cdbd2cSJim Jagielski * <li><code> setComponent() </code></li> 59*b1cdbd2cSJim Jagielski * <li><code> initialize() </code></li> 60*b1cdbd2cSJim Jagielski * </ul><p> 61*b1cdbd2cSJim Jagielski * This test needs the following object relations : 62*b1cdbd2cSJim Jagielski * <ul> 63*b1cdbd2cSJim Jagielski * <li> <code>'XFrame'</code> (of type <code>XFrame</code>) 64*b1cdbd2cSJim Jagielski * <b>optional</b>: any frame named 'XFrame'. 65*b1cdbd2cSJim Jagielski * Could be used by <code>findFrame</code> method to try 66*b1cdbd2cSJim Jagielski * to find other frame than itself.</li> 67*b1cdbd2cSJim Jagielski * 68*b1cdbd2cSJim Jagielski * <li> <code>'Desktop'</code> (of type <code>Object</code>): 69*b1cdbd2cSJim Jagielski * if exsists, then desktop component is tested</li> 70*b1cdbd2cSJim Jagielski * </ul> <p> 71*b1cdbd2cSJim Jagielski * Test is <b> NOT </b> multithread compilant. <p> 72*b1cdbd2cSJim Jagielski * @see com.sun.star.frame.XFrame 73*b1cdbd2cSJim Jagielski */ 74*b1cdbd2cSJim Jagielski public class _XFrame extends MultiMethodTest { 75*b1cdbd2cSJim Jagielski final FrameAction[] actionEvent = new FrameAction[1] ; 76*b1cdbd2cSJim Jagielski final boolean[] listenerCalled = new boolean[] {false} ; 77*b1cdbd2cSJim Jagielski final boolean[] activatedCalled = new boolean[] {false} ; 78*b1cdbd2cSJim Jagielski final boolean[] deactivatedCalled = new boolean[] {false} ; 79*b1cdbd2cSJim Jagielski final TestFrameActionListener listener = 80*b1cdbd2cSJim Jagielski new TestFrameActionListener() ; 81*b1cdbd2cSJim Jagielski public static XFrame oObj = null; 82*b1cdbd2cSJim Jagielski 83*b1cdbd2cSJim Jagielski /** 84*b1cdbd2cSJim Jagielski * Class used to test listeners. 85*b1cdbd2cSJim Jagielski */ 86*b1cdbd2cSJim Jagielski private class TestFrameActionListener 87*b1cdbd2cSJim Jagielski implements XFrameActionListener { 88*b1cdbd2cSJim Jagielski frameAction(FrameActionEvent e)89*b1cdbd2cSJim Jagielski public void frameAction(FrameActionEvent e) { 90*b1cdbd2cSJim Jagielski listenerCalled[0] = true ; 91*b1cdbd2cSJim Jagielski activatedCalled[0] |= e.Action == FrameAction.FRAME_ACTIVATED; 92*b1cdbd2cSJim Jagielski deactivatedCalled[0] |= e.Action == FrameAction.FRAME_DEACTIVATING; 93*b1cdbd2cSJim Jagielski actionEvent[0] = e.Action; 94*b1cdbd2cSJim Jagielski } 95*b1cdbd2cSJim Jagielski disposing(EventObject e)96*b1cdbd2cSJim Jagielski public void disposing(EventObject e) {} 97*b1cdbd2cSJim Jagielski 98*b1cdbd2cSJim Jagielski } 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski /** 101*b1cdbd2cSJim Jagielski * Test calls the method. <p> 102*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method does not return null. 103*b1cdbd2cSJim Jagielski */ _getName()104*b1cdbd2cSJim Jagielski public void _getName() { 105*b1cdbd2cSJim Jagielski String name = oObj.getName() ; 106*b1cdbd2cSJim Jagielski if (name == null) 107*b1cdbd2cSJim Jagielski log.println("getName() returned null: FAILED") ; 108*b1cdbd2cSJim Jagielski 109*b1cdbd2cSJim Jagielski tRes.tested("getName()", name!=null) ; 110*b1cdbd2cSJim Jagielski } 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski /** 113*b1cdbd2cSJim Jagielski * Test calls the method. <p> 114*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if set and gotten names are equal. 115*b1cdbd2cSJim Jagielski */ _setName()116*b1cdbd2cSJim Jagielski public void _setName() { 117*b1cdbd2cSJim Jagielski String sName = "XFrame" ; 118*b1cdbd2cSJim Jagielski 119*b1cdbd2cSJim Jagielski oObj.setName(sName); 120*b1cdbd2cSJim Jagielski String gName = oObj.getName(); 121*b1cdbd2cSJim Jagielski boolean res = sName.equals(gName); 122*b1cdbd2cSJim Jagielski if (! res) 123*b1cdbd2cSJim Jagielski log.println("setName('" + sName + 124*b1cdbd2cSJim Jagielski "'), but getName() return '" + gName + "'") ; 125*b1cdbd2cSJim Jagielski tRes.tested("setName()", res); 126*b1cdbd2cSJim Jagielski } 127*b1cdbd2cSJim Jagielski 128*b1cdbd2cSJim Jagielski /** 129*b1cdbd2cSJim Jagielski * Test calls the method. <p> 130*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method successfully returns 131*b1cdbd2cSJim Jagielski * and no exceptions were thrown. 132*b1cdbd2cSJim Jagielski */ _activate()133*b1cdbd2cSJim Jagielski public void _activate() { 134*b1cdbd2cSJim Jagielski oObj.activate() ; 135*b1cdbd2cSJim Jagielski tRes.tested("activate()", true) ; 136*b1cdbd2cSJim Jagielski } 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski /** 139*b1cdbd2cSJim Jagielski * Test calls the method. <p> 140*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method successfully returns 141*b1cdbd2cSJim Jagielski * and no exceptions were thrown. 142*b1cdbd2cSJim Jagielski */ _deactivate()143*b1cdbd2cSJim Jagielski public void _deactivate() { 144*b1cdbd2cSJim Jagielski oObj.deactivate() ; 145*b1cdbd2cSJim Jagielski oObj.activate() ; 146*b1cdbd2cSJim Jagielski tRes.tested("deactivate()", true) ; 147*b1cdbd2cSJim Jagielski } 148*b1cdbd2cSJim Jagielski 149*b1cdbd2cSJim Jagielski /** 150*b1cdbd2cSJim Jagielski * Test calls the method. Then frame is deactivated and method called 151*b1cdbd2cSJim Jagielski * again. <p> 152*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if isDesktop() returns true or if the method 153*b1cdbd2cSJim Jagielski * always display real status of a frame during activation/deactivation. 154*b1cdbd2cSJim Jagielski */ _isActive()155*b1cdbd2cSJim Jagielski public void _isActive() { 156*b1cdbd2cSJim Jagielski boolean result = true; 157*b1cdbd2cSJim Jagielski 158*b1cdbd2cSJim Jagielski if (tEnv.getTestCase().getObjectName().equals("Desktop")) { 159*b1cdbd2cSJim Jagielski log.println("Desktop is always active"); 160*b1cdbd2cSJim Jagielski tRes.tested("isActive()", oObj.isActive()) ; 161*b1cdbd2cSJim Jagielski return; 162*b1cdbd2cSJim Jagielski } 163*b1cdbd2cSJim Jagielski 164*b1cdbd2cSJim Jagielski oObj.deactivate(); 165*b1cdbd2cSJim Jagielski result &= !oObj.isActive(); 166*b1cdbd2cSJim Jagielski if (oObj.isActive()) 167*b1cdbd2cSJim Jagielski log.println("after deactivate() method call, isActive() returned true"); 168*b1cdbd2cSJim Jagielski oObj.activate(); 169*b1cdbd2cSJim Jagielski result &= oObj.isActive(); 170*b1cdbd2cSJim Jagielski if (!oObj.isActive()) 171*b1cdbd2cSJim Jagielski log.println("after activate() method call, isActive() returned false") ; 172*b1cdbd2cSJim Jagielski boolean res = isDesktop(log,tEnv,"isActive()"); 173*b1cdbd2cSJim Jagielski if (res) result=res; 174*b1cdbd2cSJim Jagielski 175*b1cdbd2cSJim Jagielski tRes.tested("isActive()", result) ; 176*b1cdbd2cSJim Jagielski } 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski /** 179*b1cdbd2cSJim Jagielski * Test calls the method. Then frame status (activated/deactivated) is 180*b1cdbd2cSJim Jagielski * changed, and the listener is checked.<p> 181*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if isDesktop() method returnes true, or if the 182*b1cdbd2cSJim Jagielski * listener was called and frame was activated. 183*b1cdbd2cSJim Jagielski */ _addFrameActionListener()184*b1cdbd2cSJim Jagielski public void _addFrameActionListener() { 185*b1cdbd2cSJim Jagielski boolean result = true ; 186*b1cdbd2cSJim Jagielski 187*b1cdbd2cSJim Jagielski oObj.addFrameActionListener(listener) ; 188*b1cdbd2cSJim Jagielski oObj.activate() ; 189*b1cdbd2cSJim Jagielski oObj.deactivate() ; 190*b1cdbd2cSJim Jagielski oObj.activate() ; 191*b1cdbd2cSJim Jagielski 192*b1cdbd2cSJim Jagielski if (tEnv.getTestCase().getObjectName().equals("Desktop")) { 193*b1cdbd2cSJim Jagielski log.println("No actions supported by Desktop"); 194*b1cdbd2cSJim Jagielski tRes.tested("addFrameActionListener()", true) ; 195*b1cdbd2cSJim Jagielski return; 196*b1cdbd2cSJim Jagielski } 197*b1cdbd2cSJim Jagielski 198*b1cdbd2cSJim Jagielski try { 199*b1cdbd2cSJim Jagielski Thread.sleep(500); 200*b1cdbd2cSJim Jagielski }catch (InterruptedException ex) {} 201*b1cdbd2cSJim Jagielski 202*b1cdbd2cSJim Jagielski 203*b1cdbd2cSJim Jagielski if (!listenerCalled[0]) { 204*b1cdbd2cSJim Jagielski log.println("listener was not called.") ; 205*b1cdbd2cSJim Jagielski result = false ; 206*b1cdbd2cSJim Jagielski } else { 207*b1cdbd2cSJim Jagielski if (!activatedCalled[0]) { 208*b1cdbd2cSJim Jagielski log.println("Listener was called, FRAME_ACTIVATED was not") ; 209*b1cdbd2cSJim Jagielski result = false ; 210*b1cdbd2cSJim Jagielski } 211*b1cdbd2cSJim Jagielski if (!deactivatedCalled[0]) { 212*b1cdbd2cSJim Jagielski log.println("Listener was called, FRAME_DEACTIVATING was not") ; 213*b1cdbd2cSJim Jagielski result = false ; 214*b1cdbd2cSJim Jagielski } 215*b1cdbd2cSJim Jagielski } 216*b1cdbd2cSJim Jagielski 217*b1cdbd2cSJim Jagielski boolean res = isDesktop(log, tEnv, "addFrameActionListener()"); 218*b1cdbd2cSJim Jagielski if (res) result=res; 219*b1cdbd2cSJim Jagielski 220*b1cdbd2cSJim Jagielski tRes.tested("addFrameActionListener()", result) ; 221*b1cdbd2cSJim Jagielski } 222*b1cdbd2cSJim Jagielski 223*b1cdbd2cSJim Jagielski /** 224*b1cdbd2cSJim Jagielski * Test calls the method. Then frame status (activated/deactivated) is 225*b1cdbd2cSJim Jagielski * changed, and the listener is checked.<p> 226*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if isDesktop() method returns true, or if the 227*b1cdbd2cSJim Jagielski * method actually removes listener so it does not react on 228*b1cdbd2cSJim Jagielski * activate/deactivate events. <p> 229*b1cdbd2cSJim Jagielski * The following method tests are to be completed successfully before : 230*b1cdbd2cSJim Jagielski * <ul> 231*b1cdbd2cSJim Jagielski * <li> <code> addFrameActionListener() </code>: adds action listener 232*b1cdbd2cSJim Jagielski * to a frame </li> 233*b1cdbd2cSJim Jagielski * </ul> 234*b1cdbd2cSJim Jagielski */ _removeFrameActionListener()235*b1cdbd2cSJim Jagielski public void _removeFrameActionListener() { 236*b1cdbd2cSJim Jagielski boolean result = true; 237*b1cdbd2cSJim Jagielski 238*b1cdbd2cSJim Jagielski requiredMethod("addFrameActionListener()"); 239*b1cdbd2cSJim Jagielski listenerCalled[0] = false; 240*b1cdbd2cSJim Jagielski oObj.removeFrameActionListener(listener); 241*b1cdbd2cSJim Jagielski oObj.activate(); 242*b1cdbd2cSJim Jagielski oObj.deactivate(); 243*b1cdbd2cSJim Jagielski oObj.activate(); 244*b1cdbd2cSJim Jagielski if (tEnv.getTestCase().getObjectName().equals("Desktop")) { 245*b1cdbd2cSJim Jagielski log.println("No actions supported by Desktop"); 246*b1cdbd2cSJim Jagielski tRes.tested("removeFrameActionListener()", true) ; 247*b1cdbd2cSJim Jagielski return; 248*b1cdbd2cSJim Jagielski } 249*b1cdbd2cSJim Jagielski 250*b1cdbd2cSJim Jagielski if (listenerCalled[0]) 251*b1cdbd2cSJim Jagielski log.println("Listener wasn't removed, and was called"); 252*b1cdbd2cSJim Jagielski boolean res = isDesktop(log, tEnv, "removeFrameActionListener()"); 253*b1cdbd2cSJim Jagielski if (res) result=res; else result = (!listenerCalled[0]); 254*b1cdbd2cSJim Jagielski 255*b1cdbd2cSJim Jagielski tRes.tested("removeFrameActionListener()", result); 256*b1cdbd2cSJim Jagielski } 257*b1cdbd2cSJim Jagielski 258*b1cdbd2cSJim Jagielski /** 259*b1cdbd2cSJim Jagielski * Test calls the method. <p> 260*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if isDesktop() method returns true or if the method 261*b1cdbd2cSJim Jagielski * does not return null. 262*b1cdbd2cSJim Jagielski */ _getCreator()263*b1cdbd2cSJim Jagielski public void _getCreator() { 264*b1cdbd2cSJim Jagielski boolean result = true; 265*b1cdbd2cSJim Jagielski 266*b1cdbd2cSJim Jagielski if (tEnv.getTestCase().getObjectName().equals("Desktop")) { 267*b1cdbd2cSJim Jagielski log.println("Desktop has no creator"); 268*b1cdbd2cSJim Jagielski tRes.tested("getCreator()", true) ; 269*b1cdbd2cSJim Jagielski return; 270*b1cdbd2cSJim Jagielski } 271*b1cdbd2cSJim Jagielski 272*b1cdbd2cSJim Jagielski XFramesSupplier creator = oObj.getCreator() ; 273*b1cdbd2cSJim Jagielski if (creator == null) 274*b1cdbd2cSJim Jagielski log.println("getCreator() returns null") ; 275*b1cdbd2cSJim Jagielski boolean res = isDesktop(log,tEnv,"getCreator()"); 276*b1cdbd2cSJim Jagielski if (res) result=res; else result = (creator != null); 277*b1cdbd2cSJim Jagielski tRes.tested("getCreator()", result) ; 278*b1cdbd2cSJim Jagielski } 279*b1cdbd2cSJim Jagielski 280*b1cdbd2cSJim Jagielski /** 281*b1cdbd2cSJim Jagielski * Test calls the method. <p> 282*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if isDesktop() method returns true or if the method 283*b1cdbd2cSJim Jagielski * does not return null. 284*b1cdbd2cSJim Jagielski */ _getComponentWindow()285*b1cdbd2cSJim Jagielski public void _getComponentWindow() { 286*b1cdbd2cSJim Jagielski boolean result = true; 287*b1cdbd2cSJim Jagielski 288*b1cdbd2cSJim Jagielski XWindow win = oObj.getComponentWindow() ; 289*b1cdbd2cSJim Jagielski 290*b1cdbd2cSJim Jagielski if (tEnv.getTestCase().getObjectName().equals("Desktop")) { 291*b1cdbd2cSJim Jagielski log.println("Desktop has no component window"); 292*b1cdbd2cSJim Jagielski tRes.tested("getComponentWindow()", true) ; 293*b1cdbd2cSJim Jagielski return; 294*b1cdbd2cSJim Jagielski } 295*b1cdbd2cSJim Jagielski 296*b1cdbd2cSJim Jagielski if (win == null) 297*b1cdbd2cSJim Jagielski log.println("getComponentWindow() returns null") ; 298*b1cdbd2cSJim Jagielski boolean res = isDesktop(log,tEnv,"getComponentWindow()"); 299*b1cdbd2cSJim Jagielski if (res) result=res; else result = (win != null); 300*b1cdbd2cSJim Jagielski tRes.tested("getComponentWindow()", result) ; 301*b1cdbd2cSJim Jagielski } 302*b1cdbd2cSJim Jagielski 303*b1cdbd2cSJim Jagielski /** 304*b1cdbd2cSJim Jagielski * Test calls the method. <p> 305*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if isDesktop() method returns true or if the method 306*b1cdbd2cSJim Jagielski * does not return null. 307*b1cdbd2cSJim Jagielski */ _getContainerWindow()308*b1cdbd2cSJim Jagielski public void _getContainerWindow() { 309*b1cdbd2cSJim Jagielski boolean result = true; 310*b1cdbd2cSJim Jagielski 311*b1cdbd2cSJim Jagielski if (tEnv.getTestCase().getObjectName().equals("Desktop")) { 312*b1cdbd2cSJim Jagielski log.println("Desktop has no container window"); 313*b1cdbd2cSJim Jagielski tRes.tested("getContainerWindow()", true) ; 314*b1cdbd2cSJim Jagielski return; 315*b1cdbd2cSJim Jagielski } 316*b1cdbd2cSJim Jagielski 317*b1cdbd2cSJim Jagielski XWindow win = oObj.getContainerWindow() ; 318*b1cdbd2cSJim Jagielski if (win == null) 319*b1cdbd2cSJim Jagielski log.println("getContainerWindow() returns null") ; 320*b1cdbd2cSJim Jagielski boolean res = isDesktop(log,tEnv,"getContainerWindow()"); 321*b1cdbd2cSJim Jagielski if (res) result=res; else result = (win != null); 322*b1cdbd2cSJim Jagielski tRes.tested("getContainerWindow()", result) ; 323*b1cdbd2cSJim Jagielski } 324*b1cdbd2cSJim Jagielski 325*b1cdbd2cSJim Jagielski /** 326*b1cdbd2cSJim Jagielski * Test calls the method. Then returned controller is checked. <p> 327*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if isDesktop() method returns true or 328*b1cdbd2cSJim Jagielski * if the method returns non-null controller, having frame that's equal to 329*b1cdbd2cSJim Jagielski * a (XFrame) oObj. 330*b1cdbd2cSJim Jagielski */ _getController()331*b1cdbd2cSJim Jagielski public void _getController() { 332*b1cdbd2cSJim Jagielski boolean result = true; 333*b1cdbd2cSJim Jagielski XController ctrl = oObj.getController(); 334*b1cdbd2cSJim Jagielski 335*b1cdbd2cSJim Jagielski if (tEnv.getTestCase().getObjectName().equals("Desktop")) { 336*b1cdbd2cSJim Jagielski log.println("Desktop has no controller"); 337*b1cdbd2cSJim Jagielski tRes.tested("getController()", true) ; 338*b1cdbd2cSJim Jagielski return; 339*b1cdbd2cSJim Jagielski } 340*b1cdbd2cSJim Jagielski 341*b1cdbd2cSJim Jagielski if (ctrl == null) { 342*b1cdbd2cSJim Jagielski log.println("getController() returns null"); 343*b1cdbd2cSJim Jagielski result = false; 344*b1cdbd2cSJim Jagielski } else { 345*b1cdbd2cSJim Jagielski XFrame frm = ctrl.getFrame(); 346*b1cdbd2cSJim Jagielski if (!oObj.equals(frm)) { 347*b1cdbd2cSJim Jagielski log.println("Frame returned by controller not " + 348*b1cdbd2cSJim Jagielski "equals to frame testing"); 349*b1cdbd2cSJim Jagielski result = false; 350*b1cdbd2cSJim Jagielski } 351*b1cdbd2cSJim Jagielski } 352*b1cdbd2cSJim Jagielski boolean res = isDesktop(log, tEnv, "getController()"); 353*b1cdbd2cSJim Jagielski if (res) result=res; 354*b1cdbd2cSJim Jagielski tRes.tested("getController()", result) ; 355*b1cdbd2cSJim Jagielski } 356*b1cdbd2cSJim Jagielski 357*b1cdbd2cSJim Jagielski /** 358*b1cdbd2cSJim Jagielski * Test calls the method. <p> 359*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method successfully returns 360*b1cdbd2cSJim Jagielski * and no exceptions were thrown. 361*b1cdbd2cSJim Jagielski */ _isTop()362*b1cdbd2cSJim Jagielski public void _isTop() { 363*b1cdbd2cSJim Jagielski log.println("isTop() = " + oObj.isTop()); 364*b1cdbd2cSJim Jagielski tRes.tested("isTop()", true) ; 365*b1cdbd2cSJim Jagielski } 366*b1cdbd2cSJim Jagielski 367*b1cdbd2cSJim Jagielski /** 368*b1cdbd2cSJim Jagielski * After obtaining an object relation 'XFrame', test tries to find a frame 369*b1cdbd2cSJim Jagielski * named 'XFrame'. <p> 370*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method returns non-null object that's equal 371*b1cdbd2cSJim Jagielski * to previously obtained object relation. 372*b1cdbd2cSJim Jagielski */ _findFrame()373*b1cdbd2cSJim Jagielski public void _findFrame() { 374*b1cdbd2cSJim Jagielski boolean result = true ; 375*b1cdbd2cSJim Jagielski 376*b1cdbd2cSJim Jagielski XFrame aFrame = (XFrame) tEnv.getObjRelation("XFrame"); 377*b1cdbd2cSJim Jagielski 378*b1cdbd2cSJim Jagielski if (aFrame != null) { 379*b1cdbd2cSJim Jagielski log.println("Trying to find a frame with name 'XFrame' ..."); 380*b1cdbd2cSJim Jagielski XFrame frame = oObj.findFrame("XFrame", 381*b1cdbd2cSJim Jagielski com.sun.star.frame.FrameSearchFlag.GLOBAL) ; 382*b1cdbd2cSJim Jagielski if (frame == null) { 383*b1cdbd2cSJim Jagielski log.println("findFrame(\"XFrame,com.sun.star.frame.FrameSearchFlag.GLOBAL\") returns null") ; 384*b1cdbd2cSJim Jagielski result = false ; 385*b1cdbd2cSJim Jagielski } else if ( !aFrame.equals(frame) ) { 386*b1cdbd2cSJim Jagielski log.println("findFrame(\"XFrame,com.sun.star.frame.FrameSearchFlag.GLOBAL\") " 387*b1cdbd2cSJim Jagielski + " returns frame which is not equal to passed in relation") ; 388*b1cdbd2cSJim Jagielski result = false ; 389*b1cdbd2cSJim Jagielski } 390*b1cdbd2cSJim Jagielski } 391*b1cdbd2cSJim Jagielski 392*b1cdbd2cSJim Jagielski log.println("Trying to find a frame with name '_self' ..."); 393*b1cdbd2cSJim Jagielski XFrame frame = oObj.findFrame("_self", 394*b1cdbd2cSJim Jagielski com.sun.star.frame.FrameSearchFlag.AUTO) ; 395*b1cdbd2cSJim Jagielski if (frame == null) { 396*b1cdbd2cSJim Jagielski log.println("findFrame(\"_self\") returns null") ; 397*b1cdbd2cSJim Jagielski result = false ; 398*b1cdbd2cSJim Jagielski } else if ( !oObj.equals(frame) ) { 399*b1cdbd2cSJim Jagielski log.println("findFrame(\"_self\") " 400*b1cdbd2cSJim Jagielski + " returns frame which is not equal to tested") ; 401*b1cdbd2cSJim Jagielski result = false ; 402*b1cdbd2cSJim Jagielski } 403*b1cdbd2cSJim Jagielski 404*b1cdbd2cSJim Jagielski tRes.tested("findFrame()", result) ; 405*b1cdbd2cSJim Jagielski } 406*b1cdbd2cSJim Jagielski 407*b1cdbd2cSJim Jagielski /** 408*b1cdbd2cSJim Jagielski * At first new listener is added, then test calls the method and result 409*b1cdbd2cSJim Jagielski * is checked. <p> 410*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if isDesktop() method returnes true or if the 411*b1cdbd2cSJim Jagielski * listener was called and proper event past to listener. 412*b1cdbd2cSJim Jagielski */ _contextChanged()413*b1cdbd2cSJim Jagielski public void _contextChanged() { 414*b1cdbd2cSJim Jagielski boolean result = true; 415*b1cdbd2cSJim Jagielski TestFrameActionListener listener = new TestFrameActionListener(); 416*b1cdbd2cSJim Jagielski 417*b1cdbd2cSJim Jagielski if (tEnv.getTestCase().getObjectName().equals("Desktop")) { 418*b1cdbd2cSJim Jagielski log.println("Desktop cann't change context"); 419*b1cdbd2cSJim Jagielski tRes.tested("contextChanged()", true) ; 420*b1cdbd2cSJim Jagielski return; 421*b1cdbd2cSJim Jagielski } 422*b1cdbd2cSJim Jagielski 423*b1cdbd2cSJim Jagielski listenerCalled[0] = false; 424*b1cdbd2cSJim Jagielski oObj.addFrameActionListener(listener); 425*b1cdbd2cSJim Jagielski try { 426*b1cdbd2cSJim Jagielski oObj.contextChanged(); 427*b1cdbd2cSJim Jagielski if ( !listenerCalled[0] ) { 428*b1cdbd2cSJim Jagielski log.println("listener was not called on contextChanged() call.") ; 429*b1cdbd2cSJim Jagielski result = false; 430*b1cdbd2cSJim Jagielski } else if (actionEvent[0] != FrameAction.CONTEXT_CHANGED) { 431*b1cdbd2cSJim Jagielski log.println("listener was called, but Action != CONTEXT_CHANGED") ; 432*b1cdbd2cSJim Jagielski result = false; 433*b1cdbd2cSJim Jagielski } 434*b1cdbd2cSJim Jagielski } finally { 435*b1cdbd2cSJim Jagielski oObj.removeFrameActionListener(listener); 436*b1cdbd2cSJim Jagielski } 437*b1cdbd2cSJim Jagielski 438*b1cdbd2cSJim Jagielski boolean res = isDesktop(log, tEnv, "contextChanged()"); 439*b1cdbd2cSJim Jagielski if (res) result = res; 440*b1cdbd2cSJim Jagielski tRes.tested("contextChanged()", result); 441*b1cdbd2cSJim Jagielski } 442*b1cdbd2cSJim Jagielski 443*b1cdbd2cSJim Jagielski 444*b1cdbd2cSJim Jagielski /** 445*b1cdbd2cSJim Jagielski * Test calls the method. Remembered old creater is restored at the end. <p> 446*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method sucessfully set new value to (XFrame) 447*b1cdbd2cSJim Jagielski * oObj object. 448*b1cdbd2cSJim Jagielski */ _setCreator()449*b1cdbd2cSJim Jagielski public void _setCreator() { 450*b1cdbd2cSJim Jagielski if (tEnv.getTestCase().getObjectName().equals("Desktop")) { 451*b1cdbd2cSJim Jagielski log.println("Desktop has no creator"); 452*b1cdbd2cSJim Jagielski tRes.tested("setCreator()", true) ; 453*b1cdbd2cSJim Jagielski return; 454*b1cdbd2cSJim Jagielski } 455*b1cdbd2cSJim Jagielski 456*b1cdbd2cSJim Jagielski XFramesSupplier oldCreator = oObj.getCreator() ; 457*b1cdbd2cSJim Jagielski oObj.setCreator(null) ; 458*b1cdbd2cSJim Jagielski tRes.tested("setCreator()", oObj.getCreator() == null) ; 459*b1cdbd2cSJim Jagielski oObj.setCreator(oldCreator) ; 460*b1cdbd2cSJim Jagielski } 461*b1cdbd2cSJim Jagielski 462*b1cdbd2cSJim Jagielski /** 463*b1cdbd2cSJim Jagielski * Test calls the method, then result is checked.<p> 464*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if method returns true, and values, set by the 465*b1cdbd2cSJim Jagielski * method are nulls, or if method returns false, and values are not changed. 466*b1cdbd2cSJim Jagielski * This method destroy the object. Therfore all other methods have to be 467*b1cdbd2cSJim Jagielski * executed before : 468*b1cdbd2cSJim Jagielski * <ul> 469*b1cdbd2cSJim Jagielski * <li> <code> getName() </code> 470*b1cdbd2cSJim Jagielski * <li> <code> setName() </code> 471*b1cdbd2cSJim Jagielski * <li> <code> activate() </code> 472*b1cdbd2cSJim Jagielski * <li> <code> deactivate() </code> 473*b1cdbd2cSJim Jagielski * <li> <code> isActive() </code> 474*b1cdbd2cSJim Jagielski * <li> <code> addFrameActionListener() </code> 475*b1cdbd2cSJim Jagielski * <li> <code> getComponentWindow() </code> 476*b1cdbd2cSJim Jagielski * <li> <code> getContainerWindow() </code> 477*b1cdbd2cSJim Jagielski * <li> <code> getController() </code> 478*b1cdbd2cSJim Jagielski * <li> <code> isTop() </code> 479*b1cdbd2cSJim Jagielski * <li> <code> findFrame() </code> 480*b1cdbd2cSJim Jagielski * <li> <code> contextChanged() </code> 481*b1cdbd2cSJim Jagielski * <li> <code> setCreator() </code> 482*b1cdbd2cSJim Jagielski * object</li> 483*b1cdbd2cSJim Jagielski * </ul> 484*b1cdbd2cSJim Jagielski */ _setComponent()485*b1cdbd2cSJim Jagielski public void _setComponent() { 486*b1cdbd2cSJim Jagielski // setComponent() destr 487*b1cdbd2cSJim Jagielski requiredMethod("getName()") ; 488*b1cdbd2cSJim Jagielski requiredMethod("setName()") ; 489*b1cdbd2cSJim Jagielski requiredMethod("activate()") ; 490*b1cdbd2cSJim Jagielski requiredMethod("deactivate()") ; 491*b1cdbd2cSJim Jagielski requiredMethod("isActive()") ; 492*b1cdbd2cSJim Jagielski requiredMethod("addFrameActionListener()") ; 493*b1cdbd2cSJim Jagielski requiredMethod("getComponentWindow()") ; 494*b1cdbd2cSJim Jagielski requiredMethod("getContainerWindow()") ; 495*b1cdbd2cSJim Jagielski requiredMethod("getController()") ; 496*b1cdbd2cSJim Jagielski requiredMethod("isTop()") ; 497*b1cdbd2cSJim Jagielski requiredMethod("findFrame()") ; 498*b1cdbd2cSJim Jagielski requiredMethod("contextChanged()") ; 499*b1cdbd2cSJim Jagielski requiredMethod("setCreator()") ; 500*b1cdbd2cSJim Jagielski 501*b1cdbd2cSJim Jagielski boolean result = true; 502*b1cdbd2cSJim Jagielski 503*b1cdbd2cSJim Jagielski XWindow oldWindow = oObj.getComponentWindow(); 504*b1cdbd2cSJim Jagielski XController oldController = oObj.getController(); 505*b1cdbd2cSJim Jagielski boolean rs = oObj.setComponent(null, null); 506*b1cdbd2cSJim Jagielski if (rs) { // component must be changed 507*b1cdbd2cSJim Jagielski result &= oObj.getComponentWindow() == null; 508*b1cdbd2cSJim Jagielski result &= oObj.getController() == null; 509*b1cdbd2cSJim Jagielski if (!result) 510*b1cdbd2cSJim Jagielski log.println("setComponent() returns true, but component is " + 511*b1cdbd2cSJim Jagielski "not changed."); 512*b1cdbd2cSJim Jagielski } else { // frame is not allowed to change component 513*b1cdbd2cSJim Jagielski result &= oObj.getComponentWindow() == oldWindow ; 514*b1cdbd2cSJim Jagielski result &= oObj.getController() == oldController ; 515*b1cdbd2cSJim Jagielski if (!result) 516*b1cdbd2cSJim Jagielski log.println("setComponent() returns false, but component is" + 517*b1cdbd2cSJim Jagielski "changed."); 518*b1cdbd2cSJim Jagielski } 519*b1cdbd2cSJim Jagielski tRes.tested("setComponent()", result); 520*b1cdbd2cSJim Jagielski 521*b1cdbd2cSJim Jagielski } 522*b1cdbd2cSJim Jagielski 523*b1cdbd2cSJim Jagielski /** 524*b1cdbd2cSJim Jagielski * Test calls the method. <p> 525*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method successfully returns. 526*b1cdbd2cSJim Jagielski * In case a frame should initialised twice, a 527*b1cdbd2cSJim Jagielski * <CODE>com.sun.star.uno.RuntimeException</CODE> was thron. This is ok. But since 528*b1cdbd2cSJim Jagielski * a com.sun.star.uno.RuntimeException could thrown in any state the message of 529*b1cdbd2cSJim Jagielski * the exception must contain a defined string. In this case the test get an 530*b1cdbd2cSJim Jagielski * <CODE>OK</CODE> status. 531*b1cdbd2cSJim Jagielski * The following method tests are to be completed successfully before : 532*b1cdbd2cSJim Jagielski * <ul> 533*b1cdbd2cSJim Jagielski * <li> <code> setComponent() </code> : sets window and controller to the 534*b1cdbd2cSJim Jagielski * object</li> 535*b1cdbd2cSJim Jagielski * </ul> 536*b1cdbd2cSJim Jagielski */ _initialize()537*b1cdbd2cSJim Jagielski public void _initialize() { 538*b1cdbd2cSJim Jagielski requiredMethod("setComponent()") ; 539*b1cdbd2cSJim Jagielski XWindow win = oObj.getContainerWindow() ; 540*b1cdbd2cSJim Jagielski boolean bOK = true; 541*b1cdbd2cSJim Jagielski try { 542*b1cdbd2cSJim Jagielski oObj.initialize(win) ; 543*b1cdbd2cSJim Jagielski } catch (com.sun.star.uno.RuntimeException e){ 544*b1cdbd2cSJim Jagielski String message="Frame::initialized() is called more then once, which isnt usefull nor allowed."; 545*b1cdbd2cSJim Jagielski if (e.toString().indexOf(message) != -1){ 546*b1cdbd2cSJim Jagielski log.println(e.toString()); 547*b1cdbd2cSJim Jagielski log.println("methods throws exception, but it's OK"); 548*b1cdbd2cSJim Jagielski }else{ 549*b1cdbd2cSJim Jagielski log.println(e.toString()); 550*b1cdbd2cSJim Jagielski bOK=false; 551*b1cdbd2cSJim Jagielski } 552*b1cdbd2cSJim Jagielski 553*b1cdbd2cSJim Jagielski } 554*b1cdbd2cSJim Jagielski tRes.tested("initialize()", bOK) ; 555*b1cdbd2cSJim Jagielski } 556*b1cdbd2cSJim Jagielski 557*b1cdbd2cSJim Jagielski /** 558*b1cdbd2cSJim Jagielski * Checks does relation 'Desktop' exist. Returns true if exist. 559*b1cdbd2cSJim Jagielski */ isDesktop(PrintWriter log, TestEnvironment env, String method)560*b1cdbd2cSJim Jagielski public static boolean isDesktop(PrintWriter log, 561*b1cdbd2cSJim Jagielski TestEnvironment env, String method) { 562*b1cdbd2cSJim Jagielski Object isD = env.getObjRelation("Desktop"); 563*b1cdbd2cSJim Jagielski if (isD != null) { 564*b1cdbd2cSJim Jagielski log.println("The Desktop doesn't support the method " + method); 565*b1cdbd2cSJim Jagielski log.println("It will always return true"); 566*b1cdbd2cSJim Jagielski return true; 567*b1cdbd2cSJim Jagielski } 568*b1cdbd2cSJim Jagielski else { 569*b1cdbd2cSJim Jagielski return false; 570*b1cdbd2cSJim Jagielski } 571*b1cdbd2cSJim Jagielski } 572*b1cdbd2cSJim Jagielski 573*b1cdbd2cSJim Jagielski /** 574*b1cdbd2cSJim Jagielski * Forces environment recreation. 575*b1cdbd2cSJim Jagielski */ after()576*b1cdbd2cSJim Jagielski public void after() { 577*b1cdbd2cSJim Jagielski disposeEnvironment(); 578*b1cdbd2cSJim Jagielski } 579*b1cdbd2cSJim Jagielski } 580