1*5b501c92SAndrew Ristrem ************************************************************* 2*5b501c92SAndrew Ristrem 3*5b501c92SAndrew Ristrem Licensed to the Apache Software Foundation (ASF) under one 4*5b501c92SAndrew Ristrem or more contributor license agreements. See the NOTICE file 5*5b501c92SAndrew Ristrem distributed with this work for additional information 6*5b501c92SAndrew Ristrem regarding copyright ownership. The ASF licenses this file 7*5b501c92SAndrew Ristrem to you under the Apache License, Version 2.0 (the 8*5b501c92SAndrew Ristrem "License"); you may not use this file except in compliance 9*5b501c92SAndrew Ristrem with the License. You may obtain a copy of the License at 10*5b501c92SAndrew Ristrem 11*5b501c92SAndrew Ristrem http://www.apache.org/licenses/LICENSE-2.0 12*5b501c92SAndrew Ristrem 13*5b501c92SAndrew Ristrem Unless required by applicable law or agreed to in writing, 14*5b501c92SAndrew Ristrem software distributed under the License is distributed on an 15*5b501c92SAndrew Ristrem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*5b501c92SAndrew Ristrem KIND, either express or implied. See the License for the 17*5b501c92SAndrew Ristrem specific language governing permissions and limitations 18*5b501c92SAndrew Ristrem under the License. 19*5b501c92SAndrew Ristrem 20*5b501c92SAndrew Ristrem ************************************************************* 21cdf0e10cSrcweirREM ***** BASIC ***** 22cdf0e10cSrcweir 23cdf0e10cSrcweir 24cdf0e10cSrcweirOPTION EXPLICIT 25cdf0e10cSrcweirOPTION COMPATIBLE 26cdf0e10cSrcweir 27cdf0e10cSrcweirSub Main 28cdf0e10cSrcweirCOMPATIBILITYMODE(true) 29cdf0e10cSrcweir 30cdf0e10cSrcweirIf runtest = -1 Then 31cdf0e10cSrcweir MsgBox "Test Failed!!!" 32cdf0e10cSrcweirElse 33cdf0e10cSrcweir MsgBox "Test Succeeded" 34cdf0e10cSrcweirEnd If 35cdf0e10cSrcweir 36cdf0e10cSrcweirEnd Sub 37cdf0e10cSrcweir 38cdf0e10cSrcweirFunction runtest() As Integer 39cdf0e10cSrcweirDim inBool As Boolean, inBool2 As Boolean, outBool As Boolean 40cdf0e10cSrcweirDim inByte As Integer, inByte2 As Integer 41cdf0e10cSrcweirDim inShort As Integer, inShort2 As Integer 42cdf0e10cSrcweirDim inLong As Long, inLong2 As Long, inLong3 As Long, inLong4 As Long 43cdf0e10cSrcweirDim inString As String, inString2 As String 44cdf0e10cSrcweirDim inFloat As Single, inFloat2 As Single 45cdf0e10cSrcweirDim inDouble As Double, inDouble2 As Double 46cdf0e10cSrcweirDim inVariant, inVariant2 47cdf0e10cSrcweirDim inAr, inAr2 48cdf0e10cSrcweirDim inDate As Date,inDate2 As Date, outDate As Date 49cdf0e10cSrcweirDim inCurrency As Currency, inCurrency2 As Currency, outCurrency As Currency 50cdf0e10cSrcweirDim inSCode As New com.sun.star.bridge.oleautomation.SCode 51cdf0e10cSrcweirDim inSCode2 As New com.sun.star.bridge.oleautomation.SCode 52cdf0e10cSrcweirDim inDecimal As Variant, inDecimal2 As Variant, outDecimal As Variant 53cdf0e10cSrcweirDim inrefDecimal As Variant, outrefDecimal As Variant 54cdf0e10cSrcweirDim outSCode As New com.sun.star.bridge.oleautomation.SCode 55cdf0e10cSrcweirDim outByte As Integer 56cdf0e10cSrcweirDim outShort As Integer 57cdf0e10cSrcweirDim outLong, outLong2 As Long 58cdf0e10cSrcweirDim outString As String 59cdf0e10cSrcweirDim outFloat As Single 60cdf0e10cSrcweirDim outDouble As Double 61cdf0e10cSrcweirDim outVariant 62cdf0e10cSrcweir'bug #109936 causes an errOr when outObject is used As out param 63cdf0e10cSrcweirDim inObject As Object, inObject2 As Object, outObject As Object 64cdf0e10cSrcweirDim objNOTHING As Object 65cdf0e10cSrcweirDim inUnknown As Object, inUnknown2 As Object, outUnknown As Object 66cdf0e10cSrcweir 67cdf0e10cSrcweirDim inArray, outArray, outArray2 68cdf0e10cSrcweirDim len1, len2 69cdf0e10cSrcweirDim arString(1) As String 70cdf0e10cSrcweirarString(0)= "String one" 71cdf0e10cSrcweirarString(1)= "String two" 72cdf0e10cSrcweir 73cdf0e10cSrcweirDim factory As Object 74cdf0e10cSrcweirfactory= createUnoService("com.sun.star.bridge.OleObjectFactory") 75cdf0e10cSrcweirDim obj As Object 76cdf0e10cSrcweirobj= factory.createInstance("AxTestComponents.Basic") 77cdf0e10cSrcweir 78cdf0e10cSrcweirDim objFoo As Object 79cdf0e10cSrcweirobjFoo = factory.createInstance("AxTestComponents.Foo") 80cdf0e10cSrcweir 81cdf0e10cSrcweir 82cdf0e10cSrcweir'in parameter ------------------------------------------------------------------- 83cdf0e10cSrcweirinBool = true 84cdf0e10cSrcweirinByte = 10 85cdf0e10cSrcweirinShort = 11 86cdf0e10cSrcweirinLong = 111 87cdf0e10cSrcweirinString = "Hello World" 88cdf0e10cSrcweirinFloat = 3.14 89cdf0e10cSrcweirinDouble = 3.145 90cdf0e10cSrcweirinVariant = "bla" 91cdf0e10cSrcweirinDate = NOW() 92cdf0e10cSrcweirinCurrency = 12345.6789 93cdf0e10cSrcweirinSCode.Value = &h80020004 94cdf0e10cSrcweirinDecimal = CDec("-9223372036854775808") 'lowest int64 95cdf0e10cSrcweir 96cdf0e10cSrcweirobj.inBool(inBool) 97cdf0e10cSrcweirobj.inByte(inByte) 98cdf0e10cSrcweirobj.inShort(inShort) 99cdf0e10cSrcweirobj.inLong(inLong) 100cdf0e10cSrcweirobj.inString(inString) 101cdf0e10cSrcweirobj.inFloat(inFloat) 102cdf0e10cSrcweirobj.inDouble(inDouble) 103cdf0e10cSrcweirobj.inVariant(inVariant) 104cdf0e10cSrcweir'obj.prpString= "a string property" 105cdf0e10cSrcweirobj.inObject(obj) 106cdf0e10cSrcweirobj.inArray(arString()) 107cdf0e10cSrcweirobj.inDate(inDate) 108cdf0e10cSrcweirobj.inCurrency(inCurrency) 109cdf0e10cSrcweirobj.inSCode(inSCode) 110cdf0e10cSrcweirobj.inUnknown(objFoo) 111cdf0e10cSrcweirobj.inDecimal(inDecimal) 112cdf0e10cSrcweir 113cdf0e10cSrcweir'out parameter ------------------------------------------------------------------------- 114cdf0e10cSrcweiroutBool = false 115cdf0e10cSrcweirobj.outBool(outBool) 116cdf0e10cSrcweiroutByte = 0 117cdf0e10cSrcweirobj.outByte(outByte) 118cdf0e10cSrcweiroutShort = 0 119cdf0e10cSrcweirobj.outShort(outShort) 120cdf0e10cSrcweiroutLong = 0 121cdf0e10cSrcweirobj.outLong(outLong) 122cdf0e10cSrcweiroutFloat = 0 123cdf0e10cSrcweirobj.outFloat(outFloat) 124cdf0e10cSrcweiroutDouble = 0 125cdf0e10cSrcweirobj.outDouble(outDouble) 126cdf0e10cSrcweiroutString = "" 127cdf0e10cSrcweirobj.outString(outString) 128cdf0e10cSrcweiroutVariant = 0 129cdf0e10cSrcweirobj.outVariant(outVariant) 130cdf0e10cSrcweiroutObject = NOTHING 131cdf0e10cSrcweirobj.outObject(outObject) 132cdf0e10cSrcweiroutArray = 0 133cdf0e10cSrcweirobj.outArray(outArray) 134cdf0e10cSrcweirobj.outDate(outDate) 135cdf0e10cSrcweirobj.outCurrency(outCurrency) 136cdf0e10cSrcweirobj.outSCode(outSCode) 137cdf0e10cSrcweirobj.outUnknown(outUnknown) 138cdf0e10cSrcweirobj.outDecimal(outDecimal) 139cdf0e10cSrcweir 140cdf0e10cSrcweir 141cdf0e10cSrcweirIf inBool <> outBool Or inByte <> outByte Or inShort <> outShort Or inLong <> outLong Or _ 142cdf0e10cSrcweir inFloat <> outFloat Or inDouble <> outDouble Or inString <> outString Or _ 143cdf0e10cSrcweir inVariant <> outVariant Or NOT equalUnoObjects(obj, outObject) Or NOT _ 144cdf0e10cSrcweir equalArrays(arString(), outArray()) Or inDate <> outDate Or inCurrency <> outCurrency Or _ 145cdf0e10cSrcweir inSCode.Value <> outSCode.Value Or Not equalUnoObjects(objFoo, outUnknown) Or _ 146cdf0e10cSrcweir inDecimal <> outDecimal Then 147cdf0e10cSrcweir runtest = -1 148cdf0e10cSrcweir exit Function 149cdf0e10cSrcweirEnd If 150cdf0e10cSrcweir 151cdf0e10cSrcweir 152cdf0e10cSrcweir'in-out parameter ------------------------------------------------------------- 153cdf0e10cSrcweir'implementation of inout methods returns the previously set value in out param 154cdf0e10cSrcweirinBool = true 155cdf0e10cSrcweirinBool2 = inBool 156cdf0e10cSrcweirobj.inoutBool(inBool2) 157cdf0e10cSrcweiroutBool = false 158cdf0e10cSrcweirobj.inoutBool(outBool) 159cdf0e10cSrcweirinByte = 10 160cdf0e10cSrcweirinByte2 = inByte 161cdf0e10cSrcweirobj.inoutByte(inByte2) 162cdf0e10cSrcweiroutByte = 0 163cdf0e10cSrcweirobj.inoutByte(outByte) 164cdf0e10cSrcweirinShort = 10 165cdf0e10cSrcweirinShort2 = inShort 166cdf0e10cSrcweirobj.inShort(inShort2) 167cdf0e10cSrcweiroutShort = 0 168cdf0e10cSrcweirobj.inoutShort(outShort) 169cdf0e10cSrcweirinLong = 10 170cdf0e10cSrcweirinLong2 = inLong 171cdf0e10cSrcweirobj.inoutLong(inLong2) 172cdf0e10cSrcweiroutLong = 0 173cdf0e10cSrcweirobj.inoutLong(outLong) 174cdf0e10cSrcweirinFloat = 3.14 175cdf0e10cSrcweirinFloat2 = inFloat 176cdf0e10cSrcweirobj.inoutFloat(inFloat2) 177cdf0e10cSrcweiroutFloat = 0 178cdf0e10cSrcweirobj.inoutFloat(outFloat) 179cdf0e10cSrcweirinDouble= 3.14 180cdf0e10cSrcweirinDouble2 = inDouble 181cdf0e10cSrcweirobj.inoutDouble(inDouble2) 182cdf0e10cSrcweiroutDouble = 0 183cdf0e10cSrcweirobj.inoutDouble(outDouble) 184cdf0e10cSrcweirinString = "in" 185cdf0e10cSrcweirinString2 = inString 186cdf0e10cSrcweirobj.inoutString(inString2) 187cdf0e10cSrcweiroutString = "" 188cdf0e10cSrcweirobj.inoutString(outString) 189cdf0e10cSrcweirinVariant = "in" 190cdf0e10cSrcweirinVariant2 = inVariant 191cdf0e10cSrcweirobj.inoutVariant(inVariant2) 192cdf0e10cSrcweiroutVariant = 0 193cdf0e10cSrcweirobj.inoutVariant(outVariant) 194cdf0e10cSrcweirinObject = factory.createInstance("AxTestComponents.Basic") 195cdf0e10cSrcweirinObject2 = inObject 196cdf0e10cSrcweirobj.inoutObject(inObject2) 197cdf0e10cSrcweiroutObject = NOTHING 198cdf0e10cSrcweirobj.inoutObject(outObject) 199cdf0e10cSrcweirinAr = arString() 200cdf0e10cSrcweirinAr2 = inAr 201cdf0e10cSrcweirobj.inoutArray(inAr2) 202cdf0e10cSrcweiroutArray = 0 203cdf0e10cSrcweirobj.outArray(outArray()) 204cdf0e10cSrcweirinDate = NOW() 205cdf0e10cSrcweirinDate2 = inDate 206cdf0e10cSrcweirobj.inoutDate(inDate2) 207cdf0e10cSrcweiroutDate = 0 208cdf0e10cSrcweirobj.inoutDate(outDate) 209cdf0e10cSrcweirinCurrency = 1234.5678 210cdf0e10cSrcweirinCurrency2 = inCurrency 211cdf0e10cSrcweirobj.inoutCurrency(inCurrency2) 212cdf0e10cSrcweiroutCurrency = 0 213cdf0e10cSrcweirobj.inoutCurrency(outCurrency) 214cdf0e10cSrcweirinSCode.Value = &h80020004 215cdf0e10cSrcweirinSCode2 = inSCode 216cdf0e10cSrcweirobj.inoutSCode(inSCode2) 217cdf0e10cSrcweiroutSCode.Value = 0 218cdf0e10cSrcweirobj.inoutSCode(outSCode) 219cdf0e10cSrcweirinUnknown = objFoo 220cdf0e10cSrcweirinUnknown2 = inUnknown 221cdf0e10cSrcweirobj.inoutUnknown(inUnknown2) 222cdf0e10cSrcweiroutUnknown = Nothing 223cdf0e10cSrcweirobj.inoutUnknown(outUnknown) 224cdf0e10cSrcweirinDecimal = CDec("18446744073709551615") 'highest positiv value of unsigne int64 225cdf0e10cSrcweirinDecimal2 = inDecimal 226cdf0e10cSrcweirobj.inoutDecimal(inDecimal2) 227cdf0e10cSrcweiroutDecimal = 0 228cdf0e10cSrcweirobj.inoutDecimal(outDecimal) 229cdf0e10cSrcweir 230cdf0e10cSrcweirIf inBool <> outBool Or inByte <> outByte Or inShort <> outShort Or inLong <> outLong Or _ 231cdf0e10cSrcweir inFloat <> outFloat Or inDouble <> outDouble Or inString <> outString Or _ 232cdf0e10cSrcweir inVariant <> outVariant Or NOT equalUnoObjects(inObject, outObject) Or _ 233cdf0e10cSrcweir NOT equalArrays(inAr, outArray) Or inDate <> outDate Or inCurrency <> outCurrency Or _ 234cdf0e10cSrcweir inSCode.Value <> outSCode.Value Or Not equalUnoObjects(inUnknown, outUnknown) Or _ 235cdf0e10cSrcweir inDecimal <> outDecimal Then 236cdf0e10cSrcweir runtest = -1 237cdf0e10cSrcweir Exit Function 238cdf0e10cSrcweirEnd If 239cdf0e10cSrcweir 240cdf0e10cSrcweir'properties ------------------------------------------------------------------------- 241cdf0e10cSrcweirinBool = false 242cdf0e10cSrcweiroutBool = true 243cdf0e10cSrcweirobj.prpBool = inBool 244cdf0e10cSrcweiroutBool = obj.prpBool 245cdf0e10cSrcweirinByte = 11 246cdf0e10cSrcweiroutByte = 0 247cdf0e10cSrcweirobj.prpByte = inByte 248cdf0e10cSrcweiroutByte= obj.prpByte 249cdf0e10cSrcweirinShort = 127 250cdf0e10cSrcweiroutShort = 0 251cdf0e10cSrcweirobj.prpShort= inShort 252cdf0e10cSrcweiroutShort= obj.prpShort 253cdf0e10cSrcweirinLong = 1000 254cdf0e10cSrcweiroutLong = 0 255cdf0e10cSrcweirobj.prpLong = inLong 256cdf0e10cSrcweiroutLong= obj.prpLong 257cdf0e10cSrcweirinFloat = 3.14 258cdf0e10cSrcweiroutFloat = 0 259cdf0e10cSrcweirobj.prpFloat = inFloat 260cdf0e10cSrcweiroutFloat= obj.prpFloat 261cdf0e10cSrcweirinDouble = 3.123 262cdf0e10cSrcweiroutDouble = 0 263cdf0e10cSrcweirobj.prpDouble = inDouble 264cdf0e10cSrcweiroutDouble= obj.prpDouble 265cdf0e10cSrcweirinString = "bla" 266cdf0e10cSrcweiroutString = "" 267cdf0e10cSrcweirobj.prpString = inString 268cdf0e10cSrcweiroutString = obj.prpString 269cdf0e10cSrcweirinObject = obj 270cdf0e10cSrcweiroutObject = objNOTHING 271cdf0e10cSrcweirobj.prpObject = inObject 272cdf0e10cSrcweiroutObject = obj.prpObject 273cdf0e10cSrcweirinVariant = "bla" 274cdf0e10cSrcweiroutVariant = 0 275cdf0e10cSrcweirobj.prpVariant = inVariant 276cdf0e10cSrcweiroutVariant= obj.prpVariant 277cdf0e10cSrcweirinArray = arString() 278cdf0e10cSrcweiroutArray = 0 279cdf0e10cSrcweirobj.prpArray = inArray() 280cdf0e10cSrcweiroutArray= obj.prpArray 281cdf0e10cSrcweirinDate = NOW() 282cdf0e10cSrcweiroutDate = 0 283cdf0e10cSrcweirobj.prpDate = inDate 284cdf0e10cSrcweiroutDate = obj.prpDate 285cdf0e10cSrcweirinCurrency = 1234.5678 286cdf0e10cSrcweiroutCurrency = 0 287cdf0e10cSrcweirobj.prpCurrency = inCurrency 288cdf0e10cSrcweiroutCurrency = obj.prpCurrency 289cdf0e10cSrcweirinSCode.Value = &h80020004 290cdf0e10cSrcweiroutSCode.Value = 0 291cdf0e10cSrcweirobj.prpSCode = inSCode 292cdf0e10cSrcweiroutSCode = obj.prpSCode 293cdf0e10cSrcweirinUnknown = objFoo 294cdf0e10cSrcweiroutUnknown= Nothing 295cdf0e10cSrcweirobj.prpUnknown = inUnknown 296cdf0e10cSrcweiroutUnknown = obj.prpUnknown 297cdf0e10cSrcweirinDecimal = CDec("18446744073709551615")' highest unsigned int64 298cdf0e10cSrcweiroutDecimal = 0 299cdf0e10cSrcweirobj.prpDecimal = inDecimal 300cdf0e10cSrcweiroutDecimal = obj.prpDecimal 301cdf0e10cSrcweir 302cdf0e10cSrcweirIf inBool <> outBool Or inByte <> outByte Or inShort <> outShort Or inLong <> outLong Or _ 303cdf0e10cSrcweir inFloat <> outFloat Or inDouble <> outDouble Or inString <> outString Or _ 304cdf0e10cSrcweir inVariant <> outVariant Or NOT equalUnoObjects(inObject, outObject) Or _ 305cdf0e10cSrcweir NOT equalArrays(inArray, outArray) Or inDate <> outDate Or inCurrency <> outCurrency Or _ 306cdf0e10cSrcweir inSCode.Value <> outSCode.Value Or Not equalUnoObjects(inUnknown, outUnknown) Or _ 307cdf0e10cSrcweir inDecimal <> outDecimal Then 308cdf0e10cSrcweir runtest = -1 309cdf0e10cSrcweir Exit Function 310cdf0e10cSrcweirEnd If 311cdf0e10cSrcweir 312cdf0e10cSrcweir' ref parameter ------------------------------------------------------------------------ 313cdf0e10cSrcweirobj.inLong(0) 314cdf0e10cSrcweirinLong = 123 315cdf0e10cSrcweiroutLong = 0 316cdf0e10cSrcweirobj.inLong(0) 317cdf0e10cSrcweirobj.inrefLong(inLong) 318cdf0e10cSrcweirobj.outLong(outLong) 319cdf0e10cSrcweirinVariant = "bla" 320cdf0e10cSrcweiroutVariant = 0 321cdf0e10cSrcweirobj.inVariant(0) 322cdf0e10cSrcweirobj.inrefVariant(inVariant) 323cdf0e10cSrcweirobj.outVariant(outVariant) 324cdf0e10cSrcweirIf inLong <> outLong Or inVariant <> outVariant Then 325cdf0e10cSrcweir runtest = -1 326cdf0e10cSrcweir Exit Function 327cdf0e10cSrcweirEnd If 328cdf0e10cSrcweir 329cdf0e10cSrcweiroutLong = 0 330cdf0e10cSrcweirobj.prprefLong = inLong 331cdf0e10cSrcweiroutLong = obj.prprefLong 332cdf0e10cSrcweiroutVariant = 0 333cdf0e10cSrcweirobj.prprefVariant = inVariant 334cdf0e10cSrcweiroutVariant = obj.prprefVariant 335cdf0e10cSrcweirIf inLong <> outLong Or inVariant <> outVariant Then 336cdf0e10cSrcweir runtest = -1 337cdf0e10cSrcweir Exit Function 338cdf0e10cSrcweirEnd If 339cdf0e10cSrcweir 340cdf0e10cSrcweir 341cdf0e10cSrcweir'vararg -------------------------------------------------------------------------------- 342cdf0e10cSrcweirinLong=1 343cdf0e10cSrcweirinLong2 = 2 344cdf0e10cSrcweirinLong3 = 3 345cdf0e10cSrcweirobj.varargfunc1(inLong) 346cdf0e10cSrcweiroutArray = 0 347cdf0e10cSrcweiroutLong = 0 348cdf0e10cSrcweirobj.varargfunc2(outLong, outArray) 349cdf0e10cSrcweirIf inLong <> outLong Then 350cdf0e10cSrcweir runtest = -1 351cdf0e10cSrcweir Exit Function 352cdf0e10cSrcweirEnd If 353cdf0e10cSrcweirlen1 = UBound(outArray) - LBound(outArray) +1 354cdf0e10cSrcweirIf len1 <> 0 Then 355cdf0e10cSrcweir runtest = -1 356cdf0e10cSrcweir Exit Function 357cdf0e10cSrcweirEnd If 358cdf0e10cSrcweiroutArray = 0 359cdf0e10cSrcweirobj.varargfunc1(inLong, inLong2, inLong3) 360cdf0e10cSrcweirobj.varargfunc2(outLong, outArray) 361cdf0e10cSrcweirlen1 = UBound(outArray) - LBound(outArray) +1 362cdf0e10cSrcweirIf len1 <> 2 Or outArray(0) <> inLong2 Or outArray(1) <> inLong3 Then 363cdf0e10cSrcweir runtest = -1 364cdf0e10cSrcweir Exit Function 365cdf0e10cSrcweirEnd If 366cdf0e10cSrcweir 367cdf0e10cSrcweir 368cdf0e10cSrcweir'defaultvalue --------------------------------------------------------------------------- 369cdf0e10cSrcweirinLong = 0 370cdf0e10cSrcweirinFloat = 0 371cdf0e10cSrcweirinVariant = 0 372cdf0e10cSrcweirinVariant2 = 0 373cdf0e10cSrcweir'defaults are: 1, 2, 4 374cdf0e10cSrcweir'The third parameter is a VARIANT with a default value of 4. COM gives it the type BSTR 375cdf0e10cSrcweirobj.defaultvalue1() 376cdf0e10cSrcweirobj.defaultvalue2(inLong, inFloat, inVariant) 377cdf0e10cSrcweirIf inLong <> 1 Or inFloat <> 2 Or inVariant <> "4" Then 378cdf0e10cSrcweir runtest = -1 379cdf0e10cSrcweir Exit Function 380cdf0e10cSrcweirEnd If 381cdf0e10cSrcweirinLong = 10 382cdf0e10cSrcweirinFloat = 11 383cdf0e10cSrcweirinLong2 = inLong 384cdf0e10cSrcweirinFloat2 = inFloat 385cdf0e10cSrcweirinVariant = 0 386cdf0e10cSrcweirinVariant = 0 387cdf0e10cSrcweirobj.defaultvalue1(inLong, inFloat) 388cdf0e10cSrcweirobj.defaultvalue2(inLong, inFloat, inVariant) 389cdf0e10cSrcweirIf inLong <> inLong2 Or inFloat <> inFloat2 Or inVariant <> "4" Then 390cdf0e10cSrcweir runtest = -1 391cdf0e10cSrcweir Exit Function 392cdf0e10cSrcweirEnd If 393cdf0e10cSrcweir 394cdf0e10cSrcweir'optional parameters ---------------------------------------------------------------- 395cdf0e10cSrcweirinLong = 100 396cdf0e10cSrcweiroutLong = 0 397cdf0e10cSrcweirobj.optional1(inLong) 398cdf0e10cSrcweirobj.optional2(outLong) 399cdf0e10cSrcweirIf inLong <> outLong Then 400cdf0e10cSrcweir runtest = -1 401cdf0e10cSrcweir Exit Function 402cdf0e10cSrcweirEnd If 403cdf0e10cSrcweir 404cdf0e10cSrcweirinLong2 = 101 405cdf0e10cSrcweiroutLong2 = 0 406cdf0e10cSrcweirobj.optional1(inLong, inLong2) 407cdf0e10cSrcweirobj.optional2(outLong, outLong2) 408cdf0e10cSrcweirIf inLong <> outLong AND inLong2 <> outLong2 Then 409cdf0e10cSrcweir runtest = -1 410cdf0e10cSrcweir Exit Function 411cdf0e10cSrcweirEnd If 412cdf0e10cSrcweir 413cdf0e10cSrcweirinLong2 = 101 414cdf0e10cSrcweiroutLong2 = 0 415cdf0e10cSrcweirobj.optional1(inLong, inLong2) 416cdf0e10cSrcweirobj.optional1(inLong) 417cdf0e10cSrcweirobj.optional2(outLong, outLong2) 418cdf0e10cSrcweirIf inLong <> outLong AND inLong2 <> outLong2 Then 419cdf0e10cSrcweir runtest = -1 420cdf0e10cSrcweir Exit Function 421cdf0e10cSrcweirEnd If 422cdf0e10cSrcweir 423cdf0e10cSrcweirinLong = 10 424cdf0e10cSrcweirinLong2 = 100 425cdf0e10cSrcweiroutLong = 5 426cdf0e10cSrcweiroutLong2 = 6 427cdf0e10cSrcweirobj.optional3() 428cdf0e10cSrcweirobj.optional3(inLong, inLong2) 429cdf0e10cSrcweirobj.optional4(outLong, outLong2) 'outLong = 10, outLong2 = 100 430cdf0e10cSrcweirIf inLong <> outLong AND inLong2 <> outLong2 Then 431cdf0e10cSrcweir runtest = -1 432cdf0e10cSrcweir Exit Function 433cdf0e10cSrcweirEnd If 434cdf0e10cSrcweirinLong = 10 435cdf0e10cSrcweirinLong2 = 100 436cdf0e10cSrcweirinLong3 = inLong 437cdf0e10cSrcweirinLong4 = inLong2 438cdf0e10cSrcweirobj.optional4(inLong, inLong) 439cdf0e10cSrcweiroutLong = 0 440cdf0e10cSrcweiroutLong2 = 0 441cdf0e10cSrcweirobj.optional5(outLong, outLong2) 442cdf0e10cSrcweirIf inLong3 <> outLong AND inLong4 <> outLong2 Then 443cdf0e10cSrcweir runtest = -1 444cdf0e10cSrcweir Exit Function 445cdf0e10cSrcweirEnd If 446cdf0e10cSrcweir 447cdf0e10cSrcweirinLong = 10 448cdf0e10cSrcweiroutLong = 5 449cdf0e10cSrcweirobj.optional3(inLong) 450cdf0e10cSrcweirobj.optional4(outLong) 451cdf0e10cSrcweirIf inLong <> outLong Then 452cdf0e10cSrcweir runtest = -1 453cdf0e10cSrcweir Exit Function 454cdf0e10cSrcweirEnd If 455cdf0e10cSrcweirinLong = 10 456cdf0e10cSrcweirinLong2 = inLong 457cdf0e10cSrcweiroutLong = 0 458cdf0e10cSrcweirobj.optional4(inLong) 459cdf0e10cSrcweirobj.optional5(outLong) 460cdf0e10cSrcweirIf inLong2 <> outLong Then 461cdf0e10cSrcweir runtest = -1 462cdf0e10cSrcweir Exit Function 463cdf0e10cSrcweirEnd If 464cdf0e10cSrcweir 465cdf0e10cSrcweir'named arguments------------------------------------------------------------------------- 466cdf0e10cSrcweir'all args As named args, different order 467cdf0e10cSrcweirobj.optional6(0, 0, 0, 0) 468cdf0e10cSrcweirinLong = 1 469cdf0e10cSrcweirinLong2 = 2 470cdf0e10cSrcweirinLong3 = 3 471cdf0e10cSrcweirinLong4 = 4 472cdf0e10cSrcweirobj.optional6(val4:= inLong4, val3:=inLong3, val2:=inLong2, val1:= inLong) 473cdf0e10cSrcweirDim outLong3 As Long 474cdf0e10cSrcweirDim outLong4 As Long 475cdf0e10cSrcweiroutLong = 0 476cdf0e10cSrcweiroutLong2 = 0 477cdf0e10cSrcweiroutLong3 = 0 478cdf0e10cSrcweiroutLong4 = 0 479cdf0e10cSrcweirobj.optional7(outLong, outLong2, outLong3, outLong4) 480cdf0e10cSrcweirIf inLong <> outLong Or inLong2 <> outLong2 _ 481cdf0e10cSrcweir Or inLong3 <> outLong3 Or inLong4 <> outLong4 Then 482cdf0e10cSrcweir runtest = -1 483cdf0e10cSrcweir Exit Function 484cdf0e10cSrcweirEnd If 485cdf0e10cSrcweir 486cdf0e10cSrcweir'mixed positional and named args with omitted args 487cdf0e10cSrcweirDim scode_paramNotFound As New com.sun.star.bridge.oleautomation.SCode 488cdf0e10cSrcweirscode_paramNotFound.Value = &h80020004 489cdf0e10cSrcweir 490cdf0e10cSrcweirobj.optional6(0, 0, 0, 0) 491cdf0e10cSrcweir'val1 and val3 will be DISP_E_PARAMNOTFOUND 492cdf0e10cSrcweirobj.optional6(, inLong2, val4:=inLong4) 493cdf0e10cSrcweirDim outSCode1, outSCode2 494cdf0e10cSrcweirobj.optional7(outSCode, outLong2, outSCode2, outLong4) 495cdf0e10cSrcweirIf outSCode.Value <> scode_paramNotFound.Value Or inLong2 <> outLong2 _ 496cdf0e10cSrcweir Or outSCode2.Value <> scode_paramNotFound.Value Or inLong4 <> outLong4 Then 497cdf0e10cSrcweir runtest = -1 498cdf0e10cSrcweir Exit Function 499cdf0e10cSrcweirEnd If 500cdf0e10cSrcweir 501cdf0e10cSrcweir'mixed positional and named args with ommitted args as out -args 502cdf0e10cSrcweirinLong = 1 503cdf0e10cSrcweirinLong2 = 2 504cdf0e10cSrcweirinLong3 = 3 505cdf0e10cSrcweirinLong4 = 4 506cdf0e10cSrcweirobj.optional6(inLong, inLong2, inLong3, inLong4) 507cdf0e10cSrcweiroutLong2 = 0 508cdf0e10cSrcweiroutLong3 = 0 509cdf0e10cSrcweirobj.optional7(,outLong2, val3:= outLong3) 510cdf0e10cSrcweirIf inLong2 <> outLong2 Or inLong3 <> outLong3 Then 511cdf0e10cSrcweir runtest = -1 512cdf0e10cSrcweir Exit Function 513cdf0e10cSrcweirEnd If 514cdf0e10cSrcweir 515cdf0e10cSrcweir'test properties with additional arguments ------------------------------------ 516cdf0e10cSrcweirinLong = 10 517cdf0e10cSrcweirinLong2 = 20 518cdf0e10cSrcweirinLong3 = 30 519cdf0e10cSrcweiroutLong = 0 520cdf0e10cSrcweiroutLong2 = 0 521cdf0e10cSrcweiroutLong3 = 0 522cdf0e10cSrcweirobj.prpMultiArg1(0,0) = 0 523cdf0e10cSrcweir'obj.prpMultiArg1 = 0 524cdf0e10cSrcweirobj.prpMultiArg1(inLong,inLong2) = inLong3 525cdf0e10cSrcweiroutLong3 = obj.prpMultiArg1(outLong, outLong2) 526cdf0e10cSrcweirIf outLong <> 10 Or outLong2 <> 02 Or outLong3 <> 30 Then 527cdf0e10cSrcweir runtest = -1 528cdf0e10cSrcweir Exit Function 529cdf0e10cSrcweirEnd If 530cdf0e10cSrcweir 531cdf0e10cSrcweiroutLong = 0 532cdf0e10cSrcweiroutLong2 = 0 533cdf0e10cSrcweirobj.prpMultiArg1(0,0) = 0 534cdf0e10cSrcweirobj.prpMultiArg1(1) = 3 535cdf0e10cSrcweiroutLong2 = obj.prpMultiArg1(outLong) 536cdf0e10cSrcweirIf outLong <> 1 Or outLong2 <> 3 Then 537cdf0e10cSrcweir runtest = -1 538cdf0e10cSrcweir Exit Function 539cdf0e10cSrcweirEnd If 540cdf0e10cSrcweir 541cdf0e10cSrcweiroutLong = 0 542cdf0e10cSrcweiroutLong2 = 0 543cdf0e10cSrcweirobj.prpMultiArg1(0,0) = 0 544cdf0e10cSrcweirobj.prpMultiArg1(val2:= 1) = 3 545cdf0e10cSrcweiroutLong2 = obj.prpMultiArg1(val2:=outLong) 546cdf0e10cSrcweirIf outLong <> 1 Or outLong2 <> 3 Then 547cdf0e10cSrcweir runtest = -1 548cdf0e10cSrcweir Exit Function 549cdf0e10cSrcweirEnd If 550cdf0e10cSrcweir 551cdf0e10cSrcweiroutLong = -1 552cdf0e10cSrcweiroutLong2 = -1 553cdf0e10cSrcweirobj.prpMultiArg2(0) = 0 554cdf0e10cSrcweiroutLong = obj.prpMultiArg2GetValues(outLong, outLong2) 555cdf0e10cSrcweirIf outLong <> 0 Or outLong2 <> 0 Then 556cdf0e10cSrcweir runtest = -1 557cdf0e10cSrcweir Exit Function 558cdf0e10cSrcweirEnd If 559cdf0e10cSrcweir 560cdf0e10cSrcweir 561cdf0e10cSrcweiroutLong = 0 562cdf0e10cSrcweiroutLong2 = 0 563cdf0e10cSrcweirobj.prpMultiArg2(1) = 2 564cdf0e10cSrcweirobj.prpMultiArg2GetValues(outLong, outLong2) 565cdf0e10cSrcweirIf outLong <> 1 Or outLong2 <> 2 Then 566cdf0e10cSrcweir runtest = -1 567cdf0e10cSrcweir Exit Function 568cdf0e10cSrcweirEnd If 569cdf0e10cSrcweir 570cdf0e10cSrcweir 571cdf0e10cSrcweir 572cdf0e10cSrcweir' other tests ------------------------------------------------------------------ 573cdf0e10cSrcweirobj.inObject(NOTHING) 574cdf0e10cSrcweiroutObject = NOTHING 575cdf0e10cSrcweir'bridge should return an XInterface any with null pointer 576cdf0e10cSrcweir'A basic errOr should occur if this is not the case 577cdf0e10cSrcweirobj.outObject(outObject) 578cdf0e10cSrcweir 579cdf0e10cSrcweirIf Not IsNull(outObject) Then 580cdf0e10cSrcweir runtest = -1 581cdf0e10cSrcweir Exit Function 582cdf0e10cSrcweirEnd If 583cdf0e10cSrcweir'Decimal passed by reference 584cdf0e10cSrcweirinrefDecimal = CDec("9223372036854775807") 'highest positiv value of int64 585cdf0e10cSrcweirobj.inrefDecimal(inrefDecimal) 586cdf0e10cSrcweiroutrefDecimal = 0 587cdf0e10cSrcweirobj.outDecimal(outrefDecimal) 588cdf0e10cSrcweirIf inrefDecimal <> outrefDecimal Then 589cdf0e10cSrcweir runtest = -1 590cdf0e10cSrcweir Exit Function 591cdf0e10cSrcweirEnd If 592cdf0e10cSrcweir 593cdf0e10cSrcweir' Test Automation object with dual interfaces ------------------------------------ 594cdf0e10cSrcweirdim dispatcher as object 595cdf0e10cSrcweirdim oExplorer as object 596cdf0e10cSrcweirdispatcher = createUnoService("com.sun.star.bridge.OleObjectFactory") 597cdf0e10cSrcweiroExplorer = dispatcher.createInstance("InternetExplorer.Application") 598cdf0e10cSrcweirIf Not IsNull(oExplorer) Then 599cdf0e10cSrcweir oExplorer.visible = true 600cdf0e10cSrcweir oExplorer.Navigate2("http://www.openoffice.org") 601cdf0e10cSrcweirElse 602cdf0e10cSrcweir MsgBox("Could not perform test with Internet Explorer!") 603cdf0e10cSrcweirEnd If 604cdf0e10cSrcweir 605cdf0e10cSrcweir 606cdf0e10cSrcweirEnd Function 607cdf0e10cSrcweir 608cdf0e10cSrcweir'One dimensional arrays with simple types. 609cdf0e10cSrcweir'lower bound must be 0 610cdf0e10cSrcweirFunction equalArrays(ar1, ar2) 611cdf0e10cSrcweirDim len1 612cdf0e10cSrcweirDim len2 613cdf0e10cSrcweirlen1 = UBound(ar1) - LBound(ar1) + 1 614cdf0e10cSrcweirlen2 = UBound(ar2) - LBound(ar2) + 1 615cdf0e10cSrcweirIf len1 <> len2 Then 616cdf0e10cSrcweir equalArrays = false 617cdf0e10cSrcweir Exit Function 618cdf0e10cSrcweirEnd If 619cdf0e10cSrcweirDim counter 620cdf0e10cSrcweirFOr counter = 0 To len1 - 1 621cdf0e10cSrcweir If ar1(counter) <> ar2(counter) Then 622cdf0e10cSrcweir equalArrays = false 623cdf0e10cSrcweir Exit Function 624cdf0e10cSrcweir End If 625cdf0e10cSrcweirNext 626cdf0e10cSrcweirequalArrays = true 627cdf0e10cSrcweirEnd Function 628cdf0e10cSrcweir 629cdf0e10cSrcweir 630