1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski package ifc.text; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import lib.MultiMethodTest; 27*b1cdbd2cSJim Jagielski import lib.Status; 28*b1cdbd2cSJim Jagielski import lib.StatusException; 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski import com.sun.star.text.XText; 31*b1cdbd2cSJim Jagielski import com.sun.star.text.XTextCursor; 32*b1cdbd2cSJim Jagielski import com.sun.star.text.XTextDocument; 33*b1cdbd2cSJim Jagielski import com.sun.star.text.XTextRange; 34*b1cdbd2cSJim Jagielski import com.sun.star.text.XTextRangeCompare; 35*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 36*b1cdbd2cSJim Jagielski import com.sun.star.uno.XInterface; 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski /** 39*b1cdbd2cSJim Jagielski * Testing <code>com.sun.star.text.XTextRangeCompare</code> 40*b1cdbd2cSJim Jagielski * interface methods : 41*b1cdbd2cSJim Jagielski * <ul> 42*b1cdbd2cSJim Jagielski * <li><code> compareRegionStarts()</code></li> 43*b1cdbd2cSJim Jagielski * <li><code> compareRegionEnds()</code></li> 44*b1cdbd2cSJim Jagielski * </ul> <p> 45*b1cdbd2cSJim Jagielski * This test needs the following object relations : 46*b1cdbd2cSJim Jagielski * <ul> 47*b1cdbd2cSJim Jagielski * <li> <code>'TEXTDOC'</code> <b>optional</b> 48*b1cdbd2cSJim Jagielski * (must implement <code>XTextDocument</code>): 49*b1cdbd2cSJim Jagielski * can be used to obtain <code>Text</code> of the document from 50*b1cdbd2cSJim Jagielski * which cursors can be created. 51*b1cdbd2cSJim Jagielski * If the relation does not exist, the relation <code>TEXT</code> 52*b1cdbd2cSJim Jagielski * must be specified. </li> 53*b1cdbd2cSJim Jagielski * <li> <code>'TEXT'</code> <b>optional</b> 54*b1cdbd2cSJim Jagielski * (of type <code>XText</code>): 55*b1cdbd2cSJim Jagielski * used to create text cursor. 56*b1cdbd2cSJim Jagielski * If the relation does not exist, the relation <code>TEXTDOC</code> 57*b1cdbd2cSJim Jagielski * must be specified. </li> 58*b1cdbd2cSJim Jagielski * <ul> <p> 59*b1cdbd2cSJim Jagielski * Test is <b> NOT </b> multithread compilant. <p> 60*b1cdbd2cSJim Jagielski * @see com.sun.star.text.XTextRangeCompare 61*b1cdbd2cSJim Jagielski */ 62*b1cdbd2cSJim Jagielski public class _XTextRangeCompare extends MultiMethodTest { 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski /** 65*b1cdbd2cSJim Jagielski * the test object 66*b1cdbd2cSJim Jagielski */ 67*b1cdbd2cSJim Jagielski public XTextRangeCompare oObj = null; 68*b1cdbd2cSJim Jagielski 69*b1cdbd2cSJim Jagielski 70*b1cdbd2cSJim Jagielski String nameStr = null; 71*b1cdbd2cSJim Jagielski 72*b1cdbd2cSJim Jagielski XTextRange oRange = null; 73*b1cdbd2cSJim Jagielski XTextCursor cursor1 = null; 74*b1cdbd2cSJim Jagielski XTextCursor cursor2 = null; 75*b1cdbd2cSJim Jagielski String startStr = null; 76*b1cdbd2cSJim Jagielski String endStr = null; 77*b1cdbd2cSJim Jagielski XText oText = null; 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski /** 80*b1cdbd2cSJim Jagielski * Retrieves <code>XText</code> interface from relation 'TEXTDOC' 81*b1cdbd2cSJim Jagielski * or from 'TEXT'. 82*b1cdbd2cSJim Jagielski * @throws StatusException If neither 'TEXTDOC' nore 'TEXT' 83*b1cdbd2cSJim Jagielski * relation exists. 84*b1cdbd2cSJim Jagielski */ before()85*b1cdbd2cSJim Jagielski public void before() { 86*b1cdbd2cSJim Jagielski nameStr = this.getClass().getName(); 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski XInterface oIfc = (XInterface)tEnv.getObjRelation("TEXTDOC"); 89*b1cdbd2cSJim Jagielski if (oIfc!=null) { 90*b1cdbd2cSJim Jagielski XTextDocument oTDoc = (XTextDocument)UnoRuntime.queryInterface( 91*b1cdbd2cSJim Jagielski XTextDocument.class, oIfc); 92*b1cdbd2cSJim Jagielski oText = oTDoc.getText(); 93*b1cdbd2cSJim Jagielski } 94*b1cdbd2cSJim Jagielski XText aText = (XText) tEnv.getObjRelation("TEXT"); 95*b1cdbd2cSJim Jagielski if (aText != null) { 96*b1cdbd2cSJim Jagielski oText = aText; 97*b1cdbd2cSJim Jagielski } 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski if (oText == null) { 100*b1cdbd2cSJim Jagielski throw new StatusException(Status.failed 101*b1cdbd2cSJim Jagielski ("Neither 'TEXTDOC' nore 'TEXT' relation not found")) ; 102*b1cdbd2cSJim Jagielski } 103*b1cdbd2cSJim Jagielski } 104*b1cdbd2cSJim Jagielski 105*b1cdbd2cSJim Jagielski /** 106*b1cdbd2cSJim Jagielski * One cursor is created and to its position a paragraph 107*b1cdbd2cSJim Jagielski * inserted, then the fist five characters was selected. 108*b1cdbd2cSJim Jagielski * A second cursor was created and the last 7 characteres 109*b1cdbd2cSJim Jagielski * was selected.<p> 110*b1cdbd2cSJim Jagielski * 111*b1cdbd2cSJim Jagielski * Has <b>OK</b> status if the compare returns 1, i.e. 112*b1cdbd2cSJim Jagielski * the second cursor end is before the first. 113*b1cdbd2cSJim Jagielski */ _compareRegionEnds()114*b1cdbd2cSJim Jagielski public void _compareRegionEnds() { 115*b1cdbd2cSJim Jagielski boolean bResult = false; 116*b1cdbd2cSJim Jagielski short n = 0; 117*b1cdbd2cSJim Jagielski log.println( "testing compareRegionEnds()" ); 118*b1cdbd2cSJim Jagielski 119*b1cdbd2cSJim Jagielski try{ 120*b1cdbd2cSJim Jagielski cursor1 = oText.createTextCursor(); 121*b1cdbd2cSJim Jagielski oText.insertString(cursor1, nameStr, false); 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski cursor1.gotoStart(false); 124*b1cdbd2cSJim Jagielski cursor1.goRight((short)5, true); 125*b1cdbd2cSJim Jagielski cursor2 = oText.createTextCursor(); 126*b1cdbd2cSJim Jagielski cursor2.gotoEnd(false); 127*b1cdbd2cSJim Jagielski cursor2.goLeft((short)7, true); 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski log.println("hole text: '" + oText.getString() + "'"); 130*b1cdbd2cSJim Jagielski log.println("cursor1: '"+cursor1.getString() + "'"); 131*b1cdbd2cSJim Jagielski log.println("cursor2: '"+cursor2.getString() + "'"); 132*b1cdbd2cSJim Jagielski log.println("check: oObj.compareRegionStarts(cursor1, cursor2)"); 133*b1cdbd2cSJim Jagielski 134*b1cdbd2cSJim Jagielski n = oObj.compareRegionEnds(cursor1, cursor2); 135*b1cdbd2cSJim Jagielski 136*b1cdbd2cSJim Jagielski log.println( "Result (short) : " + n ); 137*b1cdbd2cSJim Jagielski }catch(com.sun.star.lang.IllegalArgumentException e){ 138*b1cdbd2cSJim Jagielski log.println( "Exception: " + e); 139*b1cdbd2cSJim Jagielski e.printStackTrace(log); 140*b1cdbd2cSJim Jagielski } 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski if (n == 1){bResult = true;} 143*b1cdbd2cSJim Jagielski tRes.tested( "compareRegionEnds()", bResult ); 144*b1cdbd2cSJim Jagielski } 145*b1cdbd2cSJim Jagielski 146*b1cdbd2cSJim Jagielski /** 147*b1cdbd2cSJim Jagielski * One cursor is created and to its position a paragraph 148*b1cdbd2cSJim Jagielski * inserted, then the fist five characters was selected. 149*b1cdbd2cSJim Jagielski * A second cursor was created and the last 7 characters 150*b1cdbd2cSJim Jagielski * was selected.<p> 151*b1cdbd2cSJim Jagielski * 152*b1cdbd2cSJim Jagielski * Has <b>OK</b> status if the compare returns 1, i.e. 153*b1cdbd2cSJim Jagielski * the second cursor start is before the first. 154*b1cdbd2cSJim Jagielski */ _compareRegionStarts()155*b1cdbd2cSJim Jagielski public void _compareRegionStarts() { 156*b1cdbd2cSJim Jagielski boolean bResult = false; 157*b1cdbd2cSJim Jagielski short n = 0; 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski try{ 160*b1cdbd2cSJim Jagielski cursor1 = oText.createTextCursor(); 161*b1cdbd2cSJim Jagielski oText.insertString(cursor1, nameStr, false); 162*b1cdbd2cSJim Jagielski 163*b1cdbd2cSJim Jagielski cursor1.gotoStart(false); 164*b1cdbd2cSJim Jagielski cursor1.goRight((short)5, true); 165*b1cdbd2cSJim Jagielski cursor2 = oText.createTextCursor(); 166*b1cdbd2cSJim Jagielski cursor2.gotoEnd(false); 167*b1cdbd2cSJim Jagielski cursor2.goLeft((short)7, true); 168*b1cdbd2cSJim Jagielski 169*b1cdbd2cSJim Jagielski log.println("hole text: '" + oText.getString() + "'"); 170*b1cdbd2cSJim Jagielski log.println("cursor1: '"+cursor1.getString() + "'"); 171*b1cdbd2cSJim Jagielski log.println("cursor2: '"+cursor2.getString() + "'"); 172*b1cdbd2cSJim Jagielski log.println("check: oObj.compareRegionStarts(cursor1, cursor2)"); 173*b1cdbd2cSJim Jagielski n = oObj.compareRegionStarts(cursor1, cursor2); 174*b1cdbd2cSJim Jagielski 175*b1cdbd2cSJim Jagielski log.println( "Result (short) : " + n ); 176*b1cdbd2cSJim Jagielski }catch(com.sun.star.lang.IllegalArgumentException e){ 177*b1cdbd2cSJim Jagielski log.println( "Exception: " + e); 178*b1cdbd2cSJim Jagielski e.printStackTrace(log); 179*b1cdbd2cSJim Jagielski } 180*b1cdbd2cSJim Jagielski if (n == 1){bResult = true;} 181*b1cdbd2cSJim Jagielski tRes.tested( "compareRegionStarts()", bResult ); 182*b1cdbd2cSJim Jagielski } 183*b1cdbd2cSJim Jagielski 184*b1cdbd2cSJim Jagielski } 185*b1cdbd2cSJim Jagielski 186