/************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * only, as published by the Free Software Foundation. * * OpenOffice.org is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License version 3 for more details * (a copy is included in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU Lesser General Public License * version 3 along with OpenOffice.org. If not, see * * for a copy of the LGPLv3 License. * ************************************************************************/ package ifc.io; import lib.MultiMethodTest; import lib.Status; import lib.StatusException; import com.sun.star.io.XActiveDataControl; import com.sun.star.io.XStreamListener; import com.sun.star.lang.EventObject; /** * Testing com.sun.star.io.XActiveDataControl * interface methods : *

* * Tests XActiveDataControl interface. First, it registers a listener * and performs start() and terminate() calls. The * events received in the listener are analyzed to verify the result.

* * @see com.sun.star.io.XActiveDataControl */ public class _XActiveDataControl extends MultiMethodTest { /** * Contains the object under test. */ public XActiveDataControl oObj = null; /** * Indicates that the XStreamListener.started() method has * been called. */ private boolean startCalled = false; /** * Indicates that the XStreamListener.terminated() method has * been called. */ private boolean terminateCalled = false; /** * Indicates that the XEventListener.closed() method has * been called. */ private boolean closeCalled = false; /** * Indicates that the XStreamListener.error() method has * been called. */ private boolean errorCalled = false; /** * Contains the error, if XStreamListener.error(Object error) * method was called. */ private Object error; /** * Indicates that the XEventListener.disposing() method has * been called. */ private boolean smthngElseCalled = false; /** * The listener is used to verify results of the methods. */ private TestStreamListener listener = new TestStreamListener(); /** * XStreamListener implementation. Sets variables * (estartedCalled, terminatedCalled, etc.) to * true if the appropriate method was called (for example, if * started() was called, the startedCalled * field is set). */ private class TestStreamListener implements XStreamListener { public void started() { startCalled = true ; } public void terminated() { terminateCalled = true ; } public void error(Object e) { error = e; errorCalled = true ; } public void closed() { closeCalled = true ; } public void disposing(EventObject e) { smthngElseCalled = true ; } } /** * Tests addListener(). The verification is performed later, in * _terminate() method. */ public void _addListener() { oObj.addListener(listener); } /** * Starts the data activity (e.g. data pump). Verifictation is performed * later, in _terminate() method. */ public void _start() { executeMethod("addListener()"); oObj.start(); // waiting a little bit for data transfered try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(log) ; throw new StatusException(Status.failed(e.getMessage())); } } /** * Tests removeListener(). Before, it ensures that other * tests are perforemed and that addListener() is okay. Then, * calls XActiveDataControl.start() and checks that no method * of the listener was called. */ public void _removeListener() { // performing other tests before, so, that don't break them try { executeMethod("terminate()"); } catch (StatusException e) { // the result doesn't matter } // check that addListener() is okay requiredMethod("addListener()"); // clearing previous records startCalled = false; terminateCalled = false; errorCalled = false; error = null; smthngElseCalled = false; // removing the listener oObj.removeListener(listener); // starting the activity oObj.start(); // wait a little bit to allow for listeners to be called try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(log) ; throw new StatusException(Status.failed(e.getMessage())); } // check that no removed listener's method was called tRes.tested("removeListener()",!startCalled && !terminateCalled && !errorCalled && !smthngElseCalled) ; } /** * Tests terminate(). First, ensures that start() * has been called. Then, verifies start(), * addListener() and terminate() results, by * checking that the appropriate listener's methods have been called. */ public void _terminate() { // ensuring that the activity has been started executeMethod("start()"); // terminating the activity oObj.terminate(); // waiting a little bit for listeners to be called try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(log) ; throw new StatusException(Status.failed(e.getMessage())); } // check, if any error occured if (errorCalled) { Status.failed("Unexpected error"); log.println("Unexpected error " + error); ((Exception)error).printStackTrace(log); } // verification of start() method - startedCalled method should be // called if (!tRes.tested("start()", startCalled)) { log.println("XStreamListener.started() was not called()"); } // check that any listener method is called tRes.tested("addListener()", startCalled || terminateCalled || errorCalled || smthngElseCalled); // checking that terminated() has been called or streams were closed // before terminate() call, in this case termination has no sense. tRes.tested("terminate()", terminateCalled || closeCalled); } /** * Disposes the test environment, since it is used. */ public void after() { this.disposeEnvironment(); } }