View Javadoc

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