View Javadoc

1   /*
2    * $Id: SubsetIteratorTagTest.java 651946 2008-04-27 13:41:38Z apetrelli $
3    *
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  package org.apache.struts2.views.jsp;
23  
24  import java.util.ArrayList;
25  import java.util.Iterator;
26  import java.util.List;
27  
28  import org.apache.struts2.util.SubsetIteratorFilter.Decider;
29  import org.apache.struts2.views.jsp.iterator.SubsetIteratorTag;
30  
31  import com.opensymphony.xwork2.Action;
32  import com.opensymphony.xwork2.ActionSupport;
33  
34  
35  /***
36   * Test case for SubsetIteratorTag.
37   *
38   */
39  public class SubsetIteratorTagTest extends AbstractTagTest {
40  
41  
42      public void testBasic() throws Exception {
43          { // List as Source
44              SubsetIteratorTag tag = new SubsetIteratorTag();
45              tag.setPageContext(pageContext);
46              tag.setSource("myList");
47  
48              tag.doStartTag();
49              Iterator subsetIterator = (Iterator) stack.findValue("top");
50              tag.doEndTag();
51  
52              assertEquals(subsetIterator.next(), new Integer(1));
53              assertEquals(subsetIterator.next(), new Integer(2));
54              assertEquals(subsetIterator.next(), new Integer(3));
55              assertEquals(subsetIterator.next(), new Integer(4));
56              assertEquals(subsetIterator.next(), new Integer(5));
57          }
58  
59          { // Array as Source
60              SubsetIteratorTag tag = new SubsetIteratorTag();
61              tag.setPageContext(pageContext);
62              tag.setSource("myArray");
63  
64              tag.doStartTag();
65              Iterator subsetIterator = (Iterator) stack.findValue("top");
66              tag.doEndTag();
67  
68              assertEquals(subsetIterator.next(), new Integer(1));
69              assertEquals(subsetIterator.next(), new Integer(2));
70              assertEquals(subsetIterator.next(), new Integer(3));
71              assertEquals(subsetIterator.next(), new Integer(4));
72              assertEquals(subsetIterator.next(), new Integer(5));
73          }
74      }
75  
76      public void testWithStartAttribute() throws Exception {
77          { // List as source
78              SubsetIteratorTag tag = new SubsetIteratorTag();
79              tag.setPageContext(pageContext);
80              tag.setSource("myList");
81              tag.setStart("3");
82  
83              tag.doStartTag();
84              Iterator subsetIterator = (Iterator) stack.findValue("top");
85              tag.doEndTag();
86  
87              assertEquals(subsetIterator.next(), new Integer(4));
88              assertEquals(subsetIterator.next(), new Integer(5));
89          }
90  
91          { // Array as source
92              SubsetIteratorTag tag = new SubsetIteratorTag();
93              tag.setPageContext(pageContext);
94              tag.setSource("myArray");
95              tag.setStart("3");
96  
97              tag.doStartTag();
98              Iterator subsetIterator = (Iterator) stack.findValue("top");
99              tag.doEndTag();
100 
101             assertEquals(subsetIterator.next(), new Integer(4));
102             assertEquals(subsetIterator.next(), new Integer(5));
103         }
104     }
105 
106     public void testWithCountAttribute() throws Exception {
107         { // List as source
108             SubsetIteratorTag tag = new SubsetIteratorTag();
109             tag.setPageContext(pageContext);
110             tag.setSource("myList");
111             tag.setCount("3");
112 
113             tag.doStartTag();
114             Iterator subsetIterator = (Iterator) stack.findValue("top");
115             tag.doEndTag();
116 
117             assertEquals(subsetIterator.next(), new Integer(1));
118             assertEquals(subsetIterator.next(), new Integer(2));
119             assertEquals(subsetIterator.next(), new Integer(3));
120         }
121 
122         { // array as source
123             SubsetIteratorTag tag = new SubsetIteratorTag();
124             tag.setPageContext(pageContext);
125             tag.setSource("myArray");
126             tag.setCount("3");
127 
128             tag.doStartTag();
129             Iterator subsetIterator = (Iterator) stack.findValue("top");
130             tag.doEndTag();
131 
132             assertEquals(subsetIterator.next(), new Integer(1));
133             assertEquals(subsetIterator.next(), new Integer(2));
134             assertEquals(subsetIterator.next(), new Integer(3));
135         }
136     }
137 
138     public void testWIthStartAndCountAttribute() throws Exception {
139         { // List as source
140             SubsetIteratorTag tag = new SubsetIteratorTag();
141             tag.setPageContext(pageContext);
142             tag.setSource("myList");
143             tag.setStart("3");
144             tag.setCount("3");
145 
146             tag.doStartTag();
147             Iterator subsetIterator = (Iterator) stack.findValue("top");
148             tag.doEndTag();
149 
150             assertEquals(subsetIterator.next(), new Integer("4"));
151             assertEquals(subsetIterator.next(), new Integer("5"));
152         }
153 
154         {   // Array as source
155             SubsetIteratorTag tag = new SubsetIteratorTag();
156             tag.setPageContext(pageContext);
157             tag.setSource("myArray");
158             tag.setStart("3");
159             tag.setCount("3");
160 
161             tag.doStartTag();
162             Iterator subsetIterator = (Iterator) stack.findValue("top");
163             tag.doEndTag();
164 
165             assertEquals(subsetIterator.next(), new Integer("4"));
166             assertEquals(subsetIterator.next(), new Integer("5"));
167         }
168     }
169 
170     public void testWithId() throws Exception {
171         {   // List as Source
172             SubsetIteratorTag tag = new SubsetIteratorTag();
173             tag.setPageContext(pageContext);
174             tag.setSource("myList");
175             tag.setId("myPageContextId1");
176 
177             tag.doStartTag();
178             Iterator subsetIterator1 = (Iterator) stack.findValue("top");
179             tag.doEndTag();
180 
181             Iterator subsetIterator2 = (Iterator) pageContext.getAttribute("myPageContextId1");
182 
183             assertNotNull(subsetIterator1);
184             assertNotNull(subsetIterator2);
185             assertEquals(subsetIterator1, subsetIterator2);
186             assertEquals(subsetIterator2.next(), new Integer(1));
187             assertEquals(subsetIterator2.next(), new Integer(2));
188             assertEquals(subsetIterator2.next(), new Integer(3));
189             assertEquals(subsetIterator2.next(), new Integer(4));
190             assertEquals(subsetIterator2.next(), new Integer(5));
191         }
192 
193         {   // Array as source
194             SubsetIteratorTag tag = new SubsetIteratorTag();
195             tag.setPageContext(pageContext);
196             tag.setSource("myArray");
197             tag.setId("myPageContextId2");
198 
199             tag.doStartTag();
200             Iterator subsetIterator1 = (Iterator) stack.findValue("top");
201             tag.doEndTag();
202 
203             Iterator subsetIterator2 = (Iterator) pageContext.getAttribute("myPageContextId2");
204 
205             assertNotNull(subsetIterator1);
206             assertNotNull(subsetIterator2);
207             assertEquals(subsetIterator1, subsetIterator2);
208             assertEquals(subsetIterator2.next(), new Integer(1));
209             assertEquals(subsetIterator2.next(), new Integer(2));
210             assertEquals(subsetIterator2.next(), new Integer(3));
211             assertEquals(subsetIterator2.next(), new Integer(4));
212             assertEquals(subsetIterator2.next(), new Integer(5));
213         }
214     }
215 
216     public void testWithDecider() throws Exception {
217         {   // List as source
218             SubsetIteratorTag tag = new SubsetIteratorTag();
219             tag.setPageContext(pageContext);
220             tag.setSource("myList");
221             tag.setDecider("myDecider");
222 
223             tag.doStartTag();
224             Iterator subsetIterator = (Iterator) stack.findValue("top");
225             tag.doEndTag();
226 
227             assertEquals(subsetIterator.next(), new Integer(2));
228             assertEquals(subsetIterator.next(), new Integer(4));
229         }
230 
231         {   // Array As source
232             SubsetIteratorTag tag = new SubsetIteratorTag();
233             tag.setPageContext(pageContext);
234             tag.setSource("myList");
235             tag.setDecider("myDecider");
236 
237             tag.doStartTag();
238             Iterator subsetIterator = (Iterator) stack.findValue("top");
239             tag.doEndTag();
240 
241             assertEquals(subsetIterator.next(), new Integer(2));
242             assertEquals(subsetIterator.next(), new Integer(4));
243         }
244     }
245 
246 
247 
248     public Action getAction() {
249         return new ActionSupport() {
250             public List getMyList() {
251                 List l = new ArrayList();
252                 l.add(new Integer(1));
253                 l.add(new Integer(2));
254                 l.add(new Integer(3));
255                 l.add(new Integer(4));
256                 l.add(new Integer(5));
257                 return l;
258             }
259 
260             public Integer[] getMyArray() {
261                 Integer[] integers = new Integer[5];
262                 integers[0] = new Integer(1);
263                 integers[1] = new Integer(2);
264                 integers[2] = new Integer(3);
265                 integers[3] = new Integer(4);
266                 integers[4] = new Integer(5);
267                 return integers;
268             }
269 
270             public Decider getMyDecider() {
271                 return new Decider() {
272                     public boolean decide(Object element) throws Exception {
273                         int integer = ((Integer)element).intValue();
274                         return (((integer % 2) == 0)?true:false);
275                     }
276                 };
277             }
278         };
279     }
280 }