1*9d7e27acSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*9d7e27acSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*9d7e27acSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*9d7e27acSAndrew Rist  * distributed with this work for additional information
6*9d7e27acSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*9d7e27acSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*9d7e27acSAndrew Rist  * "License"); you may not use this file except in compliance
9*9d7e27acSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*9d7e27acSAndrew Rist  *
11*9d7e27acSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*9d7e27acSAndrew Rist  *
13*9d7e27acSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*9d7e27acSAndrew Rist  * software distributed under the License is distributed on an
15*9d7e27acSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*9d7e27acSAndrew Rist  * KIND, either express or implied.  See the License for the
17*9d7e27acSAndrew Rist  * specific language governing permissions and limitations
18*9d7e27acSAndrew Rist  * under the License.
19*9d7e27acSAndrew Rist  *
20*9d7e27acSAndrew Rist  *************************************************************/
21*9d7e27acSAndrew Rist 
22*9d7e27acSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_cppuhelper.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <cppuhelper/stdidlclass.hxx>
28cdf0e10cSrcweir 
29cdf0e10cSrcweir #include <com/sun/star/reflection/XIdlClassProvider.hpp>
30cdf0e10cSrcweir #include <com/sun/star/lang/XServiceInfo.hpp>
31cdf0e10cSrcweir 
32cdf0e10cSrcweir #include "testhelper.hxx"
33cdf0e10cSrcweir 
34cdf0e10cSrcweir using namespace ::com::sun::star::uno;
35cdf0e10cSrcweir using namespace ::com::sun::star::lang;
36cdf0e10cSrcweir using namespace ::com::sun::star::reflection;
37cdf0e10cSrcweir using namespace ::rtl;
38cdf0e10cSrcweir 
39cdf0e10cSrcweir 
40cdf0e10cSrcweir 
41cdf0e10cSrcweir 
testidlclass(const Reference<XMultiServiceFactory> & rSMgr)42cdf0e10cSrcweir void testidlclass( const Reference < XMultiServiceFactory > &rSMgr)
43cdf0e10cSrcweir {
44cdf0e10cSrcweir 	const OUString sImplName( OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.cpputest") ) );
45cdf0e10cSrcweir 
46cdf0e10cSrcweir 	// this reference is static to test behaviour during exiting application
47cdf0e10cSrcweir 	Reference < XIdlClass > r =
48cdf0e10cSrcweir 				::cppu::createStandardClass(
49cdf0e10cSrcweir 								rSMgr ,
50cdf0e10cSrcweir 								sImplName,
51cdf0e10cSrcweir 								Reference < XIdlClass > () ,
52cdf0e10cSrcweir 								(XMultiServiceFactory * ) 0 ,
53cdf0e10cSrcweir 								(XServiceInfo * ) 0
54cdf0e10cSrcweir 											);
55cdf0e10cSrcweir 
56cdf0e10cSrcweir 	OSL_ASSERT( r.is() );
57cdf0e10cSrcweir 
58cdf0e10cSrcweir 
59cdf0e10cSrcweir 	{  // test the xidlclassprovider interface !
60cdf0e10cSrcweir 		Reference< XIdlClassProvider > rProv( r , UNO_QUERY );
61cdf0e10cSrcweir 		OSL_ASSERT( rProv.is() );
62cdf0e10cSrcweir 
63cdf0e10cSrcweir 		{
64cdf0e10cSrcweir 			Sequence < Reference < XIdlClass > > seq = rProv->getIdlClasses();
65cdf0e10cSrcweir 
66cdf0e10cSrcweir 			// is always one
67cdf0e10cSrcweir 			OSL_ASSERT( seq.getLength() == 1 );
68cdf0e10cSrcweir 
69cdf0e10cSrcweir 			// test the weak reference
70cdf0e10cSrcweir 			rProv->getIdlClasses();
71cdf0e10cSrcweir 
72cdf0e10cSrcweir 		}
73cdf0e10cSrcweir 
74cdf0e10cSrcweir 		rProv->getIdlClasses();
75cdf0e10cSrcweir 
76cdf0e10cSrcweir 
77cdf0e10cSrcweir 	}
78cdf0e10cSrcweir 
79cdf0e10cSrcweir 
80cdf0e10cSrcweir 	OSL_ASSERT( r->getName() == sImplName );
81cdf0e10cSrcweir 
82cdf0e10cSrcweir 	// test equals
83cdf0e10cSrcweir 	Reference < XIdlClass > r2 =
84cdf0e10cSrcweir 				::cppu::createStandardClass(
85cdf0e10cSrcweir 								rSMgr ,
86cdf0e10cSrcweir 								sImplName,
87cdf0e10cSrcweir 								Reference < XIdlClass > () ,
88cdf0e10cSrcweir 								(XMultiServiceFactory * ) 0 ,
89cdf0e10cSrcweir 								(XServiceInfo * ) 0
90cdf0e10cSrcweir 											);
91cdf0e10cSrcweir 	// test for implementation name
92cdf0e10cSrcweir 	OSL_ASSERT( r2->equals( r ) );
93cdf0e10cSrcweir 
94cdf0e10cSrcweir 	Sequence < Reference < XIdlClass > > seqIdlClass = r->getInterfaces();
95cdf0e10cSrcweir 
96cdf0e10cSrcweir 	//TODO !
97cdf0e10cSrcweir 	// one idl class for one interface
98cdf0e10cSrcweir 	// this test fails, if core reflection fails !
99cdf0e10cSrcweir //	OSL_ASSERT( 1 == seqIdlClass.getLength() );
100cdf0e10cSrcweir //	Reference < XIdlClass > rIdlInterface = seqIdlClass.getArray()[0];
101cdf0e10cSrcweir 
102cdf0e10cSrcweir 	// check for IdlClass interface returned by Core Reflection
103cdf0e10cSrcweir //	OSL_ASSERT( rIdlInterface.is() );
104cdf0e10cSrcweir 
105cdf0e10cSrcweir 
106cdf0e10cSrcweir 
107cdf0e10cSrcweir 	// Test all ten templates
108cdf0e10cSrcweir 	Reference< XIdlClass > x = ::cppu::createStandardClass(
109cdf0e10cSrcweir 								rSMgr ,
110cdf0e10cSrcweir 								sImplName,
111cdf0e10cSrcweir 								Reference < XIdlClass > () ,
112cdf0e10cSrcweir 								(XMultiServiceFactory * ) 0 ,
113cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
114cdf0e10cSrcweir 								(XServiceInfo * ) 0
115cdf0e10cSrcweir 											);
116cdf0e10cSrcweir 
117cdf0e10cSrcweir 	// Test all ten templates
118cdf0e10cSrcweir 	x = ::cppu::createStandardClass(
119cdf0e10cSrcweir 								rSMgr ,
120cdf0e10cSrcweir 								sImplName,
121cdf0e10cSrcweir 								Reference < XIdlClass > () ,
122cdf0e10cSrcweir 								(XMultiServiceFactory * ) 0 ,
123cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
124cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
125cdf0e10cSrcweir 								(XServiceInfo * ) 0
126cdf0e10cSrcweir 											);
127cdf0e10cSrcweir 
128cdf0e10cSrcweir 
129cdf0e10cSrcweir 	// Test all ten templates
130cdf0e10cSrcweir 	x = ::cppu::createStandardClass(
131cdf0e10cSrcweir 								rSMgr ,
132cdf0e10cSrcweir 								sImplName,
133cdf0e10cSrcweir 								Reference < XIdlClass > () ,
134cdf0e10cSrcweir 								(XMultiServiceFactory * ) 0 ,
135cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
136cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
137cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
138cdf0e10cSrcweir 								(XServiceInfo * ) 0
139cdf0e10cSrcweir 											);
140cdf0e10cSrcweir 
141cdf0e10cSrcweir 
142cdf0e10cSrcweir 
143cdf0e10cSrcweir 	// Test all ten templates
144cdf0e10cSrcweir 	x = ::cppu::createStandardClass(
145cdf0e10cSrcweir 								rSMgr ,
146cdf0e10cSrcweir 								sImplName,
147cdf0e10cSrcweir 								Reference < XIdlClass > () ,
148cdf0e10cSrcweir 								(XMultiServiceFactory * ) 0 ,
149cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
150cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
151cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
152cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
153cdf0e10cSrcweir 								(XServiceInfo * ) 0
154cdf0e10cSrcweir 											);
155cdf0e10cSrcweir 
156cdf0e10cSrcweir 
157cdf0e10cSrcweir 
158cdf0e10cSrcweir 	// Test all ten templates
159cdf0e10cSrcweir 	x = ::cppu::createStandardClass(
160cdf0e10cSrcweir 								rSMgr ,
161cdf0e10cSrcweir 								sImplName,
162cdf0e10cSrcweir 								Reference < XIdlClass > () ,
163cdf0e10cSrcweir 								(XMultiServiceFactory * ) 0 ,
164cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
165cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
166cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
167cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
168cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
169cdf0e10cSrcweir 								(XServiceInfo * ) 0
170cdf0e10cSrcweir 											);
171cdf0e10cSrcweir 
172cdf0e10cSrcweir 
173cdf0e10cSrcweir 	// Test all ten templates
174cdf0e10cSrcweir 	x = ::cppu::createStandardClass(
175cdf0e10cSrcweir 								rSMgr ,
176cdf0e10cSrcweir 								sImplName,
177cdf0e10cSrcweir 								Reference < XIdlClass > () ,
178cdf0e10cSrcweir 								(XMultiServiceFactory * ) 0 ,
179cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
180cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
181cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
182cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
183cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
184cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
185cdf0e10cSrcweir 								(XServiceInfo * ) 0
186cdf0e10cSrcweir 											);
187cdf0e10cSrcweir 
188cdf0e10cSrcweir 
189cdf0e10cSrcweir 
190cdf0e10cSrcweir 
191cdf0e10cSrcweir 	// Test all ten templates
192cdf0e10cSrcweir 	x = ::cppu::createStandardClass(
193cdf0e10cSrcweir 								rSMgr ,
194cdf0e10cSrcweir 								sImplName,
195cdf0e10cSrcweir 								Reference < XIdlClass > () ,
196cdf0e10cSrcweir 								(XMultiServiceFactory * ) 0 ,
197cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
198cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
199cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
200cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
201cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
202cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
203cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
204cdf0e10cSrcweir 								(XServiceInfo * ) 0
205cdf0e10cSrcweir 											);
206cdf0e10cSrcweir 
207cdf0e10cSrcweir 	// Test all ten templates
208cdf0e10cSrcweir 	x = ::cppu::createStandardClass(
209cdf0e10cSrcweir 								rSMgr ,
210cdf0e10cSrcweir 								sImplName,
211cdf0e10cSrcweir 								Reference < XIdlClass > () ,
212cdf0e10cSrcweir 								(XMultiServiceFactory * ) 0 ,
213cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
214cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
215cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
216cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
217cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
218cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
219cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
220cdf0e10cSrcweir 								(XServiceInfo * ) 0  ,
221cdf0e10cSrcweir 								(XServiceInfo * ) 0
222cdf0e10cSrcweir 											);
223cdf0e10cSrcweir }
224