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