1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski using System; 25*b1cdbd2cSJim Jagielski using System.Diagnostics; 26*b1cdbd2cSJim Jagielski using System.Threading; 27*b1cdbd2cSJim Jagielski using System.Runtime.CompilerServices; 28*b1cdbd2cSJim Jagielski using uno; 29*b1cdbd2cSJim Jagielski using uno.util; 30*b1cdbd2cSJim Jagielski using unoidl.com.sun.star.uno; 31*b1cdbd2cSJim Jagielski using unoidl.com.sun.star.lang; 32*b1cdbd2cSJim Jagielski using unoidl.test.testtools.bridgetest; 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski namespace cs_testobj 35*b1cdbd2cSJim Jagielski { 36*b1cdbd2cSJim Jagielski 37*b1cdbd2cSJim Jagielski class CheckFailed: System.Exception { CheckFailed(string message)38*b1cdbd2cSJim Jagielski public CheckFailed(string message): base(message) {} 39*b1cdbd2cSJim Jagielski } 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski public class BridgeTestObject : WeakBase, XRecursiveCall, XBridgeTest2 42*b1cdbd2cSJim Jagielski { 43*b1cdbd2cSJim Jagielski private XComponentContext m_xContext; 44*b1cdbd2cSJim Jagielski BridgeTestObject( XComponentContext xContext )45*b1cdbd2cSJim Jagielski public BridgeTestObject( XComponentContext xContext ) 46*b1cdbd2cSJim Jagielski { 47*b1cdbd2cSJim Jagielski m_xContext = xContext; 48*b1cdbd2cSJim Jagielski } BridgeTestObject()49*b1cdbd2cSJim Jagielski public BridgeTestObject() 50*b1cdbd2cSJim Jagielski { 51*b1cdbd2cSJim Jagielski } 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski private bool _bool; 54*b1cdbd2cSJim Jagielski private char _char; 55*b1cdbd2cSJim Jagielski private byte _byte; 56*b1cdbd2cSJim Jagielski private short _short; 57*b1cdbd2cSJim Jagielski private ushort _ushort; 58*b1cdbd2cSJim Jagielski private int _long; 59*b1cdbd2cSJim Jagielski private uint _ulong; 60*b1cdbd2cSJim Jagielski private long _hyper; 61*b1cdbd2cSJim Jagielski private ulong _uhyper; 62*b1cdbd2cSJim Jagielski private float _float; 63*b1cdbd2cSJim Jagielski private double _double; 64*b1cdbd2cSJim Jagielski private String _string; 65*b1cdbd2cSJim Jagielski private Object _xInterface; 66*b1cdbd2cSJim Jagielski private Any _any; 67*b1cdbd2cSJim Jagielski private TestEnum _testEnum = TestEnum.TEST; 68*b1cdbd2cSJim Jagielski private TestElement[] _testElements = new TestElement[0]; 69*b1cdbd2cSJim Jagielski private TestDataElements _testDataElements = new TestDataElements(); 70*b1cdbd2cSJim Jagielski private int _nLastCallId = 0; 71*b1cdbd2cSJim Jagielski private bool _bFirstCall = true; 72*b1cdbd2cSJim Jagielski private bool _bSequenceOfCallTestPassed = true; 73*b1cdbd2cSJim Jagielski 74*b1cdbd2cSJim Jagielski private bool[] _arBool; 75*b1cdbd2cSJim Jagielski private char[] _arChar; 76*b1cdbd2cSJim Jagielski private byte[] _arByte; 77*b1cdbd2cSJim Jagielski private short[]_arShort; 78*b1cdbd2cSJim Jagielski private int[] _arLong; 79*b1cdbd2cSJim Jagielski private long[] _arHyper; 80*b1cdbd2cSJim Jagielski private UInt16[] _arUShort; 81*b1cdbd2cSJim Jagielski private UInt32[] _arULong; 82*b1cdbd2cSJim Jagielski private UInt64[] _arUHyper; 83*b1cdbd2cSJim Jagielski private string[] _arString; 84*b1cdbd2cSJim Jagielski private float[] _arFloat; 85*b1cdbd2cSJim Jagielski private double[] _arDouble; 86*b1cdbd2cSJim Jagielski private TestEnum[] _arEnum; 87*b1cdbd2cSJim Jagielski private Object[] _arObject; 88*b1cdbd2cSJim Jagielski private int[][] _arLong2; 89*b1cdbd2cSJim Jagielski private int[][][] _arLong3; 90*b1cdbd2cSJim Jagielski private Any[] _arAny; 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski // private int _raiseAttr1; 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielski setValues( bool bBool, char cChar, byte nByte, short nShort, ushort nUShort, int nLong, uint nULong, long nHyper, ulong nUHyper, float fFloat, double fDouble, TestEnum testEnum, String str, Object xInterface, Any any, TestElement [] testElements, TestDataElements testDataElements )95*b1cdbd2cSJim Jagielski public void setValues( 96*b1cdbd2cSJim Jagielski bool bBool, 97*b1cdbd2cSJim Jagielski char cChar, 98*b1cdbd2cSJim Jagielski byte nByte, 99*b1cdbd2cSJim Jagielski short nShort, 100*b1cdbd2cSJim Jagielski ushort nUShort, 101*b1cdbd2cSJim Jagielski int nLong, 102*b1cdbd2cSJim Jagielski uint nULong, 103*b1cdbd2cSJim Jagielski long nHyper, 104*b1cdbd2cSJim Jagielski ulong nUHyper, 105*b1cdbd2cSJim Jagielski float fFloat, 106*b1cdbd2cSJim Jagielski double fDouble, 107*b1cdbd2cSJim Jagielski TestEnum testEnum, 108*b1cdbd2cSJim Jagielski String str, 109*b1cdbd2cSJim Jagielski Object xInterface, 110*b1cdbd2cSJim Jagielski Any any, 111*b1cdbd2cSJim Jagielski TestElement [] testElements, 112*b1cdbd2cSJim Jagielski TestDataElements testDataElements ) 113*b1cdbd2cSJim Jagielski { 114*b1cdbd2cSJim Jagielski Debug.WriteLine( "##### " + GetType().FullName + ".setValues:" + any ); 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski _bool = bBool; 117*b1cdbd2cSJim Jagielski _char = cChar; 118*b1cdbd2cSJim Jagielski _byte = nByte; 119*b1cdbd2cSJim Jagielski _short = nShort; 120*b1cdbd2cSJim Jagielski _ushort = nUShort; 121*b1cdbd2cSJim Jagielski _long = nLong; 122*b1cdbd2cSJim Jagielski _ulong = nULong; 123*b1cdbd2cSJim Jagielski _hyper = nHyper; 124*b1cdbd2cSJim Jagielski _uhyper = nUHyper; 125*b1cdbd2cSJim Jagielski _float = fFloat; 126*b1cdbd2cSJim Jagielski _double = fDouble; 127*b1cdbd2cSJim Jagielski _testEnum = testEnum; 128*b1cdbd2cSJim Jagielski _string = str; 129*b1cdbd2cSJim Jagielski _xInterface = xInterface; 130*b1cdbd2cSJim Jagielski _any = any; 131*b1cdbd2cSJim Jagielski _testElements = testElements; 132*b1cdbd2cSJim Jagielski _testDataElements = testDataElements; 133*b1cdbd2cSJim Jagielski } 134*b1cdbd2cSJim Jagielski setValues2( ref bool io_bool, ref char io_char, ref byte io_byte, ref short io_short, ref ushort io_ushort, ref int io_long, ref uint io_ulong, ref long io_hyper, ref ulong io_uhyper, ref float io_float, ref double io_double, ref TestEnum io_testEnum, ref String io_string, ref Object io_xInterface, ref Any io_any, ref TestElement[] io_testElements, ref TestDataElements io_testDataElements )135*b1cdbd2cSJim Jagielski public TestDataElements setValues2( 136*b1cdbd2cSJim Jagielski /*INOUT*/ref bool io_bool, 137*b1cdbd2cSJim Jagielski /*INOUT*/ref char io_char, 138*b1cdbd2cSJim Jagielski /*INOUT*/ref byte io_byte, 139*b1cdbd2cSJim Jagielski /*INOUT*/ref short io_short, 140*b1cdbd2cSJim Jagielski /*INOUT*/ref ushort io_ushort, 141*b1cdbd2cSJim Jagielski /*INOUT*/ref int io_long, 142*b1cdbd2cSJim Jagielski /*INOUT*/ref uint io_ulong, 143*b1cdbd2cSJim Jagielski /*INOUT*/ref long io_hyper, 144*b1cdbd2cSJim Jagielski /*INOUT*/ref ulong io_uhyper, 145*b1cdbd2cSJim Jagielski /*INOUT*/ref float io_float, 146*b1cdbd2cSJim Jagielski /*INOUT*/ref double io_double, 147*b1cdbd2cSJim Jagielski /*INOUT*/ref TestEnum io_testEnum, 148*b1cdbd2cSJim Jagielski /*INOUT*/ref String io_string, 149*b1cdbd2cSJim Jagielski /*INOUT*/ref Object io_xInterface, 150*b1cdbd2cSJim Jagielski /*INOUT*/ref Any io_any, 151*b1cdbd2cSJim Jagielski /*INOUT*/ref TestElement[] io_testElements, 152*b1cdbd2cSJim Jagielski /*INOUT*/ref TestDataElements io_testDataElements ) 153*b1cdbd2cSJim Jagielski { 154*b1cdbd2cSJim Jagielski Debug.WriteLine( "##### " + GetType().FullName + ".setValues2:" + io_any ); 155*b1cdbd2cSJim Jagielski 156*b1cdbd2cSJim Jagielski _bool = io_bool; 157*b1cdbd2cSJim Jagielski _char = io_char; 158*b1cdbd2cSJim Jagielski _byte = io_byte; 159*b1cdbd2cSJim Jagielski _short = io_short; 160*b1cdbd2cSJim Jagielski _ushort = io_ushort; 161*b1cdbd2cSJim Jagielski _long = io_long; 162*b1cdbd2cSJim Jagielski _ulong = io_ulong; 163*b1cdbd2cSJim Jagielski _hyper = io_hyper; 164*b1cdbd2cSJim Jagielski _uhyper = io_uhyper; 165*b1cdbd2cSJim Jagielski _float = io_float; 166*b1cdbd2cSJim Jagielski _double = io_double; 167*b1cdbd2cSJim Jagielski _testEnum = io_testEnum; 168*b1cdbd2cSJim Jagielski _string = io_string; 169*b1cdbd2cSJim Jagielski _xInterface = io_xInterface; 170*b1cdbd2cSJim Jagielski _any = io_any; 171*b1cdbd2cSJim Jagielski _testElements = (TestElement[]) io_testElements.Clone(); 172*b1cdbd2cSJim Jagielski _testDataElements = io_testDataElements; 173*b1cdbd2cSJim Jagielski 174*b1cdbd2cSJim Jagielski TestElement temp = io_testElements[ 0 ]; 175*b1cdbd2cSJim Jagielski io_testElements[ 0 ] = io_testElements[ 1 ]; 176*b1cdbd2cSJim Jagielski io_testElements[ 1 ] = temp; 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski return _testDataElements; 179*b1cdbd2cSJim Jagielski } 180*b1cdbd2cSJim Jagielski getValues( out bool o_bool, out char o_char, out byte o_byte, out short o_short, out ushort o_ushort, out int o_long, out uint o_ulong, out long o_hyper, out ulong o_uhyper, out float o_float, out double o_double, out TestEnum o_testEnum, out String o_string, out Object o_xInterface, out Any o_any, out TestElement[] o_testElements, out TestDataElements o_testDataElements )181*b1cdbd2cSJim Jagielski public TestDataElements getValues( 182*b1cdbd2cSJim Jagielski /*OUT*/out bool o_bool, 183*b1cdbd2cSJim Jagielski /*OUT*/out char o_char, 184*b1cdbd2cSJim Jagielski /*OUT*/out byte o_byte, 185*b1cdbd2cSJim Jagielski /*OUT*/out short o_short, 186*b1cdbd2cSJim Jagielski /*OUT*/out ushort o_ushort, 187*b1cdbd2cSJim Jagielski /*OUT*/out int o_long, 188*b1cdbd2cSJim Jagielski /*OUT*/out uint o_ulong, 189*b1cdbd2cSJim Jagielski /*OUT*/out long o_hyper, 190*b1cdbd2cSJim Jagielski /*OUT*/out ulong o_uhyper, 191*b1cdbd2cSJim Jagielski /*OUT*/out float o_float, 192*b1cdbd2cSJim Jagielski /*OUT*/out double o_double, 193*b1cdbd2cSJim Jagielski /*OUT*/out TestEnum o_testEnum, 194*b1cdbd2cSJim Jagielski /*OUT*/out String o_string, 195*b1cdbd2cSJim Jagielski /*OUT*/out Object o_xInterface, 196*b1cdbd2cSJim Jagielski /*OUT*/out Any o_any, 197*b1cdbd2cSJim Jagielski /*OUT*/out TestElement[] o_testElements, 198*b1cdbd2cSJim Jagielski /*OUT*/out TestDataElements o_testDataElements ) 199*b1cdbd2cSJim Jagielski { 200*b1cdbd2cSJim Jagielski Debug.WriteLine( "##### " + GetType().FullName + ".getValues" ); 201*b1cdbd2cSJim Jagielski 202*b1cdbd2cSJim Jagielski o_bool = _bool; 203*b1cdbd2cSJim Jagielski o_char = _char; 204*b1cdbd2cSJim Jagielski o_byte = _byte; 205*b1cdbd2cSJim Jagielski o_short = _short; 206*b1cdbd2cSJim Jagielski o_ushort = _ushort; 207*b1cdbd2cSJim Jagielski o_long = _long; 208*b1cdbd2cSJim Jagielski o_ulong = _ulong; 209*b1cdbd2cSJim Jagielski o_hyper = _hyper; 210*b1cdbd2cSJim Jagielski o_uhyper = _uhyper; 211*b1cdbd2cSJim Jagielski o_float = _float; 212*b1cdbd2cSJim Jagielski o_double = _double; 213*b1cdbd2cSJim Jagielski o_testEnum = _testEnum; 214*b1cdbd2cSJim Jagielski o_string = _string; 215*b1cdbd2cSJim Jagielski o_xInterface = _xInterface; 216*b1cdbd2cSJim Jagielski o_any = _any; 217*b1cdbd2cSJim Jagielski o_testElements = _testElements; 218*b1cdbd2cSJim Jagielski o_testDataElements = _testDataElements; 219*b1cdbd2cSJim Jagielski 220*b1cdbd2cSJim Jagielski return _testDataElements; 221*b1cdbd2cSJim Jagielski } 222*b1cdbd2cSJim Jagielski echoSmallStruct( SmallStruct arg)223*b1cdbd2cSJim Jagielski public SmallStruct echoSmallStruct(/*[in]*/SmallStruct arg) 224*b1cdbd2cSJim Jagielski { 225*b1cdbd2cSJim Jagielski return arg; 226*b1cdbd2cSJim Jagielski } 227*b1cdbd2cSJim Jagielski echoMediumStruct( MediumStruct arg)228*b1cdbd2cSJim Jagielski public MediumStruct echoMediumStruct(/*[in]*/MediumStruct arg) 229*b1cdbd2cSJim Jagielski { 230*b1cdbd2cSJim Jagielski return arg; 231*b1cdbd2cSJim Jagielski } 232*b1cdbd2cSJim Jagielski echoBigStruct( BigStruct arg)233*b1cdbd2cSJim Jagielski public BigStruct echoBigStruct(/*[in]*/BigStruct arg) 234*b1cdbd2cSJim Jagielski { 235*b1cdbd2cSJim Jagielski return arg; 236*b1cdbd2cSJim Jagielski } 237*b1cdbd2cSJim Jagielski echoAllFloats( AllFloats arg)238*b1cdbd2cSJim Jagielski public AllFloats echoAllFloats(/*[in]*/AllFloats arg) 239*b1cdbd2cSJim Jagielski { 240*b1cdbd2cSJim Jagielski return arg; 241*b1cdbd2cSJim Jagielski } 242*b1cdbd2cSJim Jagielski testPPCAlignment( long l1, long l2, int i1, long l3, int i2 )243*b1cdbd2cSJim Jagielski public int testPPCAlignment( long l1, long l2, int i1, long l3, int i2 ) 244*b1cdbd2cSJim Jagielski { 245*b1cdbd2cSJim Jagielski return i2; 246*b1cdbd2cSJim Jagielski } 247*b1cdbd2cSJim Jagielski 248*b1cdbd2cSJim Jagielski // Attributes 249*b1cdbd2cSJim Jagielski public bool Bool 250*b1cdbd2cSJim Jagielski { 251*b1cdbd2cSJim Jagielski get { return _bool; } 252*b1cdbd2cSJim Jagielski set { _bool = value; } 253*b1cdbd2cSJim Jagielski } 254*b1cdbd2cSJim Jagielski public byte Byte 255*b1cdbd2cSJim Jagielski { 256*b1cdbd2cSJim Jagielski get { return _byte; } 257*b1cdbd2cSJim Jagielski set { _byte = value; } 258*b1cdbd2cSJim Jagielski } 259*b1cdbd2cSJim Jagielski public char Char 260*b1cdbd2cSJim Jagielski { 261*b1cdbd2cSJim Jagielski get { return _char; } 262*b1cdbd2cSJim Jagielski set { _char = value; } 263*b1cdbd2cSJim Jagielski } 264*b1cdbd2cSJim Jagielski public short Short 265*b1cdbd2cSJim Jagielski { 266*b1cdbd2cSJim Jagielski get { return _short; } 267*b1cdbd2cSJim Jagielski set { _short = value; } 268*b1cdbd2cSJim Jagielski } 269*b1cdbd2cSJim Jagielski public ushort UShort 270*b1cdbd2cSJim Jagielski { 271*b1cdbd2cSJim Jagielski get { return _ushort; } 272*b1cdbd2cSJim Jagielski set { _ushort = value; } 273*b1cdbd2cSJim Jagielski } 274*b1cdbd2cSJim Jagielski public int Long 275*b1cdbd2cSJim Jagielski { 276*b1cdbd2cSJim Jagielski get { return _long; } 277*b1cdbd2cSJim Jagielski set { _long = value; } 278*b1cdbd2cSJim Jagielski } 279*b1cdbd2cSJim Jagielski public uint ULong 280*b1cdbd2cSJim Jagielski { 281*b1cdbd2cSJim Jagielski get { return _ulong; } 282*b1cdbd2cSJim Jagielski set { _ulong = value; } 283*b1cdbd2cSJim Jagielski } 284*b1cdbd2cSJim Jagielski public long Hyper 285*b1cdbd2cSJim Jagielski { 286*b1cdbd2cSJim Jagielski get { return _hyper; } 287*b1cdbd2cSJim Jagielski set { _hyper = value; } 288*b1cdbd2cSJim Jagielski } 289*b1cdbd2cSJim Jagielski public ulong UHyper 290*b1cdbd2cSJim Jagielski { 291*b1cdbd2cSJim Jagielski get { return _uhyper; } 292*b1cdbd2cSJim Jagielski set { _uhyper = value; } 293*b1cdbd2cSJim Jagielski } 294*b1cdbd2cSJim Jagielski public float Float 295*b1cdbd2cSJim Jagielski { 296*b1cdbd2cSJim Jagielski get { return _float; } 297*b1cdbd2cSJim Jagielski set { _float = value; } 298*b1cdbd2cSJim Jagielski } 299*b1cdbd2cSJim Jagielski public double Double 300*b1cdbd2cSJim Jagielski { 301*b1cdbd2cSJim Jagielski get { return _double; } 302*b1cdbd2cSJim Jagielski set { _double = value; } 303*b1cdbd2cSJim Jagielski } 304*b1cdbd2cSJim Jagielski public TestEnum Enum 305*b1cdbd2cSJim Jagielski { 306*b1cdbd2cSJim Jagielski get { return _testEnum; } 307*b1cdbd2cSJim Jagielski set { _testEnum = value; } 308*b1cdbd2cSJim Jagielski } 309*b1cdbd2cSJim Jagielski public String String 310*b1cdbd2cSJim Jagielski { 311*b1cdbd2cSJim Jagielski get { return _string; } 312*b1cdbd2cSJim Jagielski set { _string = value; } 313*b1cdbd2cSJim Jagielski } 314*b1cdbd2cSJim Jagielski public Object Interface 315*b1cdbd2cSJim Jagielski { 316*b1cdbd2cSJim Jagielski get { return _xInterface; } 317*b1cdbd2cSJim Jagielski set { _xInterface = value; } 318*b1cdbd2cSJim Jagielski } 319*b1cdbd2cSJim Jagielski public uno.Any Any 320*b1cdbd2cSJim Jagielski { 321*b1cdbd2cSJim Jagielski get { 322*b1cdbd2cSJim Jagielski 323*b1cdbd2cSJim Jagielski Debug.WriteLine( "##### " + GetType().FullName + ".Any" ); 324*b1cdbd2cSJim Jagielski return _any; 325*b1cdbd2cSJim Jagielski } 326*b1cdbd2cSJim Jagielski set { 327*b1cdbd2cSJim Jagielski Debug.WriteLine( "##### " + GetType().FullName + ".Any:" + value ); 328*b1cdbd2cSJim Jagielski _any = value; 329*b1cdbd2cSJim Jagielski } 330*b1cdbd2cSJim Jagielski } 331*b1cdbd2cSJim Jagielski public TestElement [] Sequence 332*b1cdbd2cSJim Jagielski { 333*b1cdbd2cSJim Jagielski get { return _testElements; } 334*b1cdbd2cSJim Jagielski set { _testElements = value; } 335*b1cdbd2cSJim Jagielski } 336*b1cdbd2cSJim Jagielski public TestDataElements Struct 337*b1cdbd2cSJim Jagielski { 338*b1cdbd2cSJim Jagielski get { return _testDataElements; } 339*b1cdbd2cSJim Jagielski set { _testDataElements = value; } 340*b1cdbd2cSJim Jagielski } transportAny(Any value)341*b1cdbd2cSJim Jagielski public Any transportAny(Any value) 342*b1cdbd2cSJim Jagielski { 343*b1cdbd2cSJim Jagielski return value; 344*b1cdbd2cSJim Jagielski } call(int nCallId , int nWaitMUSEC)345*b1cdbd2cSJim Jagielski public void call(int nCallId , int nWaitMUSEC) 346*b1cdbd2cSJim Jagielski { 347*b1cdbd2cSJim Jagielski Thread.Sleep(nWaitMUSEC / 10000); 348*b1cdbd2cSJim Jagielski 349*b1cdbd2cSJim Jagielski if(_bFirstCall) 350*b1cdbd2cSJim Jagielski _bFirstCall = false; 351*b1cdbd2cSJim Jagielski 352*b1cdbd2cSJim Jagielski else 353*b1cdbd2cSJim Jagielski _bSequenceOfCallTestPassed = _bSequenceOfCallTestPassed && (nCallId > _nLastCallId); 354*b1cdbd2cSJim Jagielski 355*b1cdbd2cSJim Jagielski _nLastCallId = nCallId; 356*b1cdbd2cSJim Jagielski } callOneway( int nCallId , int nWaitMUSEC )357*b1cdbd2cSJim Jagielski public void callOneway( int nCallId , int nWaitMUSEC ) 358*b1cdbd2cSJim Jagielski { 359*b1cdbd2cSJim Jagielski Thread.Sleep(nWaitMUSEC / 10000); 360*b1cdbd2cSJim Jagielski 361*b1cdbd2cSJim Jagielski _bSequenceOfCallTestPassed = _bSequenceOfCallTestPassed && (nCallId > _nLastCallId); 362*b1cdbd2cSJim Jagielski _nLastCallId = nCallId; 363*b1cdbd2cSJim Jagielski } sequenceOfCallTestPassed()364*b1cdbd2cSJim Jagielski public bool sequenceOfCallTestPassed() 365*b1cdbd2cSJim Jagielski { 366*b1cdbd2cSJim Jagielski return _bSequenceOfCallTestPassed; 367*b1cdbd2cSJim Jagielski } 368*b1cdbd2cSJim Jagielski [MethodImpl( MethodImplOptions.Synchronized )] callRecursivly( XRecursiveCall xCall, int nToCall )369*b1cdbd2cSJim Jagielski public void callRecursivly( XRecursiveCall xCall, int nToCall ) 370*b1cdbd2cSJim Jagielski { 371*b1cdbd2cSJim Jagielski lock (this) 372*b1cdbd2cSJim Jagielski { 373*b1cdbd2cSJim Jagielski if(nToCall != 0) 374*b1cdbd2cSJim Jagielski { 375*b1cdbd2cSJim Jagielski nToCall --; 376*b1cdbd2cSJim Jagielski xCall.callRecursivly(this , nToCall); 377*b1cdbd2cSJim Jagielski } 378*b1cdbd2cSJim Jagielski } 379*b1cdbd2cSJim Jagielski } 380*b1cdbd2cSJim Jagielski [MethodImpl( MethodImplOptions.Synchronized )] startRecursiveCall( XRecursiveCall xCall, int nToCall )381*b1cdbd2cSJim Jagielski public void startRecursiveCall( XRecursiveCall xCall, int nToCall ) 382*b1cdbd2cSJim Jagielski { 383*b1cdbd2cSJim Jagielski lock (this) 384*b1cdbd2cSJim Jagielski { 385*b1cdbd2cSJim Jagielski if(nToCall != 0) 386*b1cdbd2cSJim Jagielski { 387*b1cdbd2cSJim Jagielski nToCall --; 388*b1cdbd2cSJim Jagielski xCall.callRecursivly( this , nToCall ); 389*b1cdbd2cSJim Jagielski } 390*b1cdbd2cSJim Jagielski } 391*b1cdbd2cSJim Jagielski } 392*b1cdbd2cSJim Jagielski 393*b1cdbd2cSJim Jagielski // XBridgeTest raiseException( short nArgumentPos, String rMsg, Object xContext )394*b1cdbd2cSJim Jagielski public TestDataElements raiseException( 395*b1cdbd2cSJim Jagielski short nArgumentPos, String rMsg, Object xContext ) 396*b1cdbd2cSJim Jagielski { 397*b1cdbd2cSJim Jagielski throw new IllegalArgumentException(rMsg, xContext, nArgumentPos); 398*b1cdbd2cSJim Jagielski } raiseRuntimeExceptionOneway( String rMsg, Object xContext )399*b1cdbd2cSJim Jagielski public void raiseRuntimeExceptionOneway( String rMsg, Object xContext ) 400*b1cdbd2cSJim Jagielski { 401*b1cdbd2cSJim Jagielski throw new RuntimeException(rMsg, xContext); 402*b1cdbd2cSJim Jagielski } 403*b1cdbd2cSJim Jagielski dothrow( System.Exception e )404*b1cdbd2cSJim Jagielski private void dothrow( System.Exception e ) 405*b1cdbd2cSJim Jagielski { 406*b1cdbd2cSJim Jagielski throw e; 407*b1cdbd2cSJim Jagielski } 408*b1cdbd2cSJim Jagielski public int RuntimeException 409*b1cdbd2cSJim Jagielski { 410*b1cdbd2cSJim Jagielski get { 411*b1cdbd2cSJim Jagielski try 412*b1cdbd2cSJim Jagielski { 413*b1cdbd2cSJim Jagielski dothrow( new RuntimeException(_string, _xInterface) ); 414*b1cdbd2cSJim Jagielski return 0; // dummy 415*b1cdbd2cSJim Jagielski } 416*b1cdbd2cSJim Jagielski catch (System.Exception exc) 417*b1cdbd2cSJim Jagielski { 418*b1cdbd2cSJim Jagielski throw exc; 419*b1cdbd2cSJim Jagielski } 420*b1cdbd2cSJim Jagielski } 421*b1cdbd2cSJim Jagielski set { throw new RuntimeException(_string, _xInterface); } 422*b1cdbd2cSJim Jagielski } 423*b1cdbd2cSJim Jagielski 424*b1cdbd2cSJim Jagielski // XBridgeTest2 setDim2(int[][] val)425*b1cdbd2cSJim Jagielski public int[][] setDim2(int[][] val) 426*b1cdbd2cSJim Jagielski { 427*b1cdbd2cSJim Jagielski _arLong2 = val; 428*b1cdbd2cSJim Jagielski return val; 429*b1cdbd2cSJim Jagielski } 430*b1cdbd2cSJim Jagielski setDim3(int[][][] val)431*b1cdbd2cSJim Jagielski public int[][][] setDim3(int[][][] val) 432*b1cdbd2cSJim Jagielski { 433*b1cdbd2cSJim Jagielski _arLong3 = val; 434*b1cdbd2cSJim Jagielski return val; 435*b1cdbd2cSJim Jagielski } 436*b1cdbd2cSJim Jagielski setSequenceAny(Any[] val)437*b1cdbd2cSJim Jagielski public Any[] setSequenceAny(Any[] val) 438*b1cdbd2cSJim Jagielski { 439*b1cdbd2cSJim Jagielski _arAny = val; 440*b1cdbd2cSJim Jagielski return val; 441*b1cdbd2cSJim Jagielski } 442*b1cdbd2cSJim Jagielski setSequenceBool(bool[] val)443*b1cdbd2cSJim Jagielski public bool[] setSequenceBool(bool[] val) 444*b1cdbd2cSJim Jagielski { 445*b1cdbd2cSJim Jagielski _arBool = val; 446*b1cdbd2cSJim Jagielski return val; 447*b1cdbd2cSJim Jagielski } 448*b1cdbd2cSJim Jagielski setSequenceByte(byte[] val)449*b1cdbd2cSJim Jagielski public byte[] setSequenceByte(byte[] val) 450*b1cdbd2cSJim Jagielski { 451*b1cdbd2cSJim Jagielski _arByte = val; 452*b1cdbd2cSJim Jagielski return val; 453*b1cdbd2cSJim Jagielski } 454*b1cdbd2cSJim Jagielski setSequenceChar(char[] val)455*b1cdbd2cSJim Jagielski public char[] setSequenceChar(char[] val) 456*b1cdbd2cSJim Jagielski { 457*b1cdbd2cSJim Jagielski _arChar = val; 458*b1cdbd2cSJim Jagielski return val; 459*b1cdbd2cSJim Jagielski } 460*b1cdbd2cSJim Jagielski setSequenceShort(short[] val)461*b1cdbd2cSJim Jagielski public short[] setSequenceShort(short[] val) 462*b1cdbd2cSJim Jagielski { 463*b1cdbd2cSJim Jagielski _arShort = val; 464*b1cdbd2cSJim Jagielski return val; 465*b1cdbd2cSJim Jagielski } 466*b1cdbd2cSJim Jagielski setSequenceLong(int[] val)467*b1cdbd2cSJim Jagielski public int[] setSequenceLong(int[] val) 468*b1cdbd2cSJim Jagielski { 469*b1cdbd2cSJim Jagielski _arLong = val; 470*b1cdbd2cSJim Jagielski return val; 471*b1cdbd2cSJim Jagielski } 472*b1cdbd2cSJim Jagielski setSequenceHyper(long[] val)473*b1cdbd2cSJim Jagielski public long[] setSequenceHyper(long[] val) 474*b1cdbd2cSJim Jagielski { 475*b1cdbd2cSJim Jagielski _arHyper = val; 476*b1cdbd2cSJim Jagielski return val; 477*b1cdbd2cSJim Jagielski } 478*b1cdbd2cSJim Jagielski setSequenceFloat(float[] val)479*b1cdbd2cSJim Jagielski public float[] setSequenceFloat(float[] val) 480*b1cdbd2cSJim Jagielski { 481*b1cdbd2cSJim Jagielski _arFloat = val; 482*b1cdbd2cSJim Jagielski return val; 483*b1cdbd2cSJim Jagielski } 484*b1cdbd2cSJim Jagielski setSequenceDouble(double[] val)485*b1cdbd2cSJim Jagielski public double[] setSequenceDouble(double[] val) 486*b1cdbd2cSJim Jagielski { 487*b1cdbd2cSJim Jagielski _arDouble = val; 488*b1cdbd2cSJim Jagielski return val; 489*b1cdbd2cSJim Jagielski } 490*b1cdbd2cSJim Jagielski setSequenceEnum(TestEnum[] val)491*b1cdbd2cSJim Jagielski public TestEnum[] setSequenceEnum(TestEnum[] val) 492*b1cdbd2cSJim Jagielski { 493*b1cdbd2cSJim Jagielski _arEnum = val; 494*b1cdbd2cSJim Jagielski return val; 495*b1cdbd2cSJim Jagielski } 496*b1cdbd2cSJim Jagielski setSequenceUShort(UInt16[] val)497*b1cdbd2cSJim Jagielski public UInt16[] setSequenceUShort(UInt16[] val) 498*b1cdbd2cSJim Jagielski { 499*b1cdbd2cSJim Jagielski _arUShort = val; 500*b1cdbd2cSJim Jagielski return val; 501*b1cdbd2cSJim Jagielski } 502*b1cdbd2cSJim Jagielski setSequenceULong(UInt32[] val)503*b1cdbd2cSJim Jagielski public UInt32[] setSequenceULong(UInt32[] val) 504*b1cdbd2cSJim Jagielski { 505*b1cdbd2cSJim Jagielski _arULong = val; 506*b1cdbd2cSJim Jagielski return val; 507*b1cdbd2cSJim Jagielski } 508*b1cdbd2cSJim Jagielski setSequenceUHyper(UInt64[] val)509*b1cdbd2cSJim Jagielski public UInt64[] setSequenceUHyper(UInt64[] val) 510*b1cdbd2cSJim Jagielski { 511*b1cdbd2cSJim Jagielski _arUHyper = val; 512*b1cdbd2cSJim Jagielski return val; 513*b1cdbd2cSJim Jagielski } 514*b1cdbd2cSJim Jagielski setSequenceXInterface(Object[] val)515*b1cdbd2cSJim Jagielski public Object[] setSequenceXInterface(Object[] val) 516*b1cdbd2cSJim Jagielski { 517*b1cdbd2cSJim Jagielski _arObject = val; 518*b1cdbd2cSJim Jagielski return val; 519*b1cdbd2cSJim Jagielski } 520*b1cdbd2cSJim Jagielski setSequenceString(string[] val)521*b1cdbd2cSJim Jagielski public string[] setSequenceString(string[] val) 522*b1cdbd2cSJim Jagielski { 523*b1cdbd2cSJim Jagielski _arString = val; 524*b1cdbd2cSJim Jagielski return val; 525*b1cdbd2cSJim Jagielski } 526*b1cdbd2cSJim Jagielski setSequenceStruct(TestElement[] val)527*b1cdbd2cSJim Jagielski public TestElement[] setSequenceStruct(TestElement[] val) 528*b1cdbd2cSJim Jagielski { 529*b1cdbd2cSJim Jagielski _testElements = val; 530*b1cdbd2cSJim Jagielski return val; 531*b1cdbd2cSJim Jagielski } 532*b1cdbd2cSJim Jagielski setSequencesInOut(ref bool[] aSeqBoolean, ref char[] aSeqChar, ref byte[] aSeqByte, ref short[] aSeqShort, ref UInt16[] aSeqUShort, ref int[] aSeqLong, ref UInt32[] aSeqULong, ref long[] aSeqHyper, ref UInt64[] aSeqUHyper, ref float[] aSeqFloat, ref double[] aSeqDouble, ref TestEnum[] aSeqTestEnum, ref string[] aSeqString, ref object[] aSeqXInterface, ref Any[] aSeqAny, ref int[][] aSeqDim2, ref int[][][] aSeqDim3)533*b1cdbd2cSJim Jagielski public void setSequencesInOut(ref bool[] aSeqBoolean, 534*b1cdbd2cSJim Jagielski ref char[] aSeqChar, 535*b1cdbd2cSJim Jagielski ref byte[] aSeqByte, 536*b1cdbd2cSJim Jagielski ref short[] aSeqShort, 537*b1cdbd2cSJim Jagielski ref UInt16[] aSeqUShort, 538*b1cdbd2cSJim Jagielski ref int[] aSeqLong, 539*b1cdbd2cSJim Jagielski ref UInt32[] aSeqULong, 540*b1cdbd2cSJim Jagielski ref long[] aSeqHyper, 541*b1cdbd2cSJim Jagielski ref UInt64[] aSeqUHyper, 542*b1cdbd2cSJim Jagielski ref float[] aSeqFloat, 543*b1cdbd2cSJim Jagielski ref double[] aSeqDouble, 544*b1cdbd2cSJim Jagielski ref TestEnum[] aSeqTestEnum, 545*b1cdbd2cSJim Jagielski ref string[] aSeqString, 546*b1cdbd2cSJim Jagielski ref object[] aSeqXInterface, 547*b1cdbd2cSJim Jagielski ref Any[] aSeqAny, 548*b1cdbd2cSJim Jagielski ref int[][] aSeqDim2, 549*b1cdbd2cSJim Jagielski ref int[][][] aSeqDim3) 550*b1cdbd2cSJim Jagielski { 551*b1cdbd2cSJim Jagielski _arBool = aSeqBoolean; 552*b1cdbd2cSJim Jagielski _arChar = aSeqChar; 553*b1cdbd2cSJim Jagielski _arByte = aSeqByte; 554*b1cdbd2cSJim Jagielski _arShort = aSeqShort; 555*b1cdbd2cSJim Jagielski _arUShort = aSeqUShort; 556*b1cdbd2cSJim Jagielski _arLong = aSeqLong; 557*b1cdbd2cSJim Jagielski _arULong = aSeqULong; 558*b1cdbd2cSJim Jagielski _arHyper = aSeqHyper; 559*b1cdbd2cSJim Jagielski _arUHyper = aSeqUHyper; 560*b1cdbd2cSJim Jagielski _arFloat = aSeqFloat; 561*b1cdbd2cSJim Jagielski _arDouble = aSeqDouble; 562*b1cdbd2cSJim Jagielski _arEnum = aSeqTestEnum; 563*b1cdbd2cSJim Jagielski _arString = aSeqString; 564*b1cdbd2cSJim Jagielski _arObject = aSeqXInterface; 565*b1cdbd2cSJim Jagielski _arAny = aSeqAny; 566*b1cdbd2cSJim Jagielski _arLong2 = aSeqDim2; 567*b1cdbd2cSJim Jagielski _arLong3 = aSeqDim3; 568*b1cdbd2cSJim Jagielski } 569*b1cdbd2cSJim Jagielski setSequencesOut(out bool[] aSeqBoolean, out char[] aSeqChar, out byte[] aSeqByte, out short[] aSeqShort, out UInt16[] aSeqUShort, out int[] aSeqLong, out UInt32[] aSeqULong, out long[] aSeqHyper, out UInt64[] aSeqUHyper, out float[] aSeqFloat, out double[] aSeqDouble, out TestEnum[] aSeqTestEnum, out string[] aSeqString, out object[] aSeqXInterface, out Any[] aSeqAny, out int[][] aSeqDim2, out int[][][] aSeqDim3)570*b1cdbd2cSJim Jagielski public void setSequencesOut(out bool[] aSeqBoolean, 571*b1cdbd2cSJim Jagielski out char[] aSeqChar, 572*b1cdbd2cSJim Jagielski out byte[] aSeqByte, 573*b1cdbd2cSJim Jagielski out short[] aSeqShort, 574*b1cdbd2cSJim Jagielski out UInt16[] aSeqUShort, 575*b1cdbd2cSJim Jagielski out int[] aSeqLong, 576*b1cdbd2cSJim Jagielski out UInt32[] aSeqULong, 577*b1cdbd2cSJim Jagielski out long[] aSeqHyper, 578*b1cdbd2cSJim Jagielski out UInt64[] aSeqUHyper, 579*b1cdbd2cSJim Jagielski out float[] aSeqFloat, 580*b1cdbd2cSJim Jagielski out double[] aSeqDouble, 581*b1cdbd2cSJim Jagielski out TestEnum[] aSeqTestEnum, 582*b1cdbd2cSJim Jagielski out string[] aSeqString, 583*b1cdbd2cSJim Jagielski out object[] aSeqXInterface, 584*b1cdbd2cSJim Jagielski out Any[] aSeqAny, 585*b1cdbd2cSJim Jagielski out int[][] aSeqDim2, 586*b1cdbd2cSJim Jagielski out int[][][] aSeqDim3) 587*b1cdbd2cSJim Jagielski { 588*b1cdbd2cSJim Jagielski aSeqBoolean = _arBool; 589*b1cdbd2cSJim Jagielski aSeqChar = _arChar; 590*b1cdbd2cSJim Jagielski aSeqByte = _arByte; 591*b1cdbd2cSJim Jagielski aSeqShort = _arShort; 592*b1cdbd2cSJim Jagielski aSeqUShort = _arUShort; 593*b1cdbd2cSJim Jagielski aSeqLong = _arLong; 594*b1cdbd2cSJim Jagielski aSeqULong = _arULong; 595*b1cdbd2cSJim Jagielski aSeqHyper = _arHyper; 596*b1cdbd2cSJim Jagielski aSeqUHyper = _arUHyper; 597*b1cdbd2cSJim Jagielski aSeqFloat = _arFloat; 598*b1cdbd2cSJim Jagielski aSeqDouble = _arDouble; 599*b1cdbd2cSJim Jagielski aSeqTestEnum = _arEnum; 600*b1cdbd2cSJim Jagielski aSeqString = _arString; 601*b1cdbd2cSJim Jagielski aSeqXInterface = _arObject; 602*b1cdbd2cSJim Jagielski aSeqAny = _arAny; 603*b1cdbd2cSJim Jagielski aSeqDim2 = _arLong2; 604*b1cdbd2cSJim Jagielski aSeqDim3 = _arLong3; 605*b1cdbd2cSJim Jagielski 606*b1cdbd2cSJim Jagielski } 607*b1cdbd2cSJim Jagielski 608*b1cdbd2cSJim Jagielski /* Attention: Debugging this code (probably in mixed mode) may lead to exceptions 609*b1cdbd2cSJim Jagielski * which do not occur when running normally (Visual Studio 2003) 610*b1cdbd2cSJim Jagielski */ testConstructorsService(XComponentContext context)611*b1cdbd2cSJim Jagielski public void testConstructorsService(XComponentContext context) 612*b1cdbd2cSJim Jagielski { 613*b1cdbd2cSJim Jagielski Constructors.create1(context, 614*b1cdbd2cSJim Jagielski true, 615*b1cdbd2cSJim Jagielski 0x80, // -128 in C++, 616*b1cdbd2cSJim Jagielski Int16.MinValue, 617*b1cdbd2cSJim Jagielski UInt16.MaxValue, 618*b1cdbd2cSJim Jagielski Int32.MinValue, 619*b1cdbd2cSJim Jagielski UInt32.MaxValue, 620*b1cdbd2cSJim Jagielski Int64.MinValue, 621*b1cdbd2cSJim Jagielski UInt64.MaxValue, 622*b1cdbd2cSJim Jagielski 0.123f, 623*b1cdbd2cSJim Jagielski 0.456, 624*b1cdbd2cSJim Jagielski 'X', 625*b1cdbd2cSJim Jagielski "test", 626*b1cdbd2cSJim Jagielski typeof(Any), 627*b1cdbd2cSJim Jagielski new Any(true), 628*b1cdbd2cSJim Jagielski new bool[] { true }, 629*b1cdbd2cSJim Jagielski new byte[] { 0x80}, // in C++ the value is compared with SAL_MIN_INT8 which is -128 630*b1cdbd2cSJim Jagielski new short[] { Int16.MinValue }, 631*b1cdbd2cSJim Jagielski new UInt16[] { UInt16.MaxValue }, 632*b1cdbd2cSJim Jagielski new Int32[] {Int32.MinValue}, 633*b1cdbd2cSJim Jagielski new UInt32[] { UInt32.MaxValue }, 634*b1cdbd2cSJim Jagielski new long[] { Int64.MinValue }, 635*b1cdbd2cSJim Jagielski new UInt64[] { UInt64.MaxValue }, 636*b1cdbd2cSJim Jagielski new float[] { 0.123f }, 637*b1cdbd2cSJim Jagielski new double[] { 0.456 }, 638*b1cdbd2cSJim Jagielski new char[] { 'X' }, 639*b1cdbd2cSJim Jagielski new string[] { "test" }, 640*b1cdbd2cSJim Jagielski new Type[] { typeof(Any) }, 641*b1cdbd2cSJim Jagielski new Any[] { new Any(true) }, 642*b1cdbd2cSJim Jagielski new bool[][] { new bool[] { true } }, 643*b1cdbd2cSJim Jagielski new Any[][] { new Any[] { new Any(true) } }, 644*b1cdbd2cSJim Jagielski new TestEnum[] { TestEnum.TWO }, 645*b1cdbd2cSJim Jagielski new TestStruct[] { new TestStruct(10) }, 646*b1cdbd2cSJim Jagielski new TestPolyStruct[] { new TestPolyStruct(true) }, 647*b1cdbd2cSJim Jagielski new TestPolyStruct[] { new TestPolyStruct(new Any(true)) }, 648*b1cdbd2cSJim Jagielski new object[] { null }, 649*b1cdbd2cSJim Jagielski TestEnum.TWO, 650*b1cdbd2cSJim Jagielski new TestStruct(10), 651*b1cdbd2cSJim Jagielski new TestPolyStruct(true), 652*b1cdbd2cSJim Jagielski new TestPolyStruct(new Any(true)), 653*b1cdbd2cSJim Jagielski null 654*b1cdbd2cSJim Jagielski ); 655*b1cdbd2cSJim Jagielski 656*b1cdbd2cSJim Jagielski Constructors.create2(context, 657*b1cdbd2cSJim Jagielski new Any(true), 658*b1cdbd2cSJim Jagielski new Any((System.Byte) 0x80), 659*b1cdbd2cSJim Jagielski new Any(Int16.MinValue), 660*b1cdbd2cSJim Jagielski new Any(UInt16.MaxValue), 661*b1cdbd2cSJim Jagielski new Any(Int32.MinValue), 662*b1cdbd2cSJim Jagielski new Any(UInt32.MaxValue), 663*b1cdbd2cSJim Jagielski new Any(Int64.MinValue), 664*b1cdbd2cSJim Jagielski new Any(UInt64.MaxValue), 665*b1cdbd2cSJim Jagielski new Any(0.123f), 666*b1cdbd2cSJim Jagielski new Any(0.456), 667*b1cdbd2cSJim Jagielski new Any('X'), 668*b1cdbd2cSJim Jagielski new Any("test"), 669*b1cdbd2cSJim Jagielski new Any(typeof(Any)), 670*b1cdbd2cSJim Jagielski new Any(true), 671*b1cdbd2cSJim Jagielski new Any(typeof(bool[]), new bool[] { true }), 672*b1cdbd2cSJim Jagielski new Any(typeof(byte[]), new byte[] { (System.Byte) 0x80}), 673*b1cdbd2cSJim Jagielski new Any(typeof(short[]), new short[] { Int16.MinValue }), 674*b1cdbd2cSJim Jagielski new Any(typeof(UInt16[]), new UInt16[] { UInt16.MaxValue }), 675*b1cdbd2cSJim Jagielski new Any(typeof(int[]), new int[] { Int32.MinValue }), 676*b1cdbd2cSJim Jagielski new Any(typeof(UInt32[]), new UInt32[] { UInt32.MaxValue }), 677*b1cdbd2cSJim Jagielski new Any(typeof(long[]), new long[] { Int64.MinValue }), 678*b1cdbd2cSJim Jagielski new Any(typeof(UInt64[]), new UInt64[] { UInt64.MaxValue }), 679*b1cdbd2cSJim Jagielski new Any(typeof(float[]), new float[] { 0.123f }), 680*b1cdbd2cSJim Jagielski new Any(typeof(double[]), new double[] { 0.456 }), 681*b1cdbd2cSJim Jagielski new Any(typeof(char[]), new char[] { 'X' }), 682*b1cdbd2cSJim Jagielski new Any(typeof(string[]), new string[] { "test" }), 683*b1cdbd2cSJim Jagielski new Any(typeof(Type[]), new Type[] { typeof(Any) }), 684*b1cdbd2cSJim Jagielski new Any(typeof(Any[]), new Any[] { new Any(true) }), 685*b1cdbd2cSJim Jagielski new Any(typeof(bool[][]), new bool[][] { new bool[] { true } }), 686*b1cdbd2cSJim Jagielski new Any( 687*b1cdbd2cSJim Jagielski typeof(Any[][]), new Any[][] { new Any[] { new Any(true) } }), 688*b1cdbd2cSJim Jagielski new Any(typeof(TestEnum[]), new TestEnum[] { TestEnum.TWO }), 689*b1cdbd2cSJim Jagielski new Any( 690*b1cdbd2cSJim Jagielski typeof(TestStruct[]), new TestStruct[] { new TestStruct(10) }), 691*b1cdbd2cSJim Jagielski new Any( 692*b1cdbd2cSJim Jagielski PolymorphicType.GetType( 693*b1cdbd2cSJim Jagielski typeof(TestPolyStruct[]), 694*b1cdbd2cSJim Jagielski "unoidl.test.testtools.bridgetest.TestPolyStruct<System.Boolean>[]"), 695*b1cdbd2cSJim Jagielski new TestPolyStruct[] { new TestPolyStruct(true) }) , 696*b1cdbd2cSJim Jagielski new Any( 697*b1cdbd2cSJim Jagielski PolymorphicType.GetType( 698*b1cdbd2cSJim Jagielski typeof(TestPolyStruct[]), 699*b1cdbd2cSJim Jagielski "unoidl.test.testtools.bridgetest.TestPolyStruct<uno.Any>[]"), 700*b1cdbd2cSJim Jagielski new TestPolyStruct[] { new TestPolyStruct(new Any(true)) }), 701*b1cdbd2cSJim Jagielski new Any(typeof(object[])/*TODO*/, new object[] { null }), 702*b1cdbd2cSJim Jagielski new Any(typeof(TestEnum), TestEnum.TWO), 703*b1cdbd2cSJim Jagielski new Any(typeof(TestStruct), new TestStruct(10)), 704*b1cdbd2cSJim Jagielski new Any( 705*b1cdbd2cSJim Jagielski PolymorphicType.GetType( 706*b1cdbd2cSJim Jagielski typeof(TestPolyStruct), 707*b1cdbd2cSJim Jagielski "unoidl.test.testtools.bridgetest.TestPolyStruct<System.Boolean>"), 708*b1cdbd2cSJim Jagielski new TestPolyStruct(true)), 709*b1cdbd2cSJim Jagielski new Any( 710*b1cdbd2cSJim Jagielski PolymorphicType.GetType( 711*b1cdbd2cSJim Jagielski typeof(TestPolyStruct), 712*b1cdbd2cSJim Jagielski "unoidl.test.testtools.bridgetest.TestPolyStruct<uno.Any>"), 713*b1cdbd2cSJim Jagielski new TestPolyStruct(new Any(true))), 714*b1cdbd2cSJim Jagielski new Any(typeof(object), null) 715*b1cdbd2cSJim Jagielski ); 716*b1cdbd2cSJim Jagielski 717*b1cdbd2cSJim Jagielski 718*b1cdbd2cSJim Jagielski XMultiBase1 xMulti = Constructors2.create1( 719*b1cdbd2cSJim Jagielski context, 720*b1cdbd2cSJim Jagielski new TestPolyStruct(typeof(int)), 721*b1cdbd2cSJim Jagielski new TestPolyStruct(new Any(true)), 722*b1cdbd2cSJim Jagielski new TestPolyStruct(true), 723*b1cdbd2cSJim Jagielski new TestPolyStruct((Byte) 0x80), 724*b1cdbd2cSJim Jagielski new TestPolyStruct(Int16.MinValue), 725*b1cdbd2cSJim Jagielski new TestPolyStruct(Int32.MinValue), 726*b1cdbd2cSJim Jagielski new TestPolyStruct(Int64.MinValue), 727*b1cdbd2cSJim Jagielski new TestPolyStruct('X'), 728*b1cdbd2cSJim Jagielski new TestPolyStruct("test"), 729*b1cdbd2cSJim Jagielski new TestPolyStruct(0.123f), 730*b1cdbd2cSJim Jagielski new TestPolyStruct(0.456d), 731*b1cdbd2cSJim Jagielski new TestPolyStruct(new object()), 732*b1cdbd2cSJim Jagielski new TestPolyStruct(new uno.util.WeakComponentBase()), 733*b1cdbd2cSJim Jagielski new TestPolyStruct(TestEnum.TWO), 734*b1cdbd2cSJim Jagielski new TestPolyStruct(new TestPolyStruct2('X', new Any(true))), 735*b1cdbd2cSJim Jagielski new TestPolyStruct(new TestPolyStruct2(new TestPolyStruct2('X', new Any(true)), "test")), 736*b1cdbd2cSJim Jagielski new TestPolyStruct2("test", new TestPolyStruct2('X', new TestPolyStruct(new Any(true)))), 737*b1cdbd2cSJim Jagielski new TestPolyStruct2( new TestPolyStruct2('X', new Any(true)), new TestPolyStruct('X')), 738*b1cdbd2cSJim Jagielski new TestPolyStruct(new Type[] { typeof(int)}), 739*b1cdbd2cSJim Jagielski new TestPolyStruct(new Any[] { new Any(true) }), 740*b1cdbd2cSJim Jagielski new TestPolyStruct(new bool[] {true}), 741*b1cdbd2cSJim Jagielski new TestPolyStruct(new byte[] {0x80}), 742*b1cdbd2cSJim Jagielski new TestPolyStruct(new short[] {Int16.MinValue}), 743*b1cdbd2cSJim Jagielski new TestPolyStruct(new int[] {Int32.MinValue}), 744*b1cdbd2cSJim Jagielski new TestPolyStruct(new long[] {Int64.MinValue}), 745*b1cdbd2cSJim Jagielski new TestPolyStruct(new char[] {'X'}), 746*b1cdbd2cSJim Jagielski new TestPolyStruct(new string[] {"test"}), 747*b1cdbd2cSJim Jagielski new TestPolyStruct(new float[] {0.123f}), 748*b1cdbd2cSJim Jagielski new TestPolyStruct(new double[] {0.456d}), 749*b1cdbd2cSJim Jagielski new TestPolyStruct(new object[] {new object()}), 750*b1cdbd2cSJim Jagielski new TestPolyStruct(new unoidl.com.sun.star.lang.XComponent[] {new uno.util.WeakComponentBase()}), 751*b1cdbd2cSJim Jagielski new TestPolyStruct(new TestEnum[] {TestEnum.TWO}), 752*b1cdbd2cSJim Jagielski new TestPolyStruct(new TestPolyStruct2[] {new TestPolyStruct2('X', new Any[] {new Any(true)})}), 753*b1cdbd2cSJim Jagielski new TestPolyStruct(new TestPolyStruct2[] { 754*b1cdbd2cSJim Jagielski new TestPolyStruct2(new TestPolyStruct('X'), new Any[] {new Any(true)})}), 755*b1cdbd2cSJim Jagielski new TestPolyStruct(new int[][] { new int[] {Int32.MinValue} }), 756*b1cdbd2cSJim Jagielski new TestPolyStruct[]{ new TestPolyStruct(Int32.MinValue)}, 757*b1cdbd2cSJim Jagielski new TestPolyStruct[]{new TestPolyStruct(new TestPolyStruct2('X', new Any(true)))}, 758*b1cdbd2cSJim Jagielski new TestPolyStruct[]{new TestPolyStruct(new TestPolyStruct2(new TestPolyStruct2('X', new Any(true)), "test"))}, 759*b1cdbd2cSJim Jagielski new TestPolyStruct2[]{new TestPolyStruct2("test", new TestPolyStruct2('X', new TestPolyStruct(new Any(true))))}, 760*b1cdbd2cSJim Jagielski new TestPolyStruct2[]{new TestPolyStruct2(new TestPolyStruct2('X', new Any(true)),new TestPolyStruct('X'))}, 761*b1cdbd2cSJim Jagielski new TestPolyStruct[][]{new TestPolyStruct[]{new TestPolyStruct('X')}}, 762*b1cdbd2cSJim Jagielski new TestPolyStruct[][]{new TestPolyStruct[]{new TestPolyStruct(new TestPolyStruct2('X', new Any(true)))}}, 763*b1cdbd2cSJim Jagielski new TestPolyStruct[][]{new TestPolyStruct[] {new TestPolyStruct(new TestPolyStruct2(new TestPolyStruct2('X',new Any(true)), "test"))}}, 764*b1cdbd2cSJim Jagielski new TestPolyStruct2[][]{new TestPolyStruct2[]{new TestPolyStruct2("test", new TestPolyStruct2('X',new TestPolyStruct(new Any(true))))}}, 765*b1cdbd2cSJim Jagielski new TestPolyStruct2[][]{new TestPolyStruct2[]{new TestPolyStruct2(new TestPolyStruct2('X',new Any(true)),new TestPolyStruct('X'))}} 766*b1cdbd2cSJim Jagielski ); 767*b1cdbd2cSJim Jagielski 768*b1cdbd2cSJim Jagielski //test the returned interface 769*b1cdbd2cSJim Jagielski xMulti.fn11(1); 770*b1cdbd2cSJim Jagielski 771*b1cdbd2cSJim Jagielski 772*b1cdbd2cSJim Jagielski } 773*b1cdbd2cSJim Jagielski getCurrentContextChecker()774*b1cdbd2cSJim Jagielski public XCurrentContextChecker getCurrentContextChecker() 775*b1cdbd2cSJim Jagielski { 776*b1cdbd2cSJim Jagielski return null; //TODO: not yet tested in CLI UNO 777*b1cdbd2cSJim Jagielski } 778*b1cdbd2cSJim Jagielski transportPolyBoolean( TestPolyStruct arg)779*b1cdbd2cSJim Jagielski public TestPolyStruct transportPolyBoolean(/*[in]*/TestPolyStruct arg) 780*b1cdbd2cSJim Jagielski { 781*b1cdbd2cSJim Jagielski return arg; 782*b1cdbd2cSJim Jagielski } 783*b1cdbd2cSJim Jagielski transportPolyHyper( ref TestPolyStruct arg)784*b1cdbd2cSJim Jagielski public void transportPolyHyper(/*[in][out]*/ ref TestPolyStruct arg) 785*b1cdbd2cSJim Jagielski { 786*b1cdbd2cSJim Jagielski } 787*b1cdbd2cSJim Jagielski transportPolySequence(TestPolyStruct arg1, out TestPolyStruct arg2)788*b1cdbd2cSJim Jagielski public void transportPolySequence(TestPolyStruct arg1, 789*b1cdbd2cSJim Jagielski out TestPolyStruct arg2) 790*b1cdbd2cSJim Jagielski { 791*b1cdbd2cSJim Jagielski arg2 = arg1; 792*b1cdbd2cSJim Jagielski } 793*b1cdbd2cSJim Jagielski getNullPolyBadEnum()794*b1cdbd2cSJim Jagielski public TestPolyStruct getNullPolyBadEnum() 795*b1cdbd2cSJim Jagielski { 796*b1cdbd2cSJim Jagielski return new TestPolyStruct(unoidl.test.testtools.bridgetest.TestBadEnum.M); 797*b1cdbd2cSJim Jagielski } 798*b1cdbd2cSJim Jagielski getNullPolyLong()799*b1cdbd2cSJim Jagielski public TestPolyStruct getNullPolyLong() 800*b1cdbd2cSJim Jagielski { 801*b1cdbd2cSJim Jagielski return new TestPolyStruct(); 802*b1cdbd2cSJim Jagielski } 803*b1cdbd2cSJim Jagielski getNullPolyString()804*b1cdbd2cSJim Jagielski public TestPolyStruct getNullPolyString() 805*b1cdbd2cSJim Jagielski { 806*b1cdbd2cSJim Jagielski return new TestPolyStruct(); 807*b1cdbd2cSJim Jagielski } 808*b1cdbd2cSJim Jagielski getNullPolyType()809*b1cdbd2cSJim Jagielski public TestPolyStruct getNullPolyType() 810*b1cdbd2cSJim Jagielski { 811*b1cdbd2cSJim Jagielski return new TestPolyStruct(); 812*b1cdbd2cSJim Jagielski } 813*b1cdbd2cSJim Jagielski getNullPolyAny()814*b1cdbd2cSJim Jagielski public TestPolyStruct getNullPolyAny() 815*b1cdbd2cSJim Jagielski { 816*b1cdbd2cSJim Jagielski return new TestPolyStruct(); 817*b1cdbd2cSJim Jagielski } 818*b1cdbd2cSJim Jagielski getNullPolySequence()819*b1cdbd2cSJim Jagielski public TestPolyStruct getNullPolySequence() 820*b1cdbd2cSJim Jagielski { 821*b1cdbd2cSJim Jagielski return new TestPolyStruct(); 822*b1cdbd2cSJim Jagielski } 823*b1cdbd2cSJim Jagielski getNullPolyEnum()824*b1cdbd2cSJim Jagielski public TestPolyStruct getNullPolyEnum() 825*b1cdbd2cSJim Jagielski { 826*b1cdbd2cSJim Jagielski return new TestPolyStruct(); 827*b1cdbd2cSJim Jagielski } 828*b1cdbd2cSJim Jagielski getNullPolyStruct()829*b1cdbd2cSJim Jagielski public TestPolyStruct getNullPolyStruct() 830*b1cdbd2cSJim Jagielski { 831*b1cdbd2cSJim Jagielski return new TestPolyStruct(); 832*b1cdbd2cSJim Jagielski } 833*b1cdbd2cSJim Jagielski getNullPolyInterface()834*b1cdbd2cSJim Jagielski public TestPolyStruct getNullPolyInterface() 835*b1cdbd2cSJim Jagielski { 836*b1cdbd2cSJim Jagielski return new TestPolyStruct(); 837*b1cdbd2cSJim Jagielski } 838*b1cdbd2cSJim Jagielski getMulti()839*b1cdbd2cSJim Jagielski public XMulti getMulti() 840*b1cdbd2cSJim Jagielski { 841*b1cdbd2cSJim Jagielski return new testtools.bridgetest.cli_cs.Multi(); 842*b1cdbd2cSJim Jagielski } 843*b1cdbd2cSJim Jagielski checkEqual(int value, int argument)844*b1cdbd2cSJim Jagielski private static void checkEqual(int value, int argument) { 845*b1cdbd2cSJim Jagielski if (argument != value) { 846*b1cdbd2cSJim Jagielski throw new CheckFailed(value + " != " + argument); 847*b1cdbd2cSJim Jagielski } 848*b1cdbd2cSJim Jagielski } 849*b1cdbd2cSJim Jagielski checkEqual(double value, double argument)850*b1cdbd2cSJim Jagielski private static void checkEqual(double value, double argument) { 851*b1cdbd2cSJim Jagielski if (argument != value) { 852*b1cdbd2cSJim Jagielski throw new CheckFailed(value + " != " + argument); 853*b1cdbd2cSJim Jagielski } 854*b1cdbd2cSJim Jagielski } 855*b1cdbd2cSJim Jagielski checkEqual(string value, string argument)856*b1cdbd2cSJim Jagielski private static void checkEqual(string value, string argument) { 857*b1cdbd2cSJim Jagielski if (argument != value) { 858*b1cdbd2cSJim Jagielski throw new CheckFailed(value + " != " + argument); 859*b1cdbd2cSJim Jagielski } 860*b1cdbd2cSJim Jagielski } 861*b1cdbd2cSJim Jagielski testMulti(XMulti multi)862*b1cdbd2cSJim Jagielski public string testMulti(XMulti multi) 863*b1cdbd2cSJim Jagielski { 864*b1cdbd2cSJim Jagielski try { 865*b1cdbd2cSJim Jagielski checkEqual(0.0, multi.att1); 866*b1cdbd2cSJim Jagielski multi.att1 = 0.1; 867*b1cdbd2cSJim Jagielski checkEqual(0.1, multi.att1); 868*b1cdbd2cSJim Jagielski checkEqual(11 * 1, multi.fn11(1)); 869*b1cdbd2cSJim Jagielski checkEqual("12" + "abc", multi.fn12("abc")); 870*b1cdbd2cSJim Jagielski checkEqual(21 * 2, multi.fn21(2)); 871*b1cdbd2cSJim Jagielski checkEqual("22" + "de", multi.fn22("de")); 872*b1cdbd2cSJim Jagielski checkEqual(0.0, multi.att3); 873*b1cdbd2cSJim Jagielski multi.att3 = 0.3; 874*b1cdbd2cSJim Jagielski checkEqual(0.3, multi.att3); 875*b1cdbd2cSJim Jagielski checkEqual(31 * 3, multi.fn31(3)); 876*b1cdbd2cSJim Jagielski checkEqual("32" + "f", multi.fn32("f")); 877*b1cdbd2cSJim Jagielski checkEqual(33, multi.fn33()); 878*b1cdbd2cSJim Jagielski checkEqual(41 * 4, multi.fn41(4)); 879*b1cdbd2cSJim Jagielski checkEqual(61 * 6, multi.fn61(6)); 880*b1cdbd2cSJim Jagielski checkEqual("62" + "", multi.fn62("")); 881*b1cdbd2cSJim Jagielski checkEqual(71 * 7, multi.fn71(7)); 882*b1cdbd2cSJim Jagielski checkEqual("72" + "g", multi.fn72("g")); 883*b1cdbd2cSJim Jagielski checkEqual(73, multi.fn73()); 884*b1cdbd2cSJim Jagielski } catch (CheckFailed f) { 885*b1cdbd2cSJim Jagielski return f.Message; 886*b1cdbd2cSJim Jagielski } 887*b1cdbd2cSJim Jagielski return ""; 888*b1cdbd2cSJim Jagielski } 889*b1cdbd2cSJim Jagielski 890*b1cdbd2cSJim Jagielski public int RaiseAttr1 891*b1cdbd2cSJim Jagielski { 892*b1cdbd2cSJim Jagielski get { throw new RuntimeException(); } 893*b1cdbd2cSJim Jagielski set { throw new IllegalArgumentException(); } 894*b1cdbd2cSJim Jagielski } 895*b1cdbd2cSJim Jagielski 896*b1cdbd2cSJim Jagielski public int RaiseAttr2 897*b1cdbd2cSJim Jagielski { 898*b1cdbd2cSJim Jagielski get { throw new IllegalArgumentException(); } 899*b1cdbd2cSJim Jagielski set { throw new IllegalArgumentException(); } 900*b1cdbd2cSJim Jagielski } 901*b1cdbd2cSJim Jagielski 902*b1cdbd2cSJim Jagielski 903*b1cdbd2cSJim Jagielski } 904*b1cdbd2cSJim Jagielski 905*b1cdbd2cSJim Jagielski } 906