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