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  package org.apache.myfaces.view.facelets.impl;
20  
21  import java.util.Set;
22  import java.util.TreeSet;
23  
24  import org.apache.myfaces.test.base.junit4.AbstractJsfTestCase;
25  import org.junit.Test;
26  import org.testng.Assert;
27  
28  public class SectionUniqueIdCounterTest extends AbstractJsfTestCase
29  {
30      @Test
31      public void testSimpleCounter()
32      {
33          Set<String> idSet = new TreeSet<String>();
34          SectionUniqueIdCounter counter = new SectionUniqueIdCounter();
35          
36          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
37          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
38          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
39          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
40          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
41          Assert.assertTrue(idSet.add(counter.startUniqueIdSection()));
42          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
43          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
44          Assert.assertTrue(idSet.add(counter.startUniqueIdSection()));
45          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
46          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
47          counter.endUniqueIdSection();
48          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
49          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
50          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
51          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
52          counter.endUniqueIdSection();
53          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
54          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
55          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
56          Assert.assertTrue(idSet.add(counter.generateUniqueId()));
57          
58          /*
59          SectionUniqueIdCounter counter = new SectionUniqueIdCounter("_");
60          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
61          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
62          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
63          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
64          counter.startUniqueIdSection();
65          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
66          counter.startUniqueIdSection();
67          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
68          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
69          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
70          counter.endUniqueIdSection();
71          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
72          counter.endUniqueIdSection();
73          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
74          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
75          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
76          
77          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
78          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
79          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
80          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
81          counter.startUniqueIdSection();
82          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
83          counter.startUniqueIdSection();
84          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
85          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
86          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
87          counter.endUniqueIdSection();
88          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
89          counter.endUniqueIdSection();
90          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
91          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
92          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
93          
94          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
95          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
96          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
97          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
98          counter.startUniqueIdSection();
99          System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
100         counter.startUniqueIdSection();
101         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
102         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
103         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
104         counter.endUniqueIdSection();
105         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
106         counter.endUniqueIdSection();
107         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
108         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
109         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
110         
111         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
112         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
113         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
114         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
115         counter.startUniqueIdSection();
116         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
117         counter.startUniqueIdSection();
118         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
119         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
120         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
121         counter.endUniqueIdSection();
122         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
123         counter.endUniqueIdSection();
124         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
125         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
126         System.out.println(UIViewRoot.UNIQUE_ID_PREFIX+counter.generateUniqueId());
127         */
128     }
129     
130     @Test
131     public void testCachedCounter()
132     {
133         String[] cache = SectionUniqueIdCounter.generateUniqueIdCache("_", 10);
134         
135         SectionUniqueIdCounter counter = new SectionUniqueIdCounter("_", cache);
136         SectionUniqueIdCounter counterOrig = new SectionUniqueIdCounter("_");
137         
138         Assert.assertEquals(counterOrig.generateUniqueId(), counter.generateUniqueId());
139         Assert.assertEquals(counterOrig.generateUniqueId(), counter.generateUniqueId());
140         Assert.assertEquals(counterOrig.generateUniqueId(), counter.generateUniqueId());
141         Assert.assertEquals(counterOrig.generateUniqueId(), counter.generateUniqueId());
142         
143         counterOrig.startUniqueIdSection();
144         counter.startUniqueIdSection();
145         
146         Assert.assertEquals(counterOrig.generateUniqueId(), counter.generateUniqueId());
147         Assert.assertEquals(counterOrig.generateUniqueId(), counter.generateUniqueId());
148         Assert.assertEquals(counterOrig.generateUniqueId(), counter.generateUniqueId());
149         Assert.assertEquals(counterOrig.generateUniqueId(), counter.generateUniqueId());
150 
151         counterOrig.endUniqueIdSection();
152         counter.endUniqueIdSection();
153         
154         Assert.assertEquals(counterOrig.generateUniqueId(), counter.generateUniqueId());
155         Assert.assertEquals(counterOrig.generateUniqueId(), counter.generateUniqueId());
156         Assert.assertEquals(counterOrig.generateUniqueId(), counter.generateUniqueId());
157         Assert.assertEquals(counterOrig.generateUniqueId(), counter.generateUniqueId());
158     }
159     
160     @Test
161     public void testCounterExpansion()
162     {
163         SectionUniqueIdCounter counter = new SectionUniqueIdCounter();
164         
165         Assert.assertEquals("1", counter.generateUniqueId());
166         Assert.assertEquals("2", counter.generateUniqueId());
167         Assert.assertEquals("2_X", counter.startUniqueIdSection("X"));
168         Assert.assertEquals("2_X_1", counter.generateUniqueId());
169         Assert.assertEquals("2_X_2",counter.generateUniqueId());
170         Assert.assertEquals("2_X_3",counter.startUniqueIdSection());
171         Assert.assertEquals("2_X_3_1",counter.generateUniqueId());
172         Assert.assertEquals("2_X_3_2",counter.generateUniqueId());
173         counter.endUniqueIdSection();
174         Assert.assertEquals("2_X_4",counter.generateUniqueId());
175         counter.endUniqueIdSection("X");
176         Assert.assertEquals("2_Y", counter.startUniqueIdSection("Y"));
177         Assert.assertEquals("2_Y_1", counter.generateUniqueId());
178         counter.endUniqueIdSection("Y");
179         Assert.assertEquals("3", counter.generateUniqueId());
180         Assert.assertEquals("4", counter.generateUniqueId());
181     }
182     
183     @Test
184     public void testCounterExpansion2()
185     {
186         SectionUniqueIdCounter counter = new SectionUniqueIdCounter();
187         
188         Assert.assertEquals("1", counter.generateUniqueId());
189         Assert.assertEquals("2",counter.startUniqueIdSection());
190         Assert.assertEquals("2_1",counter.startUniqueIdSection());
191         Assert.assertEquals("2_1_1", counter.generateUniqueId());
192         counter.endUniqueIdSection();
193         Assert.assertEquals("2_2", counter.generateUniqueId());
194         counter.endUniqueIdSection();
195         Assert.assertEquals("3", counter.generateUniqueId());
196         
197         Assert.assertEquals("3_X", counter.startUniqueIdSection("X"));
198         Assert.assertEquals("3_X_1", counter.generateUniqueId());
199         Assert.assertEquals("3_X_2",counter.generateUniqueId());
200         Assert.assertEquals("3_X_3",counter.startUniqueIdSection());
201         Assert.assertEquals("3_X_3_1",counter.generateUniqueId());
202         Assert.assertEquals("3_X_3_2",counter.generateUniqueId());
203         counter.endUniqueIdSection();
204         Assert.assertEquals("3_X_4",counter.generateUniqueId());
205         counter.endUniqueIdSection("X");
206         Assert.assertEquals("3_Y", counter.startUniqueIdSection("Y"));
207         Assert.assertEquals("3_Y_1", counter.generateUniqueId());
208         counter.endUniqueIdSection("Y");
209         Assert.assertEquals("4",counter.startUniqueIdSection());
210         counter.endUniqueIdSection();
211         Assert.assertEquals("5", counter.generateUniqueId());
212         Assert.assertEquals("6", counter.generateUniqueId());
213     }
214     
215     @Test
216     public void testCounterExpansion3()
217     {
218         SectionUniqueIdCounter counter = new SectionUniqueIdCounter();
219         
220         Assert.assertEquals("1",counter.startUniqueIdSection());
221         Assert.assertEquals("1_1", counter.generateUniqueId());
222         Assert.assertEquals("1_2",counter.startUniqueIdSection());
223         Assert.assertEquals("1_2_1",counter.startUniqueIdSection());
224         Assert.assertEquals("1_2_1_1", counter.generateUniqueId());
225         counter.endUniqueIdSection();
226         Assert.assertEquals("1_2_2", counter.generateUniqueId());
227         counter.endUniqueIdSection();
228         Assert.assertEquals("1_3", counter.generateUniqueId());
229         
230         Assert.assertEquals("1_3_X", counter.startUniqueIdSection("X"));
231         Assert.assertEquals("1_3_X_1", counter.generateUniqueId());
232         Assert.assertEquals("1_3_X_2",counter.generateUniqueId());
233         Assert.assertEquals("1_3_X_3",counter.startUniqueIdSection());
234         Assert.assertEquals("1_3_X_3_1",counter.generateUniqueId());
235         Assert.assertEquals("1_3_X_3_2",counter.generateUniqueId());
236         counter.endUniqueIdSection();
237         Assert.assertEquals("1_3_X_4",counter.generateUniqueId());
238         counter.endUniqueIdSection("X");
239         Assert.assertEquals("1_3_Y", counter.startUniqueIdSection("Y"));
240         Assert.assertEquals("1_3_Y_1", counter.generateUniqueId());
241         counter.endUniqueIdSection("Y");
242         Assert.assertEquals("1_4",counter.startUniqueIdSection());
243         counter.endUniqueIdSection();
244         Assert.assertEquals("1_5", counter.generateUniqueId());
245         Assert.assertEquals("1_6", counter.generateUniqueId());
246         counter.endUniqueIdSection();
247     }    
248 }