package net.dossot.jbound.exercise;
import static java.util.Arrays.asList;
import java.util.Arrays;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import net.dossot.jbound.api.EXERCISE;
import net.dossot.jbound.api.Restriction;
/**
* @author David Dossot (david@dossot.net)
*/
public final class Builder implements Restriction
{
private final List<Class<?>> exercisedClasses;
private final Set<EXERCISE> skipped;
private final Set<String> accepted;
public Builder(final List<Class<?>> exercisedClasses)
{
this.exercisedClasses = exercisedClasses;
skipped = EnumSet.noneOf(EXERCISE.class);
accepted = new HashSet<String>();
}
public Restriction skipping(final EXERCISE... exercises)
{
if (exercises == null)
{
throw new NullPointerException("Null is not valid for exercises");
}
skipped.addAll(Arrays.asList(exercises));
return this;
}
public void run(final Map<Class<?>, Object[]> customTestData)
{
new Runner(exercisedClasses, skipped, accepted, customTestData).run();
}
public Restriction acceptingGenericExceptionsFrom(final String... accessibleSignatures)
{
if (accessibleSignatures == null)
{
throw new NullPointerException("Null is not valid for accessibleSignatures");
}
// we merge all the signatures into one set because it is not necessary
// to scope them to a particular class or set of classes
accepted.addAll(asList(accessibleSignatures));
return null;
}
}