1cdf0e10cSrcweir<?xml version="1.0" encoding="UTF-8"?>
2cdf0e10cSrcweir<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
3cdf0e10cSrcweir<script:module xmlns:script="http://openoffice.org/2000/script" script:name="lang_XComponent" script:language="StarBasic">
4cdf0e10cSrcweir
5cdf0e10cSrcweir
6cdf0e10cSrcweir'*************************************************************************
7cdf0e10cSrcweir'
8*3e6afcd2SAndrew Rist'  Licensed to the Apache Software Foundation (ASF) under one
9*3e6afcd2SAndrew Rist'  or more contributor license agreements.  See the NOTICE file
10*3e6afcd2SAndrew Rist'  distributed with this work for additional information
11*3e6afcd2SAndrew Rist'  regarding copyright ownership.  The ASF licenses this file
12*3e6afcd2SAndrew Rist'  to you under the Apache License, Version 2.0 (the
13*3e6afcd2SAndrew Rist'  "License"); you may not use this file except in compliance
14*3e6afcd2SAndrew Rist'  with the License.  You may obtain a copy of the License at
15*3e6afcd2SAndrew Rist'
16*3e6afcd2SAndrew Rist'    http://www.apache.org/licenses/LICENSE-2.0
17*3e6afcd2SAndrew Rist'
18*3e6afcd2SAndrew Rist'  Unless required by applicable law or agreed to in writing,
19*3e6afcd2SAndrew Rist'  software distributed under the License is distributed on an
20*3e6afcd2SAndrew Rist'  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21*3e6afcd2SAndrew Rist'  KIND, either express or implied.  See the License for the
22*3e6afcd2SAndrew Rist'  specific language governing permissions and limitations
23*3e6afcd2SAndrew Rist'  under the License.
24cdf0e10cSrcweir'
25cdf0e10cSrcweir'*************************************************************************
26cdf0e10cSrcweir
27*3e6afcd2SAndrew Rist
28*3e6afcd2SAndrew Rist
29cdf0e10cSrcweir'*************************************************************************
30cdf0e10cSrcweir' This Interface/Service test depends on the following GLOBAL variables,
31cdf0e10cSrcweir' which must be specified in the object creation:
32cdf0e10cSrcweir
33cdf0e10cSrcweir'     Global oComponentInstance As Object it will be disposed
34cdf0e10cSrcweir
35cdf0e10cSrcweir'*************************************************************************
36cdf0e10cSrcweir
37cdf0e10cSrcweir
38cdf0e10cSrcweirDim bCB1 As Boolean, bCB2 As Boolean
39cdf0e10cSrcweir
40cdf0e10cSrcweir' Be sure that all variables are dimensioned:
41cdf0e10cSrcweiroption explicit
42cdf0e10cSrcweir
43cdf0e10cSrcweir
44cdf0e10cSrcweir
45cdf0e10cSrcweirSub RunTest()
46cdf0e10cSrcweir
47cdf0e10cSrcweir'*************************************************************************
48cdf0e10cSrcweir' INTERFACE:
49cdf0e10cSrcweir' com.sun.star.lang.XEventListener
50cdf0e10cSrcweir
51cdf0e10cSrcweirOn Error Goto ErrHndl
52cdf0e10cSrcweir    Dim bOK As Boolean
53cdf0e10cSrcweir    Dim oListener1 as Object, oListener2 As Object
54cdf0e10cSrcweir
55cdf0e10cSrcweir    If isNull(oComponentInstance) Then Out.Log("oComponentInstance is not initialized")
56cdf0e10cSrcweir
57cdf0e10cSrcweir    bCB1 = false
58cdf0e10cSrcweir    bCB2 = false
59cdf0e10cSrcweir
60cdf0e10cSrcweir    Out.Log("create two listeners")
61cdf0e10cSrcweir    oListener1 = createUNOListener("CB1_", "com.sun.star.lang.XEventListener")
62cdf0e10cSrcweir    oListener2 = createUNOListener("CB2_", "com.sun.star.lang.XEventListener")
63cdf0e10cSrcweir
64cdf0e10cSrcweir    ' add listeners to object if initialized
65cdf0e10cSrcweir    if NOT(isNull(oListener2)) then
66cdf0e10cSrcweir        oComponentInstance.addEventListener(oListener2)
67cdf0e10cSrcweir    end if
68cdf0e10cSrcweir    if NOT(isNull(oListener1)) then
69cdf0e10cSrcweir        oComponentInstance.addEventListener(oListener1)
70cdf0e10cSrcweir    end if
71cdf0e10cSrcweir
72cdf0e10cSrcweir    Out.Log("remove Listener2")
73cdf0e10cSrcweir    oComponentInstance.removeEventListener(oListener2)
74cdf0e10cSrcweir
75cdf0e10cSrcweir    ' dispose object and check the count
76cdf0e10cSrcweir    Test.StartMethod("dispose()")
77cdf0e10cSrcweir    bOK = true
78cdf0e10cSrcweir    oComponentInstance.dispose()
79cdf0e10cSrcweir    bOK = bCB1 AND NOT bCB2
80cdf0e10cSrcweir    Test.MethodTested("dispose()", bOK)
81cdf0e10cSrcweir
82cdf0e10cSrcweir    ' check if only one eventlistener-callback was executed
83cdf0e10cSrcweir    Test.StartMethod("addEventListener()")
84cdf0e10cSrcweir    bOK = bCB1 AND NOT bCB2
85cdf0e10cSrcweir    Test.MethodTested("addEventListener()", bOK)
86cdf0e10cSrcweir
87cdf0e10cSrcweir    ' check if there was only one of the listener callbacks executed
88cdf0e10cSrcweir    Test.StartMethod("removeEventListener()")
89cdf0e10cSrcweir    bOK = bCB1 AND NOT bCB2
90cdf0e10cSrcweir    Test.MethodTested("removeEventListener()", bOK)
91cdf0e10cSrcweir
92cdf0e10cSrcweirExit Sub
93cdf0e10cSrcweirErrHndl:
94cdf0e10cSrcweir    Test.Exception()
95cdf0e10cSrcweir    bOK = false
96cdf0e10cSrcweir    resume next
97cdf0e10cSrcweirEnd Sub
98cdf0e10cSrcweirSub CB1_disposing
99cdf0e10cSrcweir    Out.Log("CallBack for Listener1 disposing was called.")
100cdf0e10cSrcweir    bCB1 = true
101cdf0e10cSrcweirEnd Sub
102cdf0e10cSrcweirSub CB2_disposing
103cdf0e10cSrcweir    Out.Log("CallBack for Listener2 disposing was called.")
104cdf0e10cSrcweir    bCB2 = true
105cdf0e10cSrcweirEnd Sub
106cdf0e10cSrcweir
107cdf0e10cSrcweir</script:module>
108