You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by ni...@apache.org on 2005/11/27 20:28:46 UTC
svn commit: r349285 - in
/struts/action/trunk/src/test/org/apache/struts/action:
TestCGLibDynaActionForm.java TestDynaActionFormClass.java
Author: niallp
Date: Sun Nov 27 11:28:37 2005
New Revision: 349285
URL: http://svn.apache.org/viewcvs?rev=349285&view=rev
Log:
Add JUnit test for CGLib enhanced DynaActionForm
Added:
struts/action/trunk/src/test/org/apache/struts/action/TestCGLibDynaActionForm.java (with props)
Modified:
struts/action/trunk/src/test/org/apache/struts/action/TestDynaActionFormClass.java
Added: struts/action/trunk/src/test/org/apache/struts/action/TestCGLibDynaActionForm.java
URL: http://svn.apache.org/viewcvs/struts/action/trunk/src/test/org/apache/struts/action/TestCGLibDynaActionForm.java?rev=349285&view=auto
==============================================================================
--- struts/action/trunk/src/test/org/apache/struts/action/TestCGLibDynaActionForm.java (added)
+++ struts/action/trunk/src/test/org/apache/struts/action/TestCGLibDynaActionForm.java Sun Nov 27 11:28:37 2005
@@ -0,0 +1,245 @@
+/*
+ * $Id$
+ *
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.struts.action;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Suite of unit tests for the
+ * <code>org.apache.struts.action.DynaActionForm</code> class.
+ */
+public class TestCGLibDynaActionForm extends TestDynaActionForm {
+
+
+ /**
+ * Defines the testcase name for JUnit.
+ *
+ * @param theName the testcase's name.
+ */
+ public TestCGLibDynaActionForm(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[] {TestCGLibDynaActionForm.class.getName()});
+ }
+
+
+ /**
+ * @return a test suite (<code>TestSuite</code>) that includes all methods
+ * starting with "test"
+ */
+ public static Test suite()
+ {
+ // All methods starting with "test" will be executed in the test suite.
+ return new TestSuite(TestCGLibDynaActionForm.class);
+ }
+
+
+ // ----------------------------------------------------- Setup and Teardown
+
+
+ public void setUp() {
+ enhanced = true;
+
+ super.setUp();
+
+ }
+
+
+ public void tearDown() {
+
+ super.tearDown();
+ }
+
+
+ // --------------------------------------------- Create New DynaActionForms
+
+
+ /**
+ * Test simple read property
+ */
+ public void testSimpleRead() {
+
+ String property = "floatProperty";
+ String methodName = getMethodName(property, true);
+ Class[] types = null;
+ Object[] args = null;
+
+
+ Object expected = dynaForm.get(property);
+ try {
+ Method method = dynaForm.getClass().getMethod(methodName, types);
+ Object result = method.invoke(dynaForm, args);
+ assertEquals(expected, result);
+ } catch(InvocationTargetException e) {
+ fail("InvocationTargetException thrown " + e.getCause());
+ } catch(Exception e) {
+ fail("Exception thrown " + e);
+ }
+ }
+
+ /**
+ * Test simple write property
+ */
+ public void testSimpleWrite() {
+
+ String property = "floatProperty";
+ String methodName = getMethodName(property, false);
+ Object expected = new Float("5.4321");
+ Class[] types = new Class[]{Float.TYPE};
+ Object[] args = new Object[] {expected};
+
+ try {
+ Method method = dynaForm.getClass().getMethod(methodName, types);
+ method.invoke(dynaForm, args);
+ assertEquals(expected, dynaForm.get(property));
+ } catch(InvocationTargetException e) {
+ fail("InvocationTargetException thrown " + e.getCause());
+ } catch(Exception e) {
+ fail("Exception thrown " + e);
+ }
+ }
+
+ /**
+ * Test simple write property
+ */
+ public void testIndexedRead() {
+
+ String property = "stringArray";
+ String methodName = getMethodName(property, true);
+ Integer idx = new Integer(1);
+ Class[] types = new Class[] {Integer.TYPE};
+ Object[] args = new Object[] {idx};
+
+ Object expected = dynaForm.get(property, idx.intValue());
+
+ try {
+ Method method = dynaForm.getClass().getMethod(methodName, types);
+ Object result = method.invoke(dynaForm, args);
+ assertEquals(expected, result);
+ } catch(InvocationTargetException e) {
+ fail("InvocationTargetException thrown " + e.getCause());
+ } catch(Exception e) {
+ fail("Exception thrown " + e);
+ }
+
+
+ }
+
+ /**
+ * Test indexed write property
+ */
+ public void testIndexedWrite() {
+
+ String property = "stringArray";
+ String methodName = getMethodName(property, false);
+ Integer idx = new Integer(1);
+ Object expected = "some new value";
+ Class[] types = new Class[] {Integer.TYPE, String.class};
+ Object[] args = new Object[] {idx, expected};
+
+ try {
+ Method method = dynaForm.getClass().getMethod(methodName, types);
+ method.invoke(dynaForm, args);
+ assertEquals(expected, dynaForm.get(property, idx.intValue()));
+ } catch(InvocationTargetException e) {
+ fail("InvocationTargetException thrown " + e.getCause());
+ } catch(Exception e) {
+ fail("Exception thrown " + e);
+ }
+
+
+ }
+
+ /**
+ * Test simple write property
+ */
+ public void testIndexedReadInt() {
+
+ String property = "intIndexed";
+ String methodName = getMethodName(property, true);
+ Integer idx = new Integer(1);
+ Class[] types = new Class[] {Integer.TYPE};
+ Object[] args = new Object[] {idx};
+
+ Object expected = dynaForm.get(property, idx.intValue());
+
+ try {
+ Method method = dynaForm.getClass().getMethod(methodName, types);
+ Object result = method.invoke(dynaForm, args);
+ assertEquals(expected, result);
+ } catch(InvocationTargetException e) {
+ fail("InvocationTargetException thrown " + e.getCause());
+ } catch(Exception e) {
+ fail("Exception thrown " + e);
+ }
+
+
+ }
+
+ /**
+ * Test indexed write property
+ */
+ public void testIndexedWriteInt() {
+
+ String property = "intIndexed";
+ String methodName = getMethodName(property, false);
+ Integer idx = new Integer(1);
+ Object expected = new Integer(54321);
+ Class[] types = new Class[] {Integer.TYPE, Integer.TYPE};
+ Object[] args = new Object[] {idx, expected};
+
+ try {
+ Method method = dynaForm.getClass().getMethod(methodName, types);
+ method.invoke(dynaForm, args);
+ assertEquals(expected, dynaForm.get(property, idx.intValue()));
+ } catch(InvocationTargetException e) {
+ fail("InvocationTargetException thrown " + e.getCause());
+ } catch(Exception e) {
+ fail("Exception thrown " + e);
+ }
+
+ }
+
+ private String getMethodName(String property, boolean getter) {
+ String methodName = (getter ? "get" : "set") +
+ property.substring(0, 1).toUpperCase() +
+ property.substring(1);
+ return methodName;
+ }
+
+
+
+
+}
+
+
Propchange: struts/action/trunk/src/test/org/apache/struts/action/TestCGLibDynaActionForm.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/action/trunk/src/test/org/apache/struts/action/TestCGLibDynaActionForm.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: struts/action/trunk/src/test/org/apache/struts/action/TestDynaActionFormClass.java
URL: http://svn.apache.org/viewcvs/struts/action/trunk/src/test/org/apache/struts/action/TestDynaActionFormClass.java?rev=349285&r1=349284&r2=349285&view=diff
==============================================================================
--- struts/action/trunk/src/test/org/apache/struts/action/TestDynaActionFormClass.java (original)
+++ struts/action/trunk/src/test/org/apache/struts/action/TestDynaActionFormClass.java Sun Nov 27 11:28:37 2005
@@ -1,7 +1,7 @@
/*
* $Id$
*
- * Copyright 1999-2004 The Apache Software Foundation.
+ * Copyright 1999-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -79,6 +79,10 @@
*/
protected DynaActionFormClass dynaClass = null;
+ /**
+ * Whether an "Enhanced" DynaActionForm is created.
+ */
+ protected boolean enhanced = false;
/**
* The set of <code>FormPropertyConfig</code> objects to use when
@@ -118,6 +122,7 @@
beanConfig = new FormBeanConfig();
beanConfig.setName("dynaForm");
beanConfig.setType("org.apache.struts.action.DynaActionForm");
+ beanConfig.setEnhanced(enhanced);
// Add relevant property definitions
for (int i = 0; i < dynaProperties.length; i++) {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org