1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 }