Package com.dhemery.runtimesuite

Source Code of com.dhemery.runtimesuite.RuntimeSuite

package com.dhemery.runtimesuite;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.junit.runner.Description;
import org.junit.runner.Runner;
import org.junit.runner.notification.RunNotifier;
import org.junit.runners.ParentRunner;
import org.junit.runners.model.InitializationError;

import com.dhemery.runtimesuite.internal.SuiteInspector;
import com.dhemery.runtimesuite.internal.RunnableClass;

public class RuntimeSuite extends ParentRunner<Runner> {
  private final List<Runner> runners;
  private final SuiteInspector inspector;
  private final List<ClassFinder> classFinders;
  private final List<ClassFilter> classFilters;
  private final List<MethodFilter> methodFilters;

  public RuntimeSuite(Class<?> suiteClass) throws InitializationError {
    super(suiteClass);
    inspector = new SuiteInspector(suiteClass);
    classFinders = inspector.classFinders();
    classFilters = inspector.classFilters();
    methodFilters = inspector.methodFilters();
    runners = runnersFor(classesInSuite());
  }

  private Set<Class<?>> classesInSuite() throws InitializationError {
    Set<Class<?>> classes = new HashSet<Class<?>>();
    for(ClassFinder finder : classFinders) {
      classes.addAll(finder.find());
    }
    return classes;
  }

  protected Description describeChild(Runner child) {
    return child.getDescription();
  }

  protected List<Runner> getChildren() { 
    return getRunners();
  }

  public List<Runner> getRunners() {
    return runners;
  }

  protected void runChild(Runner child, RunNotifier notifier) {
    child.run(notifier);
  }

  private List<Runner> runnersFor(Collection<Class<?>> classes) throws InitializationError {
    List<Runner> runners = new ArrayList<Runner>();
    for(Class<?> c : classes) {
      RunnableClass runnable = new RunnableClass(c, classFilters, methodFilters);
      if(runnable.isRunnable()) {
        runners.add(runnable.runner());
      }
    }
    return runners;
  }
}
TOP

Related Classes of com.dhemery.runtimesuite.RuntimeSuite

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.