xref: /AOO41X/main/udkapi/com/sun/star/test/bridge/XBridgeTest.idl (revision 408a4873fc8bcc602c90ea4598886bb71abf0675)
1/**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements.  See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership.  The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License.  You may obtain a copy of the License at
10 *
11 *   http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied.  See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23#ifndef __com_sun_star_test_bridge_XBridge_idl__
24#define __com_sun_star_test_bridge_XBridge_idl__
25
26#ifndef __com_sun_star_uno_XInterface_idl__
27#include <com/sun/star/uno/XInterface.idl>
28#endif
29
30#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
31#include <com/sun/star/lang/IllegalArgumentException.idl>
32#endif
33
34module com
35{
36module sun
37{
38module star
39{
40module test
41{
42module bridge
43{
44
45published enum TestEnum
46{
47    TEST,
48    ONE,
49    TWO,
50    CHECK,
51    LOLA,
52    PALOO,
53    ZA
54};
55
56/**
57 * simple types
58 */
59published struct TestSimple
60{
61    boolean                    Bool;
62    char                       Char;
63    byte                       Byte;
64    short                      Short;
65    unsigned short             UShort;
66    long                       Long;
67    unsigned long              ULong;
68    hyper                      Hyper;
69    unsigned hyper             UHyper;
70    float                      Float;
71    double                     Double;
72    TestEnum                   Enum;
73};
74/**
75 * complex types adding string, inteface, any
76 */
77published struct TestElement : TestSimple
78{
79    string                     String;
80    com::sun::star::uno::XInterface   Interface;
81    any                        Any;
82};
83/**
84 * adding even more complexity, sequence< TestElement >
85 */
86published struct TestDataElements : TestElement
87{
88    sequence< TestElement > Sequence;
89};
90
91/**
92 * typedef used in interface
93 */
94published typedef TestDataElements TestData;
95
96published interface XRecursiveCall : com::sun::star::uno::XInterface
97{
98    /***
99     * @param nToCall If nToCall is 0, the method returns immeadiatly.
100     *                Otherwise, call the given interface with nToCall -1
101     *
102     ***/
103    void callRecursivly( [in] XRecursiveCall xCall , [in] long nToCall );
104};
105
106/**
107 * Monster test interface to test bridge calls.
108 * An implementation of this object has to store given values and return whenever there
109 * is an out param or return value.
110 */
111published interface XBridgeTestBase : com::sun::star::uno::XInterface
112{
113    /**
114     * in parameter test, tests by calls reference also (complex types)
115     */
116    [oneway] void setValues( [in] boolean bBool, [in] char cChar, [in] byte nByte,
117                             [in] short nShort, [in] unsigned short nUShort,
118                             [in] long nLong, [in] unsigned long nULong,
119                             [in] hyper nHyper, [in] unsigned hyper nUHyper,
120                             [in] float fFloat, [in] double fDouble,
121                             [in] TestEnum eEnum, [in] string aString,
122                             [in] com::sun::star::uno::XInterface xInterface, [in] any aAny,
123                             [in] sequence< TestElement > aSequence,
124                             [in] TestData aStruct );
125    /**
126     * inout parameter test
127     *
128     * @return aStruct. The out parameter contain the values, that were previously set
129     *         by setValues or (if not called before) default constructed values.
130     *
131     */
132    TestData setValues2( [inout] boolean bBool, [inout] char cChar, [inout] byte nByte,
133                         [inout] short nShort, [inout] unsigned short nUShort,
134                         [inout] long nLong, [inout] unsigned long nULong,
135                         [inout] hyper nHyper, [inout] unsigned hyper nUHyper,
136                         [inout] float fFloat, [inout] double fDouble,
137                         [inout] TestEnum eEnum, [inout] string aString,
138                         [inout] com::sun::star::uno::XInterface xInterface, [inout] any aAny,
139                         [inout] sequence< TestElement > aSequence,
140                         [inout] TestData aStruct );
141
142    /**
143     * out parameter test
144     */
145    TestData getValues( [out] boolean bBool, [out] char cChar, [out] byte nByte,
146                        [out] short nShort, [out] unsigned short nUShort,
147                        [out] long nLong, [out] unsigned long nULong,
148                        [out] hyper nHyper, [out] unsigned hyper nUHyper,
149                        [out] float fFloat, [out] double fDouble,
150                        [out] TestEnum eEnum, [out] string aString,
151                        [out] com::sun::star::uno::XInterface xInterface, [out] any aAny,
152                        [out] sequence< TestElement > aSequence,
153                        [out] TestData aStruct );
154
155    [attribute] boolean                  Bool;
156    [attribute] byte                     Byte;
157    [attribute] char                     Char;
158    [attribute] short                    Short;
159    [attribute] unsigned short           UShort;
160    [attribute] long                     Long;
161    [attribute] unsigned long            ULong;
162    [attribute] hyper                    Hyper;
163    [attribute] unsigned hyper           UHyper;
164    [attribute] float                    Float;
165    [attribute] double                   Double;
166    [attribute] TestEnum                 Enum;
167    [attribute] string                   String;
168    [attribute] com::sun::star::uno::XInterface Interface;
169    [attribute] any                      Any;
170    [attribute] sequence< TestElement >  Sequence;
171    [attribute] TestData                 Struct;
172
173
174    /***
175     * This method returns the parameter value.
176     * Method to extensivly test anys.
177     ****/
178    any transportAny( [in] any value );
179
180    /***
181     * methods to check sequence of calls. Call call() and callOneway
182     * in an arbitrary sequence. Increase the callId for every call.
183     * The testobject sets an error flag.
184
185        @see testSequencePassed
186     ***/
187    void call( [in] long nCallId, [in] long nWaitMUSEC );
188    [oneway] void callOneway( [in] long nCallId, [in] long nWaitMUSEC );
189    boolean sequenceOfCallTestPassed();
190
191    /****
192     * methods to check, if threads thread identity is holded.
193     *
194     ***/
195    void startRecursiveCall( [in] XRecursiveCall xCall , [in] long nToCall );
196};
197
198
199/**
200 * Inherting from monster; adds raiseException(), attribute raising RuntimeException.
201 */
202published interface XBridgeTest : XBridgeTestBase
203{
204    /**
205     * the exception struct returned has to be filled with given arguments.
206     * return value is for dummy.
207     */
208    TestData raiseException( [in] short ArgumentPosition,
209                             [in] string Message,
210                             [in] com::sun::star::uno::XInterface Context )
211        raises( com::sun::star::lang::IllegalArgumentException );
212
213
214    /**
215     * Throws runtime exception.
216     * check remote bridges handle exceptions during oneway calls properly.
217     * Note that on client side the execption may fly or not. When it flies, it should
218     * have the proper message and context.
219     ***/
220    [oneway] void raiseRuntimeExceptionOneway(  [in] string Message,
221                                                [in] com::sun::star::uno::XInterface Context );
222
223    /**
224     * raises runtime exception;
225     * the exception struct returned has to be filled with formerly set test data.
226     */
227    [attribute] long                     RuntimeException;
228};
229
230/** Extended tests with sequences.
231 */
232published interface XBridgeTest2 : XBridgeTest
233{
234    sequence< boolean > setSequenceBool( [in] sequence< boolean > aSeq);
235    sequence< char > setSequenceChar( [in] sequence< char > aSeq);
236    sequence< byte> setSequenceByte( [in] sequence< byte > aSeq);
237    sequence< short> setSequenceShort( [in] sequence< short > aSeq);
238    sequence< unsigned short > setSequenceUShort( [in] sequence< unsigned short > aSeq);
239    sequence< long > setSequenceLong( [in] sequence< long > aSeq);
240    sequence< unsigned long > setSequenceULong( [in] sequence< unsigned long > aSeq);
241    sequence< hyper > setSequenceHyper( [in] sequence< hyper > aSeq);
242    sequence< unsigned hyper > setSequenceUHyper( [in] sequence< unsigned hyper > aSeq);
243    sequence< float > setSequenceFloat( [in] sequence< float > aSeq);
244    sequence< double > setSequenceDouble( [in] sequence< double > aSeq);
245    sequence< TestEnum > setSequenceEnum( [in] sequence< TestEnum > aSeq);
246    sequence< string > setSequenceString( [in] sequence< string > aString);
247    sequence< com::sun::star::uno::XInterface > setSequenceXInterface(
248        [in] sequence< com::sun::star::uno::XInterface > aSeq);
249    sequence< any > setSequenceAny( [in] sequence< any > aSeq);
250    sequence< TestElement > setSequenceStruct( [in] sequence< TestElement > aSeq);
251
252    sequence< sequence< long > > setDim2( [in] sequence< sequence< long > > aSeq);
253    sequence< sequence < sequence < long > > > setDim3(
254        [in] sequence< sequence < sequence < long > > > aSeq);
255
256    void setSequencesInOut( [inout] sequence< boolean > aSeqBoolean,
257                       [inout] sequence< char > aSeqChar,
258                       [inout] sequence< byte > aSeqByte,
259                       [inout] sequence< short > aSeqShort,
260                       [inout] sequence< unsigned short> aSeqUShort,
261                       [inout] sequence< long > aSeqLong,
262                       [inout] sequence< unsigned long > aSeqULong,
263                       [inout] sequence< hyper > aSeqHyper,
264                       [inout] sequence< unsigned hyper > aSeqUHyper,
265                       [inout] sequence< float > aSeqFloat,
266                       [inout] sequence< double > aSeqDouble,
267                       [inout] sequence< TestEnum > aSeqEnum,
268                       [inout] sequence< string > aSeqString,
269                       [inout] sequence< com::sun::star::uno::XInterface > aSeqXInterface,
270                       [inout] sequence< any > aSeqAny,
271                       [inout] sequence< sequence< long > > aSeqDim2,
272                       [inout] sequence< sequence < sequence < long > > > aSeqDim3);
273
274    void setSequencesOut( [out] sequence< boolean > aSeqBoolean,
275                       [out] sequence< char > aSeqChar,
276                       [out] sequence< byte > aSeqByte,
277                       [out] sequence< short > aSeqShort,
278                       [out] sequence< unsigned short> aSeqUShort,
279                       [out] sequence< long > aSeqLong,
280                       [out] sequence< unsigned long > aSeqULong,
281                       [out] sequence< hyper > aSeqHyper,
282                       [out] sequence< unsigned hyper > aSeqUHyper,
283                       [out] sequence< float > aSeqFloat,
284                       [out] sequence< double > aSeqDouble,
285                       [out] sequence< TestEnum > aSeqEnum,
286                       [out] sequence< string > aSeqString,
287                       [out] sequence< com::sun::star::uno::XInterface > aSeqXInterface,
288                       [out] sequence< any > aSeqAny,
289                       [out] sequence< sequence< long > > aSeqDim2,
290                       [out] sequence< sequence < sequence < long > > > aSeqDim3);
291
292
293};
294//=============================================================================
295
296};
297};
298};
299};
300};
301
302#endif
303