View Javadoc

1   /*
2    * $Id: MergeIteratorTagTest.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.views.jsp.iterator.MergeIteratorTag;
25  
26  import com.opensymphony.xwork2.Action;
27  import com.opensymphony.xwork2.ActionSupport;
28  
29  /***
30   * Test case for MergeIteratorTag.
31   * 
32   */
33  public class MergeIteratorTagTest extends AbstractTagTest {
34  
35  	public void testMergingIteratorWithArrayAsSource() throws Exception {
36  		MergeIteratorTag tag = new MergeIteratorTag();
37  		tag.setPageContext(pageContext);
38  		tag.setId("myMergedIterator");
39  		
40  		ParamTag iterator1ParamTag = new ParamTag();
41  		iterator1ParamTag.setPageContext(pageContext);
42  		iterator1ParamTag.setValue("myArr1");
43  		
44  		ParamTag iterator2ParamTag = new ParamTag();
45  		iterator2ParamTag.setPageContext(pageContext);
46  		iterator2ParamTag.setValue("myArr2");
47  		
48  		ParamTag iterator3ParamTag = new ParamTag();
49  		iterator3ParamTag.setPageContext(pageContext);
50  		iterator3ParamTag.setValue("myArr3");
51  		
52  		
53  		tag.doStartTag();
54  		iterator1ParamTag.doStartTag();
55  		iterator1ParamTag.doEndTag();
56  		iterator2ParamTag.doStartTag();
57  		iterator2ParamTag.doEndTag();
58  		iterator3ParamTag.doStartTag();
59  		iterator3ParamTag.doEndTag();
60  		tag.doEndTag();
61  		
62  		Iterator mergedIterator = (Iterator) stack.findValue("#myMergedIterator"); // if not iterator, let CCE surface
63  		
64  		assertNotNull(mergedIterator);
65  		assertTrue(mergedIterator.hasNext());
66  		assertEquals(mergedIterator.next(), "1");
67  		assertTrue(mergedIterator.hasNext());
68  		assertEquals(mergedIterator.next(), "a");
69  		assertTrue(mergedIterator.hasNext());
70  		assertEquals(mergedIterator.next(), "A");
71  		assertTrue(mergedIterator.hasNext());
72  		assertEquals(mergedIterator.next(), "2");
73  		assertTrue(mergedIterator.hasNext());
74  		assertEquals(mergedIterator.next(), "b");
75  		assertTrue(mergedIterator.hasNext());
76  		assertEquals(mergedIterator.next(), "B");
77  		assertTrue(mergedIterator.hasNext());
78  		assertEquals(mergedIterator.next(), "3");
79  		assertTrue(mergedIterator.hasNext());
80  		assertEquals(mergedIterator.next(), "c");
81  		assertTrue(mergedIterator.hasNext());
82  		assertEquals(mergedIterator.next(), "C");
83  		assertFalse(mergedIterator.hasNext());
84  	}
85  	
86  
87  	public void testMergingIteratorsWithListAsSource() throws Exception {
88  		MergeIteratorTag tag = new MergeIteratorTag();
89  		tag.setPageContext(pageContext);
90  		tag.setId("myMergedIterator");
91  		
92  		ParamTag iterator1ParamTag = new ParamTag();
93  		iterator1ParamTag.setPageContext(pageContext);
94  		iterator1ParamTag.setValue("myList1");
95  		
96  		ParamTag iterator2ParamTag = new ParamTag();
97  		iterator2ParamTag.setPageContext(pageContext);
98  		iterator2ParamTag.setValue("myList2");
99  		
100 		ParamTag iterator3ParamTag = new ParamTag();
101 		iterator3ParamTag.setPageContext(pageContext);
102 		iterator3ParamTag.setValue("myList3");
103 		
104 		
105 		tag.doStartTag();
106 		iterator1ParamTag.doStartTag();
107 		iterator1ParamTag.doEndTag();
108 		iterator2ParamTag.doStartTag();
109 		iterator2ParamTag.doEndTag();
110 		iterator3ParamTag.doStartTag();
111 		iterator3ParamTag.doEndTag();
112 		tag.doEndTag();
113 		
114 		Iterator mergedIterator = (Iterator) stack.findValue("#myMergedIterator"); // if not iterator, let CCE surface
115 		
116 		assertNotNull(mergedIterator);
117 		assertTrue(mergedIterator.hasNext());
118 		assertEquals(mergedIterator.next(), "1");
119 		assertTrue(mergedIterator.hasNext());
120 		assertEquals(mergedIterator.next(), "a");
121 		assertTrue(mergedIterator.hasNext());
122 		assertEquals(mergedIterator.next(), "A");
123 		assertTrue(mergedIterator.hasNext());
124 		assertEquals(mergedIterator.next(), "2");
125 		assertTrue(mergedIterator.hasNext());
126 		assertEquals(mergedIterator.next(), "b");
127 		assertTrue(mergedIterator.hasNext());
128 		assertEquals(mergedIterator.next(), "B");
129 		assertTrue(mergedIterator.hasNext());
130 		assertEquals(mergedIterator.next(), "3");
131 		assertTrue(mergedIterator.hasNext());
132 		assertEquals(mergedIterator.next(), "c");
133 		assertTrue(mergedIterator.hasNext());
134 		assertEquals(mergedIterator.next(), "C");
135 		assertFalse(mergedIterator.hasNext());
136 	}
137 	
138 	
139 	
140 	
141 	public Action getAction() {
142 		return new ActionSupport() {
143 			public List getMyList1() {
144 				List l = new ArrayList();
145 				l.add("1");
146 				l.add("2");
147 				l.add("3");
148 				return l;
149 			}
150 			
151 			public List getMyList2() {
152 				List l = new ArrayList();
153 				l.add("a");
154 				l.add("b");
155 				l.add("c");
156 				return l;
157 			}
158 			
159 			public List getMyList3() {
160 				List l = new ArrayList();
161 				l.add("A");
162 				l.add("B");
163 				l.add("C");
164 				return l;
165 			}
166 			
167 			public String[] getMyArr1() {
168 				return new String[] { "1", "2", "3" };
169 			}
170 			
171 			public String[] getMyArr2() {
172 				return new String[] { "a", "b", "c" };
173 			}
174 			
175 			public String[] getMyArr3() {
176 				return new String[] {"A", "B", "C"};
177 			}
178 		};
179 	}
180 }