1*ef39d40dSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*ef39d40dSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*ef39d40dSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*ef39d40dSAndrew Rist * distributed with this work for additional information 6*ef39d40dSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*ef39d40dSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*ef39d40dSAndrew Rist * "License"); you may not use this file except in compliance 9*ef39d40dSAndrew Rist * with the License. You may obtain a copy of the License at 10*ef39d40dSAndrew Rist * 11*ef39d40dSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*ef39d40dSAndrew Rist * 13*ef39d40dSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*ef39d40dSAndrew Rist * software distributed under the License is distributed on an 15*ef39d40dSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*ef39d40dSAndrew Rist * KIND, either express or implied. See the License for the 17*ef39d40dSAndrew Rist * specific language governing permissions and limitations 18*ef39d40dSAndrew Rist * under the License. 19*ef39d40dSAndrew Rist * 20*ef39d40dSAndrew Rist *************************************************************/ 21*ef39d40dSAndrew Rist 22*ef39d40dSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir package ifc.io; 25cdf0e10cSrcweir 26cdf0e10cSrcweir import lib.MultiMethodTest; 27cdf0e10cSrcweir import lib.Status; 28cdf0e10cSrcweir import lib.StatusException; 29cdf0e10cSrcweir 30cdf0e10cSrcweir import com.sun.star.io.XActiveDataControl; 31cdf0e10cSrcweir import com.sun.star.io.XStreamListener; 32cdf0e10cSrcweir import com.sun.star.lang.EventObject; 33cdf0e10cSrcweir 34cdf0e10cSrcweir /** 35cdf0e10cSrcweir * Testing <code>com.sun.star.io.XActiveDataControl</code> 36cdf0e10cSrcweir * interface methods : 37cdf0e10cSrcweir * <ul> 38cdf0e10cSrcweir * <li><code> addListener()</code></li> 39cdf0e10cSrcweir * <li><code> removeListener()</code></li> 40cdf0e10cSrcweir * <li><code> start()</code></li> 41cdf0e10cSrcweir * <li><code> terminate()</code></li> 42cdf0e10cSrcweir * </ul> <p> 43cdf0e10cSrcweir * 44cdf0e10cSrcweir * Tests <code>XActiveDataControl</code> interface. First, it registers a listener 45cdf0e10cSrcweir * and performs <code>start()</code> and <code>terminate()</code> calls. The 46cdf0e10cSrcweir * events received in the listener are analyzed to verify the result.<p> 47cdf0e10cSrcweir * 48cdf0e10cSrcweir * @see com.sun.star.io.XActiveDataControl 49cdf0e10cSrcweir */ 50cdf0e10cSrcweir public class _XActiveDataControl extends MultiMethodTest { 51cdf0e10cSrcweir 52cdf0e10cSrcweir /** 53cdf0e10cSrcweir * Contains the object under test. 54cdf0e10cSrcweir */ 55cdf0e10cSrcweir public XActiveDataControl oObj = null; 56cdf0e10cSrcweir 57cdf0e10cSrcweir /** 58cdf0e10cSrcweir * Indicates that the <code>XStreamListener.started()</code> method has 59cdf0e10cSrcweir * been called. 60cdf0e10cSrcweir */ 61cdf0e10cSrcweir private boolean startCalled = false; 62cdf0e10cSrcweir 63cdf0e10cSrcweir /** 64cdf0e10cSrcweir * Indicates that the <code>XStreamListener.terminated()</code> method has 65cdf0e10cSrcweir * been called. 66cdf0e10cSrcweir */ 67cdf0e10cSrcweir private boolean terminateCalled = false; 68cdf0e10cSrcweir 69cdf0e10cSrcweir /** 70cdf0e10cSrcweir * Indicates that the <code>XEventListener.closed()</code> method has 71cdf0e10cSrcweir * been called. 72cdf0e10cSrcweir */ 73cdf0e10cSrcweir private boolean closeCalled = false; 74cdf0e10cSrcweir 75cdf0e10cSrcweir /** 76cdf0e10cSrcweir * Indicates that the <code>XStreamListener.error()</code> method has 77cdf0e10cSrcweir * been called. 78cdf0e10cSrcweir */ 79cdf0e10cSrcweir private boolean errorCalled = false; 80cdf0e10cSrcweir 81cdf0e10cSrcweir /** 82cdf0e10cSrcweir * Contains the error, if <code>XStreamListener.error(Object error)</code> 83cdf0e10cSrcweir * method was called. 84cdf0e10cSrcweir */ 85cdf0e10cSrcweir private Object error; 86cdf0e10cSrcweir 87cdf0e10cSrcweir /** 88cdf0e10cSrcweir * Indicates that the <code>XEventListener.disposing()</code> method has 89cdf0e10cSrcweir * been called. 90cdf0e10cSrcweir */ 91cdf0e10cSrcweir private boolean smthngElseCalled = false; 92cdf0e10cSrcweir 93cdf0e10cSrcweir /** 94cdf0e10cSrcweir * The listener is used to verify results of the methods. 95cdf0e10cSrcweir */ 96cdf0e10cSrcweir private TestStreamListener listener = new TestStreamListener(); 97cdf0e10cSrcweir 98cdf0e10cSrcweir /** 99cdf0e10cSrcweir * XStreamListener implementation. Sets variables 100cdf0e10cSrcweir * (<cod>estartedCalled</code>, <code>terminatedCalled</code>, etc.) to 101cdf0e10cSrcweir * <tt>true</tt> if the appropriate method was called (for example, if 102cdf0e10cSrcweir * <code>started()</code> was called, the <code>startedCalled</code> 103cdf0e10cSrcweir * field is set). 104cdf0e10cSrcweir */ 105cdf0e10cSrcweir private class TestStreamListener implements XStreamListener { started()106cdf0e10cSrcweir public void started() { 107cdf0e10cSrcweir startCalled = true ; 108cdf0e10cSrcweir } terminated()109cdf0e10cSrcweir public void terminated() { 110cdf0e10cSrcweir terminateCalled = true ; 111cdf0e10cSrcweir } error(Object e)112cdf0e10cSrcweir public void error(Object e) { 113cdf0e10cSrcweir error = e; 114cdf0e10cSrcweir errorCalled = true ; 115cdf0e10cSrcweir } closed()116cdf0e10cSrcweir public void closed() { 117cdf0e10cSrcweir closeCalled = true ; 118cdf0e10cSrcweir } disposing(EventObject e)119cdf0e10cSrcweir public void disposing(EventObject e) { 120cdf0e10cSrcweir smthngElseCalled = true ; 121cdf0e10cSrcweir } 122cdf0e10cSrcweir 123cdf0e10cSrcweir } 124cdf0e10cSrcweir 125cdf0e10cSrcweir /** 126cdf0e10cSrcweir * Tests <code>addListener()</code>. The verification is performed later, in 127cdf0e10cSrcweir * <code>_terminate()</code> method. 128cdf0e10cSrcweir */ _addListener()129cdf0e10cSrcweir public void _addListener() { 130cdf0e10cSrcweir oObj.addListener(listener); 131cdf0e10cSrcweir } 132cdf0e10cSrcweir 133cdf0e10cSrcweir /** 134cdf0e10cSrcweir * Starts the data activity (e.g. data pump). Verifictation is performed 135cdf0e10cSrcweir * later, in <code>_terminate()</code> method. 136cdf0e10cSrcweir */ _start()137cdf0e10cSrcweir public void _start() { 138cdf0e10cSrcweir executeMethod("addListener()"); 139cdf0e10cSrcweir 140cdf0e10cSrcweir oObj.start(); 141cdf0e10cSrcweir 142cdf0e10cSrcweir // waiting a little bit for data transfered 143cdf0e10cSrcweir try { 144cdf0e10cSrcweir Thread.sleep(200); 145cdf0e10cSrcweir } catch (InterruptedException e) { 146cdf0e10cSrcweir e.printStackTrace(log) ; 147cdf0e10cSrcweir throw new StatusException(Status.failed(e.getMessage())); 148cdf0e10cSrcweir } 149cdf0e10cSrcweir } 150cdf0e10cSrcweir 151cdf0e10cSrcweir /** 152cdf0e10cSrcweir * Tests <code>removeListener()</code>. Before, it ensures that other 153cdf0e10cSrcweir * tests are perforemed and that <code>addListener()</code> is okay. Then, 154cdf0e10cSrcweir * calls <code>XActiveDataControl.start()</code> and checks that no method 155cdf0e10cSrcweir * of the listener was called. 156cdf0e10cSrcweir */ _removeListener()157cdf0e10cSrcweir public void _removeListener() { 158cdf0e10cSrcweir // performing other tests before, so, that don't break them 159cdf0e10cSrcweir try { 160cdf0e10cSrcweir executeMethod("terminate()"); 161cdf0e10cSrcweir } catch (StatusException e) { 162cdf0e10cSrcweir // the result doesn't matter 163cdf0e10cSrcweir } 164cdf0e10cSrcweir 165cdf0e10cSrcweir // check that addListener() is okay 166cdf0e10cSrcweir requiredMethod("addListener()"); 167cdf0e10cSrcweir 168cdf0e10cSrcweir // clearing previous records 169cdf0e10cSrcweir startCalled = false; 170cdf0e10cSrcweir terminateCalled = false; 171cdf0e10cSrcweir errorCalled = false; 172cdf0e10cSrcweir error = null; 173cdf0e10cSrcweir smthngElseCalled = false; 174cdf0e10cSrcweir 175cdf0e10cSrcweir // removing the listener 176cdf0e10cSrcweir oObj.removeListener(listener); 177cdf0e10cSrcweir 178cdf0e10cSrcweir // starting the activity 179cdf0e10cSrcweir oObj.start(); 180cdf0e10cSrcweir 181cdf0e10cSrcweir // wait a little bit to allow for listeners to be called 182cdf0e10cSrcweir try { 183cdf0e10cSrcweir Thread.sleep(200); 184cdf0e10cSrcweir } catch (InterruptedException e) { 185cdf0e10cSrcweir e.printStackTrace(log) ; 186cdf0e10cSrcweir throw new StatusException(Status.failed(e.getMessage())); 187cdf0e10cSrcweir } 188cdf0e10cSrcweir 189cdf0e10cSrcweir // check that no removed listener's method was called 190cdf0e10cSrcweir tRes.tested("removeListener()",!startCalled && 191cdf0e10cSrcweir !terminateCalled && !errorCalled && !smthngElseCalled) ; 192cdf0e10cSrcweir } 193cdf0e10cSrcweir 194cdf0e10cSrcweir /** 195cdf0e10cSrcweir * Tests <code>terminate()</code>. First, ensures that <code>start()</code> 196cdf0e10cSrcweir * has been called. Then, verifies <code>start()</code>, 197cdf0e10cSrcweir * <code>addListener()</code> and <code>terminate()</code> results, by 198cdf0e10cSrcweir * checking that the appropriate listener's methods have been called. 199cdf0e10cSrcweir */ _terminate()200cdf0e10cSrcweir public void _terminate() { 201cdf0e10cSrcweir // ensuring that the activity has been started 202cdf0e10cSrcweir executeMethod("start()"); 203cdf0e10cSrcweir 204cdf0e10cSrcweir // terminating the activity 205cdf0e10cSrcweir oObj.terminate(); 206cdf0e10cSrcweir 207cdf0e10cSrcweir // waiting a little bit for listeners to be called 208cdf0e10cSrcweir try { 209cdf0e10cSrcweir Thread.sleep(200); 210cdf0e10cSrcweir } catch (InterruptedException e) { 211cdf0e10cSrcweir e.printStackTrace(log) ; 212cdf0e10cSrcweir throw new StatusException(Status.failed(e.getMessage())); 213cdf0e10cSrcweir } 214cdf0e10cSrcweir 215cdf0e10cSrcweir // check, if any error occured 216cdf0e10cSrcweir if (errorCalled) { 217cdf0e10cSrcweir Status.failed("Unexpected error"); 218cdf0e10cSrcweir log.println("Unexpected error " + error); 219cdf0e10cSrcweir ((Exception)error).printStackTrace(log); 220cdf0e10cSrcweir } 221cdf0e10cSrcweir 222cdf0e10cSrcweir // verification of start() method - startedCalled method should be 223cdf0e10cSrcweir // called 224cdf0e10cSrcweir if (!tRes.tested("start()", startCalled)) { 225cdf0e10cSrcweir log.println("XStreamListener.started() was not called()"); 226cdf0e10cSrcweir } 227cdf0e10cSrcweir 228cdf0e10cSrcweir // check that any listener method is called 229cdf0e10cSrcweir tRes.tested("addListener()", startCalled || 230cdf0e10cSrcweir terminateCalled || errorCalled || smthngElseCalled); 231cdf0e10cSrcweir 232cdf0e10cSrcweir // checking that terminated() has been called or streams were closed 233cdf0e10cSrcweir // before terminate() call, in this case termination has no sense. 234cdf0e10cSrcweir tRes.tested("terminate()", terminateCalled || closeCalled); 235cdf0e10cSrcweir } 236cdf0e10cSrcweir 237cdf0e10cSrcweir /** 238cdf0e10cSrcweir * Disposes the test environment, since it is used. 239cdf0e10cSrcweir */ after()240cdf0e10cSrcweir public void after() { 241cdf0e10cSrcweir this.disposeEnvironment(); 242cdf0e10cSrcweir } 243cdf0e10cSrcweir } 244cdf0e10cSrcweir 245cdf0e10cSrcweir 246