1ef39d40dSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3ef39d40dSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4ef39d40dSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5ef39d40dSAndrew Rist  * distributed with this work for additional information
6ef39d40dSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7ef39d40dSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8ef39d40dSAndrew Rist  * "License"); you may not use this file except in compliance
9ef39d40dSAndrew Rist  * with the License.  You may obtain a copy of the License at
10ef39d40dSAndrew Rist  *
11ef39d40dSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12ef39d40dSAndrew Rist  *
13ef39d40dSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14ef39d40dSAndrew Rist  * software distributed under the License is distributed on an
15ef39d40dSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16ef39d40dSAndrew Rist  * KIND, either express or implied.  See the License for the
17ef39d40dSAndrew Rist  * specific language governing permissions and limitations
18ef39d40dSAndrew Rist  * under the License.
19ef39d40dSAndrew Rist  *
20ef39d40dSAndrew Rist  *************************************************************/
21ef39d40dSAndrew Rist 
22ef39d40dSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir package ifc.util;
25cdf0e10cSrcweir 
26cdf0e10cSrcweir import lib.MultiMethodTest;
27cdf0e10cSrcweir 
28cdf0e10cSrcweir import com.sun.star.util.XFlushListener;
29cdf0e10cSrcweir import com.sun.star.util.XFlushable;
30cdf0e10cSrcweir 
31cdf0e10cSrcweir /**
32cdf0e10cSrcweir  * Testing <code>com.sun.star.util.XFlushable</code>
33cdf0e10cSrcweir  * interface methods :
34cdf0e10cSrcweir  * <ul>
35cdf0e10cSrcweir  *  <li><code> flush()</code></li>
36cdf0e10cSrcweir  *  <li><code> addFlushListener()</code></li>
37cdf0e10cSrcweir  *  <li><code> removeFlushListener()</code></li>
38cdf0e10cSrcweir  * </ul> <p>
39cdf0e10cSrcweir  * Test is <b> NOT </b> multithread compilant. <p>
40cdf0e10cSrcweir  * @see com.sun.star.util.XFlushable
41cdf0e10cSrcweir  */
42cdf0e10cSrcweir public class _XFlushable extends MultiMethodTest {
43cdf0e10cSrcweir 
44cdf0e10cSrcweir     // oObj filled by MultiMethodTest
45cdf0e10cSrcweir     public XFlushable oObj = null ;
46cdf0e10cSrcweir 
47cdf0e10cSrcweir     /**
48cdf0e10cSrcweir      * Simple <code>XFlushListener</code> implementation which
49cdf0e10cSrcweir      * just registers if any calls to its methods were made.
50cdf0e10cSrcweir      */
51cdf0e10cSrcweir     private class MyFlushListener implements XFlushListener{
52cdf0e10cSrcweir         boolean called = false ;
flushed(com.sun.star.lang.EventObject e)53cdf0e10cSrcweir         public void flushed(com.sun.star.lang.EventObject e) {
54cdf0e10cSrcweir             called = true ;
55cdf0e10cSrcweir         }
disposing(com.sun.star.lang.EventObject e)56cdf0e10cSrcweir         public void disposing(com.sun.star.lang.EventObject e) {}
reset()57cdf0e10cSrcweir         public void reset() { called = false; }
wasFlushed()58cdf0e10cSrcweir         public boolean wasFlushed() { return called; }
59cdf0e10cSrcweir     }
60cdf0e10cSrcweir 
61cdf0e10cSrcweir     private MyFlushListener listener1 = new MyFlushListener(),
62cdf0e10cSrcweir                             listener2 = new MyFlushListener() ;
63cdf0e10cSrcweir 
64cdf0e10cSrcweir     /**
65cdf0e10cSrcweir     * Test call method <code>flush</code> and checks if added listener
66cdf0e10cSrcweir     * was called and removed one wasn't. <p>
67*bb6af6bcSPedro Giffuni     * Has OK status if no exception has occurred. <p>
68cdf0e10cSrcweir     *     Methods to be executed before :
69cdf0e10cSrcweir     * {@link #_addFlushListener},
70cdf0e10cSrcweir     * {@link #_removeFlushListener}
71cdf0e10cSrcweir     */
_flush()72cdf0e10cSrcweir     public void _flush() {
73cdf0e10cSrcweir         executeMethod("addFlushListener()") ;
74cdf0e10cSrcweir         executeMethod("removeFlushListener()") ;
75cdf0e10cSrcweir 
76cdf0e10cSrcweir         oObj.flush() ;
77cdf0e10cSrcweir 
78cdf0e10cSrcweir         tRes.tested("flush()", true) ;
79cdf0e10cSrcweir         tRes.tested("addFlushListener()", listener2.wasFlushed()) ;
80cdf0e10cSrcweir         tRes.tested("removeFlushListener()", !listener1.wasFlushed()) ;
81cdf0e10cSrcweir     }
82cdf0e10cSrcweir 
83cdf0e10cSrcweir     /**
84cdf0e10cSrcweir     * Test adds two listeners, one of which will be removed then.<p>
85cdf0e10cSrcweir     * Has OK status if the listener was called on <code>flush()</code>
86cdf0e10cSrcweir     * method call.
87cdf0e10cSrcweir     */
_addFlushListener()88cdf0e10cSrcweir     public void _addFlushListener() {
89cdf0e10cSrcweir         oObj.addFlushListener(listener1) ;
90cdf0e10cSrcweir         oObj.addFlushListener(listener2) ;
91cdf0e10cSrcweir     }
92cdf0e10cSrcweir 
93cdf0e10cSrcweir     /**
94cdf0e10cSrcweir     * Test removes one of two listeners added before. <p>
95cdf0e10cSrcweir     * Has OK status if the listener removed wasn't called on
96cdf0e10cSrcweir     * <code>flush()</code> method call.
97cdf0e10cSrcweir     *     Methods to be executed before :
98cdf0e10cSrcweir     * {@link #_addFlushListener},
99cdf0e10cSrcweir     */
_removeFlushListener()100cdf0e10cSrcweir     public void _removeFlushListener() {
101cdf0e10cSrcweir         executeMethod("addFlushListener()") ;
102cdf0e10cSrcweir 
103cdf0e10cSrcweir         oObj.removeFlushListener(listener1) ;
104cdf0e10cSrcweir     }
105cdf0e10cSrcweir 
106cdf0e10cSrcweir }  // finish class _XFlushable
107cdf0e10cSrcweir 
108