| package org.junit.experimental.theories; |
| |
| import java.util.List; |
| |
| /** |
| * Abstract parent class for suppliers of input data points for theories. Extend this class to customize how {@link |
| * org.junit.experimental.theories.Theories Theories} runner |
| * finds accepted data points. Then use your class together with <b>@ParametersSuppliedBy</b> on input |
| * parameters for theories. |
| * |
| * <p> |
| * For example, here is a supplier for values between two integers, and an annotation that references it: |
| * |
| * <pre> |
| * @Retention(RetentionPolicy.RUNTIME) |
| * <b>@ParametersSuppliedBy</b>(BetweenSupplier.class) |
| * public @interface Between { |
| * int first(); |
| * |
| * int last(); |
| * } |
| * |
| * public static class BetweenSupplier extends <b>ParameterSupplier</b> { |
| * @Override |
| * public List<<b>PotentialAssignment</b>> getValueSources(<b>ParameterSignature</b> sig) { |
| * List<<b>PotentialAssignment</b>> list = new ArrayList<PotentialAssignment>(); |
| * Between annotation = (Between) sig.getSupplierAnnotation(); |
| * |
| * for (int i = annotation.first(); i <= annotation.last(); i++) |
| * list.add(<b>PotentialAssignment</b>.forValue("ints", i)); |
| * return list; |
| * } |
| * } |
| * </pre> |
| * </p> |
| * |
| * @see org.junit.experimental.theories.ParametersSuppliedBy |
| * @see org.junit.experimental.theories.Theories |
| * @see org.junit.experimental.theories.FromDataPoints |
| */ |
| public abstract class ParameterSupplier { |
| public abstract List<PotentialAssignment> getValueSources(ParameterSignature sig) throws Throwable; |
| } |