Author: jsong Date: Fri Jan 28 12:30:09 2005 New Revision: 148917 URL: http://svn.apache.org/viewcvs?view=rev&rev=148917 Log: Add test for controls constraint: Annotation.MembershipRules.
Added: incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/property/constraint/BookControl.java incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/property/constraint/BookControlImpl.jcs Modified: incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/property/ConstraintTest.java Added: incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/property/constraint/BookControl.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/property/constraint/BookControl.java?view=auto&rev=148917 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/property/constraint/BookControl.java Fri Jan 28 12:30:09 2005 @@ -0,0 +1,69 @@ +package org.apache.beehive.controls.test.controls.property.constraint; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.apache.beehive.controls.api.bean.AnnotationMemberTypes; +import org.apache.beehive.controls.api.bean.AnnotationConstraints; +import org.apache.beehive.controls.api.bean.ControlInterface; +import org.apache.beehive.controls.api.properties.PropertySet; + +/** + * A control interface for testing Annotation.MembershipRule + */ + [EMAIL PROTECTED] +public interface BookControl +{ + //A PropertySet to test AT_LEAST_ONE + @PropertySet + @Target ({ElementType.FIELD, ElementType.TYPE}) + @Retention(RetentionPolicy.RUNTIME) + @AnnotationConstraints.MembershipRule(AnnotationConstraints.MembershipRuleValues.AT_LEAST_ONE) + public @interface Price + { + @AnnotationMemberTypes.Decimal(minValue="10") + public String us_price(); + @AnnotationMemberTypes.Decimal(minValue="10") + public String ca_price(); + @AnnotationMemberTypes.Decimal(minValue="10") + public String eu_price(); + } + + //A PropertySet to test AT_MOST_ONE + @PropertySet + @Target ({ElementType.FIELD, ElementType.TYPE}) + @Retention(RetentionPolicy.RUNTIME) + @AnnotationConstraints.MembershipRule(AnnotationConstraints.MembershipRuleValues.AT_MOST_ONE) + public @interface Language + { + @AnnotationMemberTypes.Text(maxLength=8) + public String coverlanguage() default "English"; + @AnnotationMemberTypes.Text(maxLength=8) + public String contentlanguage() default "French"; + @AnnotationMemberTypes.Text(maxLength=8) + public String authorlanguage(); + } + + //A PropertySet to test EXACTLY_ONE + @PropertySet + @Target ({ElementType.FIELD, ElementType.TYPE}) + @Retention(RetentionPolicy.RUNTIME) + @AnnotationConstraints.MembershipRule(AnnotationConstraints.MembershipRuleValues.EXACTLY_ONE) + public @interface Intro + { + @AnnotationMemberTypes.Text(maxLength=8) + public String title(); + @AnnotationMemberTypes.Text(maxLength=8) + public String subject(); + @AnnotationMemberTypes.Text(maxLength=8) + public String content(); + } + + //A PropertySet to test ALL_IF_ANY + //Covered by PersonControl.Address + + public String hello(); +} Added: incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/property/constraint/BookControlImpl.jcs Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/property/constraint/BookControlImpl.jcs?view=auto&rev=148917 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/property/constraint/BookControlImpl.jcs Fri Jan 28 12:30:09 2005 @@ -0,0 +1,18 @@ +package org.apache.beehive.controls.test.controls.property.constraint; + +import org.apache.beehive.controls.api.bean.ControlImplementation; +import org.apache.beehive.controls.api.bean.Extensible; +import org.apache.beehive.controls.api.context.ControlBeanContext; +import org.apache.beehive.controls.api.context.Context; + [EMAIL PROTECTED] +public class BookControlImpl implements BookControl +{ + @Context ControlBeanContext ctx; + + public String hello() + { + return "Hello"; + } + +} Modified: incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/property/ConstraintTest.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/property/ConstraintTest.java?view=diff&rev=148917&p1=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/property/ConstraintTest.java&r1=148916&p2=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/property/ConstraintTest.java&r2=148917 ============================================================================== --- incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/property/ConstraintTest.java (original) +++ incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/property/ConstraintTest.java Fri Jan 28 12:30:09 2005 @@ -6,6 +6,8 @@ import junit.framework.TestCase; import org.apache.beehive.controls.api.bean.ControlBean; import org.apache.beehive.controls.test.controls.util.TestBeanContext; +import org.apache.beehive.controls.test.controls.property.constraint.BookControl; +import org.apache.beehive.controls.test.controls.property.constraint.BookControlBean; import org.apache.beehive.controls.test.controls.property.constraint.PersonControl; import org.apache.beehive.controls.test.controls.property.constraint.PersonControlBean; import org.apache.beehive.controls.test.driver.property.DrivePropertyConstraint2; @@ -29,6 +31,66 @@ { return new TestBeanContext(); } + + public void testRule_AT_LEAST_ONE()throws Exception{ + + Report report=new Report(); + BookControlBean book=(BookControlBean)java.beans.Beans.instantiate( + Thread.currentThread().getContextClassLoader() , + "org.apache.beehive.controls.test.controls.property.constraint.BookControlBean"); + + String usprice=book.getUs_price(); + String caprice=book.getCa_price(); + String euprice=book.getEu_price(); + if ((usprice==null)&&(caprice==null)&&(euprice==null)) + fail("Rule AT_LEAST_ONE is not enforced"); + } + + public void testRule_AT_MOST_ONE()throws Exception{ + + Report report=new Report(); + BookControlBean book=(BookControlBean)java.beans.Beans.instantiate( + Thread.currentThread().getContextClassLoader() , + "org.apache.beehive.controls.test.controls.property.constraint.BookControlBean"); + + int count=0; + String coverlanguage=book.getCoverlanguage(); + String contentlanguage=book.getContentlanguage(); + String authorlanguage=book.getAuthorlanguage(); + + if(coverlanguage!=null) + count=count+1; + if(contentlanguage!=null) + count=count+1; + if(authorlanguage!=null) + count=count+1; + + if (count>1) + fail("AT_MOST_ONE is not enforced"); + } + + public void testRule_EXACTLY_ONE()throws Exception{ + + Report report=new Report(); + BookControlBean book=(BookControlBean)java.beans.Beans.instantiate( + Thread.currentThread().getContextClassLoader() , + "org.apache.beehive.controls.test.controls.property.constraint.BookControlBean"); + + int count=0; + String coverlanguage=book.getCoverlanguage(); + String contentlanguage=book.getContentlanguage(); + String authorlanguage=book.getAuthorlanguage(); + + if(coverlanguage!=null) + count=count+1; + if(contentlanguage!=null) + count=count+1; + if(authorlanguage!=null) + count=count+1; + + if (!(count==1)) + fail("EXACTLY_ONE is not enforced"); + } public void testRule_ALL_IF_ANY()throws Exception{
