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.form;
25cdf0e10cSrcweir 
26cdf0e10cSrcweir 
27cdf0e10cSrcweir import lib.MultiMethodTest;
28cdf0e10cSrcweir 
29cdf0e10cSrcweir import com.sun.star.form.XLoadable;
30cdf0e10cSrcweir 
31cdf0e10cSrcweir /**
32cdf0e10cSrcweir * Testing <code>com.sun.star.form.XLoadable</code>
33cdf0e10cSrcweir * interface methods :
34cdf0e10cSrcweir * <ul>
35cdf0e10cSrcweir *  <li><code> load()</code></li>
36cdf0e10cSrcweir *  <li><code> unload()</code></li>
37cdf0e10cSrcweir *  <li><code> reload()</code></li>
38cdf0e10cSrcweir *  <li><code> isLoaded()</code></li>
39cdf0e10cSrcweir *  <li><code> addLoadListener()</code></li>
40cdf0e10cSrcweir *  <li><code> removeLoadListener()</code></li>
41cdf0e10cSrcweir * </ul> <p>
42cdf0e10cSrcweir * Test is <b> NOT </b> multithread compilant. <p>
43cdf0e10cSrcweir * @see com.sun.star.form.XLoadable
44cdf0e10cSrcweir */
45cdf0e10cSrcweir public class _XLoadable extends MultiMethodTest {
46cdf0e10cSrcweir 
47cdf0e10cSrcweir     public XLoadable oObj = null;
48cdf0e10cSrcweir 
49cdf0e10cSrcweir     /**
50cdf0e10cSrcweir     * Listener implementation which sets flags on appropriate method calls
51cdf0e10cSrcweir     */
52cdf0e10cSrcweir     protected class TestLoadListener implements com.sun.star.form.XLoadListener {
53cdf0e10cSrcweir         public boolean disposingCalled = false ;
54cdf0e10cSrcweir         public boolean loadedCalled = false ;
55cdf0e10cSrcweir         public boolean reloadedCalled = false ;
56cdf0e10cSrcweir         public boolean reloadingCalled = false ;
57cdf0e10cSrcweir         public boolean unloadedCalled = false ;
58cdf0e10cSrcweir         public boolean unloadingCalled = false ;
59cdf0e10cSrcweir         private java.io.PrintWriter log = null ;
60cdf0e10cSrcweir 
TestLoadListener(java.io.PrintWriter log)61cdf0e10cSrcweir         public TestLoadListener(java.io.PrintWriter log) {
62cdf0e10cSrcweir             this.log = log ;
63cdf0e10cSrcweir         }
64cdf0e10cSrcweir 
disposing(com.sun.star.lang.EventObject e)65cdf0e10cSrcweir         public void disposing(com.sun.star.lang.EventObject e) {
66cdf0e10cSrcweir             disposingCalled = true ;
67cdf0e10cSrcweir             log.println(" disposing was called.") ;
68cdf0e10cSrcweir         }
69cdf0e10cSrcweir 
loaded(com.sun.star.lang.EventObject e)70cdf0e10cSrcweir         public void loaded(com.sun.star.lang.EventObject e) {
71cdf0e10cSrcweir             loadedCalled = true ;
72cdf0e10cSrcweir             log.println(" loaded was called.") ;
73cdf0e10cSrcweir         }
74cdf0e10cSrcweir 
reloaded(com.sun.star.lang.EventObject e)75cdf0e10cSrcweir         public void reloaded(com.sun.star.lang.EventObject e) {
76cdf0e10cSrcweir             reloadedCalled = true ;
77cdf0e10cSrcweir             log.println(" reloaded was called.") ;
78cdf0e10cSrcweir         }
79cdf0e10cSrcweir 
reloading(com.sun.star.lang.EventObject e)80cdf0e10cSrcweir         public void reloading(com.sun.star.lang.EventObject e) {
81cdf0e10cSrcweir             reloadingCalled = true ;
82cdf0e10cSrcweir             log.println(" reloading was called.") ;
83cdf0e10cSrcweir         }
84cdf0e10cSrcweir 
unloaded(com.sun.star.lang.EventObject e)85cdf0e10cSrcweir         public void unloaded(com.sun.star.lang.EventObject e) {
86cdf0e10cSrcweir             unloadedCalled = true ;
87cdf0e10cSrcweir             log.println(" unloaded was called.") ;
88cdf0e10cSrcweir         }
89cdf0e10cSrcweir 
unloading(com.sun.star.lang.EventObject e)90cdf0e10cSrcweir         public void unloading(com.sun.star.lang.EventObject e) {
91cdf0e10cSrcweir             unloadingCalled = true ;
92cdf0e10cSrcweir             log.println(" unloading was called.") ;
93cdf0e10cSrcweir         }
94cdf0e10cSrcweir     }
95cdf0e10cSrcweir 
96cdf0e10cSrcweir     TestLoadListener loadListener = null ;
97cdf0e10cSrcweir 
98cdf0e10cSrcweir     /**
99cdf0e10cSrcweir     * Creates new listener.
100cdf0e10cSrcweir     */
before()101cdf0e10cSrcweir     public void before() {
102cdf0e10cSrcweir         loadListener = new TestLoadListener(log) ;
103cdf0e10cSrcweir     }
104cdf0e10cSrcweir 
105cdf0e10cSrcweir     /**
106cdf0e10cSrcweir      * Waits for 0.1 second. Used to get time for load completion.
107cdf0e10cSrcweir      */
shortWait()108cdf0e10cSrcweir     private void shortWait() {
109cdf0e10cSrcweir         try {
110cdf0e10cSrcweir             Thread.sleep(100);
111cdf0e10cSrcweir         } catch (InterruptedException e) {}
112cdf0e10cSrcweir     }
113cdf0e10cSrcweir 
114cdf0e10cSrcweir     /**
115cdf0e10cSrcweir     * Loads the form. <p>
116cdf0e10cSrcweir     * Has <b> OK </b> status if <code>isLoaded()</code> returns
117cdf0e10cSrcweir     * <code>true</code> and listener method <code>loaded()</code>
118cdf0e10cSrcweir     * is called.
119cdf0e10cSrcweir     * The following method tests are to be completed successfully before :
120cdf0e10cSrcweir     * <ul>
121cdf0e10cSrcweir     *  <li> <code> isLoaded() </code> : to be sure form is not loaded </li>
122cdf0e10cSrcweir     *  <li> <code> addLoadListener() </code> : to check if this listener method
123cdf0e10cSrcweir     *  is called. </li>
124cdf0e10cSrcweir     * </ul>
125cdf0e10cSrcweir     */
_load()126cdf0e10cSrcweir     public void _load() {
127cdf0e10cSrcweir         requiredMethod("isLoaded()") ;
128cdf0e10cSrcweir         requiredMethod("addLoadListener()") ;
129cdf0e10cSrcweir 
130cdf0e10cSrcweir         boolean result = true ;
131cdf0e10cSrcweir         oObj.load() ;
132cdf0e10cSrcweir 
133cdf0e10cSrcweir         shortWait() ;
134cdf0e10cSrcweir         result = oObj.isLoaded() && loadListener.loadedCalled ;
135cdf0e10cSrcweir 
136cdf0e10cSrcweir         tRes.tested("load()", result) ;
137cdf0e10cSrcweir     }
138cdf0e10cSrcweir 
139cdf0e10cSrcweir     /**
140cdf0e10cSrcweir     * Unloads the form. <p>
141cdf0e10cSrcweir     * Has <b> OK </b> status if <code>isLoaded()</code> returns
142cdf0e10cSrcweir     * <code>false</code> and listener method <code>unloaded()</code>
143cdf0e10cSrcweir     * is called.
144cdf0e10cSrcweir     * The following method tests are to be completed successfully before :
145cdf0e10cSrcweir     * <ul>
146cdf0e10cSrcweir     *  <li> <code> reload() </code> : to be sure the form is loaded </li>
147cdf0e10cSrcweir     *  <li> <code> addLoadListener() </code> : to check if this listener method
148cdf0e10cSrcweir     *  is called. </li>
149cdf0e10cSrcweir     * </ul>
150cdf0e10cSrcweir     */
_unload()151cdf0e10cSrcweir     public void _unload() {
152cdf0e10cSrcweir         requiredMethod("reload()") ;
153cdf0e10cSrcweir         requiredMethod("addLoadListener()") ;
154cdf0e10cSrcweir 
155cdf0e10cSrcweir         boolean result = true ;
156cdf0e10cSrcweir         oObj.unload() ;
157cdf0e10cSrcweir 
158cdf0e10cSrcweir         shortWait() ;
159cdf0e10cSrcweir         result = !oObj.isLoaded() && loadListener.unloadedCalled ;
160cdf0e10cSrcweir 
161cdf0e10cSrcweir         tRes.tested("unload()", result) ;
162cdf0e10cSrcweir     }
163cdf0e10cSrcweir 
164cdf0e10cSrcweir     /**
165cdf0e10cSrcweir     * Reloads the form. <p>
166cdf0e10cSrcweir     * Has <b> OK </b> status if <code>isLoaded()</code> returns
167cdf0e10cSrcweir     * <code>true</code> and listener method <code>reloaded()</code>
168cdf0e10cSrcweir     * is called.
169cdf0e10cSrcweir     * The following method tests are to be completed successfully before :
170cdf0e10cSrcweir     * <ul>
171cdf0e10cSrcweir     *  <li> <code> load() </code> : to be sure form is loaded </li>
172cdf0e10cSrcweir     *  <li> <code> addLoadListener() </code> : to check if this listener method
173cdf0e10cSrcweir     *  is called. </li>
174cdf0e10cSrcweir     * </ul>
175cdf0e10cSrcweir     */
_reload()176cdf0e10cSrcweir     public void _reload() {
177cdf0e10cSrcweir         requiredMethod("load()") ;
178cdf0e10cSrcweir         requiredMethod("addLoadListener()") ;
179cdf0e10cSrcweir 
180cdf0e10cSrcweir         boolean result = true ;
181cdf0e10cSrcweir         oObj.reload() ;
182cdf0e10cSrcweir 
183cdf0e10cSrcweir         shortWait() ;
184cdf0e10cSrcweir         result = oObj.isLoaded() && loadListener.reloadedCalled;
185cdf0e10cSrcweir 
186cdf0e10cSrcweir         tRes.tested("reload()", result) ;
187cdf0e10cSrcweir     }
188cdf0e10cSrcweir 
189cdf0e10cSrcweir     /**
190cdf0e10cSrcweir     * Checks if the component is already loaded. If yes it unloads
191cdf0e10cSrcweir     * it <p>
192cdf0e10cSrcweir     * Has <b> OK </b> status if finally <code>isLoaded()</code> method
193cdf0e10cSrcweir     * returns <code>false</code>.
194cdf0e10cSrcweir     */
_isLoaded()195cdf0e10cSrcweir     public void _isLoaded() {
196cdf0e10cSrcweir 
197cdf0e10cSrcweir         boolean isLoaded = oObj.isLoaded() ;
198cdf0e10cSrcweir         if (isLoaded) oObj.unload();
199cdf0e10cSrcweir         isLoaded = oObj.isLoaded() ;
200cdf0e10cSrcweir 
201cdf0e10cSrcweir         tRes.tested("isLoaded()", !isLoaded) ;
202cdf0e10cSrcweir     }
203cdf0e10cSrcweir 
204cdf0e10cSrcweir     /**
205cdf0e10cSrcweir     * Adds a listener. If its methods are called or not is checked
206cdf0e10cSrcweir     * in other object methods. <p>
207*bb6af6bcSPedro Giffuni     * Has <b> OK </b> status if no runtime exceptions occurred.
208cdf0e10cSrcweir     */
_addLoadListener()209cdf0e10cSrcweir     public void _addLoadListener() {
210cdf0e10cSrcweir 
211cdf0e10cSrcweir         boolean result = true ;
212cdf0e10cSrcweir         oObj.addLoadListener(loadListener) ;
213cdf0e10cSrcweir 
214cdf0e10cSrcweir         tRes.tested("addLoadListener()", result) ;
215cdf0e10cSrcweir     }
216cdf0e10cSrcweir 
217cdf0e10cSrcweir     /**
218cdf0e10cSrcweir     * Removes the listener added before. <p>
219cdf0e10cSrcweir     * Has <b> OK </b> status if after <code>load()</code> call no
220cdf0e10cSrcweir     * listener methods were called. <p>
221cdf0e10cSrcweir     * The following method tests are to be completed successfully before :
222cdf0e10cSrcweir     * <ul>
223cdf0e10cSrcweir     *  <li> <code> unload() </code> : to make this test run finally.</li>
224cdf0e10cSrcweir     * </ul>
225cdf0e10cSrcweir     */
_removeLoadListener()226cdf0e10cSrcweir     public void _removeLoadListener() {
227cdf0e10cSrcweir         requiredMethod("unload()") ;
228cdf0e10cSrcweir 
229cdf0e10cSrcweir         boolean result = true ;
230cdf0e10cSrcweir         oObj.removeLoadListener(loadListener) ;
231cdf0e10cSrcweir         loadListener.loadedCalled = false ;
232cdf0e10cSrcweir         oObj.load();
233cdf0e10cSrcweir 
234cdf0e10cSrcweir         result = ! loadListener.loadedCalled ;
235cdf0e10cSrcweir 
236cdf0e10cSrcweir         tRes.tested("removeLoadListener()", result) ;
237cdf0e10cSrcweir     }
238cdf0e10cSrcweir 
after()239cdf0e10cSrcweir     protected void after() {
240cdf0e10cSrcweir         disposeEnvironment();
241cdf0e10cSrcweir     }
242cdf0e10cSrcweir }
243cdf0e10cSrcweir 
244