struts-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jmitch...@apache.org
Subject cvs commit: jakarta-struts/web/test/test/org/apache/struts/taglib/html TestOptionsTag1.jsp
Date Sat, 03 Jan 2004 06:07:56 GMT
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 apache@apache.org.
   *
   * 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" %>
  <%@page 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: struts-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-dev-help@jakarta.apache.org


Mime
View raw message