View Javadoc

1   /*
2    * $Id: SortIteratorTagTest.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.Comparator;
26  import java.util.Iterator;
27  import java.util.List;
28  
29  import javax.servlet.jsp.JspException;
30  
31  import org.apache.struts2.views.jsp.iterator.SortIteratorTag;
32  
33  import com.opensymphony.xwork2.Action;
34  import com.opensymphony.xwork2.ActionSupport;
35  
36  /***
37   * Test case to test SortIteratorTag.
38   *
39   */
40  public class SortIteratorTagTest extends AbstractTagTest {
41  
42      public void testSortWithoutId() throws Exception {
43          SortIteratorTag tag = new SortIteratorTag();
44  
45          tag.setComparator("comparator");
46          tag.setSource("source");
47  
48          tag.setPageContext(pageContext);
49          tag.doStartTag();
50  
51          // if not an Iterator, just let the ClassCastException be thrown as error instead of failure
52          Iterator sortedIterator = (Iterator) stack.findValue("top");
53  
54          assertNotNull(sortedIterator);
55          // 1
56          assertTrue(sortedIterator.hasNext());
57          assertEquals(sortedIterator.next(), new Integer(1));
58          // 2
59          assertTrue(sortedIterator.hasNext());
60          assertEquals(sortedIterator.next(), new Integer(2));
61          // 3.
62          assertTrue(sortedIterator.hasNext());
63          assertEquals(sortedIterator.next(), new Integer(3));
64          // 4.
65          assertTrue(sortedIterator.hasNext());
66          assertEquals(sortedIterator.next(), new Integer(4));
67          // 5
68          assertTrue(sortedIterator.hasNext());
69          assertEquals(sortedIterator.next(), new Integer(5));
70  
71          assertFalse(sortedIterator.hasNext());
72          tag.doEndTag();
73      }
74  
75      public void testSortWithIdIteratorAvailableInStackTop() throws Exception {
76  
77          SortIteratorTag tag = new SortIteratorTag();
78  
79          tag.setId("myId");
80          tag.setComparator("comparator");
81          tag.setSource("source");
82  
83          tag.setPageContext(pageContext);
84          tag.doStartTag();
85  
86          {
87              Iterator sortedIterator = (Iterator) stack.findValue("top");
88  
89              assertNotNull(sortedIterator);
90              // 1
91              assertTrue(sortedIterator.hasNext());
92              assertEquals(sortedIterator.next(), new Integer(1));
93              // 2
94              assertTrue(sortedIterator.hasNext());
95              assertEquals(sortedIterator.next(), new Integer(2));
96              // 3
97              assertTrue(sortedIterator.hasNext());
98              assertEquals(sortedIterator.next(), new Integer(3));
99              // 4
100             assertTrue(sortedIterator.hasNext());
101             assertEquals(sortedIterator.next(), new Integer(4));
102             // 5
103             assertTrue(sortedIterator.hasNext());
104             assertEquals(sortedIterator.next(), new Integer(5));
105 
106             assertFalse(sortedIterator.hasNext());
107         }
108 
109         tag.doEndTag();
110     }
111 
112 
113     public void testSortWithIdIteratorAvailableInPageContext() throws Exception {
114         SortIteratorTag tag = new SortIteratorTag();
115 
116         tag.setId("myId");
117         tag.setComparator("comparator");
118         tag.setSource("source");
119 
120         tag.setPageContext(pageContext);
121         tag.doStartTag();
122 
123         {
124             Iterator sortedIterator = (Iterator) pageContext.getAttribute("myId");
125 
126             assertNotNull(sortedIterator);
127             // 1
128             assertTrue(sortedIterator.hasNext());
129             assertEquals(sortedIterator.next(), new Integer(1));
130             // 2
131             assertTrue(sortedIterator.hasNext());
132             assertEquals(sortedIterator.next(), new Integer(2));
133             // 3
134             assertTrue(sortedIterator.hasNext());
135             assertEquals(sortedIterator.next(), new Integer(3));
136             // 4
137             assertTrue(sortedIterator.hasNext());
138             assertEquals(sortedIterator.next(), new Integer(4));
139             // 5
140             assertTrue(sortedIterator.hasNext());
141             assertEquals(sortedIterator.next(), new Integer(5));
142 
143             assertFalse(sortedIterator.hasNext());
144         }
145 
146         tag.doEndTag();
147     }
148 
149     public void testSortWithIllegalSource() throws Exception {
150         SortIteratorTag tag = new SortIteratorTag();
151 
152         tag.setComparator("comparator");
153         tag.setSource("badSource");
154 
155         try {
156             tag.setPageContext(pageContext);
157             tag.doStartTag();
158             tag.doEndTag();
159             fail("JspException expected");
160         }
161         catch (JspException e) {
162             // ok
163             assertTrue(true);
164         }
165     }
166 
167     public void testSortWithIllegalComparator() throws Exception {
168         SortIteratorTag tag = new SortIteratorTag();
169 
170         tag.setComparator("badComparator");
171         tag.setSource("source");
172 
173         try {
174             tag.setPageContext(pageContext);
175             tag.doStartTag();
176             tag.doEndTag();
177             fail("JspException expected");
178         }
179         catch (JspException e) {
180             // good
181             assertTrue(true);
182         }
183 
184     }
185 
186     public Action getAction() {
187         return new ActionSupport() {
188             public Comparator getComparator() {
189                 return new Comparator() {
190                     public int compare(Object o1, Object o2) {
191                         Integer i1 = (Integer) o1;
192                         Integer i2 = (Integer) o2;
193 
194                         return (i1.intValue() - i2.intValue());
195                     }
196                 };
197             }
198 
199             public List getSource() {
200                 List l = new ArrayList();
201                 l.add(new Integer(3));
202                 l.add(new Integer(1));
203                 l.add(new Integer(2));
204                 l.add(new Integer(5));
205                 l.add(new Integer(4));
206                 return l;
207             }
208 
209             public Object getBadComparator() {
210                 return new Object();
211             }
212 
213             public Object getBadSource() {
214                 return new Object();
215             }
216         };
217     }
218 }