001: /*
002: * $Id: SubsetIteratorTagTest.java 471756 2006-11-06 15:01:43Z husted $
003: *
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021: package org.apache.struts2.views.jsp;
022:
023: import java.util.ArrayList;
024: import java.util.Iterator;
025: import java.util.List;
026:
027: import org.apache.struts2.util.SubsetIteratorFilter.Decider;
028: import org.apache.struts2.views.jsp.iterator.SubsetIteratorTag;
029:
030: import com.opensymphony.xwork2.Action;
031: import com.opensymphony.xwork2.ActionSupport;
032:
033: /**
034: * Test case for SubsetIteratorTag.
035: *
036: */
037: public class SubsetIteratorTagTest extends AbstractTagTest {
038:
039: public void testBasic() throws Exception {
040: { // List as Source
041: SubsetIteratorTag tag = new SubsetIteratorTag();
042: tag.setPageContext(pageContext);
043: tag.setSource("myList");
044:
045: tag.doStartTag();
046: Iterator subsetIterator = (Iterator) stack.findValue("top");
047: tag.doEndTag();
048:
049: assertEquals(subsetIterator.next(), new Integer(1));
050: assertEquals(subsetIterator.next(), new Integer(2));
051: assertEquals(subsetIterator.next(), new Integer(3));
052: assertEquals(subsetIterator.next(), new Integer(4));
053: assertEquals(subsetIterator.next(), new Integer(5));
054: }
055:
056: { // Array as Source
057: SubsetIteratorTag tag = new SubsetIteratorTag();
058: tag.setPageContext(pageContext);
059: tag.setSource("myArray");
060:
061: tag.doStartTag();
062: Iterator subsetIterator = (Iterator) stack.findValue("top");
063: tag.doEndTag();
064:
065: assertEquals(subsetIterator.next(), new Integer(1));
066: assertEquals(subsetIterator.next(), new Integer(2));
067: assertEquals(subsetIterator.next(), new Integer(3));
068: assertEquals(subsetIterator.next(), new Integer(4));
069: assertEquals(subsetIterator.next(), new Integer(5));
070: }
071: }
072:
073: public void testWithStartAttribute() throws Exception {
074: { // List as source
075: SubsetIteratorTag tag = new SubsetIteratorTag();
076: tag.setPageContext(pageContext);
077: tag.setSource("myList");
078: tag.setStart("3");
079:
080: tag.doStartTag();
081: Iterator subsetIterator = (Iterator) stack.findValue("top");
082: tag.doEndTag();
083:
084: assertEquals(subsetIterator.next(), new Integer(4));
085: assertEquals(subsetIterator.next(), new Integer(5));
086: }
087:
088: { // Array as source
089: SubsetIteratorTag tag = new SubsetIteratorTag();
090: tag.setPageContext(pageContext);
091: tag.setSource("myArray");
092: tag.setStart("3");
093:
094: tag.doStartTag();
095: Iterator subsetIterator = (Iterator) stack.findValue("top");
096: tag.doEndTag();
097:
098: assertEquals(subsetIterator.next(), new Integer(4));
099: assertEquals(subsetIterator.next(), new Integer(5));
100: }
101: }
102:
103: public void testWithCountAttribute() throws Exception {
104: { // List as source
105: SubsetIteratorTag tag = new SubsetIteratorTag();
106: tag.setPageContext(pageContext);
107: tag.setSource("myList");
108: tag.setCount("3");
109:
110: tag.doStartTag();
111: Iterator subsetIterator = (Iterator) stack.findValue("top");
112: tag.doEndTag();
113:
114: assertEquals(subsetIterator.next(), new Integer(1));
115: assertEquals(subsetIterator.next(), new Integer(2));
116: assertEquals(subsetIterator.next(), new Integer(3));
117: }
118:
119: { // array as source
120: SubsetIteratorTag tag = new SubsetIteratorTag();
121: tag.setPageContext(pageContext);
122: tag.setSource("myArray");
123: tag.setCount("3");
124:
125: tag.doStartTag();
126: Iterator subsetIterator = (Iterator) stack.findValue("top");
127: tag.doEndTag();
128:
129: assertEquals(subsetIterator.next(), new Integer(1));
130: assertEquals(subsetIterator.next(), new Integer(2));
131: assertEquals(subsetIterator.next(), new Integer(3));
132: }
133: }
134:
135: public void testWIthStartAndCountAttribute() throws Exception {
136: { // List as source
137: SubsetIteratorTag tag = new SubsetIteratorTag();
138: tag.setPageContext(pageContext);
139: tag.setSource("myList");
140: tag.setStart("3");
141: tag.setCount("3");
142:
143: tag.doStartTag();
144: Iterator subsetIterator = (Iterator) stack.findValue("top");
145: tag.doEndTag();
146:
147: assertEquals(subsetIterator.next(), new Integer("4"));
148: assertEquals(subsetIterator.next(), new Integer("5"));
149: }
150:
151: { // Array as source
152: SubsetIteratorTag tag = new SubsetIteratorTag();
153: tag.setPageContext(pageContext);
154: tag.setSource("myArray");
155: tag.setStart("3");
156: tag.setCount("3");
157:
158: tag.doStartTag();
159: Iterator subsetIterator = (Iterator) stack.findValue("top");
160: tag.doEndTag();
161:
162: assertEquals(subsetIterator.next(), new Integer("4"));
163: assertEquals(subsetIterator.next(), new Integer("5"));
164: }
165: }
166:
167: public void testWithId() throws Exception {
168: { // List as Source
169: SubsetIteratorTag tag = new SubsetIteratorTag();
170: tag.setPageContext(pageContext);
171: tag.setSource("myList");
172: tag.setId("myPageContextId1");
173:
174: tag.doStartTag();
175: Iterator subsetIterator1 = (Iterator) stack
176: .findValue("top");
177: tag.doEndTag();
178:
179: Iterator subsetIterator2 = (Iterator) pageContext
180: .getAttribute("myPageContextId1");
181:
182: assertNotNull(subsetIterator1);
183: assertNotNull(subsetIterator2);
184: assertEquals(subsetIterator1, subsetIterator2);
185: assertEquals(subsetIterator2.next(), new Integer(1));
186: assertEquals(subsetIterator2.next(), new Integer(2));
187: assertEquals(subsetIterator2.next(), new Integer(3));
188: assertEquals(subsetIterator2.next(), new Integer(4));
189: assertEquals(subsetIterator2.next(), new Integer(5));
190: }
191:
192: { // Array as source
193: SubsetIteratorTag tag = new SubsetIteratorTag();
194: tag.setPageContext(pageContext);
195: tag.setSource("myArray");
196: tag.setId("myPageContextId2");
197:
198: tag.doStartTag();
199: Iterator subsetIterator1 = (Iterator) stack
200: .findValue("top");
201: tag.doEndTag();
202:
203: Iterator subsetIterator2 = (Iterator) pageContext
204: .getAttribute("myPageContextId2");
205:
206: assertNotNull(subsetIterator1);
207: assertNotNull(subsetIterator2);
208: assertEquals(subsetIterator1, subsetIterator2);
209: assertEquals(subsetIterator2.next(), new Integer(1));
210: assertEquals(subsetIterator2.next(), new Integer(2));
211: assertEquals(subsetIterator2.next(), new Integer(3));
212: assertEquals(subsetIterator2.next(), new Integer(4));
213: assertEquals(subsetIterator2.next(), new Integer(5));
214: }
215: }
216:
217: public void testWithDecider() throws Exception {
218: { // List as source
219: SubsetIteratorTag tag = new SubsetIteratorTag();
220: tag.setPageContext(pageContext);
221: tag.setSource("myList");
222: tag.setDecider("myDecider");
223:
224: tag.doStartTag();
225: Iterator subsetIterator = (Iterator) stack.findValue("top");
226: tag.doEndTag();
227:
228: assertEquals(subsetIterator.next(), new Integer(2));
229: assertEquals(subsetIterator.next(), new Integer(4));
230: }
231:
232: { // Array As source
233: SubsetIteratorTag tag = new SubsetIteratorTag();
234: tag.setPageContext(pageContext);
235: tag.setSource("myList");
236: tag.setDecider("myDecider");
237:
238: tag.doStartTag();
239: Iterator subsetIterator = (Iterator) stack.findValue("top");
240: tag.doEndTag();
241:
242: assertEquals(subsetIterator.next(), new Integer(2));
243: assertEquals(subsetIterator.next(), new Integer(4));
244: }
245: }
246:
247: public Action getAction() {
248: return new ActionSupport() {
249: public List getMyList() {
250: List l = new ArrayList();
251: l.add(new Integer(1));
252: l.add(new Integer(2));
253: l.add(new Integer(3));
254: l.add(new Integer(4));
255: l.add(new Integer(5));
256: return l;
257: }
258:
259: public Integer[] getMyArray() {
260: Integer[] integers = new Integer[5];
261: integers[0] = new Integer(1);
262: integers[1] = new Integer(2);
263: integers[2] = new Integer(3);
264: integers[3] = new Integer(4);
265: integers[4] = new Integer(5);
266: return integers;
267: }
268:
269: public Decider getMyDecider() {
270: return new Decider() {
271: public boolean decide(Object element)
272: throws Exception {
273: int integer = ((Integer) element).intValue();
274: return (((integer % 2) == 0) ? true : false);
275: }
276: };
277: }
278: };
279: }
280: }
|