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.Comparator;
26 import java.util.Iterator;
27 import java.util.List;
28
29 import javax.servlet.jsp.JspException;
30
31 import org.apache.struts2.views.jsp.iterator.SortIteratorTag;
32
33 import com.opensymphony.xwork2.Action;
34 import com.opensymphony.xwork2.ActionSupport;
35
36 /***
37 * Test case to test SortIteratorTag.
38 *
39 */
40 public class SortIteratorTagTest extends AbstractTagTest {
41
42 public void testSortWithoutId() throws Exception {
43 SortIteratorTag tag = new SortIteratorTag();
44
45 tag.setComparator("comparator");
46 tag.setSource("source");
47
48 tag.setPageContext(pageContext);
49 tag.doStartTag();
50
51
52 Iterator sortedIterator = (Iterator) stack.findValue("top");
53
54 assertNotNull(sortedIterator);
55
56 assertTrue(sortedIterator.hasNext());
57 assertEquals(sortedIterator.next(), new Integer(1));
58
59 assertTrue(sortedIterator.hasNext());
60 assertEquals(sortedIterator.next(), new Integer(2));
61
62 assertTrue(sortedIterator.hasNext());
63 assertEquals(sortedIterator.next(), new Integer(3));
64
65 assertTrue(sortedIterator.hasNext());
66 assertEquals(sortedIterator.next(), new Integer(4));
67
68 assertTrue(sortedIterator.hasNext());
69 assertEquals(sortedIterator.next(), new Integer(5));
70
71 assertFalse(sortedIterator.hasNext());
72 tag.doEndTag();
73 }
74
75 public void testSortWithIdIteratorAvailableInStackTop() throws Exception {
76
77 SortIteratorTag tag = new SortIteratorTag();
78
79 tag.setId("myId");
80 tag.setComparator("comparator");
81 tag.setSource("source");
82
83 tag.setPageContext(pageContext);
84 tag.doStartTag();
85
86 {
87 Iterator sortedIterator = (Iterator) stack.findValue("top");
88
89 assertNotNull(sortedIterator);
90
91 assertTrue(sortedIterator.hasNext());
92 assertEquals(sortedIterator.next(), new Integer(1));
93
94 assertTrue(sortedIterator.hasNext());
95 assertEquals(sortedIterator.next(), new Integer(2));
96
97 assertTrue(sortedIterator.hasNext());
98 assertEquals(sortedIterator.next(), new Integer(3));
99
100 assertTrue(sortedIterator.hasNext());
101 assertEquals(sortedIterator.next(), new Integer(4));
102
103 assertTrue(sortedIterator.hasNext());
104 assertEquals(sortedIterator.next(), new Integer(5));
105
106 assertFalse(sortedIterator.hasNext());
107 }
108
109 tag.doEndTag();
110 }
111
112
113 public void testSortWithIdIteratorAvailableInPageContext() throws Exception {
114 SortIteratorTag tag = new SortIteratorTag();
115
116 tag.setId("myId");
117 tag.setComparator("comparator");
118 tag.setSource("source");
119
120 tag.setPageContext(pageContext);
121 tag.doStartTag();
122
123 {
124 Iterator sortedIterator = (Iterator) pageContext.getAttribute("myId");
125
126 assertNotNull(sortedIterator);
127
128 assertTrue(sortedIterator.hasNext());
129 assertEquals(sortedIterator.next(), new Integer(1));
130
131 assertTrue(sortedIterator.hasNext());
132 assertEquals(sortedIterator.next(), new Integer(2));
133
134 assertTrue(sortedIterator.hasNext());
135 assertEquals(sortedIterator.next(), new Integer(3));
136
137 assertTrue(sortedIterator.hasNext());
138 assertEquals(sortedIterator.next(), new Integer(4));
139
140 assertTrue(sortedIterator.hasNext());
141 assertEquals(sortedIterator.next(), new Integer(5));
142
143 assertFalse(sortedIterator.hasNext());
144 }
145
146 tag.doEndTag();
147 }
148
149 public void testSortWithIllegalSource() throws Exception {
150 SortIteratorTag tag = new SortIteratorTag();
151
152 tag.setComparator("comparator");
153 tag.setSource("badSource");
154
155 try {
156 tag.setPageContext(pageContext);
157 tag.doStartTag();
158 tag.doEndTag();
159 fail("JspException expected");
160 }
161 catch (JspException e) {
162
163 assertTrue(true);
164 }
165 }
166
167 public void testSortWithIllegalComparator() throws Exception {
168 SortIteratorTag tag = new SortIteratorTag();
169
170 tag.setComparator("badComparator");
171 tag.setSource("source");
172
173 try {
174 tag.setPageContext(pageContext);
175 tag.doStartTag();
176 tag.doEndTag();
177 fail("JspException expected");
178 }
179 catch (JspException e) {
180
181 assertTrue(true);
182 }
183
184 }
185
186 public Action getAction() {
187 return new ActionSupport() {
188 public Comparator getComparator() {
189 return new Comparator() {
190 public int compare(Object o1, Object o2) {
191 Integer i1 = (Integer) o1;
192 Integer i2 = (Integer) o2;
193
194 return (i1.intValue() - i2.intValue());
195 }
196 };
197 }
198
199 public List getSource() {
200 List l = new ArrayList();
201 l.add(new Integer(3));
202 l.add(new Integer(1));
203 l.add(new Integer(2));
204 l.add(new Integer(5));
205 l.add(new Integer(4));
206 return l;
207 }
208
209 public Object getBadComparator() {
210 return new Object();
211 }
212
213 public Object getBadSource() {
214 return new Object();
215 }
216 };
217 }
218 }