Author: jsong Date: Tue Jan 25 12:40:49 2005 New Revision: 126421 URL: http://svn.apache.org/viewcvs?view=rev&rev=126421 Log: Add tests for controls packaging.
Added: incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/packaging/DrivePropertyInfo.java incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/packaging/PropertyInfoTest.java Added: incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/packaging/DrivePropertyInfo.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/packaging/DrivePropertyInfo.java?view=auto&rev=126421 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/packaging/DrivePropertyInfo.java Tue Jan 25 12:40:49 2005 @@ -0,0 +1,144 @@ +package org.apache.beehive.controls.test.driver.packaging; + +import java.lang.Class; +import java.beans.BeanInfo; +import java.beans.Introspector; +import java.beans.PropertyDescriptor; +import java.lang.reflect.Method; +import org.apache.beehive.controls.test.controls.property.BoundPropertyControlBean; +import org.apache.beehive.test.tools.milton.common.Report; + +/* This class contains the logic to test PropertyInfo annotation of control packaging. + * + * PropertyInfo annotations on control interface shall be written into control beaninfo + * class during control packaging process. + * The tests in this class will get feature info from control beaninfo class in + * order to make sure this part of packaging process works fine. + */ + +public class DrivePropertyInfo +{ + + /*Gets class level feature info from BoundPropertyBeanBeanInfo class*/ + public Report doGetPropertyInfo(){ + + Report report=new Report(); + report.setStatus(Report.PASS); + + try{ + BeanInfo beanInfo=Introspector.getBeanInfo(Class.forName( + "org.apache.beehive.controls.test.controls.property.BoundPropertyControlBean")); + PropertyDescriptor[] descriptors=beanInfo.getPropertyDescriptors(); + + //Find and inspect property descriptor for each property. + PropertyDescriptor descriptor=findProperty(descriptors,"Brand"); + + if (descriptor==null){ + report.setStatus(Report.FAIL); + report.setMessage("Could not find property descriptor for 'Brand'."); + } + else{ + if (!descriptor.isBound()){ + report.setStatus(Report.FAIL); + report.setMessage("'Brand' is not bound."); + } + else if (descriptor.isConstrained()){ + report.setStatus(Report.FAIL); + report.setMessage("'Brand' is constrained."); + } + + } + + if (report.getStatus().equals(Report.PASS)){ + descriptor=findProperty(descriptors,"Material"); + if (descriptor==null){ + report.setStatus(Report.FAIL); + report.setMessage("Could not find property descriptor for 'Material'."); + } + else{ + if (descriptor.isBound()){ + report.setStatus(Report.FAIL); + report.setMessage("'Material' is bound."); + } + else if (!descriptor.isConstrained()){ + report.setStatus(Report.FAIL); + report.setMessage("'Material' is not constrained."); + } + } + } + + if (report.getStatus().equals(Report.PASS)){ + descriptor=findProperty(descriptors,"Quality"); + if (descriptor==null){ + report.setStatus(Report.FAIL); + report.setMessage("Could not find property descriptor for 'Quality'."); + } + else{ + if (!descriptor.isBound()){ + report.setStatus(Report.FAIL); + report.setMessage("'Quality' is not bound."); + } + else if (!descriptor.isConstrained()){ + report.setStatus(Report.FAIL); + report.setMessage("'Quality' is not constrained."); + } + } + + } + + if (report.getStatus().equals(Report.PASS)){ + descriptor=findProperty(descriptors,"age"); + if (descriptor==null){ + report.setStatus(Report.FAIL); + report.setMessage("Could not find property descriptor for 'age'."); + } + else{ + if (!descriptor.isBound()){ + report.setStatus(Report.FAIL); + report.setMessage("'age' is not bound."); + } + else if (descriptor.isConstrained()){ + report.setStatus(Report.FAIL); + report.setMessage("'age' is constrained."); + } + } + } + if (report.getStatus().equals(Report.PASS)){ + descriptor=findProperty(descriptors,"height"); + if (descriptor==null){ + report.setStatus(Report.FAIL); + report.setMessage("Could not find property descriptor for 'height'."); + } + else{ + if (descriptor.isBound()){ + report.setStatus(Report.FAIL); + report.setMessage("'hight' is bound."); + } + else if (!descriptor.isConstrained()){ + report.setStatus(Report.FAIL); + report.setMessage("'hight' is not constrained."); + } + } + } + + } + catch(Exception e){ + report.setStatus(Report.FAIL); + report.setExceptionStack(e); + } + + return report; + + } + private PropertyDescriptor findProperty(PropertyDescriptor[] array,String propertyname){ + + PropertyDescriptor result=null; + for(int i=0;i<array.length;i++){ + result=array[i]; + if (result.getName().equals(propertyname)) + break; + } + return result; + } + +} Added: incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/packaging/PropertyInfoTest.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/packaging/PropertyInfoTest.java?view=auto&rev=126421 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/packaging/PropertyInfoTest.java Tue Jan 25 12:40:49 2005 @@ -0,0 +1,40 @@ +package org.apache.beehive.controls.test.java.packaging; + +import junit.framework.TestCase; +import org.apache.beehive.controls.test.driver.packaging.DrivePropertyInfo; +import org.apache.beehive.test.tools.milton.common.Report; +import org.apache.beehive.test.tools.mantis.annotations.tch.Freq; + + +/** + * A TestCase that tests controls PropertyInfo + * + * PropertyInfo annotation on control interface is saved into controlBeanInfo class + * when the control is packaged. + * + * The tests in this class get property info from controlBeanInfo class after the + * control is packaged into jar, in order to verify this part of control packaging + * process. + */ [EMAIL PROTECTED]("detailed") +public class PropertyInfoTest extends TestCase +{ + public PropertyInfoTest( String s ) { super( s ); } + + public void setUp() { } + + /*Test getting FeatureInfo from ControlBeanInfo class*/ + @Freq("detailed") + public void testGetPropertyInfo() throws Exception + { + DrivePropertyInfo driver=new DrivePropertyInfo(); + + Report report=driver.doGetPropertyInfo(); + + String result=report.getStatus(); + + if (result.equals(Report.FAIL)) + fail(report.getMessage()); + + } +}
