View Javadoc

1   /*
2    * $Id: SubsetIteratorTagTest.java 439747 2006-09-03 09:22:46Z mrdon $
3    *
4    * Copyright 2006 The Apache Software Foundation.
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *      http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  package org.apache.struts2.views.jsp;
19  
20  import java.util.ArrayList;
21  import java.util.Iterator;
22  import java.util.List;
23  
24  import org.apache.struts2.util.SubsetIteratorFilter.Decider;
25  import org.apache.struts2.views.jsp.iterator.SubsetIteratorTag;
26  
27  import com.opensymphony.xwork2.Action;
28  import com.opensymphony.xwork2.ActionSupport;
29  
30  
31  /***
32   * Test case for SubsetIteratorTag.
33   * 
34   */
35  public class SubsetIteratorTagTest extends AbstractTagTest {
36  	
37  
38  	public void testBasic() throws Exception {
39  		{ // List as Source
40  			SubsetIteratorTag tag = new SubsetIteratorTag();
41  			tag.setPageContext(pageContext);
42  			tag.setSource("myList");
43  		
44  			tag.doStartTag();
45  			Iterator subsetIterator = (Iterator) stack.findValue("top");
46  			tag.doEndTag();
47  		
48  			assertEquals(subsetIterator.next(), new Integer(1));
49  			assertEquals(subsetIterator.next(), new Integer(2));
50  			assertEquals(subsetIterator.next(), new Integer(3));
51  			assertEquals(subsetIterator.next(), new Integer(4));
52  			assertEquals(subsetIterator.next(), new Integer(5));
53  		}
54  		
55  		{ // Array as Source 
56  			SubsetIteratorTag tag = new SubsetIteratorTag();
57  			tag.setPageContext(pageContext);
58  			tag.setSource("myArray");
59  		
60  			tag.doStartTag();
61  			Iterator subsetIterator = (Iterator) stack.findValue("top");
62  			tag.doEndTag();
63  			
64  			assertEquals(subsetIterator.next(), new Integer(1));
65  			assertEquals(subsetIterator.next(), new Integer(2));
66  			assertEquals(subsetIterator.next(), new Integer(3));
67  			assertEquals(subsetIterator.next(), new Integer(4));
68  			assertEquals(subsetIterator.next(), new Integer(5));
69  		}
70  	}
71  	
72  	public void testWithStartAttribute() throws Exception {
73  		{ // List as source
74  			SubsetIteratorTag tag = new SubsetIteratorTag();
75  			tag.setPageContext(pageContext);
76  			tag.setSource("myList");
77  			tag.setStart("3");
78  			
79  			tag.doStartTag();
80  			Iterator subsetIterator = (Iterator) stack.findValue("top");
81  			tag.doEndTag();
82  			
83  			assertEquals(subsetIterator.next(), new Integer(4));
84  			assertEquals(subsetIterator.next(), new Integer(5));
85  		}
86  		
87  		{ // Array as source
88  			SubsetIteratorTag tag = new SubsetIteratorTag();
89  			tag.setPageContext(pageContext);
90  			tag.setSource("myArray");
91  			tag.setStart("3");
92  			
93  			tag.doStartTag();
94  			Iterator subsetIterator = (Iterator) stack.findValue("top");
95  			tag.doEndTag();
96  			
97  			assertEquals(subsetIterator.next(), new Integer(4));
98  			assertEquals(subsetIterator.next(), new Integer(5));
99  		}
100 	}
101 	
102 	public void testWithCountAttribute() throws Exception {
103 		{ // List as source
104 			SubsetIteratorTag tag = new SubsetIteratorTag();
105 			tag.setPageContext(pageContext);
106 			tag.setSource("myList");
107 			tag.setCount("3");
108 			
109 			tag.doStartTag();
110 			Iterator subsetIterator = (Iterator) stack.findValue("top");
111 			tag.doEndTag();
112 			
113 			assertEquals(subsetIterator.next(), new Integer(1));
114 			assertEquals(subsetIterator.next(), new Integer(2));
115 			assertEquals(subsetIterator.next(), new Integer(3));
116 		}
117 		
118 		{ // array as source
119 			SubsetIteratorTag tag = new SubsetIteratorTag();
120 			tag.setPageContext(pageContext);
121 			tag.setSource("myArray");
122 			tag.setCount("3");
123 			
124 			tag.doStartTag();
125 			Iterator subsetIterator = (Iterator) stack.findValue("top");
126 			tag.doEndTag();
127 			
128 			assertEquals(subsetIterator.next(), new Integer(1));
129 			assertEquals(subsetIterator.next(), new Integer(2));
130 			assertEquals(subsetIterator.next(), new Integer(3));
131 		}
132 	}
133 	
134 	public void testWIthStartAndCountAttribute() throws Exception {
135 		{ // List as source
136 			SubsetIteratorTag tag = new SubsetIteratorTag();
137 			tag.setPageContext(pageContext);
138 			tag.setSource("myList");
139 			tag.setStart("3");
140 			tag.setCount("3");
141 			
142 			tag.doStartTag();
143 			Iterator subsetIterator = (Iterator) stack.findValue("top");
144 			tag.doEndTag();
145 			
146 			assertEquals(subsetIterator.next(), new Integer("4"));
147 			assertEquals(subsetIterator.next(), new Integer("5"));
148 		}
149 		
150 		{	// Array as source
151 			SubsetIteratorTag tag = new SubsetIteratorTag();
152 			tag.setPageContext(pageContext);
153 			tag.setSource("myArray");
154 			tag.setStart("3");
155 			tag.setCount("3");
156 			
157 			tag.doStartTag();
158 			Iterator subsetIterator = (Iterator) stack.findValue("top");
159 			tag.doEndTag();
160 			
161 			assertEquals(subsetIterator.next(), new Integer("4"));
162 			assertEquals(subsetIterator.next(), new Integer("5"));
163 		}
164 	}
165 	
166 	public void testWithId() throws Exception {
167 		{	// List as Source
168 			SubsetIteratorTag tag = new SubsetIteratorTag();
169 			tag.setPageContext(pageContext);
170 			tag.setSource("myList");
171 			tag.setId("myPageContextId1");
172 			
173 			tag.doStartTag();
174 			Iterator subsetIterator1 = (Iterator) stack.findValue("top");
175 			tag.doEndTag();
176 			
177 			Iterator subsetIterator2 = (Iterator) pageContext.getAttribute("myPageContextId1");
178 			
179 			assertNotNull(subsetIterator1);
180 			assertNotNull(subsetIterator2);
181 			assertEquals(subsetIterator1, subsetIterator2);
182 			assertEquals(subsetIterator2.next(), new Integer(1));
183 			assertEquals(subsetIterator2.next(), new Integer(2));
184 			assertEquals(subsetIterator2.next(), new Integer(3));
185 			assertEquals(subsetIterator2.next(), new Integer(4));
186 			assertEquals(subsetIterator2.next(), new Integer(5));
187 		}
188 		
189 		{	// Array as source
190 			SubsetIteratorTag tag = new SubsetIteratorTag();
191 			tag.setPageContext(pageContext);
192 			tag.setSource("myArray");
193 			tag.setId("myPageContextId2");
194 			
195 			tag.doStartTag();
196 			Iterator subsetIterator1 = (Iterator) stack.findValue("top");
197 			tag.doEndTag();
198 			
199 			Iterator subsetIterator2 = (Iterator) pageContext.getAttribute("myPageContextId2");
200 			
201 			assertNotNull(subsetIterator1);
202 			assertNotNull(subsetIterator2);
203 			assertEquals(subsetIterator1, subsetIterator2);
204 			assertEquals(subsetIterator2.next(), new Integer(1));
205 			assertEquals(subsetIterator2.next(), new Integer(2));
206 			assertEquals(subsetIterator2.next(), new Integer(3));
207 			assertEquals(subsetIterator2.next(), new Integer(4));
208 			assertEquals(subsetIterator2.next(), new Integer(5));
209 		}
210 	}
211 	
212 	public void testWithDecider() throws Exception {
213 		{	// List as source
214 			SubsetIteratorTag tag = new SubsetIteratorTag();
215 			tag.setPageContext(pageContext);
216 			tag.setSource("myList");
217 			tag.setDecider("myDecider");
218 			
219 			tag.doStartTag();
220 			Iterator subsetIterator = (Iterator) stack.findValue("top");
221 			tag.doEndTag();
222 			
223 			assertEquals(subsetIterator.next(), new Integer(2));
224 			assertEquals(subsetIterator.next(), new Integer(4));
225 		}
226 		
227 		{	// Array As source
228 			SubsetIteratorTag tag = new SubsetIteratorTag();
229 			tag.setPageContext(pageContext);
230 			tag.setSource("myList");
231 			tag.setDecider("myDecider");
232 			
233 			tag.doStartTag();
234 			Iterator subsetIterator = (Iterator) stack.findValue("top");
235 			tag.doEndTag();
236 			
237 			assertEquals(subsetIterator.next(), new Integer(2));
238 			assertEquals(subsetIterator.next(), new Integer(4));
239 		}
240 	}
241 	
242 	
243 	
244 	public Action getAction() {
245 		return new ActionSupport() {
246 			public List getMyList() {
247 				List l = new ArrayList();
248 				l.add(new Integer(1));
249 				l.add(new Integer(2));
250 				l.add(new Integer(3));
251 				l.add(new Integer(4));
252 				l.add(new Integer(5));
253 				return l;
254 			}
255 			
256 			public Integer[] getMyArray() {
257 				Integer[] integers = new Integer[5];
258 				integers[0] = new Integer(1);
259 				integers[1] = new Integer(2);
260 				integers[2] = new Integer(3);
261 				integers[3] = new Integer(4);
262 				integers[4] = new Integer(5);
263 				return integers;
264 			}
265 			
266 			public Decider getMyDecider() {
267 				return new Decider() {
268 					public boolean decide(Object element) throws Exception {
269 						int integer = ((Integer)element).intValue();
270 						return (((integer % 2) == 0)?true:false);
271 					}
272 				};
273 			}
274 		};
275 	}
276 }