1'************************************************************************* 2' 3' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4' 5' Copyright 2000, 2010 Oracle and/or its affiliates. 6' 7' OpenOffice.org - a multi-platform office productivity suite 8' 9' This file is part of OpenOffice.org. 10' 11' OpenOffice.org is free software: you can redistribute it and/or modify 12' it under the terms of the GNU Lesser General Public License version 3 13' only, as published by the Free Software Foundation. 14' 15' OpenOffice.org is distributed in the hope that it will be useful, 16' but WITHOUT ANY WARRANTY; without even the implied warranty of 17' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18' GNU Lesser General Public License version 3 for more details 19' (a copy is included in the LICENSE file that accompanied this code). 20' 21' You should have received a copy of the GNU Lesser General Public License 22' version 3 along with OpenOffice.org. If not, see 23' <http://www.openoffice.org/license.html> 24' for a copy of the LGPLv3 License. 25' 26'************************************************************************* 27 28Option Explicit On 29Option Strict On 30 31imports System 32imports uno 33imports uno.util 34imports unoidl.com.sun.star.lang 35imports unoidl.com.sun.star.uno 36imports unoidl.com.sun.star.test.bridge 37imports System.Windows.Forms 38imports System.Diagnostics 39imports System.Reflection 40 41 42Namespace vb_testobj 43Public Class VBBridgeTestObject 44 Inherits WeakBase 45 Implements XRecursiveCall, XBridgeTest2 46 47 Private m_xContext As XComponentContext 48 49 Public Sub New (xContext As XComponentContext) 50 MyBase.New 51 m_xContext = xContext 52 End Sub 53 54 Private m_bool As Boolean 55 Private m_char As Char 56 Private m_byte As Byte 57 Private m_short As Short 58 Private m_ushort As UInt16 59 Private m_long As Integer 60 Private m_ulong As UInt32 61 Private m_hyper As Long 62 Private m_uhyper As UInt64 63 Private m_float As Single 64 Private m_double As Double 65 Private m_string As String 66 Private m_xInterface As Object 67 Private m_any As Any 68 Private m_testEnum As TestEnum = TestEnum.TEST 69 Private m_testElements() As TestElement = New TestElement(){} 70 Private m_testDataElements As TestDataElements = New TestDataElements 71 Private m_nLastCallId As Integer = 0 72 Private m_bFirstCall As Boolean = True 73 Private m_bSequenceOfCallTestPassed As Boolean = True 74 75 Private m_arBool() As Boolean 76 Private m_arChar() As Char 77 Private m_arByte() As Byte 78 Private m_arShort() As Short 79 Private m_arLong() As Integer 80 Private m_arHyper() As Long 81 Private m_arUShort() As UInt16 82 Private m_arULong() As UInt32 83 Private m_arUHyper() As UInt64 84 Private m_arString() As String 85 Private m_arFloat() As Single 86 Private m_arDouble() As Double 87 Private m_arEnum() As TestEnum 88 Private m_arObject() As Object 89 Private m_arLong2()() As Integer 90 Private m_arLong3()()() As Integer 91 Private m_arAny() As Any 92 93 Public Overridable Sub setValues( _ 94 bBool As Boolean, aChar As Char, nByte As Byte, nShort As Short, _ 95 nUShort As UInt16, nLong As Integer, nULong As UInt32, _ 96 nHyper As Long, nUHyper As UInt64, fFloat As Single, _ 97 fDouble As Double, testEnum As TestEnum, str As String, _ 98 xInterface As Object, any As Any, testElements() As TestElement, _ 99 testDataElements As TestDataElements) _ 100 Implements XBridgeTest2.setValues 101#if DEBUG 102 ' Console.WriteLine( "##### " + GetType().FullName + ".setValues:" + any ) 103#endif 104 m_bool = bBool 105 m_char = aChar 106 m_byte = nByte 107 m_short = nShort 108 m_ushort = nUShort 109 m_long = nLong 110 m_ulong = nULong 111 m_hyper = nHyper 112 m_uhyper = nUHyper 113 m_float = fFloat 114 m_double = fDouble 115 m_testEnum = testEnum 116 m_string = str 117 m_xInterface = xInterface 118 m_any = any 119 m_testElements = testElements 120 m_testDataElements = testDataElements 121 End Sub 122 123 Public Overridable Function setValues2( _ 124 ByRef io_bool As Boolean, ByRef io_char As Char, _ 125 ByRef io_byte As Byte, ByRef io_short As Short, _ 126 ByRef io_ushort As UInt16, ByRef io_long As Integer, _ 127 ByRef io_ulong As UInt32, ByRef io_hyper As Long, _ 128 ByRef io_uhyper As UInt64, ByRef io_float As Single, _ 129 ByRef io_double As Double, ByRef io_testEnum As TestEnum, _ 130 ByRef io_string As String, ByRef io_xInterface As Object, _ 131 ByRef io_any As Any, ByRef io_testElements() As TestElement, _ 132 ByRef io_testDataElements As TestDataElements) As TestDataElements _ 133 Implements XBridgeTest2.setValues2 134 135#if DEBUG 136 'Console.WriteLine( "##### " + GetType().FullName + ".setValues2:" + io_any ) 137#endif 138 139 m_bool = io_bool 140 m_char = io_char 141 m_byte = io_byte 142 m_short = io_short 143 m_ushort = io_ushort 144 m_long = io_long 145 m_ulong = io_ulong 146 m_hyper = io_hyper 147 m_uhyper = io_uhyper 148 m_float = io_float 149 m_double = io_double 150 m_testEnum = io_testEnum 151 m_string = io_string 152 m_xInterface = io_xInterface 153 m_any = io_any 154 m_testElements = DirectCast(io_testElements.Clone(), TestElement()) 155 m_testDataElements = io_testDataElements 156 157 Dim temp As TestElement = io_testElements(0) 158 io_testElements(0) = io_testElements(1) 159 io_testElements(1) = temp 160 161 Return m_testDataElements 162 End Function 163 164 Public Overridable Function getValues( _ 165 ByRef o_bool As Boolean, ByRef o_char As Char, _ 166 ByRef o_byte As Byte, ByRef o_short As Short, _ 167 ByRef o_ushort As UInt16, ByRef o_long As Integer, _ 168 ByRef o_ulong As UInt32, ByRef o_hyper As Long, _ 169 ByRef o_uhyper As UInt64, ByRef o_float As Single, _ 170 ByRef o_double As Double, ByRef o_testEnum As TestEnum, _ 171 ByRef o_string As String, ByRef o_xInterface As Object, _ 172 ByRef o_any As Any, ByRef o_testElements() As TestElement, _ 173 ByRef o_testDataElements As TestDataElements) As TestDataElements _ 174 Implements XBridgeTest2.getValues 175#if DEBUG 176 'Console.WriteLine( "##### " + GetType().FullName + ".getValues" ) 177#endif 178 179 o_bool = m_bool 180 o_char = m_char 181 o_byte = m_byte 182 o_short = m_short 183 o_ushort = m_ushort 184 o_long = m_long 185 o_ulong = m_ulong 186 o_hyper = m_hyper 187 o_uhyper = m_uhyper 188 o_float = m_float 189 o_double = m_double 190 o_testEnum = m_testEnum 191 o_string = m_string 192 o_xInterface = m_xInterface 193 o_any = m_any 194 o_testElements = m_testElements 195 o_testDataElements = m_testDataElements 196 197 Return m_testDataElements 198 End Function 199 200 ' Attributes --------------------------------------------------------- 201 Public Overridable Property Bool As Boolean _ 202 Implements XBridgeTest2.Bool 203 Get 204 Return m_bool 205 End Get 206 Set (Value As Boolean) 207 m_bool = value 208 End Set 209 End Property 210 211 Public Overridable Property [Byte] As Byte _ 212 Implements XBridgeTest2.Byte 213 Get 214 Return m_byte 215 End Get 216 Set (Value As Byte) 217 m_byte = value 218 End Set 219 End Property 220 221 Public Overridable Property [Char] As Char _ 222 Implements XBridgeTest2.Char 223 Get 224 Return m_char 225 End Get 226 Set (Value As Char) 227 m_char = value 228 End Set 229 End Property 230 231 Public Overridable Property [Short] As Short _ 232 Implements XBridgeTest2.Short 233 Get 234 Return m_short 235 End Get 236 Set (Value As Short) 237 m_short = value 238 End Set 239 End Property 240 241 Public Overridable Property [UShort] As UInt16 _ 242 Implements XBridgeTest2.UShort 243 Get 244 Return m_ushort 245 End Get 246 Set (Value As UInt16) 247 m_ushort = value 248 End Set 249 End Property 250 251 Public Overridable Property [Long] As Integer _ 252 Implements XBridgeTest2.Long 253 Get 254 Return m_long 255 End Get 256 Set (Value As Integer) 257 m_long = value 258 End Set 259 End Property 260 261 Public Overridable Property [ULong]() As UInt32 _ 262 Implements XBridgeTest2.ULong 263 Get 264 Return m_ulong 265 End Get 266 Set (Value As UInt32) 267 m_ulong = value 268 End Set 269 End Property 270 271 Public Overridable Property Hyper As Long _ 272 Implements XBridgeTest2.Hyper 273 Get 274 Return m_hyper 275 End Get 276 Set (Value As Long) 277 m_hyper = value 278 End Set 279 End Property 280 281 Public Overridable Property UHyper As UInt64 _ 282 Implements XBridgeTest2.UHyper 283 Get 284 Return m_uhyper 285 End Get 286 Set (Value As UInt64) 287 m_uhyper = value 288 End Set 289 End Property 290 291 Public Overridable Property Float As Single _ 292 Implements XBridgeTest2.Float 293 Get 294 Return m_float 295 End Get 296 Set (Value As Single) 297 m_float = value 298 End Set 299 End Property 300 301 Public Overridable Property [Double] As Double _ 302 Implements XBridgeTest2.Double 303 Get 304 Return m_double 305 End Get 306 Set (Value As Double) 307 m_double = value 308 End Set 309 End Property 310 311 Public Overridable Property [Enum] As TestEnum _ 312 Implements XBridgeTest2.Enum 313 Get 314 Return m_testEnum 315 End Get 316 Set (Value As TestEnum) 317 m_testEnum = value 318 End Set 319 End Property 320 321 Public Overridable Property [String] As String _ 322 Implements XBridgeTest2.String 323 Get 324 Return m_string 325 End Get 326 Set (Value As String) 327 m_string = value 328 End Set 329 End Property 330 331 Public Overridable Property [Interface] As Object _ 332 Implements XBridgeTest2.Interface 333 Get 334 Return m_xInterface 335 End Get 336 Set (Value As Object) 337 m_xInterface = value 338 End Set 339 End Property 340 341 Public Overridable Property Any As uno.Any _ 342 Implements XBridgeTest2.Any 343 Get 344#if DEBUG 345' Console.WriteLine( "##### " + GetType().FullName + ".Any" ) 346#endif 347 Return m_any 348 End Get 349 Set (Value As Any) 350#if DEBUG 351 'Console.WriteLine( "##### " + GetType().FullName + ".Any:" + value ) 352#endif 353 m_any = value 354 End Set 355 End Property 356 357 Public Overridable Property Sequence As TestElement() _ 358 Implements XBridgeTest2.Sequence 359 Get 360 Return m_testElements 361 End Get 362 Set (Value() As TestElement) 363 m_testElements = value 364 End Set 365 End Property 366 367 Public Overridable Property Struct As TestDataElements _ 368 Implements XBridgeTest2.Struct 369 Get 370 Return m_testDataElements 371 End Get 372 Set (Value As TestDataElements) 373 m_testDataElements = value 374 End Set 375 End Property 376 377 Public Overridable Function transportAny(value As Any) As Any _ 378 Implements XBridgeTest2.transportAny 379 Return value 380 End Function 381 382 Public Overridable Sub [call](nCallId As Integer, nWaitMUSEC As Integer) _ 383 Implements XBridgeTest2.call 384 385 Threading.Thread.Sleep(CType(nWaitMUSEC / 10000, Integer)) 386 If m_bFirstCall = True 387 m_bFirstCall = False 388 Else 389 m_bSequenceOfCallTestPassed = m_bSequenceOfCallTestPassed And (nCallId > m_nLastCallId) 390 End If 391 m_nLastCallId = nCallId 392 End Sub 393 394 Public Overridable Sub callOneway(nCallId As Integer, nWaitMUSEC As Integer) _ 395 Implements XBridgeTest2.callOneway 396 397 Threading.Thread.Sleep(CType(nWaitMUSEC / 10000, Integer)) 398 m_bSequenceOfCallTestPassed = m_bSequenceOfCallTestPassed And (nCallId > m_nLastCallId) 399 m_nLastCallId = nCallId 400 End Sub 401 402 Public Overridable Function sequenceOfCallTestPassed() As Boolean _ 403 Implements XBridgeTest2.sequenceOfCallTestPassed 404 Return m_bSequenceOfCallTestPassed 405 End Function 406 407 Public Overridable Sub callRecursivly(xCall As XRecursiveCall, nToCall As Integer) _ 408 Implements XRecursiveCall.callRecursivly 409 SyncLock (Me) 410 If nToCall <> 0 411 nToCall = nToCall - 1 412 xCall.callRecursivly(Me , nToCall) 413 End If 414 End SyncLock 415 End Sub 416 417 Public Overridable Sub startRecursiveCall(xCall As XRecursiveCall, nToCall As Integer) _ 418 Implements XBridgeTest2.startRecursiveCall 419 SyncLock (Me) 420 If nToCall <> 0 421 nToCall = nToCall - 1 422 xCall.callRecursivly(Me , nToCall ) 423 End If 424 End SyncLock 425 End Sub 426 427 ' XBridgeTest 428 Public Overridable Function raiseException( _ 429 nArgumentPos As Short, rMsg As String, xContext As Object) As TestDataElements _ 430 Implements XBridgeTest2.raiseException 431 Throw New IllegalArgumentException(rMsg, xContext, nArgumentPos) 432 End Function 433 434 Public Overridable Sub raiseRuntimeExceptionOneway(rMsg As String , xContext As Object) _ 435 Implements XBridgeTest2.raiseRuntimeExceptionOneway 436 Throw New RuntimeException(rMsg, xContext) 437 End Sub 438 439 Public Overridable Property RuntimeException As Integer _ 440 Implements XBridgeTest2.RuntimeException 441 Get 442 Throw New RuntimeException(m_string, m_xInterface) 443 End Get 444 Set (Value As Integer) 445 Throw New RuntimeException(m_string, m_xInterface) 446 End Set 447 End Property 448 449 ' XBridgeTest2 450 Public Overridable Function setDim2(val()() As Integer) As Integer()() _ 451 Implements XBridgeTest2.setDim2 452 m_arLong2 = val 453 Return val 454 End Function 455 456 Public Overridable Function setDim3(val()()() As Integer) As Integer()()() _ 457 Implements XBridgeTest2.setDim3 458 m_arLong3 = val 459 Return val 460 End Function 461 462 Public Overridable Function setSequenceAny(val() As Any) As Any() _ 463 Implements XBridgeTest2.setSequenceAny 464 m_arAny = val 465 Return val 466 End Function 467 468 Public Overridable Function setSequenceBool(val() As Boolean) As Boolean() _ 469 Implements XBridgeTest2.setSequenceBool 470 m_arBool = val 471 Return val 472 End Function 473 474 Public Overridable Function setSequenceByte(val() As Byte) As Byte() _ 475 Implements XBridgeTest2.setSequenceByte 476 m_arByte = val 477 Return val 478 End Function 479 480 Public Overridable Function setSequenceChar(val() As Char) As Char() _ 481 Implements XBridgeTest2.setSequenceChar 482 m_arChar = val 483 Return val 484 End Function 485 486 Public Overridable Function setSequenceShort(val() As Short) As Short() _ 487 Implements XBridgeTest2.setSequenceShort 488 m_arShort = val 489 Return val 490 End Function 491 492 Public Overridable Function setSequenceLong(val() As Integer) As Integer() _ 493 Implements XBridgeTest2.setSequenceLong 494 495 m_arLong = val 496 Return val 497 End Function 498 499 Public Overridable Function setSequenceHyper(val() As Long) As Long() _ 500 Implements XBridgeTest2.setSequenceHyper 501 m_arHyper = val 502 Return val 503 End Function 504 505 Public Overridable Function setSequenceFloat(val() As Single) As Single() _ 506 Implements XBridgeTest2.setSequenceFloat 507 m_arFloat = val 508 Return val 509 End Function 510 511 Public Overridable Function setSequenceDouble(val() As Double) As Double() _ 512 Implements XBridgeTest2.setSequenceDouble 513 m_arDouble = val 514 Return val 515 End Function 516 517 Public Overridable Function setSequenceEnum(val() As TestEnum) As TestEnum() _ 518 Implements XBridgeTest2.setSequenceEnum 519 m_arEnum = val 520 Return val 521 End Function 522 523 Public Overridable Function setSequenceUShort(val() As UInt16) As UInt16() _ 524 Implements XBridgeTest2.setSequenceUShort 525 m_arUShort = val 526 Return val 527 End Function 528 529 Public Overridable Function setSequenceULong(val() As UInt32) As UInt32() _ 530 Implements XBridgeTest2.setSequenceULong 531 m_arULong = val 532 Return val 533 End Function 534 535 Public Overridable Function setSequenceUHyper(val() As UInt64) As UInt64() _ 536 Implements XBridgeTest2.setSequenceUHyper 537 m_arUHyper = val 538 Return val 539 End Function 540 541 Public Overridable Function setSequenceXInterface(val() As Object ) As Object() _ 542 Implements XBridgeTest2.setSequenceXInterface 543 m_arObject = val 544 Return val 545 End Function 546 547 Public Overridable Function setSequenceString(val() As String) As String() _ 548 Implements XBridgeTest2.setSequenceString 549 m_arString = val 550 Return val 551 End Function 552 553 Public Overridable Function setSequenceStruct(val() As TestElement) As TestElement() _ 554 Implements XBridgeTest2.setSequenceStruct 555 m_testElements = val 556 Return val 557 End Function 558 559 Public Overridable Sub setSequencesInOut( _ 560 ByRef aSeqBoolean() As Boolean, ByRef aSeqChar() As Char, _ 561 ByRef aSeqByte() As Byte, ByRef aSeqShort() As Short, _ 562 ByRef aSeqUShort() As UInt16, ByRef aSeqLong() As Integer, _ 563 ByRef aSeqULong() As UInt32, ByRef aSeqHyper() As Long, _ 564 ByRef aSeqUHyper() As UInt64, ByRef aSeqFloat() As Single, _ 565 ByRef aSeqDouble() As Double, ByRef aSeqTestEnum() As TestEnum, _ 566 ByRef aSeqString() As String, ByRef aSeqXInterface() As Object, _ 567 ByRef aSeqAny() As Any, ByRef aSeqDim2()() As Integer, _ 568 ByRef aSeqDim3()()() As Integer) _ 569 Implements XBridgeTest2.setSequencesInOut 570 571 m_arBool = aSeqBoolean 572 m_arChar = aSeqChar 573 m_arByte = aSeqByte 574 m_arShort = aSeqShort 575 m_arUShort = aSeqUShort 576 m_arLong = aSeqLong 577 m_arULong = aSeqULong 578 m_arHyper = aSeqHyper 579 m_arUHyper = aSeqUHyper 580 m_arFloat = aSeqFloat 581 m_arDouble = aSeqDouble 582 m_arEnum = aSeqTestEnum 583 m_arString = aSeqString 584 m_arObject = aSeqXInterface 585 m_arAny = aSeqAny 586 m_arLong2 = aSeqDim2 587 m_arLong3 = aSeqDim3 588 End Sub 589 590 Public Overridable Sub setSequencesOut( _ 591 ByRef aSeqBoolean() As Boolean, ByRef aSeqChar() As Char, _ 592 ByRef aSeqByte() As Byte, ByRef aSeqShort() As Short, _ 593 ByRef aSeqUShort() As UInt16, ByRef aSeqLong() As Integer, _ 594 ByRef aSeqULong() As UInt32, ByRef aSeqHyper() As Long, _ 595 ByRef aSeqUHyper() As UInt64, ByRef aSeqFloat() As Single, _ 596 ByRef aSeqDouble() As Double, ByRef aSeqTestEnum() As TestEnum, _ 597 ByRef aSeqString() As String, ByRef aSeqXInterface() As Object, _ 598 ByRef aSeqAny() As Any, ByRef aSeqDim2()() As Integer, _ 599 ByRef aSeqDim3()()() As Integer) _ 600 Implements XBridgeTest2.setSequencesOut 601 602 aSeqBoolean = m_arBool 603 aSeqChar = m_arChar 604 aSeqByte = m_arByte 605 aSeqShort = m_arShort 606 aSeqUShort = m_arUShort 607 aSeqLong = m_arLong 608 aSeqULong = m_arULong 609 aSeqHyper = m_arHyper 610 aSeqUHyper = m_arUHyper 611 aSeqFloat = m_arFloat 612 aSeqDouble = m_arDouble 613 aSeqTestEnum = m_arEnum 614 aSeqString = m_arString 615 aSeqXInterface = m_arObject 616 aSeqAny = m_arAny 617 aSeqDim2 = m_arLong2 618 aSeqDim3 = m_arLong3 619 620 End Sub 621 622End Class 623 624End Namespace 625