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.views.jsp.iterator.MergeIteratorTag;
29
30 import com.opensymphony.xwork2.Action;
31 import com.opensymphony.xwork2.ActionSupport;
32
33 /***
34 * Test case for MergeIteratorTag.
35 *
36 */
37 public class MergeIteratorTagTest extends AbstractTagTest {
38
39 public void testMergingIteratorWithArrayAsSource() throws Exception {
40 MergeIteratorTag tag = new MergeIteratorTag();
41 tag.setPageContext(pageContext);
42 tag.setId("myMergedIterator");
43
44 ParamTag iterator1ParamTag = new ParamTag();
45 iterator1ParamTag.setPageContext(pageContext);
46 iterator1ParamTag.setValue("myArr1");
47
48 ParamTag iterator2ParamTag = new ParamTag();
49 iterator2ParamTag.setPageContext(pageContext);
50 iterator2ParamTag.setValue("myArr2");
51
52 ParamTag iterator3ParamTag = new ParamTag();
53 iterator3ParamTag.setPageContext(pageContext);
54 iterator3ParamTag.setValue("myArr3");
55
56
57 tag.doStartTag();
58 iterator1ParamTag.doStartTag();
59 iterator1ParamTag.doEndTag();
60 iterator2ParamTag.doStartTag();
61 iterator2ParamTag.doEndTag();
62 iterator3ParamTag.doStartTag();
63 iterator3ParamTag.doEndTag();
64 tag.doEndTag();
65
66 Iterator mergedIterator = (Iterator) stack.findValue("#myMergedIterator");
67
68 assertNotNull(mergedIterator);
69 assertTrue(mergedIterator.hasNext());
70 assertEquals(mergedIterator.next(), "1");
71 assertTrue(mergedIterator.hasNext());
72 assertEquals(mergedIterator.next(), "a");
73 assertTrue(mergedIterator.hasNext());
74 assertEquals(mergedIterator.next(), "A");
75 assertTrue(mergedIterator.hasNext());
76 assertEquals(mergedIterator.next(), "2");
77 assertTrue(mergedIterator.hasNext());
78 assertEquals(mergedIterator.next(), "b");
79 assertTrue(mergedIterator.hasNext());
80 assertEquals(mergedIterator.next(), "B");
81 assertTrue(mergedIterator.hasNext());
82 assertEquals(mergedIterator.next(), "3");
83 assertTrue(mergedIterator.hasNext());
84 assertEquals(mergedIterator.next(), "c");
85 assertTrue(mergedIterator.hasNext());
86 assertEquals(mergedIterator.next(), "C");
87 assertFalse(mergedIterator.hasNext());
88 }
89
90
91 public void testMergingIteratorsWithListAsSource() throws Exception {
92 MergeIteratorTag tag = new MergeIteratorTag();
93 tag.setPageContext(pageContext);
94 tag.setId("myMergedIterator");
95
96 ParamTag iterator1ParamTag = new ParamTag();
97 iterator1ParamTag.setPageContext(pageContext);
98 iterator1ParamTag.setValue("myList1");
99
100 ParamTag iterator2ParamTag = new ParamTag();
101 iterator2ParamTag.setPageContext(pageContext);
102 iterator2ParamTag.setValue("myList2");
103
104 ParamTag iterator3ParamTag = new ParamTag();
105 iterator3ParamTag.setPageContext(pageContext);
106 iterator3ParamTag.setValue("myList3");
107
108
109 tag.doStartTag();
110 iterator1ParamTag.doStartTag();
111 iterator1ParamTag.doEndTag();
112 iterator2ParamTag.doStartTag();
113 iterator2ParamTag.doEndTag();
114 iterator3ParamTag.doStartTag();
115 iterator3ParamTag.doEndTag();
116 tag.doEndTag();
117
118 Iterator mergedIterator = (Iterator) stack.findValue("#myMergedIterator");
119
120 assertNotNull(mergedIterator);
121 assertTrue(mergedIterator.hasNext());
122 assertEquals(mergedIterator.next(), "1");
123 assertTrue(mergedIterator.hasNext());
124 assertEquals(mergedIterator.next(), "a");
125 assertTrue(mergedIterator.hasNext());
126 assertEquals(mergedIterator.next(), "A");
127 assertTrue(mergedIterator.hasNext());
128 assertEquals(mergedIterator.next(), "2");
129 assertTrue(mergedIterator.hasNext());
130 assertEquals(mergedIterator.next(), "b");
131 assertTrue(mergedIterator.hasNext());
132 assertEquals(mergedIterator.next(), "B");
133 assertTrue(mergedIterator.hasNext());
134 assertEquals(mergedIterator.next(), "3");
135 assertTrue(mergedIterator.hasNext());
136 assertEquals(mergedIterator.next(), "c");
137 assertTrue(mergedIterator.hasNext());
138 assertEquals(mergedIterator.next(), "C");
139 assertFalse(mergedIterator.hasNext());
140 }
141
142
143
144
145 public Action getAction() {
146 return new ActionSupport() {
147 public List getMyList1() {
148 List l = new ArrayList();
149 l.add("1");
150 l.add("2");
151 l.add("3");
152 return l;
153 }
154
155 public List getMyList2() {
156 List l = new ArrayList();
157 l.add("a");
158 l.add("b");
159 l.add("c");
160 return l;
161 }
162
163 public List getMyList3() {
164 List l = new ArrayList();
165 l.add("A");
166 l.add("B");
167 l.add("C");
168 return l;
169 }
170
171 public String[] getMyArr1() {
172 return new String[] { "1", "2", "3" };
173 }
174
175 public String[] getMyArr2() {
176 return new String[] { "a", "b", "c" };
177 }
178
179 public String[] getMyArr3() {
180 return new String[] {"A", "B", "C"};
181 }
182 };
183 }
184 }