001package org.junit.experimental.theories.internal;
002
003import java.util.ArrayList;
004import java.util.List;
005
006import org.junit.experimental.theories.ParameterSignature;
007import org.junit.experimental.theories.ParameterSupplier;
008import org.junit.experimental.theories.PotentialAssignment;
009
010public class EnumSupplier extends ParameterSupplier {
011
012    private Class<?> enumType;
013
014    public EnumSupplier(Class<?> enumType) {
015        this.enumType = enumType;
016    }
017
018    @Override
019    public List<PotentialAssignment> getValueSources(ParameterSignature sig) {
020        Object[] enumValues = enumType.getEnumConstants();
021        
022        List<PotentialAssignment> assignments = new ArrayList<PotentialAssignment>();
023        for (Object value : enumValues) {
024            assignments.add(PotentialAssignment.forValue(value.toString(), value));
025        }
026        
027        return assignments;
028    }
029
030}