1*cdf0e10cSrcweir<?xml version="1.0" encoding="UTF-8"?>
2*cdf0e10cSrcweir<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
3*cdf0e10cSrcweir<script:module xmlns:script="http://openoffice.org/2000/script" script:name="accessibility_XAccessibleTable" script:language="StarBasic">
4*cdf0e10cSrcweir
5*cdf0e10cSrcweir
6*cdf0e10cSrcweir'*************************************************************************
7*cdf0e10cSrcweir'
8*cdf0e10cSrcweir' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
9*cdf0e10cSrcweir'
10*cdf0e10cSrcweir' Copyright 2000, 2010 Oracle and/or its affiliates.
11*cdf0e10cSrcweir'
12*cdf0e10cSrcweir' OpenOffice.org - a multi-platform office productivity suite
13*cdf0e10cSrcweir'
14*cdf0e10cSrcweir' This file is part of OpenOffice.org.
15*cdf0e10cSrcweir'
16*cdf0e10cSrcweir' OpenOffice.org is free software: you can redistribute it and/or modify
17*cdf0e10cSrcweir' it under the terms of the GNU Lesser General Public License version 3
18*cdf0e10cSrcweir' only, as published by the Free Software Foundation.
19*cdf0e10cSrcweir'
20*cdf0e10cSrcweir' OpenOffice.org is distributed in the hope that it will be useful,
21*cdf0e10cSrcweir' but WITHOUT ANY WARRANTY; without even the implied warranty of
22*cdf0e10cSrcweir' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23*cdf0e10cSrcweir' GNU Lesser General Public License version 3 for more details
24*cdf0e10cSrcweir' (a copy is included in the LICENSE file that accompanied this code).
25*cdf0e10cSrcweir'
26*cdf0e10cSrcweir' You should have received a copy of the GNU Lesser General Public License
27*cdf0e10cSrcweir' version 3 along with OpenOffice.org.  If not, see
28*cdf0e10cSrcweir' <http://www.openoffice.org/license.html>
29*cdf0e10cSrcweir' for a copy of the LGPLv3 License.
30*cdf0e10cSrcweir'
31*cdf0e10cSrcweir'*************************************************************************
32*cdf0e10cSrcweir'*************************************************************************
33*cdf0e10cSrcweir
34*cdf0e10cSrcweir
35*cdf0e10cSrcweir
36*cdf0e10cSrcweir' Be sure that all variables are dimensioned:
37*cdf0e10cSrcweiroption explicit
38*cdf0e10cSrcweir
39*cdf0e10cSrcweir
40*cdf0e10cSrcweir
41*cdf0e10cSrcweir
42*cdf0e10cSrcweirSub RunTest()
43*cdf0e10cSrcweir
44*cdf0e10cSrcweir'*************************************************************************
45*cdf0e10cSrcweir' INTERFACE:
46*cdf0e10cSrcweir' com.sun.star.accessibility.XAccessibleTable
47*cdf0e10cSrcweir'*************************************************************************
48*cdf0e10cSrcweirOn Error Goto ErrHndl
49*cdf0e10cSrcweir    Dim bOK As Boolean
50*cdf0e10cSrcweir    Dim implSel As Boolean
51*cdf0e10cSrcweir
52*cdf0e10cSrcweir    implSel = hasUNOInterfaces(oObj,"drafts.com.sun.star.accessibility.XAccessibleSelection")
53*cdf0e10cSrcweir    if (NOT implSel) then
54*cdf0e10cSrcweir        Out.Log("!!! The component doesn't implement the interface XAccessibleSelection.")
55*cdf0e10cSrcweir        Out.Log("!!! This interface is required for more detailed tests.")
56*cdf0e10cSrcweir    End If
57*cdf0e10cSrcweir
58*cdf0e10cSrcweir    Test.StartMethod("getAccessibleRowCount()")
59*cdf0e10cSrcweir    Dim rowCount As Long
60*cdf0e10cSrcweir    bOK = true
61*cdf0e10cSrcweir    rowCount = oObj.getAccessibleRowCount()
62*cdf0e10cSrcweir    Out.Log("Accessible row count: "+rowCount)
63*cdf0e10cSrcweir    Test.MethodTested("getAccessibleRowCount()",bOK)
64*cdf0e10cSrcweir
65*cdf0e10cSrcweir    Test.StartMethod("getAccessibleColumnCount()")
66*cdf0e10cSrcweir    Dim colCount As Long
67*cdf0e10cSrcweir    bOK = true
68*cdf0e10cSrcweir    colCount = oObj.getAccessibleColumnCount()
69*cdf0e10cSrcweir    Out.Log("Accessible column count: "+colCount)
70*cdf0e10cSrcweir    Test.MethodTested("getAccessibleColumnCount()",bOK)
71*cdf0e10cSrcweir
72*cdf0e10cSrcweir    Test.StartMethod("getAccessibleRowDescription()")
73*cdf0e10cSrcweir    Dim rowDescr As String
74*cdf0e10cSrcweir    bOK = true
75*cdf0e10cSrcweir    if (rowCount &gt; 0) then
76*cdf0e10cSrcweir        rowDescr = oObj.getAccessibleRowDescription(rowCount - 1)
77*cdf0e10cSrcweir        Out.Log("Row "+(rowCount-1)+" description: "+rowDescr)
78*cdf0e10cSrcweir        bOK = bOK AND NOT isNull(rowDescr)
79*cdf0e10cSrcweir    else
80*cdf0e10cSrcweir        Out.Log("!!! RowCount is 0. Could not test this method.")
81*cdf0e10cSrcweir    End If
82*cdf0e10cSrcweir    Test.MethodTested("getAccessibleRowDescription()",bOK)
83*cdf0e10cSrcweir
84*cdf0e10cSrcweir    Test.StartMethod("getAccessibleColumnDescription()")
85*cdf0e10cSrcweir    Dim colDescr As String
86*cdf0e10cSrcweir    bOK = true
87*cdf0e10cSrcweir    if (colCount &gt; 0) then
88*cdf0e10cSrcweir        colDescr = oObj.getAccessibleRowDescription(colCount - 1)
89*cdf0e10cSrcweir        Out.Log("Column "+(colCount-1)+" description: "+colDescr)
90*cdf0e10cSrcweir        bOK = bOK AND NOT isNull(colDescr)
91*cdf0e10cSrcweir    else
92*cdf0e10cSrcweir        Out.Log("!!! ColumnCount is 0. Could not test this method.")
93*cdf0e10cSrcweir    End If
94*cdf0e10cSrcweir    Test.MethodTested("getAccessibleColumnDescription()",bOK)
95*cdf0e10cSrcweir
96*cdf0e10cSrcweir    Test.StartMethod("getAccessibleRowExtentAt()")
97*cdf0e10cSrcweir    Dim ext As Long
98*cdf0e10cSrcweir    bOK = true
99*cdf0e10cSrcweir    ext = oObj.getAccessibleRowExtentAt(rowCount - 1, colCount - 1)
100*cdf0e10cSrcweir    Out.Log(ext)
101*cdf0e10cSrcweir    bOK = bOK AND (ext &gt;= 1)
102*cdf0e10cSrcweir    Test.MethodTested("getAccessibleRowExtentAt()",bOK)
103*cdf0e10cSrcweir
104*cdf0e10cSrcweir    Test.StartMethod("getAccessibleColumnExtentAt()")
105*cdf0e10cSrcweir    bOK = true
106*cdf0e10cSrcweir    ext = oObj.getAccessibleColumnExtentAt(rowCount - 1, colCount - 1)
107*cdf0e10cSrcweir    Out.Log(ext)
108*cdf0e10cSrcweir    bOK = bOK AND (ext &gt;= 1)
109*cdf0e10cSrcweir    Test.MethodTested("getAccessibleColumnExtentAt()",bOK)
110*cdf0e10cSrcweir
111*cdf0e10cSrcweir    Test.StartMethod("getAccessibleRowHeaders()")
112*cdf0e10cSrcweir    Dim rowHeaders As Object
113*cdf0e10cSrcweir    bOK = true
114*cdf0e10cSrcweir    rowHeaders = oObj.getAccessibleRowHeaders()
115*cdf0e10cSrcweir    bOK = bOK AND NOT isNull(rowHeaders)
116*cdf0e10cSrcweir    Test.MethodTested("getAccessibleRowHeaders()",bOK)
117*cdf0e10cSrcweir
118*cdf0e10cSrcweir    Test.StartMethod("getAccessibleColumnHeaders()")
119*cdf0e10cSrcweir    Dim colHeaders As Object
120*cdf0e10cSrcweir    bOK = true
121*cdf0e10cSrcweir    colHeaders = oObj.getAccessibleColumnHeaders()
122*cdf0e10cSrcweir    bOK = bOK AND NOT isNull(colHeaders)
123*cdf0e10cSrcweir    Test.MethodTested("getAccessibleColumnHeaders()",bOK)
124*cdf0e10cSrcweir
125*cdf0e10cSrcweir    Test.StartMethod("getSelectedAccessibleRows()")
126*cdf0e10cSrcweir    Dim selRows As Variant
127*cdf0e10cSrcweir    Dim elCount As Long, i As Integer
128*cdf0e10cSrcweir    Dim locRes As Boolean
129*cdf0e10cSrcweir    bOK = true
130*cdf0e10cSrcweir    if implSel then
131*cdf0e10cSrcweir        oObj.selectAllAccessible()
132*cdf0e10cSrcweir    End If
133*cdf0e10cSrcweir    selRows = oObj.getSelectedAccessibleRows()
134*cdf0e10cSrcweir    elCount = ubound(selRows) - 1
135*cdf0e10cSrcweir    Out.Log("Returned sequence has "+elCount+" elements")
136*cdf0e10cSrcweir    if implSel then
137*cdf0e10cSrcweir        bOK = bOK AND (elCount = rowCount)
138*cdf0e10cSrcweir    else
139*cdf0e10cSrcweir        bOK = bOK AND (elCount = 0)
140*cdf0e10cSrcweir    End If
141*cdf0e10cSrcweir    if (elCount &gt; 0) then
142*cdf0e10cSrcweir        Out.Log("Checking that returned sequence is in ascending order")
143*cdf0e10cSrcweir    End If
144*cdf0e10cSrcweir    i = 1
145*cdf0e10cSrcweir    while (i &lt; elCount)
146*cdf0e10cSrcweir        locRes = (selRows(i) &gt;= selRows(i-1))
147*cdf0e10cSrcweir        bOK = bOK AND locRes
148*cdf0e10cSrcweir        if NOT locRes then
149*cdf0e10cSrcweir            Out.Log("Element "+i+" : Returned sequence is not in accending order.")
150*cdf0e10cSrcweir            break
151*cdf0e10cSrcweir        End If
152*cdf0e10cSrcweir    wend
153*cdf0e10cSrcweir    Test.MethodTested("getSelectedAccessibleRows()",bOK)
154*cdf0e10cSrcweir
155*cdf0e10cSrcweir    Test.StartMethod("getSelectedAccessibleColumns()")
156*cdf0e10cSrcweir    Dim selCols As Variant
157*cdf0e10cSrcweir    bOK = true
158*cdf0e10cSrcweir    selCols = oObj.getSelectedAccessibleRows()
159*cdf0e10cSrcweir    elCount = ubound(selCols) - 1
160*cdf0e10cSrcweir    Out.Log("Returned sequence has "+elCount+" elements")
161*cdf0e10cSrcweir    if implSel then
162*cdf0e10cSrcweir        bOK = bOK AND (elCount = colCount)
163*cdf0e10cSrcweir    else
164*cdf0e10cSrcweir        bOK = bOK AND (elCount = 0)
165*cdf0e10cSrcweir    End If
166*cdf0e10cSrcweir    if (elCount &gt; 0) then
167*cdf0e10cSrcweir        Out.Log("Checking that returned sequence is in ascending order")
168*cdf0e10cSrcweir    End If
169*cdf0e10cSrcweir    i = 1
170*cdf0e10cSrcweir    while (i &lt; elCount)
171*cdf0e10cSrcweir        locRes = (selCols(i) &gt;= selCols(i-1))
172*cdf0e10cSrcweir        bOK = bOK AND locRes
173*cdf0e10cSrcweir        if NOT locRes then
174*cdf0e10cSrcweir            Out.Log("Element "+i+" : Returned sequence is not in accending order.")
175*cdf0e10cSrcweir            break
176*cdf0e10cSrcweir        End If
177*cdf0e10cSrcweir    wend
178*cdf0e10cSrcweir    Test.MethodTested("getSelectedAccessibleColumns()",bOK)
179*cdf0e10cSrcweir
180*cdf0e10cSrcweir    Test.StartMethod("isAccessibleRowSelected()")
181*cdf0e10cSrcweir    Dim mCount As Integer
182*cdf0e10cSrcweir    bOK = true
183*cdf0e10cSrcweir    locRes = true
184*cdf0e10cSrcweir    if (rowCount &gt; 299) then
185*cdf0e10cSrcweir        mCount = 299
186*cdf0e10cSrcweir    else
187*cdf0e10cSrcweir        mCount = rowCount - 1
188*cdf0e10cSrcweir    End If
189*cdf0e10cSrcweir    for i=0 to mCount
190*cdf0e10cSrcweir        locRes = oObj.isAccessibleRowSelected(i)
191*cdf0e10cSrcweir        if implSel then
192*cdf0e10cSrcweir            bOK = bOK AND locRes
193*cdf0e10cSrcweir        else
194*cdf0e10cSrcweir            bOK = bOK AND NOT locRes
195*cdf0e10cSrcweir        End If
196*cdf0e10cSrcweir    next i
197*cdf0e10cSrcweir    Out.Log("Checked "+i+" of "+rowCount+" rows.")
198*cdf0e10cSrcweir    Test.MethodTested("isAccessibleRowSelected()",bOK)
199*cdf0e10cSrcweir
200*cdf0e10cSrcweir    Test.StartMethod("isAccessibleColumnSelected()")
201*cdf0e10cSrcweir    bOK = true
202*cdf0e10cSrcweir    locRes = true
203*cdf0e10cSrcweir    if (colCount &gt; 299) then
204*cdf0e10cSrcweir        mCount = 299
205*cdf0e10cSrcweir    else
206*cdf0e10cSrcweir        mCount = colCount - 1
207*cdf0e10cSrcweir    End If
208*cdf0e10cSrcweir    for i=0 to mCount
209*cdf0e10cSrcweir        locRes = oObj.isAccessibleColumnSelected(i)
210*cdf0e10cSrcweir        if implSel then
211*cdf0e10cSrcweir            bOK = bOK AND locRes
212*cdf0e10cSrcweir        else
213*cdf0e10cSrcweir            bOK = bOK AND NOT locRes
214*cdf0e10cSrcweir        End If
215*cdf0e10cSrcweir    next i
216*cdf0e10cSrcweir    Out.Log("Checked "+i+" of "+colCount+" columns.")
217*cdf0e10cSrcweir    Test.MethodTested("isAccessibleColumnSelected()",bOK)
218*cdf0e10cSrcweir
219*cdf0e10cSrcweir    Test.StartMethod("getAccessibleCellAt()")
220*cdf0e10cSrcweir    Dim xAccCell As Object
221*cdf0e10cSrcweir    bOK = true
222*cdf0e10cSrcweir    xAccCell = oObj.getAccessibleCellAt(rowCount - 1, colCount - 1)
223*cdf0e10cSrcweir    bOK = bOK AND NOT isNull(xAccCell)
224*cdf0e10cSrcweir    Test.MethodTested("getAccessibleCellAt()",bOK)
225*cdf0e10cSrcweir
226*cdf0e10cSrcweir    Test.StartMethod("getAccessibleCaption()")
227*cdf0e10cSrcweir    Dim caption As Object
228*cdf0e10cSrcweir    bOK = true
229*cdf0e10cSrcweir    caption = oObj.getAccessibleCaption()
230*cdf0e10cSrcweir    Test.MethodTested("getAccessibleCaption()",bOK)
231*cdf0e10cSrcweir
232*cdf0e10cSrcweir    Test.StartMethod("getAccessibleSummary()")
233*cdf0e10cSrcweir    Dim summary As Object
234*cdf0e10cSrcweir    bOK = true
235*cdf0e10cSrcweir    summary = oObj.getAccessibleSummary()
236*cdf0e10cSrcweir    Test.MethodTested("getAccessibleSummary()",bOK)
237*cdf0e10cSrcweir
238*cdf0e10cSrcweir    Test.StartMethod("isAccessibleSelected()")
239*cdf0e10cSrcweir    bOK = true
240*cdf0e10cSrcweir    locRes = oObj.isAccessibleSelected(rowCount - 1, colCount - 1)
241*cdf0e10cSrcweir    if implSel then
242*cdf0e10cSrcweir        bOK = bOK AND locRes
243*cdf0e10cSrcweir    else
244*cdf0e10cSrcweir        bOK = bOK AND NOT locRes
245*cdf0e10cSrcweir    End If
246*cdf0e10cSrcweir    Test.MethodTested("isAccessibleSelected()",bOK)
247*cdf0e10cSrcweir
248*cdf0e10cSrcweir    Test.StartMethod("getAccessibleIndex()")
249*cdf0e10cSrcweir    Dim ind As Long, expIndex As Long
250*cdf0e10cSrcweir    bOK = true
251*cdf0e10cSrcweir    ind = oObj.getAccessibleIndex(rowCount - 1, colCount - 1)
252*cdf0e10cSrcweir    Out.Log("AccessibleIndex is: "+ind)
253*cdf0e10cSrcweir    if NOT isNull(xAccCell) then
254*cdf0e10cSrcweir        expIndex = xAccCell.getAccessibleContext().getAccessibleIndexInParent()
255*cdf0e10cSrcweir        Out.Log("Expected index is: "+expIndex)
256*cdf0e10cSrcweir        bOK = bOK AND (ind = expIndex)
257*cdf0e10cSrcweir    End If
258*cdf0e10cSrcweir    Test.MethodTested("getAccessibleIndex()",bOK)
259*cdf0e10cSrcweir
260*cdf0e10cSrcweir    Test.StartMethod("getAccessibleRow()")
261*cdf0e10cSrcweir    Dim rowIndex As Long
262*cdf0e10cSrcweir    Dim chCount As Long
263*cdf0e10cSrcweir    bOK = true
264*cdf0e10cSrcweir    if hasUNOInterfaces(oObj,"drafts.com.sun.star.accessibility.XAccessibleContext") then
265*cdf0e10cSrcweir        chCount = oObj.getAccessibleChildCount()
266*cdf0e10cSrcweir        rowIndex = oObj.getAccessibleRow(chCount - 1)
267*cdf0e10cSrcweir        bOK = bOK AND (rowIndex &gt;= 0) AND (rowIndex &lt;= rowCount)
268*cdf0e10cSrcweir    End If
269*cdf0e10cSrcweir    rowIndex = oObj.getAccessibleRow(0)
270*cdf0e10cSrcweir    bOK = bOK AND (rowIndex &gt;= 0) AND (rowIndex &lt;= rowCount)
271*cdf0e10cSrcweir    Test.MethodTested("getAccessibleRow()",bOK)
272*cdf0e10cSrcweir
273*cdf0e10cSrcweir    Test.StartMethod("getAccessibleColumn()")
274*cdf0e10cSrcweir    Dim colIndex As Long
275*cdf0e10cSrcweir    bOK = true
276*cdf0e10cSrcweir    if hasUNOInterfaces(oObj,"drafts.com.sun.star.accessibility.XAccessibleContext") then
277*cdf0e10cSrcweir        chCount = oObj.getAccessibleChildCount()
278*cdf0e10cSrcweir        colIndex = oObj.getAccessibleColumn(chCount - 1)
279*cdf0e10cSrcweir        bOK = bOK AND (colIndex &gt;= 0) AND (colIndex &lt;= colCount)
280*cdf0e10cSrcweir    End If
281*cdf0e10cSrcweir    colIndex = oObj.getAccessibleColumn(0)
282*cdf0e10cSrcweir    bOK = bOK AND (colIndex &gt;= 0) AND (colIndex &lt;= colCount)
283*cdf0e10cSrcweir    Test.MethodTested("getAccessibleColumn()",bOK)
284*cdf0e10cSrcweir
285*cdf0e10cSrcweirExit Sub
286*cdf0e10cSrcweirErrHndl:
287*cdf0e10cSrcweir    Test.Exception()
288*cdf0e10cSrcweir    bOK = false
289*cdf0e10cSrcweir    resume next
290*cdf0e10cSrcweirEnd Sub
291*cdf0e10cSrcweir</script:module>
292