001: /*
002: * $Id: IteratorGeneratorTagTest.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.Iterator;
024:
025: import org.apache.struts2.util.IteratorGenerator.Converter;
026: import org.apache.struts2.views.jsp.iterator.IteratorGeneratorTag;
027:
028: import com.opensymphony.xwork2.Action;
029: import com.opensymphony.xwork2.ActionSupport;
030:
031: /**
032: * Test case for IteratorGeneratorTag.
033: *
034: */
035: public class IteratorGeneratorTagTest extends AbstractTagTest {
036:
037: public void testGeneratorBasic() throws Exception {
038: IteratorGeneratorTag tag = new IteratorGeneratorTag();
039:
040: tag.setPageContext(pageContext);
041: tag.setVal("%{'aaa,bbb,ccc,ddd,eee'}");
042: tag.doStartTag();
043: Object topOfStack = stack.findValue("top");
044:
045: assertTrue(topOfStack instanceof Iterator);
046: // 1
047: assertTrue(((Iterator) topOfStack).hasNext());
048: assertEquals(((Iterator) topOfStack).next(), "aaa");
049: // 2
050: assertTrue(((Iterator) topOfStack).hasNext());
051: assertEquals(((Iterator) topOfStack).next(), "bbb");
052: // 3
053: assertTrue(((Iterator) topOfStack).hasNext());
054: assertEquals(((Iterator) topOfStack).next(), "ccc");
055: // 4
056: assertTrue(((Iterator) topOfStack).hasNext());
057: assertEquals(((Iterator) topOfStack).next(), "ddd");
058: // 5
059: assertTrue(((Iterator) topOfStack).hasNext());
060: assertEquals(((Iterator) topOfStack).next(), "eee");
061:
062: assertFalse(((Iterator) topOfStack).hasNext());
063:
064: tag.doEndTag();
065: Object afterTopOfStack = stack.findValue("top");
066:
067: assertNotSame(afterTopOfStack, topOfStack);
068: }
069:
070: public void testGeneratorWithSeparator() throws Exception {
071: IteratorGeneratorTag tag = new IteratorGeneratorTag();
072:
073: tag.setPageContext(pageContext);
074: tag.setVal("%{'aaa|bbb|ccc|ddd|eee'}");
075: tag.setSeparator("|");
076: tag.doStartTag();
077: Object topOfStack = stack.findValue("top");
078: tag.doEndTag();
079: Object afterTopOfStack = stack.findValue("top");
080:
081: assertTrue(topOfStack instanceof Iterator);
082: // 1
083: assertTrue(((Iterator) topOfStack).hasNext());
084: assertEquals(((Iterator) topOfStack).next(), "aaa");
085: // 2
086: assertTrue(((Iterator) topOfStack).hasNext());
087: assertEquals(((Iterator) topOfStack).next(), "bbb");
088: // 3
089: assertTrue(((Iterator) topOfStack).hasNext());
090: assertEquals(((Iterator) topOfStack).next(), "ccc");
091: // 4
092: assertTrue(((Iterator) topOfStack).hasNext());
093: assertEquals(((Iterator) topOfStack).next(), "ddd");
094: // 5
095: assertTrue(((Iterator) topOfStack).hasNext());
096: assertEquals(((Iterator) topOfStack).next(), "eee");
097:
098: assertFalse(((Iterator) topOfStack).hasNext());
099: assertNotSame(afterTopOfStack, topOfStack);
100: }
101:
102: public void testGeneratorWithConverter() throws Exception {
103: IteratorGeneratorTag tag = new IteratorGeneratorTag();
104:
105: tag.setPageContext(pageContext);
106: tag.setVal("%{'aaa, bbb, ccc, ddd, eee'}");
107: tag.setConverter("myConverter");
108: tag.doStartTag();
109: Object topOfStack = stack.findValue("top");
110: tag.doEndTag();
111: Object afterTopOfStack = stack.findValue("top");
112:
113: assertTrue(topOfStack instanceof Iterator);
114: // 1.
115: assertTrue(((Iterator) topOfStack).hasNext());
116: assertEquals(((Iterator) topOfStack).next(), "myConverter-aaa");
117: // 2
118: assertTrue(((Iterator) topOfStack).hasNext());
119: assertEquals(((Iterator) topOfStack).next(), "myConverter-bbb");
120: // 3
121: assertTrue(((Iterator) topOfStack).hasNext());
122: assertEquals(((Iterator) topOfStack).next(), "myConverter-ccc");
123: // 4.
124: assertTrue(((Iterator) topOfStack).hasNext());
125: assertEquals(((Iterator) topOfStack).next(), "myConverter-ddd");
126: // 5.
127: assertTrue(((Iterator) topOfStack).hasNext());
128: assertEquals(((Iterator) topOfStack).next(), "myConverter-eee");
129:
130: assertFalse(((Iterator) topOfStack).hasNext());
131: assertNotSame(afterTopOfStack, topOfStack);
132: }
133:
134: public void testGeneratorWithId() throws Exception {
135: IteratorGeneratorTag tag = new IteratorGeneratorTag();
136: tag.setPageContext(pageContext);
137: tag.setVal("%{'aaa,bbb,ccc,ddd,eee'}");
138: tag.setId("myPageContextAttId");
139: tag.doStartTag();
140: tag.doEndTag();
141:
142: Object pageContextIterator = pageContext
143: .getAttribute("myPageContextAttId");
144:
145: assertTrue(pageContextIterator instanceof Iterator);
146: // 1
147: assertTrue(((Iterator) pageContextIterator).hasNext());
148: assertEquals(((Iterator) pageContextIterator).next(), "aaa");
149: // 2.
150: assertTrue(((Iterator) pageContextIterator).hasNext());
151: assertEquals(((Iterator) pageContextIterator).next(), "bbb");
152: // 3.
153: assertTrue(((Iterator) pageContextIterator).hasNext());
154: assertEquals(((Iterator) pageContextIterator).next(), "ccc");
155: // 4
156: assertTrue(((Iterator) pageContextIterator).hasNext());
157: assertEquals(((Iterator) pageContextIterator).next(), "ddd");
158: // 5
159: assertTrue(((Iterator) pageContextIterator).hasNext());
160: assertEquals(((Iterator) pageContextIterator).next(), "eee");
161:
162: assertFalse(((Iterator) pageContextIterator).hasNext());
163: }
164:
165: public void testGeneratorWithCount() throws Exception {
166: IteratorGeneratorTag tag = new IteratorGeneratorTag();
167:
168: tag.setPageContext(pageContext);
169: tag.setVal("%{'aaa,bbb,ccc,ddd,eee'}");
170: tag.setCount("myCount");
171: tag.doStartTag();
172: Object topOfStack = stack.findValue("top");
173: tag.doEndTag();
174: Object afterTopOfStack = stack.findValue("top");
175:
176: assertTrue(topOfStack instanceof Iterator);
177: // 1
178: assertTrue(((Iterator) topOfStack).hasNext());
179: assertEquals(((Iterator) topOfStack).next(), "aaa");
180: // 2
181: assertTrue(((Iterator) topOfStack).hasNext());
182: assertEquals(((Iterator) topOfStack).next(), "bbb");
183: // 3.
184: assertTrue(((Iterator) topOfStack).hasNext());
185: assertEquals(((Iterator) topOfStack).next(), "ccc");
186:
187: assertFalse(((Iterator) topOfStack).hasNext());
188: assertNotSame(topOfStack, afterTopOfStack);
189: }
190:
191: public Action getAction() {
192: return new ActionSupport() {
193: public Converter getMyConverter() {
194: return new Converter() {
195: public Object convert(String value)
196: throws Exception {
197: return "myConverter-" + value;
198: }
199: };
200: }
201:
202: public int getMyCount() {
203: return 3;
204: }
205: };
206: }
207: }
|