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.awt.tree;
25 
26 import com.sun.star.awt.tree.XMutableTreeNode;
27 import lib.MultiMethodTest;
28 import lib.Status;
29 import lib.StatusException;
30 
31 /**
32  * Testing <code>com.sun.star.awt.tree.XTreeDataModel</code>
33  * interface methods :
34  * <ul>
35  *  <li><code> appendChild()</code></li>
36  *  <li><code> insertChildByIndex()</code></li>
37  *  <li><code> removeChildByIndex()</code></li>
38  *  <li><code> setHasChildrenOnDemand()</code></li>
39  *  <li><code> setDisplayValue()</code></li>
40  *  <li><code> setNodeGraphicURL()</code></li>
41  *  <li><code> setExpandedGraphicURL()</code></li>
42  *  <li><code> setCollapsedGraphicURL()</code></li>
43  *  <li><code> DataValue()</code></li>
44  * </ul> <p>
45  * Test is <b> NOT </b> multithread compilant. <p>
46  *
47  * @see com.sun.star.awt.tree.XTreeDataModel
48  */
49 public class _XMutableTreeNode extends MultiMethodTest {
50 
51     public XMutableTreeNode oObj = null;
52 
53     private int mCount = 0;
54 
55     private XMutableTreeNodeCreator nodeCreator = null;
56 
57     public static interface XMutableTreeNodeCreator{
createNode(String name)58         public XMutableTreeNode createNode(String name);
59     }
60 
before()61     public void before(){
62         nodeCreator = (XMutableTreeNodeCreator) tEnv.getObjRelation("XMutableTreeNodeCreator");
63         if (nodeCreator == null){
64             throw new StatusException(Status.failed(
65                 "Couldn't get relation 'XMutableTreeNodeCreator'"));
66         }
67 
68     }
69 
_appendChild()70      public void _appendChild(){
71         boolean bOK = true;
72 
73         log.println("try to append a valid node...");
74 
75         XMutableTreeNode myNode = nodeCreator.createNode("myNodeToAppend");
76 
77         try {
78             oObj.appendChild(myNode);
79         } catch (com.sun.star.lang.IllegalArgumentException ex) {
80             log.println("ERROR: could not appedn a valid node: " + ex.toString());
81             bOK = false;
82         }
83 
84         log.println("try to append the node a second time...");
85         try {
86 
87             oObj.appendChild(myNode);
88             log.println("ERROR: expected IllegalArgumentException was not thrown => FAILED");
89             bOK = false;
90         } catch (com.sun.star.lang.IllegalArgumentException ex) {
91             log.println("expected IllegalArgumentException was thrown => OK");
92         }
93 
94         log.println("try to append the object itself...");
95         try {
96 
97             oObj.appendChild(oObj);
98             log.println("ERROR: expected IllegalArgumentException was not thrown => FAILED");
99             bOK = false;
100         } catch (com.sun.star.lang.IllegalArgumentException ex) {
101             log.println("expected IllegalArgumentException was thrown => OK");
102         }
103 
104         tRes.tested("appendChild()", bOK);
105     }
106 
_insertChildByIndex()107      public void _insertChildByIndex(){
108         boolean bOK = true;
109 
110         XMutableTreeNode myNode = nodeCreator.createNode("myNodeToInsert");
111 
112         try {
113             log.println("try to insert a valid node...");
114             oObj.insertChildByIndex(0, myNode);
115         } catch (com.sun.star.lang.IllegalArgumentException ex) {
116             log.println("ERROR: could not insert a valid node: " + ex.toString());
117             bOK = false;
118         } catch (com.sun.star.lang.IndexOutOfBoundsException ex) {
119             log.println("ERROR: could not insert a valid node on index '0': " + ex.toString());
120             bOK = false;
121         }
122 
123         try {
124             log.println("try to insert a valid node a second time...");
125             oObj.insertChildByIndex(0, myNode);
126             log.println("ERROR: expected IllegalArgumentException was not thrown => FAILED");
127             bOK = false;
128         } catch (com.sun.star.lang.IllegalArgumentException ex) {
129             log.println("expected IllegalArgumentException wa thrown => OK");
130         } catch (com.sun.star.lang.IndexOutOfBoundsException ex) {
131             log.println("ERROR: wrong IndexOutOfBoundsException was thrown. Expected is IllegalArgumentException => FAILED");
132             bOK = false;
133         }
134 
135         XMutableTreeNode myNode2 = nodeCreator.createNode("myNodeToInsert2");
136 
137         try {
138             log.println("try to insert a valid node on invalid index '-3'...");
139             oObj.insertChildByIndex(-3, myNode2);
140             log.println("ERROR: expected IndexOutOfBoundsException was not thrown => FAILED");
141             bOK = false;
142         } catch (com.sun.star.lang.IllegalArgumentException ex) {
143             log.println("ERROR: wrong IllegalArgumentException was thrown. Expected is IndexOutOfBoundsException => FAILED");
144             bOK = false;
145         } catch (com.sun.star.lang.IndexOutOfBoundsException ex) {
146             log.println("Expected IndexOutOfBoundsException was thrown => OK");
147         }
148 
149         try {
150             log.println("try to insert the object itself...");
151             oObj.insertChildByIndex(0, oObj);
152             log.println("ERROR: expected IllegalArgumentException was not thrown => FAILED");
153             bOK = false;
154         } catch (com.sun.star.lang.IllegalArgumentException ex) {
155             log.println("expected IllegalArgumentException was thrown => OK");
156         } catch (com.sun.star.lang.IndexOutOfBoundsException ex) {
157             log.println("unexpected IndexOutOfBoundsException was thrown, expected was IllegalArgumentException => FAILED");
158             bOK = false;
159         }
160 
161         tRes.tested("insertChildByIndex()", bOK);
162     }
163 
_removeChildByIndex()164      public void _removeChildByIndex(){
165 
166          requiredMethod("insertChildByIndex()");
167          boolean bOK = true;
168 
169         try {
170             log.println("try to remove node at index '0'...");
171             oObj.removeChildByIndex(0);
172         } catch (com.sun.star.lang.IndexOutOfBoundsException ex) {
173             log.println("ERROR: IndexOutOfBoundsException was thrown => FAILED");
174             bOK = false;
175         }
176 
177         try {
178             log.println("try to remove node at invalid index '-3'");
179             oObj.removeChildByIndex(-3);
180             log.println("ERROR: expected IndexOutOfBoundsException was not thrown => FAILED");
181             bOK = false;
182         } catch (com.sun.star.lang.IndexOutOfBoundsException ex) {
183             log.println("expected IndexOutOfBoundsException was thrown => OK");
184         }
185         tRes.tested("removeChildByIndex()", bOK);
186     }
187 
_setHasChildrenOnDemand()188      public void _setHasChildrenOnDemand(){
189         boolean bOK = true;
190 
191         log.println("setHasChildrenOnDemand(true)");
192         oObj.setHasChildrenOnDemand(true);
193 
194         log.println("setHasChildrenOnDemand(false)");
195         oObj.setHasChildrenOnDemand(false);
196 
197         tRes.tested("setHasChildrenOnDemand()", bOK);
198     }
199 
_setDisplayValue()200      public void _setDisplayValue(){
201         boolean bOK = true;
202 
203         log.println("setDisplayValue(\"MyTestValue\")");
204         oObj.setDisplayValue("MyTestValue");
205 
206         log.println("setDisplayValue(null)");
207         oObj.setDisplayValue(null);
208 
209         log.println("oObj.setDisplayValue(oObj)");
210         oObj.setDisplayValue(oObj);
211 
212         tRes.tested("setDisplayValue()", bOK);
213     }
214 
_setNodeGraphicURL()215      public void _setNodeGraphicURL(){
216         boolean bOK = true;
217 
218         log.println("setNodeGraphicURL(\"MyTestURL\")");
219         oObj.setNodeGraphicURL("MyTestURL");
220 
221         log.println("setNodeGraphicURL(null)");
222         oObj.setNodeGraphicURL(null);
223 
224         tRes.tested("setNodeGraphicURL()", bOK);
225     }
226 
_setExpandedGraphicURL()227      public void _setExpandedGraphicURL(){
228         boolean bOK = true;
229 
230         log.println("setExpandedGraphicURL(\"myExpandedURL\")");
231         oObj.setExpandedGraphicURL("myExpandedURL");
232 
233         log.println("setExpandedGraphicURL(null)");
234         oObj.setExpandedGraphicURL(null);
235 
236         tRes.tested("setExpandedGraphicURL()", bOK);
237     }
238 
_setCollapsedGraphicURL()239      public void _setCollapsedGraphicURL(){
240         boolean bOK = true;
241 
242         log.println("setCollapsedGraphicURL(\"myCollapsedURL\")");
243         oObj.setCollapsedGraphicURL("myCollapsedURL");
244 
245         log.println("setCollapsedGraphicURL(null)");
246         oObj.setCollapsedGraphicURL(null);
247 
248         tRes.tested("setCollapsedGraphicURL()", bOK);
249     }
250 
_DataValue()251      public void _DataValue(){
252         boolean bOK = true;
253 
254         log.println("setDataValue(\"myDataValue\")");
255         oObj.setDataValue("myDataValue");
256 
257         String sDataValue = (String) oObj.getDataValue();
258 
259         if ( ! sDataValue.equals("myDataValue")) {
260             log.println("ERROR: getDataVlaue does not return the value which is inserted before:\n" +
261                 "\texpected: myDataValue\n" +
262                 "\tgot: " + sDataValue);
263             bOK = false;
264         }
265 
266         log.println("setDataValue(null)");
267         oObj.setDataValue(null);
268 
269         Object oDataValue = oObj.getDataValue();
270         if ( oDataValue != null) {
271             log.println("ERROR: getDataVlaue does not return the value which is inserted before:\n" +
272                 "\texpected: null\n" +
273                 "\tgot: " + oDataValue.toString());
274             bOK = false;
275         }
276 
277         log.println("oObj.setDisplayValue(oObj)");
278         oObj.setDisplayValue(oObj);
279 
280         oDataValue = oObj.getDataValue();
281         if ( oDataValue != null) {
282             log.println("ERROR: getDataVlaue does not return the value which is inserted before:\n" +
283                 "\texpected: " + oObj.toString() +"\n" +
284                 "\tgot: " + oDataValue.toString());
285             bOK = false;
286         }
287 
288         tRes.tested("DataValue()", bOK);
289     }
290 
291 }
292