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