| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> |
| <script:module xmlns:script="http://openoffice.org/2000/script" script:name="beans_XPropertyState" script:language="StarBasic"> |
| |
| |
| '************************************************************************* |
| ' |
| ' Licensed to the Apache Software Foundation (ASF) under one |
| ' or more contributor license agreements. See the NOTICE file |
| ' distributed with this work for additional information |
| ' regarding copyright ownership. The ASF licenses this file |
| ' to you under the Apache License, Version 2.0 (the |
| ' "License"); you may not use this file except in compliance |
| ' with the License. You may obtain a copy of the License at |
| ' |
| ' http://www.apache.org/licenses/LICENSE-2.0 |
| ' |
| ' Unless required by applicable law or agreed to in writing, |
| ' software distributed under the License is distributed on an |
| ' "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| ' KIND, either express or implied. See the License for the |
| ' specific language governing permissions and limitations |
| ' under the License. |
| ' |
| '************************************************************************* |
| |
| |
| |
| |
| |
| |
| Const BOUND = 2 |
| Const CONSTRAINED = 4 |
| Const MAYBENULL = 8 |
| Const READONLY = 16 |
| |
| |
| Sub RunTest() |
| |
| '************************************************************************* |
| ' INTERFACE: |
| ' com.sun.star.beans.XPropertyState |
| '************************************************************************* |
| On Error Goto ErrHndl |
| Dim bOK As Boolean |
| |
| Dim oProperties As Variant |
| Dim nAllProps As Integer |
| Dim aValue As Variant |
| Dim n As Integer |
| Dim oCoreRefl As Object |
| Dim bTypesEq As Boolean |
| |
| bOK = true |
| |
| oCoreRefl = createUnoService("com.sun.star.reflection.CoreReflection") |
| |
| oProperties = oObj.GetPropertySetInfo().Properties |
| nAllProps = uBound(oProperties) |
| Dim AllPropsNames(nAllProps) As String |
| Out.Log("Found " & nAllProps & " properties.") |
| |
| for n = 0 to (nAllProps) |
| AllPropsNames(n) = oProperties(n).Name |
| next n |
| |
| Test.StartMethod("getPropertyStates()") |
| Out.Log("getting states for all properties.") |
| bOK = true |
| |
| Dim aStates As Variant |
| |
| aStates() = oObj.getPropertyStates(AllPropsNames()) |
| bOK = bOK AND isArray(aStates()) |
| if (bOK) then Out.Log("Length of returned array is " & ubound(aStates())) |
| bOK = bOK AND ubound(aStates()) = nAllProps |
| |
| Dim nState As Integer |
| nState = aStates(nAllProps / 2) |
| bOK = bOK AND (nState = com.sun.star.beans.PropertyState.DIRECT_VALUE OR _ |
| nState = com.sun.star.beans.PropertyState.DEFAULT_VALUE OR _ |
| nState = com.sun.star.beans.PropertyState.AMBIGUOUS_VALUE) |
| Test.MethodTested("getPropertyStates()", bOK) |
| |
| Test.StartMethod("getPropertyState()") |
| bOK = false |
| n = 0 |
| |
| ' Here testing getPropertyState method. Method is OK when at least one |
| ' property works correctly. |
| |
| while (bOK = false AND n < nAllProps) |
| bOK = true |
| nState = oObj.getPropertyState(AllPropsNames(n)) |
| bOK = bOK AND (nState = com.sun.star.beans.PropertyState.DIRECT_VALUE OR _ |
| nState = com.sun.star.beans.PropertyState.DEFAULT_VALUE OR _ |
| nState = com.sun.star.beans.PropertyState.AMBIGUOUS_VALUE) |
| n = n + 1 |
| wend |
| Test.MethodTested("getPropertyState()", bOK) |
| |
| Test.StartMethod("getPropertyDefault()") |
| bOK = false |
| n = 0 |
| |
| ' Here testing getPropertyDefault method. Method is OK when at least one |
| ' property works correctly. |
| |
| while (bOK = false AND n < nAllProps) |
| bOK = true |
| aValue = oObj.getPropertyDefault(AllPropsNames(n)) |
| bOK = bOK AND (oProperties(n).Type.Name = oCoreRefl.getType(aValue).Name) |
| n = n + 1 |
| wend |
| Test.MethodTested("getPropertyDefault()", bOK) |
| |
| Test.StartMethod("setPropertyToDefault()") |
| bOK = false |
| n = 0 |
| |
| ' Here testing setPropertyToDefault method. Method is OK when at least one |
| ' property works correctly. |
| |
| while (bOK = false AND n < nAllProps) |
| bOK = true |
| oObj.setPropertyToDefault(AllPropsNames(n)) |
| n = n + 1 |
| wend |
| Test.MethodTested("setPropertyToDefault()", bOK) |
| |
| |
| ' Here testing getPropertyState for ALL properties. This will |
| ' put all exceptions to .log file (if this method doesn't work with some properties) |
| ' but without any affect to test status. |
| |
| n = 0 |
| while (n < nAllProps) |
| bOK = true |
| nState = oObj.getPropertyState(AllPropsNames(n)) |
| bOK = bOK AND (nState = com.sun.star.beans.PropertyState.DIRECT_VALUE OR _ |
| nState = com.sun.star.beans.PropertyState.DEFAULT_VALUE OR _ |
| nState = com.sun.star.beans.PropertyState.AMBIGUOUS_VALUE) |
| |
| if (NOT bOK) then |
| Out.Log("Error while testing getPropertyState() for '" & AllPropsNames(n) & "' FAILED.") |
| else |
| Out.Log("getPropertyState() for property '" & AllPropsNames(n) & "' is OK") |
| end if |
| |
| bOK = true |
| aValue = oObj.getPropertyDefault(AllPropsNames(n)) |
| bTypesEq = false |
| if (bOK AND (TypeName(aValue) <> "Empty")) then |
| bTypesEq = (oProperties(n).Type.Name = oCoreRefl.getType(aValue).Name) |
| end if |
| |
| if (NOT bOK) then ' exception was occured |
| Out.Log("Error while testing getPropertyDefault() for '" & AllPropsNames(n) & "' FAILED.") |
| elseif ((TypeName(aValue) <> "Empty") AND (NOT bTypesEq)) then |
| Out.Log("Types: '" & oProperties(n).Type.Name & "' and '" & oCoreRefl.getType(aValue).Name & "' are different.") |
| else |
| Out.Log("getPropertyDefault() for property '" & AllPropsNames(n) & "' is OK") |
| end if |
| n = n + 1 |
| wend |
| |
| Exit Sub |
| ErrHndl: |
| Test.Exception() |
| bOK = false |
| resume next |
| End Sub |
| </script:module> |