1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 package ifc.ui.dialogs;
25 
26 import lib.MultiMethodTest;
27 import lib.Status;
28 import lib.StatusException;
29 import util.ValueChanger;
30 import util.ValueComparer;
31 
32 import com.sun.star.ui.dialogs.XFilePickerControlAccess;
33 
34 /**
35 * Testing <code>com.sun.star.ui.XFilePickerControlAccess</code>
36 * interface methods :
37 * <ul>
38 *  <li><code> setValue()</code></li>
39 *  <li><code> getValue()</code></li>
40 *  <li><code> setLabel()</code></li>
41 *  <li><code> getLabel()</code></li>
42 *  <li><code> getFocused()</code></li>
43 *  <li><code> enableControl()</code></li>
44 * </ul> <p>
45 * This test needs the following object relations :
46 * <ul>
47 *  <li> <code>'XFilePickerControlAccess.ControlID'</code> (of type
48 *    <code>Short</code>) : control identifier in the extended
49 *    FilePicker dialog. </li>
50 *  <li> <code>'XFilePickerControlAccess.ControlValue'</code> (of type
51 *    <code>Object</code>) <b>optional</b> (but mostly desireable
52 *    since the control has emtpy initial value):
53 *    the value which can set for the control . </li>
54 * <ul> <p>
55 * Test is <b> NOT </b> multithread compilant. <p>
56 * @see com.sun.star.ui.XFilePickerControlAccess
57 */
58 public class _XFilePickerControlAccess extends MultiMethodTest {
59 
60     public XFilePickerControlAccess oObj = null;
61     private short cntlID = -1 ;
62     private Object oldVal = null ;
63     private String oldLab = null ;
64 
65     /**
66     * Retrieves object relations.
67     * @throws StatusException If one of relations not found.
68     */
69     public void before() {
70         Short ID = (Short) tEnv.getObjRelation
71             ("XFilePickerControlAccess.ControlID") ;
72         if (ID == null) {
73             log.println("!!! Relation not found !!!") ;
74             throw new StatusException(Status.failed("Relation not found")) ;
75         }
76 
77         cntlID = ID.shortValue() ;
78     }
79 
80     /**
81     * Gets the value of the control and stores it. <p>
82     * Has <b>OK</b> status if no runtime exceptions occured.
83     */
84     public void _getValue() {
85         boolean result = true ;
86 
87         try {
88             oldVal = oObj.getValue(cntlID,(short)0);
89         } catch (Exception e) {
90             e.printStackTrace(log) ;
91             result = false ;
92         }
93 
94         tRes.tested("getValue()", result) ;
95     }
96 
97     /**
98     * Changes the value gotten by <code>getValue</code> method,
99     * or gets the value from relation if it exits.
100     * Sets this value and then check if it was properly set. <p>
101     * Has <b>OK</b> status if <code>getValue</code> method returns
102     * the same value which was set. <p>
103     * The following method tests are to be completed successfully before :
104     * <ul>
105     *  <li> <code> getValue </code> </li>
106     * </ul>
107     */
108     public void _setValue() {
109         requiredMethod("getValue()") ;
110         boolean result = true ;
111 
112         Object newVal = tEnv.getObjRelation
113             ("XFilePickerControlAccess.ControlValue");
114         if (newVal == null) {
115             newVal = ValueChanger.changePValue(oldVal) ;
116         }
117 
118         Object getVal = null ;
119 
120         try {
121             oObj.setValue(cntlID, (short)0 , newVal) ;
122             getVal = oObj.getValue(cntlID,(short)0) ;
123         } catch (Exception e) {
124             e.printStackTrace(log) ;
125             result = false ;
126         }
127 
128         result &= ValueComparer.equalValue(newVal, getVal) ;
129 
130         tRes.tested("setValue()", result) ;
131     }
132 
133     /**
134     * Gets the label of the control and stores it. <p>
135     * Has <b>OK</b> status if no runtime exceptions occured.
136     */
137     public void _getLabel() {
138 
139         try {
140             oldLab = oObj.getLabel(cntlID);
141         } catch (Exception e) {
142             e.printStackTrace(log) ;
143         }
144 
145         tRes.tested("getLabel()", oldLab != null) ;
146     }
147 
148     /**
149     * Changes the label gotten by <code>getLabel</code> method,
150     * set this label and then check if it was properly set. <p>
151     * Has <b>OK</b> status if <code>getLael</code> method returns
152     * the same value which was set. <p>
153     * The following method tests are to be completed successfully before :
154     * <ul>
155     *  <li> <code> getLabel </code> </li>
156     * </ul>
157     */
158     public void _setLabel() {
159         requiredMethod("getLabel()") ;
160         boolean result = true ;
161 
162         String newVal = oldLab + "_" ;
163         String getVal = null ;
164 
165         try {
166             oObj.setLabel(cntlID, newVal) ;
167             getVal = oObj.getLabel(cntlID) ;
168         } catch (Exception e) {
169             e.printStackTrace(log) ;
170             result = false ;
171         }
172 
173         result &= newVal.equals(getVal) ;
174 
175         tRes.tested("setLabel()", result) ;
176     }
177 
178     /**
179     * Disables and then enables the control. Can be checked only
180     * interactively. <p>
181     * Has <b>OK</b> status if no runtime exceptions occured.
182     */
183     public void _enableControl() {
184         boolean result = true ;
185 
186         try {
187             oObj.enableControl(cntlID, false) ;
188             oObj.enableControl(cntlID, true) ;
189         } catch (Exception e) {
190             e.printStackTrace(log) ;
191             result = false ;
192         }
193 
194         tRes.tested("enableControl()", result) ;
195     }
196 }
197 
198 
199