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 28*b1cdbd2cSJim Jagielski import com.sun.star.table.XCell; 29*b1cdbd2cSJim Jagielski import com.sun.star.text.XTextTableCursor; 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielski /** 33*b1cdbd2cSJim Jagielski * Testing <code>com.sun.star.text.XTextTableCursor</code> 34*b1cdbd2cSJim Jagielski * interface methods : 35*b1cdbd2cSJim Jagielski * <ul> 36*b1cdbd2cSJim Jagielski * <li><code> getRangeName()</code></li> 37*b1cdbd2cSJim Jagielski * <li><code> gotoCellByName()</code></li> 38*b1cdbd2cSJim Jagielski * <li><code> goLeft()</code></li> 39*b1cdbd2cSJim Jagielski * <li><code> goRight()</code></li> 40*b1cdbd2cSJim Jagielski * <li><code> goUp()</code></li> 41*b1cdbd2cSJim Jagielski * <li><code> goDown()</code></li> 42*b1cdbd2cSJim Jagielski * <li><code> gotoStart()</code></li> 43*b1cdbd2cSJim Jagielski * <li><code> gotoEnd()</code></li> 44*b1cdbd2cSJim Jagielski * <li><code> mergeRange()</code></li> 45*b1cdbd2cSJim Jagielski * <li><code> splitRange()</code></li> 46*b1cdbd2cSJim Jagielski * </ul> <p> 47*b1cdbd2cSJim Jagielski * 48*b1cdbd2cSJim Jagielski * <b>Prerequisites : </b> the table must have a size 49*b1cdbd2cSJim Jagielski * 2x2 and current cursor position must be in the upper 50*b1cdbd2cSJim Jagielski * left cell. <p> 51*b1cdbd2cSJim Jagielski * 52*b1cdbd2cSJim Jagielski * Test is <b> NOT </b> multithread compilant. <p> 53*b1cdbd2cSJim Jagielski * 54*b1cdbd2cSJim Jagielski * After test completion object environment has to be recreated 55*b1cdbd2cSJim Jagielski * because after merging and splitting cells their names 56*b1cdbd2cSJim Jagielski * differ from initial. 57*b1cdbd2cSJim Jagielski * 58*b1cdbd2cSJim Jagielski * @see com.sun.star.text.XTextTableCursor 59*b1cdbd2cSJim Jagielski */ 60*b1cdbd2cSJim Jagielski public class _XTextTableCursor extends MultiMethodTest { 61*b1cdbd2cSJim Jagielski 62*b1cdbd2cSJim Jagielski public XTextTableCursor oObj = null; // oObj filled by MultiMethodTest 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski XCell oCell = null; 65*b1cdbd2cSJim Jagielski 66*b1cdbd2cSJim Jagielski /** 67*b1cdbd2cSJim Jagielski * Moves the cursor to upper-left cell and checks 68*b1cdbd2cSJim Jagielski * its range name. <p> 69*b1cdbd2cSJim Jagielski * 70*b1cdbd2cSJim Jagielski * Has <b>OK</b> status if the name returned is 'A1'. 71*b1cdbd2cSJim Jagielski */ _getRangeName()72*b1cdbd2cSJim Jagielski public void _getRangeName(){ 73*b1cdbd2cSJim Jagielski log.println( "test for getRangeName()" ); 74*b1cdbd2cSJim Jagielski oObj.gotoStart(false); 75*b1cdbd2cSJim Jagielski String oCellName = oObj.getRangeName(); 76*b1cdbd2cSJim Jagielski log.println( "CellName = " + oCellName ); 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski tRes.tested("getRangeName()", oCellName.equals("A1") ); 79*b1cdbd2cSJim Jagielski } 80*b1cdbd2cSJim Jagielski 81*b1cdbd2cSJim Jagielski /** 82*b1cdbd2cSJim Jagielski * Calls the method which moves the cursor down by 1 cell, 83*b1cdbd2cSJim Jagielski * after that returns cursor to the old position. <p> 84*b1cdbd2cSJim Jagielski * 85*b1cdbd2cSJim Jagielski * Has <b>OK</b> status if the method returns 86*b1cdbd2cSJim Jagielski * <code>true</code>. 87*b1cdbd2cSJim Jagielski */ _goDown()88*b1cdbd2cSJim Jagielski public void _goDown(){ 89*b1cdbd2cSJim Jagielski boolean bDown = false; 90*b1cdbd2cSJim Jagielski log.println( "test for goDown()" ); 91*b1cdbd2cSJim Jagielski short i = 1; 92*b1cdbd2cSJim Jagielski 93*b1cdbd2cSJim Jagielski bDown = oObj.goDown(i,false); 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski tRes.tested("goDown()", bDown ); 96*b1cdbd2cSJim Jagielski oObj.goUp(i,false); 97*b1cdbd2cSJim Jagielski } 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski /** 100*b1cdbd2cSJim Jagielski * Calls the method which moves the cursor to the right by 1 cell, 101*b1cdbd2cSJim Jagielski * after that returns cursor to the old position. <p> 102*b1cdbd2cSJim Jagielski * 103*b1cdbd2cSJim Jagielski * Has <b>OK</b> status if the method returns 104*b1cdbd2cSJim Jagielski * <code>true</code>. 105*b1cdbd2cSJim Jagielski */ _goRight()106*b1cdbd2cSJim Jagielski public void _goRight(){ 107*b1cdbd2cSJim Jagielski boolean bRight = false; 108*b1cdbd2cSJim Jagielski log.println( "test for goRight()" ); 109*b1cdbd2cSJim Jagielski short i = 1; 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski bRight = oObj.goRight(i,false); 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielski tRes.tested("goRight()", bRight ); 114*b1cdbd2cSJim Jagielski oObj.goLeft(i,false); 115*b1cdbd2cSJim Jagielski } 116*b1cdbd2cSJim Jagielski 117*b1cdbd2cSJim Jagielski /** 118*b1cdbd2cSJim Jagielski * Calls the method which moves the cursor to the left by 1 cell, 119*b1cdbd2cSJim Jagielski * after that returns cursor to the old position. <p> 120*b1cdbd2cSJim Jagielski * 121*b1cdbd2cSJim Jagielski * Has <b>OK</b> status if the method returns 122*b1cdbd2cSJim Jagielski * <code>true</code>. 123*b1cdbd2cSJim Jagielski */ _goLeft()124*b1cdbd2cSJim Jagielski public void _goLeft(){ 125*b1cdbd2cSJim Jagielski boolean bLeft = false; 126*b1cdbd2cSJim Jagielski log.println( "test for goLeft()" ); 127*b1cdbd2cSJim Jagielski short i = 1; 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski oObj.goRight(i,false); 130*b1cdbd2cSJim Jagielski bLeft = oObj.goLeft(i,false); 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski tRes.tested("goLeft()", bLeft ); 133*b1cdbd2cSJim Jagielski } 134*b1cdbd2cSJim Jagielski 135*b1cdbd2cSJim Jagielski /** 136*b1cdbd2cSJim Jagielski * Calls the method which moves the cursor up by 1 cell, 137*b1cdbd2cSJim Jagielski * after that returns cursor to the old position. <p> 138*b1cdbd2cSJim Jagielski * 139*b1cdbd2cSJim Jagielski * Has <b>OK</b> status if the method returns 140*b1cdbd2cSJim Jagielski * <code>true</code>. 141*b1cdbd2cSJim Jagielski */ _goUp()142*b1cdbd2cSJim Jagielski public void _goUp(){ 143*b1cdbd2cSJim Jagielski boolean bUp = false; 144*b1cdbd2cSJim Jagielski log.println( "test for goUp()" ); 145*b1cdbd2cSJim Jagielski short i = 1; 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski oObj.gotoEnd(true); 148*b1cdbd2cSJim Jagielski 149*b1cdbd2cSJim Jagielski bUp = oObj.goUp(i,false); 150*b1cdbd2cSJim Jagielski tRes.tested("goUp()", bUp ); 151*b1cdbd2cSJim Jagielski } 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski /** 154*b1cdbd2cSJim Jagielski * Moves the cursor to the cell with name 'B1', then 155*b1cdbd2cSJim Jagielski * checks the current range name. <p> 156*b1cdbd2cSJim Jagielski * Has <b>OK</b> status if the returned range name is 157*b1cdbd2cSJim Jagielski * 'B1'. 158*b1cdbd2cSJim Jagielski */ _gotoCellByName()159*b1cdbd2cSJim Jagielski public void _gotoCellByName(){ 160*b1cdbd2cSJim Jagielski log.println( "test for gotoCellByName()" ); 161*b1cdbd2cSJim Jagielski 162*b1cdbd2cSJim Jagielski oObj.gotoCellByName("B1",false); 163*b1cdbd2cSJim Jagielski String oCellName = oObj.getRangeName(); 164*b1cdbd2cSJim Jagielski 165*b1cdbd2cSJim Jagielski tRes.tested("gotoCellByName()", oCellName.equals("B1") ); 166*b1cdbd2cSJim Jagielski } 167*b1cdbd2cSJim Jagielski 168*b1cdbd2cSJim Jagielski /** 169*b1cdbd2cSJim Jagielski * Moves cursor to the start (upper-left cell). Then 170*b1cdbd2cSJim Jagielski * checks the current range name. <p> 171*b1cdbd2cSJim Jagielski * 172*b1cdbd2cSJim Jagielski * Has <b>OK</b> status if current range name is 'A1'. 173*b1cdbd2cSJim Jagielski */ _gotoStart()174*b1cdbd2cSJim Jagielski public void _gotoStart(){ 175*b1cdbd2cSJim Jagielski log.println( "test for gotoStart()" ); 176*b1cdbd2cSJim Jagielski 177*b1cdbd2cSJim Jagielski oObj.gotoStart(false); 178*b1cdbd2cSJim Jagielski String oCellName = oObj.getRangeName(); 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski tRes.tested("gotoStart()", oCellName.equals("A1") ); 181*b1cdbd2cSJim Jagielski } 182*b1cdbd2cSJim Jagielski 183*b1cdbd2cSJim Jagielski /** 184*b1cdbd2cSJim Jagielski * Moves cursor to the end (lower-right cell). Then 185*b1cdbd2cSJim Jagielski * checks the current range name. <p> 186*b1cdbd2cSJim Jagielski * 187*b1cdbd2cSJim Jagielski * Has <b>OK</b> status if current range name is 'B2' 188*b1cdbd2cSJim Jagielski * (the table is assumed to be of size 2x2). 189*b1cdbd2cSJim Jagielski */ _gotoEnd()190*b1cdbd2cSJim Jagielski public void _gotoEnd(){ 191*b1cdbd2cSJim Jagielski log.println( "test for gotoEnd()" ); 192*b1cdbd2cSJim Jagielski 193*b1cdbd2cSJim Jagielski oObj.gotoEnd(false); 194*b1cdbd2cSJim Jagielski String oCellName = oObj.getRangeName(); 195*b1cdbd2cSJim Jagielski 196*b1cdbd2cSJim Jagielski tRes.tested("gotoEnd()", oCellName.equals("B2") ); 197*b1cdbd2cSJim Jagielski } 198*b1cdbd2cSJim Jagielski 199*b1cdbd2cSJim Jagielski /** 200*b1cdbd2cSJim Jagielski * Selects all cells in the table and merges them. 201*b1cdbd2cSJim Jagielski * Finally move the cursor to the end and checks 202*b1cdbd2cSJim Jagielski * current range name.<p> 203*b1cdbd2cSJim Jagielski * 204*b1cdbd2cSJim Jagielski * Has <b>OK</b> status if the end cell has a name 205*b1cdbd2cSJim Jagielski * 'A1'. 206*b1cdbd2cSJim Jagielski * 207*b1cdbd2cSJim Jagielski * The following method tests are to be executed before : 208*b1cdbd2cSJim Jagielski * <ul> 209*b1cdbd2cSJim Jagielski * <li> <code> getRangeName(), gotoStart(), gotoEnd() 210*b1cdbd2cSJim Jagielski * goLeft(), goRight(), goUp(), goDown(), gotoCellByName()</code> 211*b1cdbd2cSJim Jagielski * : these methods must be completed before all cells of the 212*b1cdbd2cSJim Jagielski * table are merged into one cell </li> 213*b1cdbd2cSJim Jagielski * </ul> 214*b1cdbd2cSJim Jagielski */ _mergeRange()215*b1cdbd2cSJim Jagielski public void _mergeRange(){ 216*b1cdbd2cSJim Jagielski executeMethod("getRangeName()") ; 217*b1cdbd2cSJim Jagielski executeMethod("gotoStart()") ; 218*b1cdbd2cSJim Jagielski executeMethod("gotoEnd()") ; 219*b1cdbd2cSJim Jagielski executeMethod("goLeft()") ; 220*b1cdbd2cSJim Jagielski executeMethod("goRight()") ; 221*b1cdbd2cSJim Jagielski executeMethod("goUp()") ; 222*b1cdbd2cSJim Jagielski executeMethod("goDown()") ; 223*b1cdbd2cSJim Jagielski executeMethod("gotoCellByName()") ; 224*b1cdbd2cSJim Jagielski 225*b1cdbd2cSJim Jagielski boolean bMerge = false; 226*b1cdbd2cSJim Jagielski log.println( "test for mergeRange()" ); 227*b1cdbd2cSJim Jagielski 228*b1cdbd2cSJim Jagielski oObj.gotoStart(false); 229*b1cdbd2cSJim Jagielski oObj.gotoEnd(true); 230*b1cdbd2cSJim Jagielski bMerge = oObj.mergeRange(); 231*b1cdbd2cSJim Jagielski 232*b1cdbd2cSJim Jagielski oObj.gotoEnd(false); 233*b1cdbd2cSJim Jagielski 234*b1cdbd2cSJim Jagielski String curName = oObj.getRangeName() ; 235*b1cdbd2cSJim Jagielski bMerge &= "A1".equals(curName) ; 236*b1cdbd2cSJim Jagielski 237*b1cdbd2cSJim Jagielski tRes.tested("mergeRange()", bMerge ); 238*b1cdbd2cSJim Jagielski } 239*b1cdbd2cSJim Jagielski 240*b1cdbd2cSJim Jagielski /** 241*b1cdbd2cSJim Jagielski * First splits the cell horyzontally. Then the end cell 242*b1cdbd2cSJim Jagielski * name is checked. Second split all cells vertically and 243*b1cdbd2cSJim Jagielski * again the end cell name is checked<p> 244*b1cdbd2cSJim Jagielski * 245*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if in the first case the end cell name 246*b1cdbd2cSJim Jagielski * is not 'A1', and in the second case the end cell name is not 247*b1cdbd2cSJim Jagielski * equal to the name gotten in the first case. <p> 248*b1cdbd2cSJim Jagielski * 249*b1cdbd2cSJim Jagielski * The following method tests are to be completed successfully before : 250*b1cdbd2cSJim Jagielski * <ul> 251*b1cdbd2cSJim Jagielski * <li> <code> mergeRange() </code> : to have one cell in a table 252*b1cdbd2cSJim Jagielski * which this test splits. </li> 253*b1cdbd2cSJim Jagielski * </ul> 254*b1cdbd2cSJim Jagielski */ _splitRange()255*b1cdbd2cSJim Jagielski public void _splitRange(){ 256*b1cdbd2cSJim Jagielski requiredMethod("mergeRange()") ; 257*b1cdbd2cSJim Jagielski 258*b1cdbd2cSJim Jagielski boolean bSplit = true ; 259*b1cdbd2cSJim Jagielski log.println( "test for splitRange" ) ; 260*b1cdbd2cSJim Jagielski short i = 1 ; 261*b1cdbd2cSJim Jagielski 262*b1cdbd2cSJim Jagielski bSplit &= oObj.splitRange(i, true) ; 263*b1cdbd2cSJim Jagielski 264*b1cdbd2cSJim Jagielski oObj.gotoEnd(false); 265*b1cdbd2cSJim Jagielski String horName = oObj.getRangeName() ; 266*b1cdbd2cSJim Jagielski log.println("The end cell after horiz. split : " + horName) ; 267*b1cdbd2cSJim Jagielski bSplit &= !"A1".equals(horName) ; 268*b1cdbd2cSJim Jagielski 269*b1cdbd2cSJim Jagielski oObj.gotoStart(false); 270*b1cdbd2cSJim Jagielski oObj.gotoEnd(true); 271*b1cdbd2cSJim Jagielski bSplit &= oObj.splitRange(i, false) ; 272*b1cdbd2cSJim Jagielski 273*b1cdbd2cSJim Jagielski oObj.gotoEnd(false); 274*b1cdbd2cSJim Jagielski String vertName = oObj.getRangeName() ; 275*b1cdbd2cSJim Jagielski log.println("The end cell after vert. split : " + vertName) ; 276*b1cdbd2cSJim Jagielski bSplit &= !horName.equals(vertName) ; 277*b1cdbd2cSJim Jagielski 278*b1cdbd2cSJim Jagielski tRes.tested("splitRange()", bSplit ) ; 279*b1cdbd2cSJim Jagielski } 280*b1cdbd2cSJim Jagielski 281*b1cdbd2cSJim Jagielski /** 282*b1cdbd2cSJim Jagielski * Forces object environment recreation. 283*b1cdbd2cSJim Jagielski */ after()284*b1cdbd2cSJim Jagielski public void after() { 285*b1cdbd2cSJim Jagielski disposeEnvironment() ; 286*b1cdbd2cSJim Jagielski } 287*b1cdbd2cSJim Jagielski 288*b1cdbd2cSJim Jagielski } // finish class _XTextTableCursor 289*b1cdbd2cSJim Jagielski 290*b1cdbd2cSJim Jagielski 291