xref: /AOO41X/main/qadevOOo/tests/java/ifc/lang/_XSingleServiceFactory.java (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
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.lang;
29 
30 import lib.MultiMethodTest;
31 
32 import com.sun.star.lang.XSingleServiceFactory;
33 import com.sun.star.uno.UnoRuntime;
34 
35 
36 /**
37 /**
38 * Testing <code>com.sun.star.</code>
39 * interface methods :lang.XSingleServiceFactory
40 * <ul>
41 *  <li><code> createInstance()</code></li>
42 *  <li><code> createInstanceWithArguments()</code></li>
43 * </ul> <p>
44 * This test needs the following object relations :
45 * <ul>
46 *  <li> <code>'XSingleServiceFactory.createInstance.negative'</code> :
47 *   <code>String</code> relation; If its value 'true' then
48 *   <code>createInstance</code> method for the object isn't
49 *   supported. </li>
50 *  <li> <code>'XSingleServiceFactory.arguments'</code> <b>(optional)</b>:
51 *   has <code>Object[]</code> type. This relation is used as
52 *   a parameter for <code>createInstanceWithArguments</code>
53 *   method call. If this relation doesn't exist test pass
54 *   zerro length array as argument. </li>
55 *  <li> <code>'XSingleServiceFactory.MustSupport'</code> <b>(optional)</b>:
56 *   of type <code>java.lang.Class[]</code>. This is an array of UNO
57 *   interface classes which must be supported by created instance.
58 *  </li>
59 * <ul> <p>
60 * Test is <b> NOT </b> multithread compilant. <p>
61 * After test completion object environment has to be recreated.
62 * @see com.sun.star.lang.XSingleServiceFactory
63 */
64 public class _XSingleServiceFactory extends MultiMethodTest {
65 
66     public XSingleServiceFactory oObj = null;
67     private Class[] mustSupport = null ;
68 
69     public void before() {
70         mustSupport = (Class[]) tEnv.getObjRelation
71             ("XSingleServiceFactory.MustSupport") ;
72     }
73 
74     /**
75     * Just calls the method and check the value returned. <p>
76     *
77     * Has <b>OK</b> status in case if this method is supported
78     * by object and non null value is returned, or if
79     * this method isn't supported then the method call must
80     * rise an exception or return <code>null</code> value.
81     * If the relation exists which specifies required interfaces
82     * supported by created instance then status is <b>OK</b>
83     * if all these interfaces are supported.
84     */
85     public void _createInstance() {
86         // for some objects the method should fail.
87         // If thi is required the property is set to true.
88         String negStr = (String)tEnv.getObjRelation(
89                 "XSingleServiceFactory.createInstance.negative");
90         boolean negative = (negStr != null && negStr.equalsIgnoreCase("true"));
91 
92         if (negative) {
93             log.println("Negative test: createInstance should fail");
94         }
95 
96         try {
97             log.println("Creating Instance: ");
98             Object Inst = oObj.createInstance();
99             boolean bOK = Inst != null ;
100 
101             if (mustSupport != null && bOK) {
102                 for (int i = 0; i < mustSupport.length; i++) {
103                     Object ifc = UnoRuntime.queryInterface(mustSupport[i], Inst) ;
104                     if (ifc == null) {
105                         log.println(" !!! Created instance doesn't support " +
106                             mustSupport[i].toString()) ;
107                     }
108                     bOK &= ifc != null ;
109                 }
110             }
111 
112             tRes.tested("createInstance()",
113                 (negative && Inst == null) || (!negative && bOK));
114         } catch (com.sun.star.uno.Exception ex) {
115             log.println("Exception occured during createInstance()");
116             if (negative) {
117                 ex.printStackTrace(log);
118             }
119             tRes.tested("createInstance()", negative);
120         }
121     }
122 
123     /**
124     * Calls the method and checks the value returned. If relation
125     * with method argument doesn't exist new zerro length array
126     * is created. <p>
127     * Has <b>OK</b> status if non null value is returned.
128     * If the relation exists which specifies required interfaces
129     * supported by created instance then status is <b>OK</b>
130     * if all these interfaces are supported.
131     */
132     public void _createInstanceWithArguments() {
133         Object[] arg = (Object[])tEnv.getObjRelation(
134                 "XSingleServiceFactory.arguments");
135 
136         if (arg == null) {
137             arg = new Object[0];
138         }
139 
140         try {
141             boolean bOK = true ;
142             log.println("Creating Instance with Argument");
143             Object Inst = oObj.createInstanceWithArguments(arg);
144             bOK &= Inst != null ;
145 
146             if (mustSupport != null) {
147                 for (int i = 0; i < mustSupport.length; i++) {
148                     Object ifc = UnoRuntime.queryInterface(mustSupport[i], Inst) ;
149                     if (ifc == null) {
150                         log.println(" !!! Created instance doesn't support " +
151                             mustSupport[i].toString()) ;
152                     }
153                     bOK &= ifc != null ;
154                 }
155             }
156 
157             tRes.tested("createInstanceWithArguments()", bOK);
158         }
159         catch (com.sun.star.uno.Exception ex) {
160             log.println("Exception occured during createInstanceWithArguments()");
161             ex.printStackTrace(log);
162             tRes.tested("createInstanceWithArguments()",false);
163         }
164     }
165 
166 }  // finish class _XSingleServiceFactory
167 
168 
169