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