jmitchell 2004/01/02 22:07:56
Added: src/test/org/apache/struts/taglib/html TestOptionsTag1.java
web/test/test/org/apache/struts/taglib/html
TestOptionsTag1.jsp
Log:
Add 10 new tests that cover "some" of the functionality
provided by html:options. I'll add additional tests for complete
coverage soon.
Revision Changes Path
1.1
jakarta-struts/src/test/org/apache/struts/taglib/html/TestOptionsTag1.java
Index: TestOptionsTag1.java
===================================================================
/*
* $Header:
/home/cvs/jakarta-struts/src/test/org/apache/struts/taglib/html/TestOptionsTag1.java,v
1.1 2004/01/03 06:07:56 jmitchell Exp $
* $Revision: 1.1 $
* $Date: 2004/01/03 06:07:56 $
*
* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Struts", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.struts.taglib.html;
import java.util.Locale;
import javax.servlet.jsp.PageContext;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.apache.cactus.JspTestCase;
import org.apache.struts.Globals;
import org.apache.struts.taglib.SimpleBeanForTesting;
import org.apache.struts.util.LabelValueBean;
/**
* Suite of unit tests for the
* <code>org.apache.struts.taglib.html.OptionsTag</code> class.
*
* @author James Mitchell
*/
public class TestOptionsTag1 extends JspTestCase {
/**
* Defines the testcase name for JUnit.
*
* @param theName the testcase's name.
*/
public TestOptionsTag1(String theName) {
super(theName);
}
/**
* Start the tests.
*
* @param theArgs the arguments. Not used
*/
public static void main(String[] theArgs) {
junit.awtui.TestRunner.main(new String[] {TestOptionsTag1.class.getName()});
}
/**
* @return a test suite (<code>TestSuite</code>) that includes all methods
* starting with "test"
*/
public static Test suite() {
return new TestSuite(TestOptionsTag1.class);
}
private void runTest(String whichTest, String locale) throws Exception {
pageContext.setAttribute(Globals.LOCALE_KEY,
new Locale(locale, locale),
PageContext.SESSION_SCOPE);
pageContext.setAttribute("runTest", whichTest, PageContext.REQUEST_SCOPE);
pageContext.forward("/test/org/apache/struts/taglib/html/TestOptionsTag1.jsp");
}
private LabelValueBean[] createArrayOfLVB(){
LabelValueBean[] labelValueBeans = new LabelValueBean[5];
for (int i = 0; i < 5; i++){
labelValueBeans[i] =
new LabelValueBean("key" + i, "Test Message " + i);
}
return labelValueBeans;
}
private String[] createArrayofStrings(){
String[] stringValues = new String[5];
for (int i = 0; i < 5; i++){
stringValues[i] = "val" + i;
}
return stringValues;
}
public void testOptionsCollectionArrayItemValueInCollectionProperty() throws
Exception {
pageContext.setAttribute("arrayOfLVB", createArrayOfLVB(),
PageContext.REQUEST_SCOPE);
pageContext.setAttribute(Constants.BEAN_KEY,
new SimpleBeanForTesting("key1"), PageContext.REQUEST_SCOPE);
runTest("testOptionsCollectionArrayItemValueInCollectionProperty", "");
}
public void testOptionsCollectionArrayItemValueNotInCollectionProperty() throws
Exception {
pageContext.setAttribute("arrayOfLVB", createArrayOfLVB(),
PageContext.REQUEST_SCOPE);
pageContext.setAttribute(Constants.BEAN_KEY,
new SimpleBeanForTesting("key15"), PageContext.REQUEST_SCOPE);
runTest("testOptionsCollectionArrayItemValueNotInCollectionProperty", "");
}
public void
testOptionsCollectionArrayItemValueInCollectionPropertyLabelProperty() throws
Exception {
pageContext.setAttribute("arrayOfLVB", createArrayOfLVB(),
PageContext.REQUEST_SCOPE);
pageContext.setAttribute(Constants.BEAN_KEY,
new SimpleBeanForTesting("key1"), PageContext.REQUEST_SCOPE);
runTest("testOptionsCollectionArrayItemValueInCollectionPropertyLabelProperty", "");
}
public void
testOptionsCollectionArrayItemValueNotInCollectionPropertyLabelProperty() throws
Exception {
pageContext.setAttribute("arrayOfLVB", createArrayOfLVB(),
PageContext.REQUEST_SCOPE);
pageContext.setAttribute(Constants.BEAN_KEY,
new SimpleBeanForTesting("key15"), PageContext.REQUEST_SCOPE);
runTest("testOptionsCollectionArrayItemValueNotInCollectionPropertyLabelProperty", "");
}
public void testOptionsNameArrayItemValueInCollection() throws Exception {
pageContext.setAttribute("stringValues", createArrayofStrings(),
PageContext.REQUEST_SCOPE);
pageContext.setAttribute(Constants.BEAN_KEY,
new SimpleBeanForTesting("val1"), PageContext.REQUEST_SCOPE);
runTest("testOptionsNameArrayItemValueInCollection", "");
}
public void testOptionsNameArrayItemValueNotInCollection() throws Exception {
pageContext.setAttribute("stringValues", createArrayofStrings(),
PageContext.REQUEST_SCOPE);
pageContext.setAttribute(Constants.BEAN_KEY,
new SimpleBeanForTesting("val15"), PageContext.REQUEST_SCOPE);
runTest("testOptionsNameArrayItemValueNotInCollection", "");
}
public void testOptionsPropertyArrayItemValueInCollection() throws Exception {
SimpleBeanForTesting sbft = new SimpleBeanForTesting("val1");
sbft.setStringArray(createArrayofStrings());
pageContext.setAttribute(Constants.BEAN_KEY,
sbft, PageContext.REQUEST_SCOPE);
runTest("testOptionsPropertyArrayItemValueInCollection", "");
}
public void testOptionsPropertyArrayItemValueNotInCollection() throws Exception {
SimpleBeanForTesting sbft = new SimpleBeanForTesting("val15");
sbft.setStringArray(createArrayofStrings());
pageContext.setAttribute(Constants.BEAN_KEY,
sbft, PageContext.REQUEST_SCOPE);
runTest("testOptionsPropertyArrayItemValueNotInCollection", "");
}
public void testOptionsNamePropertyArrayItemValueInCollection() throws Exception
{
pageContext.setAttribute("stringValues",
new SimpleBeanForTesting(createArrayofStrings()),
PageContext.REQUEST_SCOPE);
pageContext.setAttribute(Constants.BEAN_KEY,
new SimpleBeanForTesting("val1"), PageContext.REQUEST_SCOPE);
runTest("testOptionsNamePropertyArrayItemValueInCollection", "");
}
public void testOptionsNamePropertyArrayItemValueNotInCollection() throws
Exception {
pageContext.setAttribute("stringValues",
new SimpleBeanForTesting(createArrayofStrings()),
PageContext.REQUEST_SCOPE);
pageContext.setAttribute(Constants.BEAN_KEY,
new SimpleBeanForTesting("val15"), PageContext.REQUEST_SCOPE);
runTest("testOptionsNamePropertyArrayItemValueNotInCollection", "");
}
}
1.1
jakarta-struts/web/test/test/org/apache/struts/taglib/html/TestOptionsTag1.jsp
Index: TestOptionsTag1.jsp
===================================================================
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<[EMAIL PROTECTED] import="junit.framework.Assert"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<logic:equal name="runTest"
value="testOptionsCollectionArrayItemValueInCollectionProperty">
<bean:define id="TEST_RESULTS" toScope="page">
<html:select property="string">
<html:options collection="arrayOfLVB" property="label"/>
</html:select>
</bean:define>
<bean:define id="EXPECTED_RESULTS" toScope="page">
<select name="string"><option value="key0">key0</option>
<option value="key1" selected="selected">key1</option>
<option value="key2">key2</option>
<option value="key3">key3</option>
<option value="key4">key4</option></select>
</bean:define>
</logic:equal>
<logic:equal name="runTest"
value="testOptionsCollectionArrayItemValueNotInCollectionProperty">
<bean:define id="TEST_RESULTS" toScope="page">
<html:select property="string">
<html:options collection="arrayOfLVB" property="label"/>
</html:select>
</bean:define>
<bean:define id="EXPECTED_RESULTS" toScope="page">
<select name="string"><option value="key0">key0</option>
<option value="key1">key1</option>
<option value="key2">key2</option>
<option value="key3">key3</option>
<option value="key4">key4</option></select>
</bean:define>
</logic:equal>
<logic:equal name="runTest"
value="testOptionsCollectionArrayItemValueInCollectionPropertyLabelProperty">
<bean:define id="TEST_RESULTS" toScope="page">
<html:select property="string">
<html:options collection="arrayOfLVB" property="label"
labelProperty="value"/>
</html:select>
</bean:define>
<bean:define id="EXPECTED_RESULTS" toScope="page">
<select name="string"><option value="key0">Test Message 0</option>
<option value="key1" selected="selected">Test Message 1</option>
<option value="key2">Test Message 2</option>
<option value="key3">Test Message 3</option>
<option value="key4">Test Message 4</option></select>
</bean:define>
</logic:equal>
<logic:equal name="runTest"
value="testOptionsCollectionArrayItemValueNotInCollectionPropertyLabelProperty">
<bean:define id="TEST_RESULTS" toScope="page">
<html:select property="string">
<html:options collection="arrayOfLVB" property="label"
labelProperty="value"/>
</html:select>
</bean:define>
<bean:define id="EXPECTED_RESULTS" toScope="page">
<select name="string"><option value="key0">Test Message 0</option>
<option value="key1">Test Message 1</option>
<option value="key2">Test Message 2</option>
<option value="key3">Test Message 3</option>
<option value="key4">Test Message 4</option></select>
</bean:define>
</logic:equal>
<logic:equal name="runTest" value="testOptionsNameArrayItemValueInCollection">
<bean:define id="TEST_RESULTS" toScope="page">
<html:select property="string">
<html:options name="stringValues"/>
</html:select>
</bean:define>
<bean:define id="EXPECTED_RESULTS" toScope="page">
<select name="string"><option value="val0">val0</option>
<option value="val1" selected="selected">val1</option>
<option value="val2">val2</option>
<option value="val3">val3</option>
<option value="val4">val4</option></select>
</bean:define>
</logic:equal>
<logic:equal name="runTest" value="testOptionsNameArrayItemValueNotInCollection">
<bean:define id="TEST_RESULTS" toScope="page">
<html:select property="string">
<html:options name="stringValues"/>
</html:select>
</bean:define>
<bean:define id="EXPECTED_RESULTS" toScope="page">
<select name="string"><option value="val0">val0</option>
<option value="val1">val1</option>
<option value="val2">val2</option>
<option value="val3">val3</option>
<option value="val4">val4</option></select>
</bean:define>
</logic:equal>
<logic:equal name="runTest" value="testOptionsPropertyArrayItemValueInCollection">
<bean:define id="TEST_RESULTS" toScope="page">
<html:select property="string">
<html:options property="stringArray"/>
</html:select>
</bean:define>
<bean:define id="EXPECTED_RESULTS" toScope="page">
<select name="string"><option value="val0">val0</option>
<option value="val1" selected="selected">val1</option>
<option value="val2">val2</option>
<option value="val3">val3</option>
<option value="val4">val4</option></select>
</bean:define>
</logic:equal>
<logic:equal name="runTest" value="testOptionsPropertyArrayItemValueNotInCollection">
<bean:define id="TEST_RESULTS" toScope="page">
<html:select property="string">
<html:options property="stringArray"/>
</html:select>
</bean:define>
<bean:define id="EXPECTED_RESULTS" toScope="page">
<select name="string"><option value="val0">val0</option>
<option value="val1">val1</option>
<option value="val2">val2</option>
<option value="val3">val3</option>
<option value="val4">val4</option></select>
</bean:define>
</logic:equal>
<logic:equal name="runTest"
value="testOptionsNamePropertyArrayItemValueInCollection">
<bean:define id="TEST_RESULTS" toScope="page">
<html:select property="string">
<html:options name="stringValues" property="stringArray"/>
</html:select>
</bean:define>
<bean:define id="EXPECTED_RESULTS" toScope="page">
<select name="string"><option value="val0">val0</option>
<option value="val1" selected="selected">val1</option>
<option value="val2">val2</option>
<option value="val3">val3</option>
<option value="val4">val4</option></select>
</bean:define>
</logic:equal>
<logic:equal name="runTest"
value="testOptionsNamePropertyArrayItemValueNotInCollection">
<bean:define id="TEST_RESULTS" toScope="page">
<html:select property="string">
<html:options name="stringValues" property="stringArray"/>
</html:select>
</bean:define>
<bean:define id="EXPECTED_RESULTS" toScope="page">
<select name="string"><option value="val0">val0</option>
<option value="val1">val1</option>
<option value="val2">val2</option>
<option value="val3">val3</option>
<option value="val4">val4</option></select>
</bean:define>
</logic:equal>
* Neither labelName nor labelProperty is specified - The labels will be the same
as the option
values themselves.
* Only labelName is specified - The value of this attribute is the name of a JSP
bean in some
scope that is the collection.
* Only labelProperty is specified - The value of this attribute is the name of a
property of the
ActionForm bean associated with our form, which will return the collection.
* Both labelName and labelProperty are specified - The value of the labelName
attribute identifies
a JSP bean in some scope. The value of the labelProperty attribute is the name
of some property
of that bean which will return the collection.
<%
String expected = "";
String compareTo = "";
if (pageContext.getAttribute("EXPECTED_RESULTS") == null){
throw new javax.servlet.jsp.JspException("No tests on this page were called.
Please verify that you've setup the tests correctly.");
}else{
expected=pageContext.getAttribute("TEST_RESULTS").toString();
}
if (pageContext.getAttribute("TEST_RESULTS") != null){
compareTo=pageContext.getAttribute("EXPECTED_RESULTS").toString();
}
Assert.assertEquals(expected, compareTo);
%>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]