1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
3<script:module xmlns:script="http://openoffice.org/2000/script" script:name="beans_XPropertyState" script:language="StarBasic">
4
5
6'*************************************************************************
7'
8'  Licensed to the Apache Software Foundation (ASF) under one
9'  or more contributor license agreements.  See the NOTICE file
10'  distributed with this work for additional information
11'  regarding copyright ownership.  The ASF licenses this file
12'  to you under the Apache License, Version 2.0 (the
13'  "License"); you may not use this file except in compliance
14'  with the License.  You may obtain a copy of the License at
15'
16'    http://www.apache.org/licenses/LICENSE-2.0
17'
18'  Unless required by applicable law or agreed to in writing,
19'  software distributed under the License is distributed on an
20'  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21'  KIND, either express or implied.  See the License for the
22'  specific language governing permissions and limitations
23'  under the License.
24'
25'*************************************************************************
26
27
28
29
30
31
32Const BOUND = 2
33Const CONSTRAINED = 4
34Const MAYBENULL = 8
35Const READONLY = 16
36
37
38Sub RunTest()
39
40'*************************************************************************
41' INTERFACE:
42' com.sun.star.beans.XPropertyState
43'*************************************************************************
44On Error Goto ErrHndl
45    Dim bOK As Boolean
46
47    Dim oProperties As Variant
48    Dim nAllProps As Integer
49    Dim aValue As Variant
50    Dim n As Integer
51    Dim oCoreRefl As Object
52    Dim bTypesEq As Boolean
53
54    bOK = true
55
56    oCoreRefl = createUnoService("com.sun.star.reflection.CoreReflection")
57
58    oProperties = oObj.GetPropertySetInfo().Properties
59    nAllProps = uBound(oProperties)
60    Dim AllPropsNames(nAllProps) As String
61    Out.Log("Found " &amp; nAllProps &amp; " properties.")
62
63    for n = 0 to (nAllProps)
64        AllPropsNames(n) = oProperties(n).Name
65    next n
66
67    Test.StartMethod("getPropertyStates()")
68    Out.Log("getting states for all properties.")
69    bOK = true
70
71    Dim aStates As Variant
72
73    aStates() = oObj.getPropertyStates(AllPropsNames())
74    bOK = bOK AND isArray(aStates())
75    if (bOK) then Out.Log("Length of returned array is " &amp; ubound(aStates()))
76    bOK = bOK AND ubound(aStates()) = nAllProps
77
78    Dim nState As Integer
79    nState = aStates(nAllProps / 2)
80    bOK = bOK AND (nState = com.sun.star.beans.PropertyState.DIRECT_VALUE OR _
81                   nState = com.sun.star.beans.PropertyState.DEFAULT_VALUE OR _
82                   nState = com.sun.star.beans.PropertyState.AMBIGUOUS_VALUE)
83    Test.MethodTested("getPropertyStates()", bOK)
84
85    Test.StartMethod("getPropertyState()")
86    bOK = false
87    n = 0
88
89    ' Here testing getPropertyState method. Method is OK when at least one
90    ' property works correctly.
91
92    while (bOK = false AND n &lt; nAllProps)
93        bOK = true
94        nState = oObj.getPropertyState(AllPropsNames(n))
95        bOK = bOK AND (nState = com.sun.star.beans.PropertyState.DIRECT_VALUE OR _
96                       nState = com.sun.star.beans.PropertyState.DEFAULT_VALUE OR _
97                       nState = com.sun.star.beans.PropertyState.AMBIGUOUS_VALUE)
98        n = n + 1
99    wend
100    Test.MethodTested("getPropertyState()", bOK)
101
102    Test.StartMethod("getPropertyDefault()")
103    bOK = false
104    n = 0
105
106    ' Here testing getPropertyDefault method. Method is OK when at least one
107    ' property works correctly.
108
109    while (bOK = false AND n &lt; nAllProps)
110        bOK = true
111        aValue = oObj.getPropertyDefault(AllPropsNames(n))
112        bOK = bOK AND (oProperties(n).Type.Name = oCoreRefl.getType(aValue).Name)
113        n = n + 1
114    wend
115    Test.MethodTested("getPropertyDefault()", bOK)
116
117    Test.StartMethod("setPropertyToDefault()")
118    bOK = false
119    n = 0
120
121    ' Here testing setPropertyToDefault method. Method is OK when at least one
122    ' property works correctly.
123
124    while (bOK = false AND n &lt; nAllProps)
125        bOK = true
126        oObj.setPropertyToDefault(AllPropsNames(n))
127        n = n + 1
128    wend
129    Test.MethodTested("setPropertyToDefault()", bOK)
130
131
132    ' Here testing getPropertyState for ALL properties. This will
133    ' put all exceptions to .log file (if this method doesn't work with some properties)
134    ' but without any affect to test status.
135
136    n = 0
137    while (n &lt; nAllProps)
138        bOK = true
139        nState = oObj.getPropertyState(AllPropsNames(n))
140        bOK = bOK AND (nState = com.sun.star.beans.PropertyState.DIRECT_VALUE OR _
141                       nState = com.sun.star.beans.PropertyState.DEFAULT_VALUE OR _
142                       nState = com.sun.star.beans.PropertyState.AMBIGUOUS_VALUE)
143
144        if (NOT bOK) then
145            Out.Log("Error while testing getPropertyState() for '" &amp; AllPropsNames(n) &amp; "' FAILED.")
146        else
147            Out.Log("getPropertyState() for property '" &amp; AllPropsNames(n) &amp; "' is OK")
148        end if
149
150        bOK = true
151        aValue = oObj.getPropertyDefault(AllPropsNames(n))
152        bTypesEq = false
153        if (bOK AND (TypeName(aValue) &lt;&gt; "Empty")) then
154            bTypesEq = (oProperties(n).Type.Name = oCoreRefl.getType(aValue).Name)
155        end if
156
157        if (NOT bOK) then ' exception has occurred
158            Out.Log("Error while testing getPropertyDefault() for '" &amp; AllPropsNames(n) &amp; "' FAILED.")
159        elseif ((TypeName(aValue) &lt;&gt; "Empty") AND (NOT bTypesEq)) then
160            Out.Log("Types: '" &amp; oProperties(n).Type.Name &amp; "' and '" &amp; oCoreRefl.getType(aValue).Name &amp; "' are different.")
161        else
162            Out.Log("getPropertyDefault() for property '" &amp; AllPropsNames(n) &amp; "' is OK")
163        end if
164        n = n + 1
165    wend
166
167Exit Sub
168ErrHndl:
169    Test.Exception()
170    bOK = false
171    resume next
172End Sub
173</script:module>
174