View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  
20  package org.apache.myfaces.tobago.model;
21  
22  
23  import org.junit.jupiter.api.Assertions;
24  import org.junit.jupiter.api.BeforeAll;
25  import org.junit.jupiter.api.Test;
26  
27  import javax.swing.tree.DefaultMutableTreeNode;
28  
29  public class ExpandedStateUnitTest {
30  
31    private static final DefaultMutableTreeNode ROOT = new DefaultMutableTreeNode("root");
32    private static final DefaultMutableTreeNode A = new DefaultMutableTreeNode("a");
33    private static final DefaultMutableTreeNode B = new DefaultMutableTreeNode("b");
34    private static final DefaultMutableTreeNode C = new DefaultMutableTreeNode("c");
35    private static final DefaultMutableTreeNode A1 = new DefaultMutableTreeNode("a1");
36    private static final DefaultMutableTreeNode A2 = new DefaultMutableTreeNode("a2");
37    private static final DefaultMutableTreeNode A3 = new DefaultMutableTreeNode("a3");
38    private static final DefaultMutableTreeNode B1 = new DefaultMutableTreeNode("b1");
39    private static final DefaultMutableTreeNode B2 = new DefaultMutableTreeNode("b2");
40    private static final DefaultMutableTreeNode B3 = new DefaultMutableTreeNode("b3");
41    private static final DefaultMutableTreeNode C1 = new DefaultMutableTreeNode("c1");
42    private static final DefaultMutableTreeNode C2 = new DefaultMutableTreeNode("c2");
43    private static final DefaultMutableTreeNode C3 = new DefaultMutableTreeNode("c3");
44  
45    @BeforeAll
46    public static void setup() {
47      ROOT.add(A);
48      ROOT.add(B);
49      ROOT.add(C);
50      A.add(A1);
51      A.add(A2);
52      A.add(A3);
53      B.add(B1);
54      B.add(B2);
55      B.add(B3);
56      C.add(C1);
57      C.add(C2);
58      C.add(C3);
59    }
60  
61    /**
62     * <pre>
63     *  + root
64     *  |
65     *  +-+ a
66     *  | |
67     *  | +-+ a1
68     *  | |
69     *  | +-+ a2
70     *  | |
71     *  | +-+ a3
72     *  |
73     *  +-+ b
74     *  | |
75     *  | +-+ b1
76     *  | |
77     *  | +-+ b2
78     *  | |
79     *  | +-+ b3
80     *  |
81     *  +-+ c
82     *    |
83     *    +-+ c1
84     *    |
85     *    +-+ c2
86     *    |
87     *    +-+ c3
88     *
89     * </pre>
90     */
91    @Test
92    public void test() {
93  
94      final ExpandedState state = new ExpandedState(2);
95  
96      final TreePath root = new TreePath(ROOT);
97      final TreePath a = new TreePath(A);
98      final TreePath b = new TreePath(B);
99      final TreePath c = new TreePath(C);
100     final TreePath a1 = new TreePath(A1);
101     final TreePath a2 = new TreePath(A2);
102     final TreePath a3 = new TreePath(A3);
103     final TreePath b1 = new TreePath(B1);
104     final TreePath b2 = new TreePath(B2);
105     final TreePath b3 = new TreePath(B3);
106     final TreePath c1 = new TreePath(C1);
107     final TreePath c2 = new TreePath(C2);
108     final TreePath c3 = new TreePath(C3);
109 
110     Assertions.assertTrue(state.isExpanded(ROOT));
111 
112     Assertions.assertTrue(state.isExpanded(root));
113     Assertions.assertTrue(state.isExpanded(a));
114     Assertions.assertTrue(state.isExpanded(b));
115     Assertions.assertTrue(state.isExpanded(c));
116     Assertions.assertFalse(state.isExpanded(a1));
117     Assertions.assertFalse(state.isExpanded(a2));
118     Assertions.assertFalse(state.isExpanded(a3));
119     Assertions.assertFalse(state.isExpanded(b1));
120     Assertions.assertFalse(state.isExpanded(b2));
121     Assertions.assertFalse(state.isExpanded(b3));
122     Assertions.assertFalse(state.isExpanded(c1));
123     Assertions.assertFalse(state.isExpanded(c2));
124     Assertions.assertFalse(state.isExpanded(c3));
125 
126     state.expand(a);
127     state.expand(a1);
128     state.expand(a2);
129     state.expand(c);
130 
131     state.collapse(root);
132     state.collapse(b);
133     state.collapse(b3);
134     state.collapse(a2);
135     state.collapse(c);
136 
137     Assertions.assertFalse(state.isExpanded(root));
138     Assertions.assertTrue(state.isExpanded(a));
139     Assertions.assertFalse(state.isExpanded(b));
140     Assertions.assertFalse(state.isExpanded(c));
141     Assertions.assertTrue(state.isExpanded(a1));
142     Assertions.assertFalse(state.isExpanded(a2));
143     Assertions.assertFalse(state.isExpanded(a3));
144     Assertions.assertFalse(state.isExpanded(b1));
145     Assertions.assertFalse(state.isExpanded(b2));
146     Assertions.assertFalse(state.isExpanded(b3));
147     Assertions.assertFalse(state.isExpanded(c1));
148     Assertions.assertFalse(state.isExpanded(c2));
149     Assertions.assertFalse(state.isExpanded(c3));
150     Assertions.assertEquals(1, state.getExpandedSet().size());
151     Assertions.assertEquals(3, state.getCollapsedSet().size());
152 
153     // expand(1) should only expand the root node
154     state.expand(1);
155 
156     Assertions.assertTrue(state.isExpanded(root));
157     Assertions.assertTrue(state.isExpanded(a));
158     Assertions.assertFalse(state.isExpanded(b));
159     Assertions.assertFalse(state.isExpanded(c));
160     Assertions.assertTrue(state.isExpanded(a1));
161     Assertions.assertFalse(state.isExpanded(a2));
162     Assertions.assertFalse(state.isExpanded(a3));
163     Assertions.assertFalse(state.isExpanded(b1));
164     Assertions.assertFalse(state.isExpanded(b2));
165     Assertions.assertFalse(state.isExpanded(b3));
166     Assertions.assertFalse(state.isExpanded(c1));
167     Assertions.assertFalse(state.isExpanded(c2));
168     Assertions.assertFalse(state.isExpanded(c3));
169     Assertions.assertEquals(1, state.getExpandedSet().size());
170     Assertions.assertEquals(2, state.getCollapsedSet().size());
171 
172     // collapse(3) should collapse a1 only
173     state.collapse(3);
174 
175     Assertions.assertTrue(state.isExpanded(root));
176     Assertions.assertTrue(state.isExpanded(a));
177     Assertions.assertFalse(state.isExpanded(b));
178     Assertions.assertFalse(state.isExpanded(c));
179     Assertions.assertFalse(state.isExpanded(a1));
180     Assertions.assertFalse(state.isExpanded(a2));
181     Assertions.assertFalse(state.isExpanded(a3));
182     Assertions.assertFalse(state.isExpanded(b1));
183     Assertions.assertFalse(state.isExpanded(b2));
184     Assertions.assertFalse(state.isExpanded(b3));
185     Assertions.assertFalse(state.isExpanded(c1));
186     Assertions.assertFalse(state.isExpanded(c2));
187     Assertions.assertFalse(state.isExpanded(c3));
188     Assertions.assertEquals(0, state.getExpandedSet().size());
189     Assertions.assertEquals(2, state.getCollapsedSet().size());
190 
191     // expand(2) should expand b and c
192     state.expand(2);
193 
194     Assertions.assertTrue(state.isExpanded(root));
195     Assertions.assertTrue(state.isExpanded(a));
196     Assertions.assertTrue(state.isExpanded(b));
197     Assertions.assertTrue(state.isExpanded(c));
198     Assertions.assertFalse(state.isExpanded(a1));
199     Assertions.assertFalse(state.isExpanded(a2));
200     Assertions.assertFalse(state.isExpanded(a3));
201     Assertions.assertFalse(state.isExpanded(b1));
202     Assertions.assertFalse(state.isExpanded(b2));
203     Assertions.assertFalse(state.isExpanded(b3));
204     Assertions.assertFalse(state.isExpanded(c1));
205     Assertions.assertFalse(state.isExpanded(c2));
206     Assertions.assertFalse(state.isExpanded(c3));
207     Assertions.assertEquals(0, state.getExpandedSet().size());
208     Assertions.assertEquals(0, state.getCollapsedSet().size());
209 
210     // collapse(2) should expand b and c
211     state.collapse(2);
212 
213     Assertions.assertTrue(state.isExpanded(root));
214     Assertions.assertFalse(state.isExpanded(a));
215     Assertions.assertFalse(state.isExpanded(b));
216     Assertions.assertFalse(state.isExpanded(c));
217     Assertions.assertFalse(state.isExpanded(a1));
218     Assertions.assertFalse(state.isExpanded(a2));
219     Assertions.assertFalse(state.isExpanded(a3));
220     Assertions.assertFalse(state.isExpanded(b1));
221     Assertions.assertFalse(state.isExpanded(b2));
222     Assertions.assertFalse(state.isExpanded(b3));
223     Assertions.assertFalse(state.isExpanded(c1));
224     Assertions.assertFalse(state.isExpanded(c2));
225     Assertions.assertFalse(state.isExpanded(c3));
226     Assertions.assertEquals(0, state.getExpandedSet().size());
227     Assertions.assertEquals(0, state.getCollapsedSet().size());
228 
229     // expand(2) should expand b and c
230     state.expand(a);
231     state.expand(b);
232     state.expand(2);
233 
234     Assertions.assertTrue(state.isExpanded(root));
235     Assertions.assertTrue(state.isExpanded(a));
236     Assertions.assertTrue(state.isExpanded(b));
237     Assertions.assertTrue(state.isExpanded(c));
238     Assertions.assertFalse(state.isExpanded(a1));
239     Assertions.assertFalse(state.isExpanded(a2));
240     Assertions.assertFalse(state.isExpanded(a3));
241     Assertions.assertFalse(state.isExpanded(b1));
242     Assertions.assertFalse(state.isExpanded(b2));
243     Assertions.assertFalse(state.isExpanded(b3));
244     Assertions.assertFalse(state.isExpanded(c1));
245     Assertions.assertFalse(state.isExpanded(c2));
246     Assertions.assertFalse(state.isExpanded(c3));
247     Assertions.assertEquals(0, state.getExpandedSet().size());
248     Assertions.assertEquals(0, state.getCollapsedSet().size());
249 
250     // collapse(2) should expand b and c
251     state.collapse(a);
252     state.collapse(b);
253     state.collapse(2);
254 
255     Assertions.assertTrue(state.isExpanded(root));
256     Assertions.assertFalse(state.isExpanded(a));
257     Assertions.assertFalse(state.isExpanded(b));
258     Assertions.assertFalse(state.isExpanded(c));
259     Assertions.assertFalse(state.isExpanded(a1));
260     Assertions.assertFalse(state.isExpanded(a2));
261     Assertions.assertFalse(state.isExpanded(a3));
262     Assertions.assertFalse(state.isExpanded(b1));
263     Assertions.assertFalse(state.isExpanded(b2));
264     Assertions.assertFalse(state.isExpanded(b3));
265     Assertions.assertFalse(state.isExpanded(c1));
266     Assertions.assertFalse(state.isExpanded(c2));
267     Assertions.assertFalse(state.isExpanded(c3));
268     Assertions.assertEquals(0, state.getExpandedSet().size());
269     Assertions.assertEquals(0, state.getCollapsedSet().size());
270 
271     state.expand(2);
272     state.expand(b); // do something noise
273     state.expand(c1); // do something noise
274     state.collapseAll();
275     Assertions.assertFalse(state.isExpanded(root));
276     Assertions.assertFalse(state.isExpanded(a));
277     Assertions.assertFalse(state.isExpanded(b));
278     Assertions.assertFalse(state.isExpanded(c));
279     Assertions.assertFalse(state.isExpanded(a1));
280     Assertions.assertFalse(state.isExpanded(a2));
281     Assertions.assertFalse(state.isExpanded(a3));
282     Assertions.assertFalse(state.isExpanded(b1));
283     Assertions.assertFalse(state.isExpanded(b2));
284     Assertions.assertFalse(state.isExpanded(b3));
285     Assertions.assertFalse(state.isExpanded(c1));
286     Assertions.assertFalse(state.isExpanded(c2));
287     Assertions.assertFalse(state.isExpanded(c3));
288     Assertions.assertEquals(0, state.getExpandedSet().size());
289     Assertions.assertEquals(0, state.getCollapsedSet().size());
290 
291     state.expand(2);
292     state.expand(b); // do something noise
293     state.expand(c1); // do something noise
294     state.expandAll();
295     Assertions.assertTrue(state.isExpanded(root));
296     Assertions.assertTrue(state.isExpanded(a));
297     Assertions.assertTrue(state.isExpanded(b));
298     Assertions.assertTrue(state.isExpanded(c));
299     Assertions.assertTrue(state.isExpanded(a1));
300     Assertions.assertTrue(state.isExpanded(a2));
301     Assertions.assertTrue(state.isExpanded(a3));
302     Assertions.assertTrue(state.isExpanded(b1));
303     Assertions.assertTrue(state.isExpanded(b2));
304     Assertions.assertTrue(state.isExpanded(b3));
305     Assertions.assertTrue(state.isExpanded(c1));
306     Assertions.assertTrue(state.isExpanded(c2));
307     Assertions.assertTrue(state.isExpanded(c3));
308     Assertions.assertEquals(0, state.getExpandedSet().size());
309     Assertions.assertEquals(0, state.getCollapsedSet().size());
310 
311     state.expand(2);
312     state.expand(b); // do something noise
313     state.expand(c1); // do something noise
314     state.collapseAllButRoot();
315     Assertions.assertTrue(state.isExpanded(root));
316     Assertions.assertFalse(state.isExpanded(a));
317     Assertions.assertFalse(state.isExpanded(b));
318     Assertions.assertFalse(state.isExpanded(c));
319     Assertions.assertFalse(state.isExpanded(a1));
320     Assertions.assertFalse(state.isExpanded(a2));
321     Assertions.assertFalse(state.isExpanded(a3));
322     Assertions.assertFalse(state.isExpanded(b1));
323     Assertions.assertFalse(state.isExpanded(b2));
324     Assertions.assertFalse(state.isExpanded(b3));
325     Assertions.assertFalse(state.isExpanded(c1));
326     Assertions.assertFalse(state.isExpanded(c2));
327     Assertions.assertFalse(state.isExpanded(c3));
328     Assertions.assertEquals(0, state.getExpandedSet().size());
329     Assertions.assertEquals(0, state.getCollapsedSet().size());
330 
331     // text TreeNode
332 
333     state.expand(A);
334     Assertions.assertTrue(state.isExpanded(A));
335     state.collapse(A);
336     Assertions.assertFalse(state.isExpanded(A));
337 
338 
339   }
340 }