carbidecpp20devenv/plugins/org.eclipse.test.source_3.3.0.v20080507/src/org.junit4_4.3.1/junitsrc/org/junit/internal/runners/OldTestClassRunner.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.runners;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     2
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     3
import junit.extensions.TestDecorator;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     4
import junit.framework.AssertionFailedError;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     5
import junit.framework.JUnit4TestAdapter;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     6
import junit.framework.JUnit4TestCaseFacade;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     7
import junit.framework.Test;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     8
import junit.framework.TestCase;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
     9
import junit.framework.TestListener;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    10
import junit.framework.TestResult;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    11
import junit.framework.TestSuite;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    12
import org.junit.runner.Description;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    13
import org.junit.runner.Runner;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    14
import org.junit.runner.notification.Failure;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    15
import org.junit.runner.notification.RunNotifier;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    16
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    17
public class OldTestClassRunner extends Runner {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    18
	private static final class OldTestClassAdaptingListener implements
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    19
			TestListener {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    20
		private final RunNotifier fNotifier;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    21
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    22
		private OldTestClassAdaptingListener(RunNotifier notifier) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    23
			fNotifier= notifier;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    24
		}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    25
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    26
		public void endTest(Test test) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    27
			fNotifier.fireTestFinished(asDescription(test));
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    28
		}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    29
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    30
		public void startTest(Test test) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    31
			fNotifier.fireTestStarted(asDescription(test));
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    32
		}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    33
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    34
		// Implement junit.framework.TestListener
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    35
		public void addError(Test test, Throwable t) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    36
			Failure failure= new Failure(asDescription(test), t);
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    37
			fNotifier.fireTestFailure(failure);
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    38
		}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    39
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    40
		private Description asDescription(Test test) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    41
			if (test instanceof JUnit4TestCaseFacade) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    42
				JUnit4TestCaseFacade facade= (JUnit4TestCaseFacade) test;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    43
				return facade.getDescription();
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    44
			}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    45
			return Description.createTestDescription(test.getClass(), getName(test));
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    46
		}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    47
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    48
		private String getName(Test test) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    49
			if (test instanceof TestCase)
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    50
				return ((TestCase) test).getName();
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    51
			else
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    52
				return test.toString();
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    53
		}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    54
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    55
		public void addFailure(Test test, AssertionFailedError t) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    56
			addError(test, t);
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    57
		}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    58
	}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    59
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    60
	private Test fTest;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    61
	
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    62
	@SuppressWarnings("unchecked")
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    63
	public OldTestClassRunner(Class<?> klass) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    64
		this(new TestSuite(klass.asSubclass(TestCase.class)));
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    65
	}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    66
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    67
	public OldTestClassRunner(Test test) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    68
		super();
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    69
		fTest= test;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    70
	}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    71
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    72
	@Override
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    73
	public void run(RunNotifier notifier) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    74
		TestResult result= new TestResult();
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    75
		result.addListener(createAdaptingListener(notifier));
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    76
		fTest.run(result);
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    77
	}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    78
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    79
	public static TestListener createAdaptingListener(final RunNotifier notifier) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    80
		return new OldTestClassAdaptingListener(notifier);
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    81
	}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    82
	
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    83
	@Override
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    84
	public Description getDescription() {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    85
		return makeDescription(fTest);
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    86
	}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    87
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    88
	private Description makeDescription(Test test) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    89
		if (test instanceof TestCase) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    90
			TestCase tc= (TestCase) test;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    91
			return Description.createTestDescription(tc.getClass(), tc.getName());
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    92
		} else if (test instanceof TestSuite) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    93
			TestSuite ts= (TestSuite) test;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    94
			String name= ts.getName() == null ? "" : ts.getName();
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    95
			Description description= Description.createSuiteDescription(name);
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    96
			int n= ts.testCount();
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    97
			for (int i= 0; i < n; i++)
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    98
				description.addChild(makeDescription(ts.testAt(i)));
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
    99
			return description;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
   100
		} else if (test instanceof JUnit4TestAdapter) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
   101
			JUnit4TestAdapter adapter= (JUnit4TestAdapter) test;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
   102
			return adapter.getDescription();
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
   103
		} else if (test instanceof TestDecorator) {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
   104
			TestDecorator decorator= (TestDecorator) test;
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
   105
			return makeDescription(decorator.getTest());
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
   106
		} else {
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
   107
			// This is the best we can do in this case
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
   108
			return Description.createSuiteDescription(test.getClass());
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
   109
		}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
   110
	}
82d1d1de1a01 import Carbide.c++
cawthron
parents:
diff changeset
   111
}