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