001: /*
002: * Copyright (c) 2002-2003 by OpenSymphony
003: * All rights reserved.
004: */
005: package com.opensymphony.webwork.views.jsp;
006:
007: import com.opensymphony.webwork.views.jsp.iterator.SortIteratorTag;
008: import com.opensymphony.xwork.Action;
009: import com.opensymphony.xwork.ActionSupport;
010:
011: import java.util.ArrayList;
012: import java.util.Comparator;
013: import java.util.Iterator;
014: import java.util.List;
015:
016: import javax.servlet.jsp.JspException;
017:
018: /**
019: * Test case to test SortIteratorTag.
020: *
021: * @author tm_jee (tm_jee(at)yahoo.co.uk)
022: * @version $Date: 2005-11-21 17:28:26 +0100 (Mon, 21 Nov 2005) $ $Id: SortIteratorTagTest.java 1417 2005-11-21 16:28:26Z tmjee $
023: */
024: public class SortIteratorTagTest extends AbstractTagTest {
025:
026: public void testSortWithoutId() throws Exception {
027: SortIteratorTag tag = new SortIteratorTag();
028:
029: tag.setComparator("comparator");
030: tag.setSource("source");
031:
032: tag.setPageContext(pageContext);
033: tag.doStartTag();
034:
035: // if not an Iterator, just let the ClassCastException be thrown as error instead of failure
036: Iterator sortedIterator = (Iterator) stack.findValue("top");
037:
038: assertNotNull(sortedIterator);
039: // 1
040: assertTrue(sortedIterator.hasNext());
041: assertEquals(sortedIterator.next(), new Integer(1));
042: // 2
043: assertTrue(sortedIterator.hasNext());
044: assertEquals(sortedIterator.next(), new Integer(2));
045: // 3.
046: assertTrue(sortedIterator.hasNext());
047: assertEquals(sortedIterator.next(), new Integer(3));
048: // 4.
049: assertTrue(sortedIterator.hasNext());
050: assertEquals(sortedIterator.next(), new Integer(4));
051: // 5
052: assertTrue(sortedIterator.hasNext());
053: assertEquals(sortedIterator.next(), new Integer(5));
054:
055: assertFalse(sortedIterator.hasNext());
056: tag.doEndTag();
057: }
058:
059: public void testSortWithIdIteratorAvailableInStackTop()
060: throws Exception {
061:
062: SortIteratorTag tag = new SortIteratorTag();
063:
064: tag.setId("myId");
065: tag.setComparator("comparator");
066: tag.setSource("source");
067:
068: tag.setPageContext(pageContext);
069: tag.doStartTag();
070:
071: {
072: Iterator sortedIterator = (Iterator) stack.findValue("top");
073:
074: assertNotNull(sortedIterator);
075: // 1
076: assertTrue(sortedIterator.hasNext());
077: assertEquals(sortedIterator.next(), new Integer(1));
078: // 2
079: assertTrue(sortedIterator.hasNext());
080: assertEquals(sortedIterator.next(), new Integer(2));
081: // 3
082: assertTrue(sortedIterator.hasNext());
083: assertEquals(sortedIterator.next(), new Integer(3));
084: // 4
085: assertTrue(sortedIterator.hasNext());
086: assertEquals(sortedIterator.next(), new Integer(4));
087: // 5
088: assertTrue(sortedIterator.hasNext());
089: assertEquals(sortedIterator.next(), new Integer(5));
090:
091: assertFalse(sortedIterator.hasNext());
092: }
093:
094: tag.doEndTag();
095: }
096:
097: public void testSortWithIdIteratorAvailableInPageContext()
098: throws Exception {
099: SortIteratorTag tag = new SortIteratorTag();
100:
101: tag.setId("myId");
102: tag.setComparator("comparator");
103: tag.setSource("source");
104:
105: tag.setPageContext(pageContext);
106: tag.doStartTag();
107:
108: {
109: Iterator sortedIterator = (Iterator) pageContext
110: .getAttribute("myId");
111:
112: assertNotNull(sortedIterator);
113: // 1
114: assertTrue(sortedIterator.hasNext());
115: assertEquals(sortedIterator.next(), new Integer(1));
116: // 2
117: assertTrue(sortedIterator.hasNext());
118: assertEquals(sortedIterator.next(), new Integer(2));
119: // 3
120: assertTrue(sortedIterator.hasNext());
121: assertEquals(sortedIterator.next(), new Integer(3));
122: // 4
123: assertTrue(sortedIterator.hasNext());
124: assertEquals(sortedIterator.next(), new Integer(4));
125: // 5
126: assertTrue(sortedIterator.hasNext());
127: assertEquals(sortedIterator.next(), new Integer(5));
128:
129: assertFalse(sortedIterator.hasNext());
130: }
131:
132: tag.doEndTag();
133: }
134:
135: public void testSortWithIllegalSource() throws Exception {
136: SortIteratorTag tag = new SortIteratorTag();
137:
138: tag.setComparator("comparator");
139: tag.setSource("badSource");
140:
141: try {
142: tag.setPageContext(pageContext);
143: tag.doStartTag();
144: tag.doEndTag();
145: fail("JspException expected");
146: } catch (JspException e) {
147: // ok
148: assertTrue(true);
149: }
150: }
151:
152: public void testSortWithIllegalComparator() throws Exception {
153: SortIteratorTag tag = new SortIteratorTag();
154:
155: tag.setComparator("badComparator");
156: tag.setSource("source");
157:
158: try {
159: tag.setPageContext(pageContext);
160: tag.doStartTag();
161: tag.doEndTag();
162: fail("JspException expected");
163: } catch (JspException e) {
164: // good
165: assertTrue(true);
166: }
167:
168: }
169:
170: public Action getAction() {
171: return new ActionSupport() {
172: public Comparator getComparator() {
173: return new Comparator() {
174: public int compare(Object o1, Object o2) {
175: Integer i1 = (Integer) o1;
176: Integer i2 = (Integer) o2;
177:
178: return (i1.intValue() - i2.intValue());
179: }
180: };
181: }
182:
183: public List getSource() {
184: List l = new ArrayList();
185: l.add(new Integer(3));
186: l.add(new Integer(1));
187: l.add(new Integer(2));
188: l.add(new Integer(5));
189: l.add(new Integer(4));
190: return l;
191: }
192:
193: public Object getBadComparator() {
194: return new Object();
195: }
196:
197: public Object getBadSource() {
198: return new Object();
199: }
200: };
201: }
202: }
|