1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 package ifc.io;
29 
30 import lib.MultiMethodTest;
31 
32 import com.sun.star.io.XActiveDataSink;
33 import com.sun.star.io.XInputStream;
34 import com.sun.star.uno.UnoRuntime;
35 import com.sun.star.uno.XInterface;
36 
37 /**
38 * Testing <code>com.sun.star.io.XActiveDataSink</code>
39 * interface methods :
40 * <ul>
41 *  <li><code> setInputStream()</code></li>
42 *  <li><code> getInputStream()</code></li>
43 * </ul> <p>
44 * Test is <b> NOT </b> multithread compilant. <p>
45 *
46 * This test needs the following object relations :
47 * <ul>
48 *  <li> <code>'InputStream'</code>
49 *  (of type <code>com.sun.star.io.XInputStream</code>):
50 *   acceptable input stream which can be set by <code>setInputStream</code> </li>
51 * <ul> <p>
52 *
53 * After test completion object environment has to be recreated.
54 * @see com.sun.star.io.XActiveDataSink
55 */
56 public class _XActiveDataSink extends MultiMethodTest {
57 
58     public XActiveDataSink oObj = null;
59 
60     private XInputStream iStream = null;
61 
62         /**
63         * Take the XInputStream from the environment for setting and getting
64     */
65     public void before() {
66             XInterface x = (XInterface)tEnv.getObjRelation("InputStream");
67             iStream = (XInputStream) UnoRuntime.queryInterface
68                     (XInputStream.class, x) ;
69     }
70 
71     /**
72     * Just sets new input stream. <p>
73     * Has <b>OK</b> status if no runtime exceptions occured.
74     */
75     public void _setInputStream() {
76         oObj.setInputStream(iStream) ;
77 
78         tRes.tested("setInputStream()", true) ;
79     }
80 
81     /**
82     * First retrieves current input stream, then sets to new
83     * input stream (if old was <code>null</code>) or to null.
84     * Then input stream retrieved again and checked to be not
85     * equal to the old one. <p>
86     * Has <b>OK</b> status if old and new streams retrieved are
87     * not equal. <p>
88     * The following method tests are to be completed successfully before :
89     * <ul>
90     *  <li> <code> setInputStream() </code> : to be sure the method
91     *   works without exceptions. </li>
92     * </ul>
93     */
94     public void _getInputStream() {
95         requiredMethod("setInputStream()") ;
96 
97         Object oldStream = oObj.getInputStream() ;
98         XInputStream newStream = oldStream == null ? iStream : null ;
99 
100         oObj.setInputStream(newStream) ;
101         Object getStream = oObj.getInputStream() ;
102 
103                 tRes.tested("getInputStream()", getStream != oldStream) ;
104     }
105 
106     public void after() {
107         this.disposeEnvironment() ;
108     }
109 }
110 
111 
112