1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.struts2.views.jsp;
22
23 import java.util.ArrayList;
24 import java.util.Iterator;
25 import java.util.List;
26
27 import org.apache.struts2.util.SubsetIteratorFilter.Decider;
28 import org.apache.struts2.views.jsp.iterator.SubsetIteratorTag;
29
30 import com.opensymphony.xwork2.Action;
31 import com.opensymphony.xwork2.ActionSupport;
32
33
34 /***
35 * Test case for SubsetIteratorTag.
36 *
37 */
38 public class SubsetIteratorTagTest extends AbstractTagTest {
39
40
41 public void testBasic() throws Exception {
42 {
43 SubsetIteratorTag tag = new SubsetIteratorTag();
44 tag.setPageContext(pageContext);
45 tag.setSource("myList");
46
47 tag.doStartTag();
48 Iterator subsetIterator = (Iterator) stack.findValue("top");
49 tag.doEndTag();
50
51 assertEquals(subsetIterator.next(), new Integer(1));
52 assertEquals(subsetIterator.next(), new Integer(2));
53 assertEquals(subsetIterator.next(), new Integer(3));
54 assertEquals(subsetIterator.next(), new Integer(4));
55 assertEquals(subsetIterator.next(), new Integer(5));
56 }
57
58 {
59 SubsetIteratorTag tag = new SubsetIteratorTag();
60 tag.setPageContext(pageContext);
61 tag.setSource("myArray");
62
63 tag.doStartTag();
64 Iterator subsetIterator = (Iterator) stack.findValue("top");
65 tag.doEndTag();
66
67 assertEquals(subsetIterator.next(), new Integer(1));
68 assertEquals(subsetIterator.next(), new Integer(2));
69 assertEquals(subsetIterator.next(), new Integer(3));
70 assertEquals(subsetIterator.next(), new Integer(4));
71 assertEquals(subsetIterator.next(), new Integer(5));
72 }
73 }
74
75 public void testWithStartAttribute() throws Exception {
76 {
77 SubsetIteratorTag tag = new SubsetIteratorTag();
78 tag.setPageContext(pageContext);
79 tag.setSource("myList");
80 tag.setStart("3");
81
82 tag.doStartTag();
83 Iterator subsetIterator = (Iterator) stack.findValue("top");
84 tag.doEndTag();
85
86 assertEquals(subsetIterator.next(), new Integer(4));
87 assertEquals(subsetIterator.next(), new Integer(5));
88 }
89
90 {
91 SubsetIteratorTag tag = new SubsetIteratorTag();
92 tag.setPageContext(pageContext);
93 tag.setSource("myArray");
94 tag.setStart("3");
95
96 tag.doStartTag();
97 Iterator subsetIterator = (Iterator) stack.findValue("top");
98 tag.doEndTag();
99
100 assertEquals(subsetIterator.next(), new Integer(4));
101 assertEquals(subsetIterator.next(), new Integer(5));
102 }
103 }
104
105 public void testWithCountAttribute() throws Exception {
106 {
107 SubsetIteratorTag tag = new SubsetIteratorTag();
108 tag.setPageContext(pageContext);
109 tag.setSource("myList");
110 tag.setCount("3");
111
112 tag.doStartTag();
113 Iterator subsetIterator = (Iterator) stack.findValue("top");
114 tag.doEndTag();
115
116 assertEquals(subsetIterator.next(), new Integer(1));
117 assertEquals(subsetIterator.next(), new Integer(2));
118 assertEquals(subsetIterator.next(), new Integer(3));
119 }
120
121 {
122 SubsetIteratorTag tag = new SubsetIteratorTag();
123 tag.setPageContext(pageContext);
124 tag.setSource("myArray");
125 tag.setCount("3");
126
127 tag.doStartTag();
128 Iterator subsetIterator = (Iterator) stack.findValue("top");
129 tag.doEndTag();
130
131 assertEquals(subsetIterator.next(), new Integer(1));
132 assertEquals(subsetIterator.next(), new Integer(2));
133 assertEquals(subsetIterator.next(), new Integer(3));
134 }
135 }
136
137 public void testWIthStartAndCountAttribute() throws Exception {
138 {
139 SubsetIteratorTag tag = new SubsetIteratorTag();
140 tag.setPageContext(pageContext);
141 tag.setSource("myList");
142 tag.setStart("3");
143 tag.setCount("3");
144
145 tag.doStartTag();
146 Iterator subsetIterator = (Iterator) stack.findValue("top");
147 tag.doEndTag();
148
149 assertEquals(subsetIterator.next(), new Integer("4"));
150 assertEquals(subsetIterator.next(), new Integer("5"));
151 }
152
153 {
154 SubsetIteratorTag tag = new SubsetIteratorTag();
155 tag.setPageContext(pageContext);
156 tag.setSource("myArray");
157 tag.setStart("3");
158 tag.setCount("3");
159
160 tag.doStartTag();
161 Iterator subsetIterator = (Iterator) stack.findValue("top");
162 tag.doEndTag();
163
164 assertEquals(subsetIterator.next(), new Integer("4"));
165 assertEquals(subsetIterator.next(), new Integer("5"));
166 }
167 }
168
169 public void testWithId() throws Exception {
170 {
171 SubsetIteratorTag tag = new SubsetIteratorTag();
172 tag.setPageContext(pageContext);
173 tag.setSource("myList");
174 tag.setId("myPageContextId1");
175
176 tag.doStartTag();
177 Iterator subsetIterator1 = (Iterator) stack.findValue("top");
178 tag.doEndTag();
179
180 Iterator subsetIterator2 = (Iterator) pageContext.getAttribute("myPageContextId1");
181
182 assertNotNull(subsetIterator1);
183 assertNotNull(subsetIterator2);
184 assertEquals(subsetIterator1, subsetIterator2);
185 assertEquals(subsetIterator2.next(), new Integer(1));
186 assertEquals(subsetIterator2.next(), new Integer(2));
187 assertEquals(subsetIterator2.next(), new Integer(3));
188 assertEquals(subsetIterator2.next(), new Integer(4));
189 assertEquals(subsetIterator2.next(), new Integer(5));
190 }
191
192 {
193 SubsetIteratorTag tag = new SubsetIteratorTag();
194 tag.setPageContext(pageContext);
195 tag.setSource("myArray");
196 tag.setId("myPageContextId2");
197
198 tag.doStartTag();
199 Iterator subsetIterator1 = (Iterator) stack.findValue("top");
200 tag.doEndTag();
201
202 Iterator subsetIterator2 = (Iterator) pageContext.getAttribute("myPageContextId2");
203
204 assertNotNull(subsetIterator1);
205 assertNotNull(subsetIterator2);
206 assertEquals(subsetIterator1, subsetIterator2);
207 assertEquals(subsetIterator2.next(), new Integer(1));
208 assertEquals(subsetIterator2.next(), new Integer(2));
209 assertEquals(subsetIterator2.next(), new Integer(3));
210 assertEquals(subsetIterator2.next(), new Integer(4));
211 assertEquals(subsetIterator2.next(), new Integer(5));
212 }
213 }
214
215 public void testWithDecider() throws Exception {
216 {
217 SubsetIteratorTag tag = new SubsetIteratorTag();
218 tag.setPageContext(pageContext);
219 tag.setSource("myList");
220 tag.setDecider("myDecider");
221
222 tag.doStartTag();
223 Iterator subsetIterator = (Iterator) stack.findValue("top");
224 tag.doEndTag();
225
226 assertEquals(subsetIterator.next(), new Integer(2));
227 assertEquals(subsetIterator.next(), new Integer(4));
228 }
229
230 {
231 SubsetIteratorTag tag = new SubsetIteratorTag();
232 tag.setPageContext(pageContext);
233 tag.setSource("myList");
234 tag.setDecider("myDecider");
235
236 tag.doStartTag();
237 Iterator subsetIterator = (Iterator) stack.findValue("top");
238 tag.doEndTag();
239
240 assertEquals(subsetIterator.next(), new Integer(2));
241 assertEquals(subsetIterator.next(), new Integer(4));
242 }
243 }
244
245
246 public void testWithDoubleCount() throws Exception {
247 SubsetIteratorTag tag = new SubsetIteratorTag();
248 tag.setPageContext(pageContext);
249 tag.setCount("3.0");
250 tag.doStartTag();
251 tag.doEndTag();
252 }
253
254 public void testWithDoubleStart() throws Exception {
255 SubsetIteratorTag tag = new SubsetIteratorTag();
256 tag.setPageContext(pageContext);
257 tag.setStart("2.0");
258 tag.doStartTag();
259 tag.doEndTag();
260 }
261
262 public Action getAction() {
263 return new ActionSupport() {
264 public List getMyList() {
265 List l = new ArrayList();
266 l.add(new Integer(1));
267 l.add(new Integer(2));
268 l.add(new Integer(3));
269 l.add(new Integer(4));
270 l.add(new Integer(5));
271 return l;
272 }
273
274 public Integer[] getMyArray() {
275 Integer[] integers = new Integer[5];
276 integers[0] = new Integer(1);
277 integers[1] = new Integer(2);
278 integers[2] = new Integer(3);
279 integers[3] = new Integer(4);
280 integers[4] = new Integer(5);
281 return integers;
282 }
283
284 public Decider getMyDecider() {
285 return new Decider() {
286 public boolean decide(Object element) throws Exception {
287 int integer = ((Integer)element).intValue();
288 return (((integer % 2) == 0)?true:false);
289 }
290 };
291 }
292 };
293 }
294 }