001: /*
002: * Copyright (c) 2002-2003 by OpenSymphony
003: * All rights reserved.
004: */
005: package com.opensymphony.webwork.views.jsp;
006:
007: import java.util.Iterator;
008:
009: import com.opensymphony.webwork.util.IteratorGenerator.Converter;
010: import com.opensymphony.webwork.views.jsp.iterator.IteratorGeneratorTag;
011: import com.opensymphony.xwork.Action;
012: import com.opensymphony.xwork.ActionSupport;
013:
014: /**
015: * Test case for IteratorGeneratorTag.
016: *
017: * @author tm_jee ( tm_jee(at)yahoo.co.uk )
018: * @version $Date: 2005-11-21 17:49:32 +0100 (Mon, 21 Nov 2005) $ $Id: IteratorGeneratorTagTest.java 1419 2005-11-21 16:49:32Z tmjee $
019: */
020: public class IteratorGeneratorTagTest extends AbstractTagTest {
021:
022: public void testGeneratorBasic() throws Exception {
023: IteratorGeneratorTag tag = new IteratorGeneratorTag();
024:
025: tag.setPageContext(pageContext);
026: tag.setVal("%{'aaa,bbb,ccc,ddd,eee'}");
027: tag.doStartTag();
028: Object topOfStack = stack.findValue("top");
029:
030: assertTrue(topOfStack instanceof Iterator);
031: // 1
032: assertTrue(((Iterator) topOfStack).hasNext());
033: assertEquals(((Iterator) topOfStack).next(), "aaa");
034: // 2
035: assertTrue(((Iterator) topOfStack).hasNext());
036: assertEquals(((Iterator) topOfStack).next(), "bbb");
037: // 3
038: assertTrue(((Iterator) topOfStack).hasNext());
039: assertEquals(((Iterator) topOfStack).next(), "ccc");
040: // 4
041: assertTrue(((Iterator) topOfStack).hasNext());
042: assertEquals(((Iterator) topOfStack).next(), "ddd");
043: // 5
044: assertTrue(((Iterator) topOfStack).hasNext());
045: assertEquals(((Iterator) topOfStack).next(), "eee");
046:
047: assertFalse(((Iterator) topOfStack).hasNext());
048:
049: tag.doEndTag();
050: Object afterTopOfStack = stack.findValue("top");
051:
052: assertNotSame(afterTopOfStack, topOfStack);
053: }
054:
055: public void testGeneratorWithSeparator() throws Exception {
056: IteratorGeneratorTag tag = new IteratorGeneratorTag();
057:
058: tag.setPageContext(pageContext);
059: tag.setVal("%{'aaa|bbb|ccc|ddd|eee'}");
060: tag.setSeparator("|");
061: tag.doStartTag();
062: Object topOfStack = stack.findValue("top");
063: tag.doEndTag();
064: Object afterTopOfStack = stack.findValue("top");
065:
066: assertTrue(topOfStack instanceof Iterator);
067: // 1
068: assertTrue(((Iterator) topOfStack).hasNext());
069: assertEquals(((Iterator) topOfStack).next(), "aaa");
070: // 2
071: assertTrue(((Iterator) topOfStack).hasNext());
072: assertEquals(((Iterator) topOfStack).next(), "bbb");
073: // 3
074: assertTrue(((Iterator) topOfStack).hasNext());
075: assertEquals(((Iterator) topOfStack).next(), "ccc");
076: // 4
077: assertTrue(((Iterator) topOfStack).hasNext());
078: assertEquals(((Iterator) topOfStack).next(), "ddd");
079: // 5
080: assertTrue(((Iterator) topOfStack).hasNext());
081: assertEquals(((Iterator) topOfStack).next(), "eee");
082:
083: assertFalse(((Iterator) topOfStack).hasNext());
084: assertNotSame(afterTopOfStack, topOfStack);
085: }
086:
087: public void testGeneratorWithConverter() throws Exception {
088: IteratorGeneratorTag tag = new IteratorGeneratorTag();
089:
090: tag.setPageContext(pageContext);
091: tag.setVal("%{'aaa, bbb, ccc, ddd, eee'}");
092: tag.setConverter("myConverter");
093: tag.doStartTag();
094: Object topOfStack = stack.findValue("top");
095: tag.doEndTag();
096: Object afterTopOfStack = stack.findValue("top");
097:
098: assertTrue(topOfStack instanceof Iterator);
099: // 1.
100: assertTrue(((Iterator) topOfStack).hasNext());
101: assertEquals(((Iterator) topOfStack).next(), "myConverter-aaa");
102: // 2
103: assertTrue(((Iterator) topOfStack).hasNext());
104: assertEquals(((Iterator) topOfStack).next(), "myConverter-bbb");
105: // 3
106: assertTrue(((Iterator) topOfStack).hasNext());
107: assertEquals(((Iterator) topOfStack).next(), "myConverter-ccc");
108: // 4.
109: assertTrue(((Iterator) topOfStack).hasNext());
110: assertEquals(((Iterator) topOfStack).next(), "myConverter-ddd");
111: // 5.
112: assertTrue(((Iterator) topOfStack).hasNext());
113: assertEquals(((Iterator) topOfStack).next(), "myConverter-eee");
114:
115: assertFalse(((Iterator) topOfStack).hasNext());
116: assertNotSame(afterTopOfStack, topOfStack);
117: }
118:
119: public void testGeneratorWithId() throws Exception {
120: IteratorGeneratorTag tag = new IteratorGeneratorTag();
121: tag.setPageContext(pageContext);
122: tag.setVal("%{'aaa,bbb,ccc,ddd,eee'}");
123: tag.setId("myPageContextAttId");
124: tag.doStartTag();
125: tag.doEndTag();
126:
127: Object pageContextIterator = pageContext
128: .getAttribute("myPageContextAttId");
129:
130: assertTrue(pageContextIterator instanceof Iterator);
131: // 1
132: assertTrue(((Iterator) pageContextIterator).hasNext());
133: assertEquals(((Iterator) pageContextIterator).next(), "aaa");
134: // 2.
135: assertTrue(((Iterator) pageContextIterator).hasNext());
136: assertEquals(((Iterator) pageContextIterator).next(), "bbb");
137: // 3.
138: assertTrue(((Iterator) pageContextIterator).hasNext());
139: assertEquals(((Iterator) pageContextIterator).next(), "ccc");
140: // 4
141: assertTrue(((Iterator) pageContextIterator).hasNext());
142: assertEquals(((Iterator) pageContextIterator).next(), "ddd");
143: // 5
144: assertTrue(((Iterator) pageContextIterator).hasNext());
145: assertEquals(((Iterator) pageContextIterator).next(), "eee");
146:
147: assertFalse(((Iterator) pageContextIterator).hasNext());
148: }
149:
150: public void testGeneratorWithCount() throws Exception {
151: IteratorGeneratorTag tag = new IteratorGeneratorTag();
152:
153: tag.setPageContext(pageContext);
154: tag.setVal("%{'aaa,bbb,ccc,ddd,eee'}");
155: tag.setCount("myCount");
156: tag.doStartTag();
157: Object topOfStack = stack.findValue("top");
158: tag.doEndTag();
159: Object afterTopOfStack = stack.findValue("top");
160:
161: assertTrue(topOfStack instanceof Iterator);
162: // 1
163: assertTrue(((Iterator) topOfStack).hasNext());
164: assertEquals(((Iterator) topOfStack).next(), "aaa");
165: // 2
166: assertTrue(((Iterator) topOfStack).hasNext());
167: assertEquals(((Iterator) topOfStack).next(), "bbb");
168: // 3.
169: assertTrue(((Iterator) topOfStack).hasNext());
170: assertEquals(((Iterator) topOfStack).next(), "ccc");
171:
172: assertFalse(((Iterator) topOfStack).hasNext());
173: assertNotSame(topOfStack, afterTopOfStack);
174: }
175:
176: public Action getAction() {
177: return new ActionSupport() {
178: public Converter getMyConverter() {
179: return new Converter() {
180: public Object convert(String value)
181: throws Exception {
182: return "myConverter-" + value;
183: }
184: };
185: }
186:
187: public int getMyCount() {
188: return 3;
189: }
190: };
191: }
192: }
|