package net.dossot.jbound.api;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import net.dossot.jbound.exercise.Builder;
/**
* @author David Dossot (david@dossot.net)
*/
public class Exercises
{
private final List<Builder> exercisesBuilders;
public Exercises()
{
exercisesBuilders = new ArrayList<Builder>();
}
public void run(final Map<Class<?>, Object[]> customTestData)
{
for (final Builder exercisesBuilder : exercisesBuilders)
{
exercisesBuilder.run(customTestData);
}
}
protected Restriction forClass(final Class<?> exercisedClass)
{
if (exercisedClass == null)
{
throw new NullPointerException("exercisedClass can not be null");
}
return forClasses(exercisedClass);
}
protected Restriction forClasses(final Class<?> exercisedClass, final Class<?>... otherExercisedClasses)
{
if (exercisedClass == null)
{
throw new NullPointerException("exercisedClass can not be null");
}
if (otherExercisedClasses == null)
{
throw new NullPointerException("otherExercisedClasses can not be null");
}
final List<Class<?>> exercisedClasses = new ArrayList<Class<?>>();
exercisedClasses.add(exercisedClass);
exercisedClasses.addAll(Arrays.asList(otherExercisedClasses));
final Builder builder = new Builder(exercisedClasses);
exercisesBuilders.add(builder);
return builder;
}
}