View Javadoc

1   /*
2    * $Id: IteratorGeneratorTagTest.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.Iterator;
21  
22  import org.apache.struts2.util.IteratorGenerator.Converter;
23  import org.apache.struts2.views.jsp.iterator.IteratorGeneratorTag;
24  
25  import com.opensymphony.xwork2.Action;
26  import com.opensymphony.xwork2.ActionSupport;
27  
28  /***
29   * Test case for IteratorGeneratorTag.
30   * 
31   */
32  public class IteratorGeneratorTagTest extends AbstractTagTest {
33  
34  	public void testGeneratorBasic() throws Exception {
35  		IteratorGeneratorTag tag = new IteratorGeneratorTag();
36  		
37  		tag.setPageContext(pageContext);
38  		tag.setVal("%{'aaa,bbb,ccc,ddd,eee'}");
39  		tag.doStartTag();
40  		Object topOfStack = stack.findValue("top");
41  		
42  		
43  		assertTrue(topOfStack instanceof Iterator);
44  		// 1
45  		assertTrue(((Iterator)topOfStack).hasNext());
46  		assertEquals(((Iterator)topOfStack).next(), "aaa");
47  		// 2
48  		assertTrue(((Iterator)topOfStack).hasNext());
49  		assertEquals(((Iterator)topOfStack).next(), "bbb");
50  		// 3
51  		assertTrue(((Iterator)topOfStack).hasNext());
52  		assertEquals(((Iterator)topOfStack).next(), "ccc");
53  		// 4
54  		assertTrue(((Iterator)topOfStack).hasNext());
55  		assertEquals(((Iterator)topOfStack).next(), "ddd");
56  		// 5
57  		assertTrue(((Iterator)topOfStack).hasNext());
58  		assertEquals(((Iterator)topOfStack).next(),"eee");
59  		
60  		assertFalse(((Iterator)topOfStack).hasNext());
61  		
62  		tag.doEndTag();
63  		Object afterTopOfStack = stack.findValue("top");
64  		
65  		
66  		assertNotSame(afterTopOfStack, topOfStack);
67  	}
68  	
69  	public void testGeneratorWithSeparator() throws Exception {
70  		IteratorGeneratorTag tag = new IteratorGeneratorTag();
71  		
72  		tag.setPageContext(pageContext);
73  		tag.setVal("%{'aaa|bbb|ccc|ddd|eee'}");
74  		tag.setSeparator("|");
75  		tag.doStartTag();
76  		Object topOfStack = stack.findValue("top");
77  		tag.doEndTag();
78  		Object afterTopOfStack = stack.findValue("top");
79  		
80  		assertTrue(topOfStack instanceof Iterator);
81  		// 1
82  		assertTrue(((Iterator)topOfStack).hasNext());
83  		assertEquals(((Iterator)topOfStack).next(), "aaa");
84  		// 2 
85  		assertTrue(((Iterator)topOfStack).hasNext());
86  		assertEquals(((Iterator)topOfStack).next(), "bbb");
87  		// 3
88  		assertTrue(((Iterator)topOfStack).hasNext());
89  		assertEquals(((Iterator)topOfStack).next(), "ccc");
90  		// 4
91  		assertTrue(((Iterator)topOfStack).hasNext());
92  		assertEquals(((Iterator)topOfStack).next(), "ddd");
93  		// 5
94  		assertTrue(((Iterator)topOfStack).hasNext());
95  		assertEquals(((Iterator)topOfStack).next(), "eee");
96  		
97  		assertFalse(((Iterator)topOfStack).hasNext());
98  		assertNotSame(afterTopOfStack, topOfStack);
99  	}
100 	
101 	public void testGeneratorWithConverter() throws Exception {
102 		IteratorGeneratorTag tag = new IteratorGeneratorTag();
103 		
104 		tag.setPageContext(pageContext);
105 		tag.setVal("%{'aaa, bbb, ccc, ddd, eee'}");
106 		tag.setConverter("myConverter");
107 		tag.doStartTag();
108 		Object topOfStack = stack.findValue("top");
109 		tag.doEndTag();
110 		Object afterTopOfStack = stack.findValue("top");
111 		
112 		assertTrue(topOfStack instanceof Iterator);
113 		// 1.
114 		assertTrue(((Iterator)topOfStack).hasNext());
115 		assertEquals(((Iterator)topOfStack).next(), "myConverter-aaa");
116 		// 2
117 		assertTrue(((Iterator)topOfStack).hasNext());
118 		assertEquals(((Iterator)topOfStack).next(), "myConverter-bbb");
119 		// 3
120 		assertTrue(((Iterator)topOfStack).hasNext());
121 		assertEquals(((Iterator)topOfStack).next(), "myConverter-ccc");
122 		// 4.
123 		assertTrue(((Iterator)topOfStack).hasNext());
124 		assertEquals(((Iterator)topOfStack).next(), "myConverter-ddd");
125 		// 5.
126 		assertTrue(((Iterator)topOfStack).hasNext());
127 		assertEquals(((Iterator)topOfStack).next(), "myConverter-eee");
128 		
129 		assertFalse(((Iterator)topOfStack).hasNext());
130 		assertNotSame(afterTopOfStack, topOfStack);
131 	}
132 	
133 	public void testGeneratorWithId() throws Exception {
134 		IteratorGeneratorTag tag = new IteratorGeneratorTag();
135 		tag.setPageContext(pageContext);
136 		tag.setVal("%{'aaa,bbb,ccc,ddd,eee'}");
137 		tag.setId("myPageContextAttId");
138 		tag.doStartTag();
139 		tag.doEndTag();
140 		
141 		Object pageContextIterator = pageContext.getAttribute("myPageContextAttId"); 
142 		
143 		assertTrue(pageContextIterator instanceof Iterator);
144 		// 1
145 		assertTrue(((Iterator)pageContextIterator).hasNext());
146 		assertEquals(((Iterator)pageContextIterator).next(), "aaa");
147 		// 2.
148 		assertTrue(((Iterator)pageContextIterator).hasNext());
149 		assertEquals(((Iterator)pageContextIterator).next(), "bbb");
150 		// 3.
151 		assertTrue(((Iterator)pageContextIterator).hasNext());
152 		assertEquals(((Iterator)pageContextIterator).next(), "ccc");
153 		// 4
154 		assertTrue(((Iterator)pageContextIterator).hasNext());
155 		assertEquals(((Iterator)pageContextIterator).next(), "ddd");
156 		// 5
157 		assertTrue(((Iterator)pageContextIterator).hasNext());
158 		assertEquals(((Iterator)pageContextIterator).next(), "eee");
159 		
160 		assertFalse(((Iterator)pageContextIterator).hasNext());
161 	}
162 	
163 	public void testGeneratorWithCount() throws Exception {
164 		IteratorGeneratorTag tag = new IteratorGeneratorTag();
165 		
166 		tag.setPageContext(pageContext);
167 		tag.setVal("%{'aaa,bbb,ccc,ddd,eee'}");
168 		tag.setCount("myCount");
169 		tag.doStartTag();
170 		Object topOfStack = stack.findValue("top");
171 		tag.doEndTag();
172 		Object afterTopOfStack = stack.findValue("top");
173 		
174 		
175 		assertTrue(topOfStack instanceof Iterator);
176 		// 1
177 		assertTrue(((Iterator)topOfStack).hasNext());
178 		assertEquals(((Iterator)topOfStack).next(), "aaa");
179 		// 2
180 		assertTrue(((Iterator)topOfStack).hasNext());
181 		assertEquals(((Iterator)topOfStack).next(), "bbb");
182 		// 3.
183 		assertTrue(((Iterator)topOfStack).hasNext());
184 		assertEquals(((Iterator)topOfStack).next(), "ccc");
185 		
186 		assertFalse(((Iterator)topOfStack).hasNext());
187 		assertNotSame(topOfStack, afterTopOfStack);
188 	}
189 	
190 	
191 	public Action getAction() {
192 		return new ActionSupport() {
193 			public Converter getMyConverter() {
194 				return new Converter() {
195 					public Object convert(String value) throws Exception {
196 						return "myConverter-"+value;
197 					}
198 				};
199 			}
200 			
201 			public int getMyCount() {
202 				return 3;
203 			}
204 		};
205 	}
206 }
207