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.Iterator;
25
26 import org.apache.struts2.util.IteratorGenerator.Converter;
27 import org.apache.struts2.views.jsp.iterator.IteratorGeneratorTag;
28
29 import com.opensymphony.xwork2.Action;
30 import com.opensymphony.xwork2.ActionSupport;
31
32 /***
33 * Test case for IteratorGeneratorTag.
34 *
35 */
36 public class IteratorGeneratorTagTest extends AbstractTagTest {
37
38 public void testGeneratorBasic() throws Exception {
39 IteratorGeneratorTag tag = new IteratorGeneratorTag();
40
41 tag.setPageContext(pageContext);
42 tag.setVal("%{'aaa,bbb,ccc,ddd,eee'}");
43 tag.doStartTag();
44 Object topOfStack = stack.findValue("top");
45
46
47 assertTrue(topOfStack instanceof Iterator);
48
49 assertTrue(((Iterator)topOfStack).hasNext());
50 assertEquals(((Iterator)topOfStack).next(), "aaa");
51
52 assertTrue(((Iterator)topOfStack).hasNext());
53 assertEquals(((Iterator)topOfStack).next(), "bbb");
54
55 assertTrue(((Iterator)topOfStack).hasNext());
56 assertEquals(((Iterator)topOfStack).next(), "ccc");
57
58 assertTrue(((Iterator)topOfStack).hasNext());
59 assertEquals(((Iterator)topOfStack).next(), "ddd");
60
61 assertTrue(((Iterator)topOfStack).hasNext());
62 assertEquals(((Iterator)topOfStack).next(),"eee");
63
64 assertFalse(((Iterator)topOfStack).hasNext());
65
66 tag.doEndTag();
67 Object afterTopOfStack = stack.findValue("top");
68
69
70 assertNotSame(afterTopOfStack, topOfStack);
71 }
72
73 public void testGeneratorWithSeparator() throws Exception {
74 IteratorGeneratorTag tag = new IteratorGeneratorTag();
75
76 tag.setPageContext(pageContext);
77 tag.setVal("%{'aaa|bbb|ccc|ddd|eee'}");
78 tag.setSeparator("|");
79 tag.doStartTag();
80 Object topOfStack = stack.findValue("top");
81 tag.doEndTag();
82 Object afterTopOfStack = stack.findValue("top");
83
84 assertTrue(topOfStack instanceof Iterator);
85
86 assertTrue(((Iterator)topOfStack).hasNext());
87 assertEquals(((Iterator)topOfStack).next(), "aaa");
88
89 assertTrue(((Iterator)topOfStack).hasNext());
90 assertEquals(((Iterator)topOfStack).next(), "bbb");
91
92 assertTrue(((Iterator)topOfStack).hasNext());
93 assertEquals(((Iterator)topOfStack).next(), "ccc");
94
95 assertTrue(((Iterator)topOfStack).hasNext());
96 assertEquals(((Iterator)topOfStack).next(), "ddd");
97
98 assertTrue(((Iterator)topOfStack).hasNext());
99 assertEquals(((Iterator)topOfStack).next(), "eee");
100
101 assertFalse(((Iterator)topOfStack).hasNext());
102 assertNotSame(afterTopOfStack, topOfStack);
103 }
104
105 public void testGeneratorWithConverter() throws Exception {
106 IteratorGeneratorTag tag = new IteratorGeneratorTag();
107
108 tag.setPageContext(pageContext);
109 tag.setVal("%{'aaa, bbb, ccc, ddd, eee'}");
110 tag.setConverter("myConverter");
111 tag.doStartTag();
112 Object topOfStack = stack.findValue("top");
113 tag.doEndTag();
114 Object afterTopOfStack = stack.findValue("top");
115
116 assertTrue(topOfStack instanceof Iterator);
117
118 assertTrue(((Iterator)topOfStack).hasNext());
119 assertEquals(((Iterator)topOfStack).next(), "myConverter-aaa");
120
121 assertTrue(((Iterator)topOfStack).hasNext());
122 assertEquals(((Iterator)topOfStack).next(), "myConverter-bbb");
123
124 assertTrue(((Iterator)topOfStack).hasNext());
125 assertEquals(((Iterator)topOfStack).next(), "myConverter-ccc");
126
127 assertTrue(((Iterator)topOfStack).hasNext());
128 assertEquals(((Iterator)topOfStack).next(), "myConverter-ddd");
129
130 assertTrue(((Iterator)topOfStack).hasNext());
131 assertEquals(((Iterator)topOfStack).next(), "myConverter-eee");
132
133 assertFalse(((Iterator)topOfStack).hasNext());
134 assertNotSame(afterTopOfStack, topOfStack);
135 }
136
137 public void testGeneratorWithId() throws Exception {
138 IteratorGeneratorTag tag = new IteratorGeneratorTag();
139 tag.setPageContext(pageContext);
140 tag.setVal("%{'aaa,bbb,ccc,ddd,eee'}");
141 tag.setId("myPageContextAttId");
142 tag.doStartTag();
143 tag.doEndTag();
144
145 Object pageContextIterator = stack.findValue("myPageContextAttId");
146
147 assertTrue(pageContextIterator instanceof Iterator);
148
149 assertTrue(((Iterator)pageContextIterator).hasNext());
150 assertEquals(((Iterator)pageContextIterator).next(), "aaa");
151
152 assertTrue(((Iterator)pageContextIterator).hasNext());
153 assertEquals(((Iterator)pageContextIterator).next(), "bbb");
154
155 assertTrue(((Iterator)pageContextIterator).hasNext());
156 assertEquals(((Iterator)pageContextIterator).next(), "ccc");
157
158 assertTrue(((Iterator)pageContextIterator).hasNext());
159 assertEquals(((Iterator)pageContextIterator).next(), "ddd");
160
161 assertTrue(((Iterator)pageContextIterator).hasNext());
162 assertEquals(((Iterator)pageContextIterator).next(), "eee");
163
164 assertFalse(((Iterator)pageContextIterator).hasNext());
165 }
166
167 public void testGeneratorWithCount() throws Exception {
168 IteratorGeneratorTag tag = new IteratorGeneratorTag();
169
170 tag.setPageContext(pageContext);
171 tag.setVal("%{'aaa,bbb,ccc,ddd,eee'}");
172 tag.setCount("myCount");
173 tag.doStartTag();
174 Object topOfStack = stack.findValue("top");
175 tag.doEndTag();
176 Object afterTopOfStack = stack.findValue("top");
177
178
179 assertTrue(topOfStack instanceof Iterator);
180
181 assertTrue(((Iterator)topOfStack).hasNext());
182 assertEquals(((Iterator)topOfStack).next(), "aaa");
183
184 assertTrue(((Iterator)topOfStack).hasNext());
185 assertEquals(((Iterator)topOfStack).next(), "bbb");
186
187 assertTrue(((Iterator)topOfStack).hasNext());
188 assertEquals(((Iterator)topOfStack).next(), "ccc");
189
190 assertFalse(((Iterator)topOfStack).hasNext());
191 assertNotSame(topOfStack, afterTopOfStack);
192 }
193
194
195 public Action getAction() {
196 return new ActionSupport() {
197 public Converter getMyConverter() {
198 return new Converter() {
199 public Object convert(String value) throws Exception {
200 return "myConverter-"+value;
201 }
202 };
203 }
204
205 public int getMyCount() {
206 return 3;
207 }
208 };
209 }
210 }
211