Author: niallp
Date: Sun Nov 27 12:48:24 2005
New Revision: 349307

URL: http://svn.apache.org/viewcvs?rev=349307&view=rev
Log:
Add PropertyDescriptor's test to CGLib enhance DynaActionForm test

Modified:
    
struts/action/trunk/src/test/org/apache/struts/action/TestCGLibDynaActionForm.java

Modified: 
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=349307&r1=349306&r2=349307&view=diff
==============================================================================
--- 
struts/action/trunk/src/test/org/apache/struts/action/TestCGLibDynaActionForm.java
 (original)
+++ 
struts/action/trunk/src/test/org/apache/struts/action/TestCGLibDynaActionForm.java
 Sun Nov 27 12:48:24 2005
@@ -17,8 +17,14 @@
  */
 package org.apache.struts.action;
 
+import java.util.List;
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationTargetException;
+import java.beans.BeanInfo;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.beans.IndexedPropertyDescriptor;
+import org.apache.commons.beanutils.DynaProperty;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
@@ -85,6 +91,51 @@
 
 
     /**
+     * Check Property Descriptors
+     */
+    public void testDesciptors() {
+
+        // Introspect the bean and find property descriptors
+        try {
+            BeanInfo beanInfo = Introspector.getBeanInfo(dynaForm.getClass());
+            PropertyDescriptor[] descriptors =  
beanInfo.getPropertyDescriptors();
+            DynaProperty[] dynaProperties = dynaClass.getDynaProperties();
+            for (int i = 0; i < dynaProperties.length; i++) {
+                DynaProperty dynaProperty = dynaProperties[i];
+                PropertyDescriptor descriptor = null;
+                for (int j = 0; j < descriptors.length; j++) {
+                    if 
(dynaProperty.getName().equals(descriptors[j].getName())) {
+                        descriptor = descriptors[j];
+                        break;
+                    }
+                }
+                if (descriptor == null) {
+                    fail(i+" Descriptor not found: " + dynaProperty.getName());
+                } else {
+                    boolean indexedDescriptor = (descriptor instanceof 
IndexedPropertyDescriptor);
+                    if (!(dynaProperty.getType() == 
descriptor.getPropertyType())) {
+                        // ignore java.util.List - not proper indexed 
properties
+                        if 
(!(List.class.isAssignableFrom(dynaProperty.getType()))) {
+                            fail(i+" Descriptor type error: " + 
dynaProperty.getName() +
+                                 " dyna=" + dynaProperty.getType() +
+                                 " regular=" + descriptor.getPropertyType());
+                        }
+                    }
+                    if (!(dynaProperty.isIndexed() == indexedDescriptor)) {
+                        fail(i+" Descriptor index error: " + 
dynaProperty.getName() +
+                             " dyna=" + dynaProperty.isIndexed() +
+                             " regular=" + indexedDescriptor);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            fail("Exception thrown " + e);
+        }
+
+    }
+
+
+    /**
      * Test simple read property
      */
     public void testSimpleRead() {
@@ -128,7 +179,6 @@
             fail("Exception thrown " + e);
         }
     }
-
     /**
      * Test simple write property
      */



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to