1*b1cdbd2cSJim Jagielski<?xml version="1.0" encoding="UTF-8"?> 2*b1cdbd2cSJim Jagielski<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> 3*b1cdbd2cSJim Jagielski<script:module xmlns:script="http://openoffice.org/2000/script" script:name="accessibility_XAccessibleText" script:language="StarBasic"> 4*b1cdbd2cSJim Jagielski 5*b1cdbd2cSJim Jagielski 6*b1cdbd2cSJim Jagielski'************************************************************************* 7*b1cdbd2cSJim Jagielski' 8*b1cdbd2cSJim Jagielski' Licensed to the Apache Software Foundation (ASF) under one 9*b1cdbd2cSJim Jagielski' or more contributor license agreements. See the NOTICE file 10*b1cdbd2cSJim Jagielski' distributed with this work for additional information 11*b1cdbd2cSJim Jagielski' regarding copyright ownership. The ASF licenses this file 12*b1cdbd2cSJim Jagielski' to you under the Apache License, Version 2.0 (the 13*b1cdbd2cSJim Jagielski' "License"); you may not use this file except in compliance 14*b1cdbd2cSJim Jagielski' with the License. You may obtain a copy of the License at 15*b1cdbd2cSJim Jagielski' 16*b1cdbd2cSJim Jagielski' http://www.apache.org/licenses/LICENSE-2.0 17*b1cdbd2cSJim Jagielski' 18*b1cdbd2cSJim Jagielski' Unless required by applicable law or agreed to in writing, 19*b1cdbd2cSJim Jagielski' software distributed under the License is distributed on an 20*b1cdbd2cSJim Jagielski' "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 21*b1cdbd2cSJim Jagielski' KIND, either express or implied. See the License for the 22*b1cdbd2cSJim Jagielski' specific language governing permissions and limitations 23*b1cdbd2cSJim Jagielski' under the License. 24*b1cdbd2cSJim Jagielski' 25*b1cdbd2cSJim Jagielski'************************************************************************* 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielski' Be sure that all variables are dimensioned: 32*b1cdbd2cSJim Jagielskioption explicit 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski'************************************************************************* 35*b1cdbd2cSJim Jagielski' This Interface/Service test depends on the following GLOBAL variables, 36*b1cdbd2cSJim Jagielski' which must be specified in the object creation: 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski' Global accText as String 39*b1cdbd2cSJim Jagielski' Global readOnly as Boolean 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski'************************************************************************* 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim JagielskiSub RunTest() 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski'************************************************************************* 46*b1cdbd2cSJim Jagielski' INTERFACE: 47*b1cdbd2cSJim Jagielski' com.sun.star.accessibility.XAccessibleText 48*b1cdbd2cSJim Jagielski'************************************************************************* 49*b1cdbd2cSJim JagielskiOn Error Goto ErrHndl 50*b1cdbd2cSJim Jagielski Dim bOK As Boolean 51*b1cdbd2cSJim Jagielski Dim chCount As Integer 52*b1cdbd2cSJim Jagielski Dim accTextSegment as new com.sun.star.accessibility.TextSegment 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski Test.StartMethod("getCharacterCount()") 55*b1cdbd2cSJim Jagielski bOK = true 56*b1cdbd2cSJim Jagielski chCount = oObj.getCharacterCount() 57*b1cdbd2cSJim Jagielski Out.Log("Character count: "+chCount) 58*b1cdbd2cSJim Jagielski bOK = bOK AND (len(accText) = chCount) 59*b1cdbd2cSJim Jagielski Test.MethodTested("getCharacterCount()",bOK) 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski Test.StartMethod("getCaretPosition()") 62*b1cdbd2cSJim Jagielski Test.StartMethod("setCaretPosition()") 63*b1cdbd2cSJim Jagielski bOK = true 64*b1cdbd2cSJim Jagielski Dim carPos As Integer 65*b1cdbd2cSJim Jagielski oObj.setCaretPosition(chCount - 1) 66*b1cdbd2cSJim Jagielski carPos = oObj.getCaretPosition() 67*b1cdbd2cSJim Jagielski if not readOnly then 68*b1cdbd2cSJim Jagielski Out.Log("getCaretPosition: " + carPos) 69*b1cdbd2cSJim Jagielski bOK = bOK AND (carPos = chCount - 1) 70*b1cdbd2cSJim Jagielski else 71*b1cdbd2cSJim Jagielski Out.Log("Object is read only and Caret position couldn't be set") 72*b1cdbd2cSJim Jagielski end if 73*b1cdbd2cSJim Jagielski Test.MethodTested("getCaretPosition()",bOK) 74*b1cdbd2cSJim Jagielski Test.MethodTested("setCaretPosition()",bOK) 75*b1cdbd2cSJim Jagielski 76*b1cdbd2cSJim Jagielski Test.StartMethod("getCharacter()") 77*b1cdbd2cSJim Jagielski Dim i As Integer 78*b1cdbd2cSJim Jagielski bOK = true 79*b1cdbd2cSJim Jagielski for i = 0 to chCount-1 80*b1cdbd2cSJim Jagielski bOK = bOK AND (chr(oObj.getCharacter(i)) = _ 81*b1cdbd2cSJim Jagielski utils.getCharacter(i+1,accText)) 82*b1cdbd2cSJim Jagielski next i 83*b1cdbd2cSJim Jagielski Test.MethodTested("getCharacter()",bOK) 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielski Test.StartMethod("getCharacterAttributes()") 86*b1cdbd2cSJim Jagielski Dim attrs() As Variant 87*b1cdbd2cSJim Jagielski Dim ReqAttrs(0) as String 88*b1cdbd2cSJim Jagielski bOK = true 89*b1cdbd2cSJim Jagielski attrs = oObj.getCharacterAttributes(chCount - 1, ReqAttrs()) 90*b1cdbd2cSJim Jagielski bOK = bOK AND NOT isNull(attrs) 91*b1cdbd2cSJim Jagielski Out.Log("Properties ubound: "+ubound(attrs)) 92*b1cdbd2cSJim Jagielski Test.MethodTested("getCharacterAttributes()",bOK) 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielski Test.StartMethod("getCharacterBounds()") 95*b1cdbd2cSJim Jagielski Dim chBounds As new com.sun.star.awt.Rectangle 96*b1cdbd2cSJim Jagielski bOK = true 97*b1cdbd2cSJim Jagielski chBounds = oObj.getCharacterBounds(chCount - 1) 98*b1cdbd2cSJim Jagielski Out.Log("Character boundbox: "+chBounds.X+", "+chBounds.Y+", "+ _ 99*b1cdbd2cSJim Jagielski chBounds.Width+", "+chBounds.Height) 100*b1cdbd2cSJim Jagielski bOK = bOK AND NOT isNull(chBounds) 101*b1cdbd2cSJim Jagielski Test.MethodTested("getCharacterBounds()",bOK) 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski Test.StartMethod("getIndexAtPoint()") 104*b1cdbd2cSJim Jagielski Dim index As Integer 105*b1cdbd2cSJim Jagielski Dim point As new com.sun.star.awt.Point 106*b1cdbd2cSJim Jagielski bOK = true 107*b1cdbd2cSJim Jagielski point.X = chBounds.X + 1 108*b1cdbd2cSJim Jagielski point.Y = chBounds.Y + 1 109*b1cdbd2cSJim Jagielski index = oObj.getIndexAtPoint(point) 110*b1cdbd2cSJim Jagielski bOK = bOK AND (index = chCount -1) 111*b1cdbd2cSJim Jagielski Test.MethodTested("getIndexAtPoint()",bOK) 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielski Test.StartMethod("getSelectedText()") 114*b1cdbd2cSJim Jagielski bOK = true 115*b1cdbd2cSJim Jagielski oObj.setSelection(0, chCount) 116*b1cdbd2cSJim Jagielski if not readOnly then 117*b1cdbd2cSJim Jagielski bOK = bOK AND (accText = oObj.getSelectedText()) 118*b1cdbd2cSJim Jagielski else 119*b1cdbd2cSJim Jagielski Out.Log("Object is unselectable") 120*b1cdbd2cSJim Jagielski end if 121*b1cdbd2cSJim Jagielski Test.MethodTested("getSelectedText()",bOK) 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski Test.StartMethod("getSelectionStart()") 124*b1cdbd2cSJim Jagielski bOK = true 125*b1cdbd2cSJim Jagielski oObj.setSelection(chCount-1,chCount) 126*b1cdbd2cSJim Jagielski if not readOnly then 127*b1cdbd2cSJim Jagielski bOK = bOK AND (oObj.getSelectionStart() = chCount -1) 128*b1cdbd2cSJim Jagielski else 129*b1cdbd2cSJim Jagielski Out.Log("Object is unselectable") 130*b1cdbd2cSJim Jagielski end if 131*b1cdbd2cSJim Jagielski Test.MethodTested("getSelectionStart()",bOK) 132*b1cdbd2cSJim Jagielski 133*b1cdbd2cSJim Jagielski Test.StartMethod("getSelectionEnd()") 134*b1cdbd2cSJim Jagielski bOK = true 135*b1cdbd2cSJim Jagielski oObj.setSelection(0,chCount - 1) 136*b1cdbd2cSJim Jagielski if not readOnly then 137*b1cdbd2cSJim Jagielski bOK = bOK AND (oObj.getSelectionEnd() = chCount - 1) 138*b1cdbd2cSJim Jagielski else 139*b1cdbd2cSJim Jagielski Out.Log("Object is unselectable") 140*b1cdbd2cSJim Jagielski end if 141*b1cdbd2cSJim Jagielski Test.MethodTested("getSelectionEnd()",bOK) 142*b1cdbd2cSJim Jagielski 143*b1cdbd2cSJim Jagielski Test.StartMethod("setSelection()") 144*b1cdbd2cSJim Jagielski bOK = true 145*b1cdbd2cSJim Jagielski if not readOnly then 146*b1cdbd2cSJim Jagielski bOK = bOK AND oObj.setSelection(0,chCount) 147*b1cdbd2cSJim Jagielski else 148*b1cdbd2cSJim Jagielski Out.Log("Object is unselectable") 149*b1cdbd2cSJim Jagielski end if 150*b1cdbd2cSJim Jagielski Test.MethodTested("setSelection()",bOK) 151*b1cdbd2cSJim Jagielski 152*b1cdbd2cSJim Jagielski Test.StartMethod("getText()") 153*b1cdbd2cSJim Jagielski bOK = true 154*b1cdbd2cSJim Jagielski bOK = bOK AND (accText = oObj.getText()) 155*b1cdbd2cSJim Jagielski Test.MethodTested("getText()",bOK) 156*b1cdbd2cSJim Jagielski 157*b1cdbd2cSJim Jagielski Test.StartMethod("getTextRange()") 158*b1cdbd2cSJim Jagielski bOK = true 159*b1cdbd2cSJim Jagielski bOK = bOK AND (accText = oObj.getTextRange(0,chCount)) 160*b1cdbd2cSJim Jagielski Test.MethodTested("getTextRange()",bOK) 161*b1cdbd2cSJim Jagielski 162*b1cdbd2cSJim Jagielski Test.StartMethod("getTextAtIndex()") 163*b1cdbd2cSJim Jagielski bOK = true 164*b1cdbd2cSJim Jagielski accTextSegment = oObj.getTextAtIndex(chCount - 1, 4) 165*b1cdbd2cSJim Jagielski bOK = bOK AND (accText = accTextSegment.SegmentText) 166*b1cdbd2cSJim Jagielski Test.MethodTested("getTextAtIndex()",bOK) 167*b1cdbd2cSJim Jagielski 168*b1cdbd2cSJim Jagielski Test.StartMethod("getTextBeforeIndex()") 169*b1cdbd2cSJim Jagielski bOK = true 170*b1cdbd2cSJim Jagielski accTextSegment = oObj.getTextBeforeIndex(1, 1) 171*b1cdbd2cSJim Jagielski bOK = bOK AND (accTextSegment.SegmentText = utils.getCharacter(1,accText)) 172*b1cdbd2cSJim Jagielski Test.MethodTested("getTextBeforeIndex()",bOK) 173*b1cdbd2cSJim Jagielski 174*b1cdbd2cSJim Jagielski Test.StartMethod("getTextBehindIndex()") 175*b1cdbd2cSJim Jagielski bOK = true 176*b1cdbd2cSJim Jagielski accTextSegment = oObj.getTextBehindIndex(chCount-2,1) 177*b1cdbd2cSJim Jagielski bOK = bOK AND (accTextSegment.SegmentText = utils.getCharacter(chCount,accText)) 178*b1cdbd2cSJim Jagielski Test.MethodTested("getTextBehindIndex()",bOK) 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski Test.StartMethod("copyText()") 181*b1cdbd2cSJim Jagielski bOK = true 182*b1cdbd2cSJim Jagielski bOK = bOK AND oObj.copyText(0,chCount) 183*b1cdbd2cSJim Jagielski if readOnly then bOK = true 184*b1cdbd2cSJim Jagielski Test.MethodTested("copyText()",bOK) 185*b1cdbd2cSJim Jagielski 186*b1cdbd2cSJim JagielskiExit Sub 187*b1cdbd2cSJim JagielskiErrHndl: 188*b1cdbd2cSJim Jagielski Test.Exception() 189*b1cdbd2cSJim Jagielski bOK = false 190*b1cdbd2cSJim Jagielski resume next 191*b1cdbd2cSJim JagielskiEnd Sub 192*b1cdbd2cSJim Jagielski</script:module> 193