001: /*
002: * $Id: MergeIteratorTagTest.java 471756 2006-11-06 15:01:43Z husted $
003: *
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021: package org.apache.struts2.views.jsp;
022:
023: import java.util.ArrayList;
024: import java.util.Iterator;
025: import java.util.List;
026:
027: import org.apache.struts2.views.jsp.iterator.MergeIteratorTag;
028:
029: import com.opensymphony.xwork2.Action;
030: import com.opensymphony.xwork2.ActionSupport;
031:
032: /**
033: * Test case for MergeIteratorTag.
034: *
035: */
036: public class MergeIteratorTagTest extends AbstractTagTest {
037:
038: public void testMergingIteratorWithArrayAsSource() throws Exception {
039: MergeIteratorTag tag = new MergeIteratorTag();
040: tag.setPageContext(pageContext);
041: tag.setId("myMergedIterator");
042:
043: ParamTag iterator1ParamTag = new ParamTag();
044: iterator1ParamTag.setPageContext(pageContext);
045: iterator1ParamTag.setValue("myArr1");
046:
047: ParamTag iterator2ParamTag = new ParamTag();
048: iterator2ParamTag.setPageContext(pageContext);
049: iterator2ParamTag.setValue("myArr2");
050:
051: ParamTag iterator3ParamTag = new ParamTag();
052: iterator3ParamTag.setPageContext(pageContext);
053: iterator3ParamTag.setValue("myArr3");
054:
055: tag.doStartTag();
056: iterator1ParamTag.doStartTag();
057: iterator1ParamTag.doEndTag();
058: iterator2ParamTag.doStartTag();
059: iterator2ParamTag.doEndTag();
060: iterator3ParamTag.doStartTag();
061: iterator3ParamTag.doEndTag();
062: tag.doEndTag();
063:
064: Iterator mergedIterator = (Iterator) stack
065: .findValue("#myMergedIterator"); // if not iterator, let CCE surface
066:
067: assertNotNull(mergedIterator);
068: assertTrue(mergedIterator.hasNext());
069: assertEquals(mergedIterator.next(), "1");
070: assertTrue(mergedIterator.hasNext());
071: assertEquals(mergedIterator.next(), "a");
072: assertTrue(mergedIterator.hasNext());
073: assertEquals(mergedIterator.next(), "A");
074: assertTrue(mergedIterator.hasNext());
075: assertEquals(mergedIterator.next(), "2");
076: assertTrue(mergedIterator.hasNext());
077: assertEquals(mergedIterator.next(), "b");
078: assertTrue(mergedIterator.hasNext());
079: assertEquals(mergedIterator.next(), "B");
080: assertTrue(mergedIterator.hasNext());
081: assertEquals(mergedIterator.next(), "3");
082: assertTrue(mergedIterator.hasNext());
083: assertEquals(mergedIterator.next(), "c");
084: assertTrue(mergedIterator.hasNext());
085: assertEquals(mergedIterator.next(), "C");
086: assertFalse(mergedIterator.hasNext());
087: }
088:
089: public void testMergingIteratorsWithListAsSource() throws Exception {
090: MergeIteratorTag tag = new MergeIteratorTag();
091: tag.setPageContext(pageContext);
092: tag.setId("myMergedIterator");
093:
094: ParamTag iterator1ParamTag = new ParamTag();
095: iterator1ParamTag.setPageContext(pageContext);
096: iterator1ParamTag.setValue("myList1");
097:
098: ParamTag iterator2ParamTag = new ParamTag();
099: iterator2ParamTag.setPageContext(pageContext);
100: iterator2ParamTag.setValue("myList2");
101:
102: ParamTag iterator3ParamTag = new ParamTag();
103: iterator3ParamTag.setPageContext(pageContext);
104: iterator3ParamTag.setValue("myList3");
105:
106: tag.doStartTag();
107: iterator1ParamTag.doStartTag();
108: iterator1ParamTag.doEndTag();
109: iterator2ParamTag.doStartTag();
110: iterator2ParamTag.doEndTag();
111: iterator3ParamTag.doStartTag();
112: iterator3ParamTag.doEndTag();
113: tag.doEndTag();
114:
115: Iterator mergedIterator = (Iterator) stack
116: .findValue("#myMergedIterator"); // if not iterator, let CCE surface
117:
118: assertNotNull(mergedIterator);
119: assertTrue(mergedIterator.hasNext());
120: assertEquals(mergedIterator.next(), "1");
121: assertTrue(mergedIterator.hasNext());
122: assertEquals(mergedIterator.next(), "a");
123: assertTrue(mergedIterator.hasNext());
124: assertEquals(mergedIterator.next(), "A");
125: assertTrue(mergedIterator.hasNext());
126: assertEquals(mergedIterator.next(), "2");
127: assertTrue(mergedIterator.hasNext());
128: assertEquals(mergedIterator.next(), "b");
129: assertTrue(mergedIterator.hasNext());
130: assertEquals(mergedIterator.next(), "B");
131: assertTrue(mergedIterator.hasNext());
132: assertEquals(mergedIterator.next(), "3");
133: assertTrue(mergedIterator.hasNext());
134: assertEquals(mergedIterator.next(), "c");
135: assertTrue(mergedIterator.hasNext());
136: assertEquals(mergedIterator.next(), "C");
137: assertFalse(mergedIterator.hasNext());
138: }
139:
140: public Action getAction() {
141: return new ActionSupport() {
142: public List getMyList1() {
143: List l = new ArrayList();
144: l.add("1");
145: l.add("2");
146: l.add("3");
147: return l;
148: }
149:
150: public List getMyList2() {
151: List l = new ArrayList();
152: l.add("a");
153: l.add("b");
154: l.add("c");
155: return l;
156: }
157:
158: public List getMyList3() {
159: List l = new ArrayList();
160: l.add("A");
161: l.add("B");
162: l.add("C");
163: return l;
164: }
165:
166: public String[] getMyArr1() {
167: return new String[] { "1", "2", "3" };
168: }
169:
170: public String[] getMyArr2() {
171: return new String[] { "a", "b", "c" };
172: }
173:
174: public String[] getMyArr3() {
175: return new String[] { "A", "B", "C" };
176: }
177: };
178: }
179: }
|