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