001    package fj.test.reflect;
002    
003    import java.lang.annotation.Documented;
004    import java.lang.annotation.ElementType;
005    import java.lang.annotation.Inherited;
006    import java.lang.annotation.Retention;
007    import java.lang.annotation.RetentionPolicy;
008    import java.lang.annotation.Target;
009    
010    /**
011     * Specifies the check parameters on a {@link fj.test.Property} property with typical defaults.
012     *
013     * @version %build.number%<br>
014     *          <ul>
015     *          <li>$LastChangedRevision: 5 $</li>
016     *          <li>$LastChangedDate: 2008-12-06 16:49:43 +1000 (Sat, 06 Dec 2008) $</li>
017     *          <li>$LastChangedBy: tonymorris $</li>
018     *          </ul>
019     */
020    @Documented
021    @Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
022    @Retention(RetentionPolicy.RUNTIME)
023    @Inherited
024    public @interface CheckParams {
025      /**
026       * The minimum number of successful tests before a result is reached.
027       *
028       * @return The minimum number of successful tests before a result is reached.
029       */
030      int minSuccessful() default 100;
031    
032      /**
033       * The maximum number of tests discarded because they did not satisfy pre-conditions
034       * (i.e. {@link fj.test.Property#implies(boolean, fj.P1)}).
035       *
036       * @return The maximum number of tests discarded because they did not satisfy pre-conditions
037       * (i.e. {@link fj.test.Property#implies(boolean, fj.P1)}).
038       */
039      int maxDiscarded() default 500;
040    
041      /**
042       * The minimum size to use for checking.
043       *
044       * @return The minimum size to use for checking.
045       */
046      int minSize() default 0;
047    
048      /**
049       * The maximum size to use for checking.
050       *
051       * @return The maximum size to use for checking.
052       */
053      int maxSize() default 100;
054    }