View Javadoc

1   /*
2    * $Id: MergeIteratorTagTest.java 651946 2008-04-27 13:41:38Z apetrelli $
3    *
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  package org.apache.struts2.views.jsp;
23  
24  import java.util.ArrayList;
25  import java.util.Iterator;
26  import java.util.List;
27  
28  import org.apache.struts2.views.jsp.iterator.MergeIteratorTag;
29  
30  import com.opensymphony.xwork2.Action;
31  import com.opensymphony.xwork2.ActionSupport;
32  
33  /***
34   * Test case for MergeIteratorTag.
35   *
36   */
37  public class MergeIteratorTagTest extends AbstractTagTest {
38  
39      public void testMergingIteratorWithArrayAsSource() throws Exception {
40          MergeIteratorTag tag = new MergeIteratorTag();
41          tag.setPageContext(pageContext);
42          tag.setId("myMergedIterator");
43  
44          ParamTag iterator1ParamTag = new ParamTag();
45          iterator1ParamTag.setPageContext(pageContext);
46          iterator1ParamTag.setValue("myArr1");
47  
48          ParamTag iterator2ParamTag = new ParamTag();
49          iterator2ParamTag.setPageContext(pageContext);
50          iterator2ParamTag.setValue("myArr2");
51  
52          ParamTag iterator3ParamTag = new ParamTag();
53          iterator3ParamTag.setPageContext(pageContext);
54          iterator3ParamTag.setValue("myArr3");
55  
56  
57          tag.doStartTag();
58          iterator1ParamTag.doStartTag();
59          iterator1ParamTag.doEndTag();
60          iterator2ParamTag.doStartTag();
61          iterator2ParamTag.doEndTag();
62          iterator3ParamTag.doStartTag();
63          iterator3ParamTag.doEndTag();
64          tag.doEndTag();
65  
66          Iterator mergedIterator = (Iterator) stack.findValue("#myMergedIterator"); // if not iterator, let CCE surface
67  
68          assertNotNull(mergedIterator);
69          assertTrue(mergedIterator.hasNext());
70          assertEquals(mergedIterator.next(), "1");
71          assertTrue(mergedIterator.hasNext());
72          assertEquals(mergedIterator.next(), "a");
73          assertTrue(mergedIterator.hasNext());
74          assertEquals(mergedIterator.next(), "A");
75          assertTrue(mergedIterator.hasNext());
76          assertEquals(mergedIterator.next(), "2");
77          assertTrue(mergedIterator.hasNext());
78          assertEquals(mergedIterator.next(), "b");
79          assertTrue(mergedIterator.hasNext());
80          assertEquals(mergedIterator.next(), "B");
81          assertTrue(mergedIterator.hasNext());
82          assertEquals(mergedIterator.next(), "3");
83          assertTrue(mergedIterator.hasNext());
84          assertEquals(mergedIterator.next(), "c");
85          assertTrue(mergedIterator.hasNext());
86          assertEquals(mergedIterator.next(), "C");
87          assertFalse(mergedIterator.hasNext());
88      }
89  
90  
91      public void testMergingIteratorsWithListAsSource() throws Exception {
92          MergeIteratorTag tag = new MergeIteratorTag();
93          tag.setPageContext(pageContext);
94          tag.setId("myMergedIterator");
95  
96          ParamTag iterator1ParamTag = new ParamTag();
97          iterator1ParamTag.setPageContext(pageContext);
98          iterator1ParamTag.setValue("myList1");
99  
100         ParamTag iterator2ParamTag = new ParamTag();
101         iterator2ParamTag.setPageContext(pageContext);
102         iterator2ParamTag.setValue("myList2");
103 
104         ParamTag iterator3ParamTag = new ParamTag();
105         iterator3ParamTag.setPageContext(pageContext);
106         iterator3ParamTag.setValue("myList3");
107 
108 
109         tag.doStartTag();
110         iterator1ParamTag.doStartTag();
111         iterator1ParamTag.doEndTag();
112         iterator2ParamTag.doStartTag();
113         iterator2ParamTag.doEndTag();
114         iterator3ParamTag.doStartTag();
115         iterator3ParamTag.doEndTag();
116         tag.doEndTag();
117 
118         Iterator mergedIterator = (Iterator) stack.findValue("#myMergedIterator"); // if not iterator, let CCE surface
119 
120         assertNotNull(mergedIterator);
121         assertTrue(mergedIterator.hasNext());
122         assertEquals(mergedIterator.next(), "1");
123         assertTrue(mergedIterator.hasNext());
124         assertEquals(mergedIterator.next(), "a");
125         assertTrue(mergedIterator.hasNext());
126         assertEquals(mergedIterator.next(), "A");
127         assertTrue(mergedIterator.hasNext());
128         assertEquals(mergedIterator.next(), "2");
129         assertTrue(mergedIterator.hasNext());
130         assertEquals(mergedIterator.next(), "b");
131         assertTrue(mergedIterator.hasNext());
132         assertEquals(mergedIterator.next(), "B");
133         assertTrue(mergedIterator.hasNext());
134         assertEquals(mergedIterator.next(), "3");
135         assertTrue(mergedIterator.hasNext());
136         assertEquals(mergedIterator.next(), "c");
137         assertTrue(mergedIterator.hasNext());
138         assertEquals(mergedIterator.next(), "C");
139         assertFalse(mergedIterator.hasNext());
140     }
141 
142 
143 
144 
145     public Action getAction() {
146         return new ActionSupport() {
147             public List getMyList1() {
148                 List l = new ArrayList();
149                 l.add("1");
150                 l.add("2");
151                 l.add("3");
152                 return l;
153             }
154 
155             public List getMyList2() {
156                 List l = new ArrayList();
157                 l.add("a");
158                 l.add("b");
159                 l.add("c");
160                 return l;
161             }
162 
163             public List getMyList3() {
164                 List l = new ArrayList();
165                 l.add("A");
166                 l.add("B");
167                 l.add("C");
168                 return l;
169             }
170 
171             public String[] getMyArr1() {
172                 return new String[] { "1", "2", "3" };
173             }
174 
175             public String[] getMyArr2() {
176                 return new String[] { "a", "b", "c" };
177             }
178 
179             public String[] getMyArr3() {
180                 return new String[] {"A", "B", "C"};
181             }
182         };
183     }
184 }