carbidecpp20devenv/plugins/org.eclipse.test.source_3.3.0.v20080507/src/org.junit4_4.3.1/junitsrc/org/junit/internal/requests/ErrorReportingRequest.java
author cawthron
Wed, 18 Mar 2009 17:21:00 -0500
changeset 1 82d1d1de1a01
permissions -rw-r--r--
import Carbide.c++
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     1
package org.junit.internal.requests;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     2
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     3
import java.lang.reflect.InvocationTargetException;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     4
import java.util.Arrays;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     5
import java.util.List;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     6
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     7
import org.junit.internal.runners.CompositeRunner;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     8
import org.junit.internal.runners.ErrorReportingRunner;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     9
import org.junit.internal.runners.InitializationError;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    10
import org.junit.runner.Description;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    11
import org.junit.runner.Request;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    12
import org.junit.runner.Runner;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    13
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    14
public class ErrorReportingRequest extends Request {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    15
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    16
	private final Class<?> fClass;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    17
	private final Throwable fCause;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    18
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    19
	public ErrorReportingRequest(Class<?> klass, Throwable cause) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    20
		fClass= klass;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    21
		fCause= cause;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    22
	}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    23
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    24
	@Override
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    25
	public Runner getRunner() {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    26
		List<Throwable> goofs= getCauses(fCause);
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    27
		CompositeRunner runner= new CompositeRunner(fClass.getName());
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    28
		for (int i= 0; i < goofs.size(); i++) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    29
			final Description description= Description.createTestDescription(fClass, "initializationError" + i);
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    30
			final Throwable throwable= goofs.get(i);
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    31
			runner.add(new ErrorReportingRunner(description, throwable));
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    32
		}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    33
		return runner;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    34
	}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    35
	
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    36
	private List<Throwable> getCauses(Throwable cause) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    37
		if (cause instanceof InvocationTargetException)
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    38
			return getCauses(cause.getCause());
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    39
		if (cause instanceof InitializationError)
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    40
			return ((InitializationError) cause).getCauses();
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    41
		return Arrays.asList(cause);	
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    42
	}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    43
}