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 > 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 > 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 >= 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 >= 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 > 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 < elCount) 146*cdf0e10cSrcweir locRes = (selRows(i) >= 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 > 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 < elCount) 171*cdf0e10cSrcweir locRes = (selCols(i) >= 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 > 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 > 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 >= 0) AND (rowIndex <= rowCount) 268*cdf0e10cSrcweir End If 269*cdf0e10cSrcweir rowIndex = oObj.getAccessibleRow(0) 270*cdf0e10cSrcweir bOK = bOK AND (rowIndex >= 0) AND (rowIndex <= 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 >= 0) AND (colIndex <= colCount) 280*cdf0e10cSrcweir End If 281*cdf0e10cSrcweir colIndex = oObj.getAccessibleColumn(0) 282*cdf0e10cSrcweir bOK = bOK AND (colIndex >= 0) AND (colIndex <= 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