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]