Home | History | Annotate | Download | only in builders
      1 /**
      2  *
      3  */
      4 package org.junit.internal.builders;
      5 
      6 import java.util.Arrays;
      7 import java.util.List;
      8 
      9 import org.junit.runner.Runner;
     10 import org.junit.runners.model.RunnerBuilder;
     11 
     12 public class AllDefaultPossibilitiesBuilder extends RunnerBuilder {
     13 	private final boolean fCanUseSuiteMethod;
     14 
     15 	public AllDefaultPossibilitiesBuilder(boolean canUseSuiteMethod) {
     16 		fCanUseSuiteMethod= canUseSuiteMethod;
     17 	}
     18 
     19 	@Override
     20 	public Runner runnerForClass(Class<?> testClass) throws Throwable {
     21 		List<RunnerBuilder> builders= Arrays.asList(
     22 				ignoredBuilder(),
     23 				annotatedBuilder(),
     24 				suiteMethodBuilder(),
     25 				junit3Builder(),
     26 				junit4Builder());
     27 
     28 		for (RunnerBuilder each : builders) {
     29 			Runner runner= each.safeRunnerForClass(testClass);
     30 			if (runner != null)
     31 				return runner;
     32 		}
     33 		return null;
     34 	}
     35 
     36 	protected JUnit4Builder junit4Builder() {
     37 		return new JUnit4Builder();
     38 	}
     39 
     40 	protected JUnit3Builder junit3Builder() {
     41 		return new JUnit3Builder();
     42 	}
     43 
     44 	protected AnnotatedBuilder annotatedBuilder() {
     45 		return new AnnotatedBuilder(this);
     46 	}
     47 
     48 	protected IgnoredBuilder ignoredBuilder() {
     49 		return new IgnoredBuilder();
     50 	}
     51 
     52 	protected RunnerBuilder suiteMethodBuilder() {
     53 		if (fCanUseSuiteMethod)
     54 			return new SuiteMethodBuilder();
     55 		return new NullBuilder();
     56 	}
     57 }