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.sheet;
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.beans.XPropertySet;
31*b1cdbd2cSJim Jagielski import com.sun.star.container.XIndexAccess;
32*b1cdbd2cSJim Jagielski import com.sun.star.container.XNamed;
33*b1cdbd2cSJim Jagielski import com.sun.star.sheet.DataPilotFieldOrientation;
34*b1cdbd2cSJim Jagielski import com.sun.star.sheet.XDataPilotDescriptor;
35*b1cdbd2cSJim Jagielski import com.sun.star.table.CellRangeAddress;
36*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime;
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski /**
39*b1cdbd2cSJim Jagielski * Testing <code>com.sun.star.sheet.XDataPilotDescriptor</code>
40*b1cdbd2cSJim Jagielski * interface methods :
41*b1cdbd2cSJim Jagielski * <ul>
42*b1cdbd2cSJim Jagielski *  <li><code> getTag()</code></li>
43*b1cdbd2cSJim Jagielski *  <li><code> setTag()</code></li>
44*b1cdbd2cSJim Jagielski *  <li><code> getSourceRange()</code></li>
45*b1cdbd2cSJim Jagielski *  <li><code> setSourceRange()</code></li>
46*b1cdbd2cSJim Jagielski *  <li><code> getFilterDescriptor()</code></li>
47*b1cdbd2cSJim Jagielski *  <li><code> getDataPilotFields()</code></li>
48*b1cdbd2cSJim Jagielski *  <li><code> getColumnFields()</code></li>
49*b1cdbd2cSJim Jagielski *  <li><code> getRowFields()</code></li>
50*b1cdbd2cSJim Jagielski *  <li><code> getPageFields()</code></li>
51*b1cdbd2cSJim Jagielski *  <li><code> getDataFields()</code></li>
52*b1cdbd2cSJim Jagielski *  <li><code> getHiddenFields()</code></li>
53*b1cdbd2cSJim Jagielski * </ul> <p>
54*b1cdbd2cSJim Jagielski * This test needs the following object relations :
55*b1cdbd2cSJim Jagielski * <ul>
56*b1cdbd2cSJim Jagielski *  <li> <code>'FIELDSAMOUNT'</code> (of type <code>Integer</code>):
57*b1cdbd2cSJim Jagielski *   to have number of fields </li>
58*b1cdbd2cSJim Jagielski * <ul> <p>
59*b1cdbd2cSJim Jagielski * @see com.sun.star.sheet.XDataPilotDescriptor
60*b1cdbd2cSJim Jagielski */
61*b1cdbd2cSJim Jagielski public class _XDataPilotDescriptor extends MultiMethodTest {
62*b1cdbd2cSJim Jagielski 
63*b1cdbd2cSJim Jagielski     public XDataPilotDescriptor oObj = null;
64*b1cdbd2cSJim Jagielski     CellRangeAddress CRA = new CellRangeAddress((short)1, 1, 1, 5, 5);
65*b1cdbd2cSJim Jagielski     CellRangeAddress oldCRA = null ;
66*b1cdbd2cSJim Jagielski     String sTag = new String ("XDataPilotDescriptor_Tag");
67*b1cdbd2cSJim Jagielski     String fieldsNames[];
68*b1cdbd2cSJim Jagielski     int fieldsAmount = 0;
69*b1cdbd2cSJim Jagielski     int tEnvFieldsAmount = 0;
70*b1cdbd2cSJim Jagielski 
71*b1cdbd2cSJim Jagielski     /**
72*b1cdbd2cSJim Jagielski     * Retrieves object relations.
73*b1cdbd2cSJim Jagielski     * @throws StatusException If one of relations not found.
74*b1cdbd2cSJim Jagielski     */
before()75*b1cdbd2cSJim Jagielski     protected void before() {
76*b1cdbd2cSJim Jagielski         Integer amount = (Integer)tEnv.getObjRelation("FIELDSAMOUNT");
77*b1cdbd2cSJim Jagielski         if (amount == null) throw new StatusException(Status.failed
78*b1cdbd2cSJim Jagielski             ("Relation 'FIELDSAMOUNT' not found"));
79*b1cdbd2cSJim Jagielski         tEnvFieldsAmount = amount.intValue();
80*b1cdbd2cSJim Jagielski     }
81*b1cdbd2cSJim Jagielski 
82*b1cdbd2cSJim Jagielski     /**
83*b1cdbd2cSJim Jagielski     * Test calls the method and compares returned value with value that was set
84*b1cdbd2cSJim Jagielski     * in method <code>setSourceRange()</code>. <p>
85*b1cdbd2cSJim Jagielski     * Has <b> OK </b> status if all fields of cell range addresses are equal. <p>
86*b1cdbd2cSJim Jagielski     * The following method tests are to be completed successfully before :
87*b1cdbd2cSJim Jagielski     * <ul>
88*b1cdbd2cSJim Jagielski     *  <li> <code> setSourceRange() </code> : to have current source range </li>
89*b1cdbd2cSJim Jagielski     * </ul>
90*b1cdbd2cSJim Jagielski     */
_getSourceRange()91*b1cdbd2cSJim Jagielski     public void _getSourceRange(){
92*b1cdbd2cSJim Jagielski         requiredMethod("setSourceRange()");
93*b1cdbd2cSJim Jagielski         boolean bResult = true;
94*b1cdbd2cSJim Jagielski 
95*b1cdbd2cSJim Jagielski         CellRangeAddress objRA = oObj.getSourceRange();
96*b1cdbd2cSJim Jagielski         bResult &= objRA.Sheet == CRA.Sheet;
97*b1cdbd2cSJim Jagielski         bResult &= objRA.StartRow == CRA.StartRow;
98*b1cdbd2cSJim Jagielski         bResult &= objRA.StartColumn == CRA.StartColumn;
99*b1cdbd2cSJim Jagielski         bResult &= objRA.EndRow == CRA.EndRow;
100*b1cdbd2cSJim Jagielski         bResult &= objRA.EndColumn == CRA.EndColumn;
101*b1cdbd2cSJim Jagielski 
102*b1cdbd2cSJim Jagielski         tRes.tested("getSourceRange()", bResult);
103*b1cdbd2cSJim Jagielski     }
104*b1cdbd2cSJim Jagielski 
105*b1cdbd2cSJim Jagielski     /**
106*b1cdbd2cSJim Jagielski     * Test gets the current source range, stores it and sets new source range.<p>
107*b1cdbd2cSJim Jagielski     * Has <b> OK </b> status if the method successfully returns. <p>
108*b1cdbd2cSJim Jagielski     * The following method tests are to be executed before :
109*b1cdbd2cSJim Jagielski     * <ul>
110*b1cdbd2cSJim Jagielski     *  <li> <code> getColumnFields() </code> </li>
111*b1cdbd2cSJim Jagielski     *  <li> <code> getRowFields() </code> </li>
112*b1cdbd2cSJim Jagielski     *  <li> <code> getDataFields() </code> </li>
113*b1cdbd2cSJim Jagielski     *  <li> <code> getHiddenFields() </code> </li>
114*b1cdbd2cSJim Jagielski     *  <li> <code> getPageFields() </code> </li>
115*b1cdbd2cSJim Jagielski     * </ul>
116*b1cdbd2cSJim Jagielski     */
_setSourceRange()117*b1cdbd2cSJim Jagielski     public void _setSourceRange(){
118*b1cdbd2cSJim Jagielski         executeMethod("getColumnFields()") ;
119*b1cdbd2cSJim Jagielski         executeMethod("getRowFields()") ;
120*b1cdbd2cSJim Jagielski         executeMethod("getDataFields()") ;
121*b1cdbd2cSJim Jagielski         executeMethod("getHiddenFields()") ;
122*b1cdbd2cSJim Jagielski         executeMethod("getPageFields()") ;
123*b1cdbd2cSJim Jagielski 
124*b1cdbd2cSJim Jagielski         oldCRA = oObj.getSourceRange() ;
125*b1cdbd2cSJim Jagielski         oObj.setSourceRange(CRA);
126*b1cdbd2cSJim Jagielski 
127*b1cdbd2cSJim Jagielski         tRes.tested("setSourceRange()", true);
128*b1cdbd2cSJim Jagielski     }
129*b1cdbd2cSJim Jagielski 
130*b1cdbd2cSJim Jagielski     /**
131*b1cdbd2cSJim Jagielski     * Test calls the method and checks returned value with value that was set
132*b1cdbd2cSJim Jagielski     * by method <code>setTag()</code>. <p>
133*b1cdbd2cSJim Jagielski     * Has <b> OK </b> status if returned value is equal to value that was set
134*b1cdbd2cSJim Jagielski     * by method <code>setTag()</code>. <p>
135*b1cdbd2cSJim Jagielski     * The following method tests are to be completed successfully before :
136*b1cdbd2cSJim Jagielski     * <ul>
137*b1cdbd2cSJim Jagielski     *  <li> <code> setTag() </code> : to have current tag </li>
138*b1cdbd2cSJim Jagielski     * </ul>
139*b1cdbd2cSJim Jagielski     */
_getTag()140*b1cdbd2cSJim Jagielski     public void _getTag(){
141*b1cdbd2cSJim Jagielski         requiredMethod("setTag()");
142*b1cdbd2cSJim Jagielski         boolean bResult = true;
143*b1cdbd2cSJim Jagielski 
144*b1cdbd2cSJim Jagielski         String objTag = oObj.getTag();
145*b1cdbd2cSJim Jagielski         bResult &= objTag.equals(sTag);
146*b1cdbd2cSJim Jagielski 
147*b1cdbd2cSJim Jagielski         tRes.tested("getTag()", bResult);
148*b1cdbd2cSJim Jagielski     }
149*b1cdbd2cSJim Jagielski 
150*b1cdbd2cSJim Jagielski     /**
151*b1cdbd2cSJim Jagielski     * Test just calls the method. <p>
152*b1cdbd2cSJim Jagielski     * Has <b> OK </b> status if the method successfully returns. <p>
153*b1cdbd2cSJim Jagielski     */
_setTag()154*b1cdbd2cSJim Jagielski     public void _setTag(){
155*b1cdbd2cSJim Jagielski         oObj.setTag(sTag);
156*b1cdbd2cSJim Jagielski         tRes.tested("setTag()", true);
157*b1cdbd2cSJim Jagielski     }
158*b1cdbd2cSJim Jagielski 
159*b1cdbd2cSJim Jagielski     /**
160*b1cdbd2cSJim Jagielski     * Test calls the method , checks returned value, compares
161*b1cdbd2cSJim Jagielski     * number of fields goten from returned value and obtained by object
162*b1cdbd2cSJim Jagielski     * relation <code>'FIELDSAMOUNT'</code> and set property
163*b1cdbd2cSJim Jagielski     * <code>Orientation</code> to one of DataPilotFieldOrientation values. <p>
164*b1cdbd2cSJim Jagielski     * Has <b> OK </b> status if returned value isn't null, number of fields
165*b1cdbd2cSJim Jagielski     * goten from returned value is less than number of fields obtained by relation
166*b1cdbd2cSJim Jagielski     * and no exceptions were thrown. <p>
167*b1cdbd2cSJim Jagielski     */
_getDataPilotFields()168*b1cdbd2cSJim Jagielski     public void _getDataPilotFields(){
169*b1cdbd2cSJim Jagielski         boolean bResult = true;
170*b1cdbd2cSJim Jagielski         XIndexAccess IA = null;
171*b1cdbd2cSJim Jagielski 
172*b1cdbd2cSJim Jagielski         IA = oObj.getDataPilotFields();
173*b1cdbd2cSJim Jagielski         if (IA == null) {
174*b1cdbd2cSJim Jagielski             log.println("Returned value is null.");
175*b1cdbd2cSJim Jagielski             tRes.tested("getDataPilotFields()", false);
176*b1cdbd2cSJim Jagielski             return;
177*b1cdbd2cSJim Jagielski         } else {log.println("getDataPilotFields returned not Null value -- OK");}
178*b1cdbd2cSJim Jagielski 
179*b1cdbd2cSJim Jagielski         fieldsAmount = IA.getCount();
180*b1cdbd2cSJim Jagielski         if (fieldsAmount < tEnvFieldsAmount) {
181*b1cdbd2cSJim Jagielski             log.println("Number of fields is less than number goten by relation.");
182*b1cdbd2cSJim Jagielski             tRes.tested("getDataPilotFields()", false);
183*b1cdbd2cSJim Jagielski             return;
184*b1cdbd2cSJim Jagielski         } else {log.println("count of returned fields -- OK");}
185*b1cdbd2cSJim Jagielski 
186*b1cdbd2cSJim Jagielski         fieldsNames = new String[tEnvFieldsAmount];
187*b1cdbd2cSJim Jagielski         int i = -1 ;
188*b1cdbd2cSJim Jagielski         int cnt = 0 ;
189*b1cdbd2cSJim Jagielski         while (++i < fieldsAmount) {
190*b1cdbd2cSJim Jagielski             Object field;
191*b1cdbd2cSJim Jagielski             try {
192*b1cdbd2cSJim Jagielski                 field = IA.getByIndex(i);
193*b1cdbd2cSJim Jagielski             } catch(com.sun.star.lang.WrappedTargetException e) {
194*b1cdbd2cSJim Jagielski                 e.printStackTrace(log);
195*b1cdbd2cSJim Jagielski                 tRes.tested("getDataPilotFields()", false);
196*b1cdbd2cSJim Jagielski                 return;
197*b1cdbd2cSJim Jagielski             } catch(com.sun.star.lang.IndexOutOfBoundsException e) {
198*b1cdbd2cSJim Jagielski                 e.printStackTrace(log);
199*b1cdbd2cSJim Jagielski                 tRes.tested("getDataPilotFields()", false);
200*b1cdbd2cSJim Jagielski                 return;
201*b1cdbd2cSJim Jagielski             }
202*b1cdbd2cSJim Jagielski 
203*b1cdbd2cSJim Jagielski             XNamed named = (XNamed)
204*b1cdbd2cSJim Jagielski                 UnoRuntime.queryInterface(XNamed.class, field);
205*b1cdbd2cSJim Jagielski             String name = named.getName();
206*b1cdbd2cSJim Jagielski 
207*b1cdbd2cSJim Jagielski             log.print("Field : '" + name + "' ... ") ;
208*b1cdbd2cSJim Jagielski 
209*b1cdbd2cSJim Jagielski             if (!name.equals("Data")) {
210*b1cdbd2cSJim Jagielski 
211*b1cdbd2cSJim Jagielski                 fieldsNames[cnt] = name ;
212*b1cdbd2cSJim Jagielski 
213*b1cdbd2cSJim Jagielski                 XPropertySet props = (XPropertySet)
214*b1cdbd2cSJim Jagielski                     UnoRuntime.queryInterface(XPropertySet.class, field);
215*b1cdbd2cSJim Jagielski 
216*b1cdbd2cSJim Jagielski                 try {
217*b1cdbd2cSJim Jagielski                   switch (cnt % 5) {
218*b1cdbd2cSJim Jagielski                     case 0 :
219*b1cdbd2cSJim Jagielski                         props.setPropertyValue("Orientation",
220*b1cdbd2cSJim Jagielski                             DataPilotFieldOrientation.COLUMN);
221*b1cdbd2cSJim Jagielski                         log.println("  Column") ;
222*b1cdbd2cSJim Jagielski                         break;
223*b1cdbd2cSJim Jagielski                     case 1 :
224*b1cdbd2cSJim Jagielski                         props.setPropertyValue("Orientation",
225*b1cdbd2cSJim Jagielski                             DataPilotFieldOrientation.ROW);
226*b1cdbd2cSJim Jagielski                         log.println("  Row") ;
227*b1cdbd2cSJim Jagielski                         break;
228*b1cdbd2cSJim Jagielski                     case 2 :
229*b1cdbd2cSJim Jagielski                         props.setPropertyValue("Orientation",
230*b1cdbd2cSJim Jagielski                             DataPilotFieldOrientation.DATA);
231*b1cdbd2cSJim Jagielski                         log.println("  Data") ;
232*b1cdbd2cSJim Jagielski                         break;
233*b1cdbd2cSJim Jagielski                     case 3 :
234*b1cdbd2cSJim Jagielski                         props.setPropertyValue("Orientation",
235*b1cdbd2cSJim Jagielski                             DataPilotFieldOrientation.HIDDEN);
236*b1cdbd2cSJim Jagielski                         log.println("  Hidden") ;
237*b1cdbd2cSJim Jagielski                         break;
238*b1cdbd2cSJim Jagielski                     case 4 :
239*b1cdbd2cSJim Jagielski                         props.setPropertyValue("Orientation",
240*b1cdbd2cSJim Jagielski                             DataPilotFieldOrientation.PAGE);
241*b1cdbd2cSJim Jagielski                         log.println("  Page") ;
242*b1cdbd2cSJim Jagielski                         break;
243*b1cdbd2cSJim Jagielski                 } } catch (com.sun.star.lang.WrappedTargetException e) {
244*b1cdbd2cSJim Jagielski                     e.printStackTrace(log);
245*b1cdbd2cSJim Jagielski                     tRes.tested("getDataPilotFields()", false);
246*b1cdbd2cSJim Jagielski                     return;
247*b1cdbd2cSJim Jagielski                 } catch (com.sun.star.lang.IllegalArgumentException e) {
248*b1cdbd2cSJim Jagielski                     e.printStackTrace(log);
249*b1cdbd2cSJim Jagielski                     tRes.tested("getDataPilotFields()", false);
250*b1cdbd2cSJim Jagielski                     return;
251*b1cdbd2cSJim Jagielski                 } catch (com.sun.star.beans.PropertyVetoException e) {
252*b1cdbd2cSJim Jagielski                     e.printStackTrace(log);
253*b1cdbd2cSJim Jagielski                     tRes.tested("getDataPilotFields()", false);
254*b1cdbd2cSJim Jagielski                     return;
255*b1cdbd2cSJim Jagielski                 } catch (com.sun.star.beans.UnknownPropertyException e) {
256*b1cdbd2cSJim Jagielski                     e.printStackTrace(log);
257*b1cdbd2cSJim Jagielski                     tRes.tested("getDataPilotFields()", false);
258*b1cdbd2cSJim Jagielski                     return;
259*b1cdbd2cSJim Jagielski                 }
260*b1cdbd2cSJim Jagielski                 if (++cnt > 4) break;
261*b1cdbd2cSJim Jagielski             } else {
262*b1cdbd2cSJim Jagielski                 tRes.tested("getDataPilotFields()", false);
263*b1cdbd2cSJim Jagielski                 return;
264*b1cdbd2cSJim Jagielski             }
265*b1cdbd2cSJim Jagielski         }
266*b1cdbd2cSJim Jagielski 
267*b1cdbd2cSJim Jagielski         tRes.tested("getDataPilotFields()", bResult);
268*b1cdbd2cSJim Jagielski     }
269*b1cdbd2cSJim Jagielski 
270*b1cdbd2cSJim Jagielski     /**
271*b1cdbd2cSJim Jagielski     * Test calls the method and checks returned collection using the method
272*b1cdbd2cSJim Jagielski     * <code>CheckNames()</code>. <p>
273*b1cdbd2cSJim Jagielski     * Has <b> OK </b> status if the method <code>CheckNames()</code> returns true
274*b1cdbd2cSJim Jagielski     * and no exceptions were thrown. <p>
275*b1cdbd2cSJim Jagielski     * The following method tests are to be completed successfully before :
276*b1cdbd2cSJim Jagielski     * <ul>
277*b1cdbd2cSJim Jagielski     *  <li> <code> getDataPilotFields() </code> : to have array of field names </li>
278*b1cdbd2cSJim Jagielski     * </ul>
279*b1cdbd2cSJim Jagielski     */
_getColumnFields()280*b1cdbd2cSJim Jagielski     public void _getColumnFields(){
281*b1cdbd2cSJim Jagielski         requiredMethod("getDataPilotFields()");
282*b1cdbd2cSJim Jagielski         XIndexAccess IA = oObj.getColumnFields();
283*b1cdbd2cSJim Jagielski         boolean bResult = CheckNames(IA, 0);
284*b1cdbd2cSJim Jagielski         tRes.tested("getColumnFields()", bResult);
285*b1cdbd2cSJim Jagielski     }
286*b1cdbd2cSJim Jagielski 
287*b1cdbd2cSJim Jagielski     /**
288*b1cdbd2cSJim Jagielski     * Test calls the method and checks returned collection using the method
289*b1cdbd2cSJim Jagielski     * <code>CheckNames()</code>. <p>
290*b1cdbd2cSJim Jagielski     * Has <b> OK </b> status if the method <code>CheckNames()</code> returned true
291*b1cdbd2cSJim Jagielski     * and no exceptions were thrown. <p>
292*b1cdbd2cSJim Jagielski     * The following method tests are to be completed successfully before :
293*b1cdbd2cSJim Jagielski     * <ul>
294*b1cdbd2cSJim Jagielski     *  <li> <code> getDataPilotFields() </code> : to have array of field names </li>
295*b1cdbd2cSJim Jagielski     * </ul>
296*b1cdbd2cSJim Jagielski     */
_getDataFields()297*b1cdbd2cSJim Jagielski     public void _getDataFields(){
298*b1cdbd2cSJim Jagielski         requiredMethod("getDataPilotFields()");
299*b1cdbd2cSJim Jagielski         XIndexAccess IA = oObj.getDataFields();
300*b1cdbd2cSJim Jagielski         boolean bResult = CheckNames(IA, 2);
301*b1cdbd2cSJim Jagielski         tRes.tested("getDataFields()", bResult);
302*b1cdbd2cSJim Jagielski     }
303*b1cdbd2cSJim Jagielski 
304*b1cdbd2cSJim Jagielski     /**
305*b1cdbd2cSJim Jagielski     * Test calls the method and checks returned collection using the method
306*b1cdbd2cSJim Jagielski     * <code>CheckNames()</code>. <p>
307*b1cdbd2cSJim Jagielski     * Has <b> OK </b> status if the method <code>CheckNames()</code> returned true
308*b1cdbd2cSJim Jagielski     * and no exceptions were thrown. <p>
309*b1cdbd2cSJim Jagielski     * The following method tests are to be completed successfully before :
310*b1cdbd2cSJim Jagielski     * <ul>
311*b1cdbd2cSJim Jagielski     *  <li> <code> getDataPilotFields() </code> : to have array of field names </li>
312*b1cdbd2cSJim Jagielski     * </ul>
313*b1cdbd2cSJim Jagielski     */
_getHiddenFields()314*b1cdbd2cSJim Jagielski     public void _getHiddenFields(){
315*b1cdbd2cSJim Jagielski         requiredMethod("getDataPilotFields()");
316*b1cdbd2cSJim Jagielski         XIndexAccess IA = oObj.getHiddenFields();
317*b1cdbd2cSJim Jagielski         boolean bResult = CheckNames(IA, 3);
318*b1cdbd2cSJim Jagielski         tRes.tested("getHiddenFields()", bResult);
319*b1cdbd2cSJim Jagielski     }
320*b1cdbd2cSJim Jagielski 
321*b1cdbd2cSJim Jagielski     /**
322*b1cdbd2cSJim Jagielski     * Test calls the method and checks returned collection using the method
323*b1cdbd2cSJim Jagielski     * <code>CheckNames()</code>. <p>
324*b1cdbd2cSJim Jagielski     * Has <b> OK </b> status if the method <code>CheckNames()</code> returned true
325*b1cdbd2cSJim Jagielski     * and no exceptions were thrown. <p>
326*b1cdbd2cSJim Jagielski     * The following method tests are to be completed successfully before :
327*b1cdbd2cSJim Jagielski     * <ul>
328*b1cdbd2cSJim Jagielski     *  <li> <code> getDataPilotFields() </code> : to have array of field names </li>
329*b1cdbd2cSJim Jagielski     * </ul>
330*b1cdbd2cSJim Jagielski     */
_getRowFields()331*b1cdbd2cSJim Jagielski     public void _getRowFields(){
332*b1cdbd2cSJim Jagielski         requiredMethod("getDataPilotFields()");
333*b1cdbd2cSJim Jagielski         XIndexAccess IA = oObj.getRowFields();
334*b1cdbd2cSJim Jagielski         boolean bResult = CheckNames(IA, 1);
335*b1cdbd2cSJim Jagielski         tRes.tested("getRowFields()", bResult);
336*b1cdbd2cSJim Jagielski     }
337*b1cdbd2cSJim Jagielski 
338*b1cdbd2cSJim Jagielski     /**
339*b1cdbd2cSJim Jagielski     * setting of PageFields isn't supported by StarOffice Calc
340*b1cdbd2cSJim Jagielski     * Has <b> OK </b> status if the returned IndexAccess
341*b1cdbd2cSJim Jagielski     * isn't NULL. <p>
342*b1cdbd2cSJim Jagielski     * The following method tests are to be completed successfully before :
343*b1cdbd2cSJim Jagielski     * <ul>
344*b1cdbd2cSJim Jagielski     *  <li> <code> getDataPilotFields() </code> : to have array of field names </li>
345*b1cdbd2cSJim Jagielski     * </ul>
346*b1cdbd2cSJim Jagielski     */
_getPageFields()347*b1cdbd2cSJim Jagielski     public void _getPageFields(){
348*b1cdbd2cSJim Jagielski         requiredMethod("getDataPilotFields()");
349*b1cdbd2cSJim Jagielski         XIndexAccess IA = oObj.getPageFields();
350*b1cdbd2cSJim Jagielski         boolean bResult = (IA != null);
351*b1cdbd2cSJim Jagielski         //        boolean bResult = CheckNames(IA, 4);
352*b1cdbd2cSJim Jagielski         tRes.tested("getPageFields()", bResult);
353*b1cdbd2cSJim Jagielski     }
354*b1cdbd2cSJim Jagielski 
355*b1cdbd2cSJim Jagielski     /**
356*b1cdbd2cSJim Jagielski     * Test calls the method and checks returned value. <p>
357*b1cdbd2cSJim Jagielski     * Has <b> OK </b> status if returned value isn't null
358*b1cdbd2cSJim Jagielski     * and no exceptions were thrown. <p>
359*b1cdbd2cSJim Jagielski     */
_getFilterDescriptor()360*b1cdbd2cSJim Jagielski     public void _getFilterDescriptor(){
361*b1cdbd2cSJim Jagielski         boolean bResult = oObj.getFilterDescriptor() != null;
362*b1cdbd2cSJim Jagielski         tRes.tested("getFilterDescriptor()", bResult);
363*b1cdbd2cSJim Jagielski     }
364*b1cdbd2cSJim Jagielski 
365*b1cdbd2cSJim Jagielski     /**
366*b1cdbd2cSJim Jagielski     * Method checks that the field with index <code>rem</code> exists
367*b1cdbd2cSJim Jagielski     * in the array <code>IA</code>.
368*b1cdbd2cSJim Jagielski     * @param IA collection of elements that support interface <code>XNamed</code>
369*b1cdbd2cSJim Jagielski     * @param rem index of field in the array of field names that was stored in
370*b1cdbd2cSJim Jagielski     * the method <code>getDataPilotFields()</code>
371*b1cdbd2cSJim Jagielski     * @return true if required field name exists in passed collection;
372*b1cdbd2cSJim Jagielski     * false otherwise
373*b1cdbd2cSJim Jagielski     * @see com.sun.star.container.XNamed
374*b1cdbd2cSJim Jagielski     */
CheckNames(XIndexAccess IA, int rem)375*b1cdbd2cSJim Jagielski     boolean CheckNames(XIndexAccess IA, int rem) {
376*b1cdbd2cSJim Jagielski         String name = null;
377*b1cdbd2cSJim Jagielski 
378*b1cdbd2cSJim Jagielski         if (IA == null) {
379*b1cdbd2cSJim Jagielski             log.println("Null retruned.") ;
380*b1cdbd2cSJim Jagielski             return false ;
381*b1cdbd2cSJim Jagielski         }
382*b1cdbd2cSJim Jagielski 
383*b1cdbd2cSJim Jagielski         if (fieldsNames[rem] == null) {
384*b1cdbd2cSJim Jagielski             log.println("No fields were set to this orientation - cann't check result") ;
385*b1cdbd2cSJim Jagielski             return true ;
386*b1cdbd2cSJim Jagielski         }
387*b1cdbd2cSJim Jagielski 
388*b1cdbd2cSJim Jagielski         if (IA.getCount() == 0) {
389*b1cdbd2cSJim Jagielski             log.println("No fields found. Must be at least '"
390*b1cdbd2cSJim Jagielski                 + fieldsNames[rem] + "'") ;
391*b1cdbd2cSJim Jagielski             return false ;
392*b1cdbd2cSJim Jagielski         }
393*b1cdbd2cSJim Jagielski 
394*b1cdbd2cSJim Jagielski         try {
395*b1cdbd2cSJim Jagielski             log.print("Fields returned ") ;
396*b1cdbd2cSJim Jagielski             for (int i = 0; i < IA.getCount(); i++) {
397*b1cdbd2cSJim Jagielski                 Object field = IA.getByIndex(i);
398*b1cdbd2cSJim Jagielski                 XNamed named = (XNamed)UnoRuntime.queryInterface
399*b1cdbd2cSJim Jagielski                     (XNamed.class, field);
400*b1cdbd2cSJim Jagielski                 name = named.getName();
401*b1cdbd2cSJim Jagielski                 log.print(" " + name) ;
402*b1cdbd2cSJim Jagielski                 if (fieldsNames[rem].equals(name)) {
403*b1cdbd2cSJim Jagielski                     log.println(" - OK") ;
404*b1cdbd2cSJim Jagielski                     return true ;
405*b1cdbd2cSJim Jagielski                 }
406*b1cdbd2cSJim Jagielski             }
407*b1cdbd2cSJim Jagielski         } catch (com.sun.star.lang.WrappedTargetException e) {
408*b1cdbd2cSJim Jagielski             e.printStackTrace(log) ;
409*b1cdbd2cSJim Jagielski             return false ;
410*b1cdbd2cSJim Jagielski         } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
411*b1cdbd2cSJim Jagielski             e.printStackTrace(log) ;
412*b1cdbd2cSJim Jagielski             return false ;
413*b1cdbd2cSJim Jagielski         }
414*b1cdbd2cSJim Jagielski         log.println(" - FAILED (field " + fieldsNames[rem] + " was not found.") ;
415*b1cdbd2cSJim Jagielski         return false ;
416*b1cdbd2cSJim Jagielski     }
417*b1cdbd2cSJim Jagielski 
418*b1cdbd2cSJim Jagielski     /**
419*b1cdbd2cSJim Jagielski      * Recreates object(to back old orientations of the fields).
420*b1cdbd2cSJim Jagielski      */
after()421*b1cdbd2cSJim Jagielski     protected void after() {
422*b1cdbd2cSJim Jagielski         disposeEnvironment();
423*b1cdbd2cSJim Jagielski     }
424*b1cdbd2cSJim Jagielski }
425*b1cdbd2cSJim Jagielski 
426