carbidecpp22devenv/plugins/org.eclipse.test.source_3.5.0.r20080925/src/org.junit4_4.5.0.v20090423/junitsrc/junit/textui/ResultPrinter.java
author cawthron
Fri, 04 Dec 2009 11:49:54 -0600
changeset 636 3ef299ba838f
permissions -rw-r--r--
add files for RCL_2_2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
636
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
     1
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
     2
package junit.textui;
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
     3
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
     4
import java.io.PrintStream;
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
     5
import java.text.NumberFormat;
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
     6
import java.util.Enumeration;
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
     7
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
     8
import junit.framework.AssertionFailedError;
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
     9
import junit.framework.Test;
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    10
import junit.framework.TestFailure;
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    11
import junit.framework.TestListener;
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    12
import junit.framework.TestResult;
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    13
import junit.runner.BaseTestRunner;
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    14
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    15
public class ResultPrinter implements TestListener {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    16
	PrintStream fWriter;
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    17
	int fColumn= 0;
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    18
	
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    19
	public ResultPrinter(PrintStream writer) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    20
		fWriter= writer;
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    21
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    22
	
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    23
	/* API for use by textui.TestRunner
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    24
	 */
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    25
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    26
	synchronized void print(TestResult result, long runTime) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    27
		printHeader(runTime);
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    28
	    printErrors(result);
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    29
	    printFailures(result);
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    30
	    printFooter(result);
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    31
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    32
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    33
	void printWaitPrompt() {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    34
		getWriter().println();
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    35
		getWriter().println("<RETURN> to continue");
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    36
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    37
	
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    38
	/* Internal methods 
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    39
	 */
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    40
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    41
	protected void printHeader(long runTime) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    42
		getWriter().println();
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    43
		getWriter().println("Time: "+elapsedTimeAsString(runTime));
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    44
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    45
	
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    46
	protected void printErrors(TestResult result) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    47
		printDefects(result.errors(), result.errorCount(), "error");
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    48
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    49
	
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    50
	protected void printFailures(TestResult result) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    51
		printDefects(result.failures(), result.failureCount(), "failure");
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    52
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    53
	
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    54
	protected void printDefects(Enumeration<TestFailure> booBoos, int count, String type) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    55
		if (count == 0) return;
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    56
		if (count == 1)
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    57
			getWriter().println("There was " + count + " " + type + ":");
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    58
		else
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    59
			getWriter().println("There were " + count + " " + type + "s:");
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    60
		for (int i= 1; booBoos.hasMoreElements(); i++) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    61
			printDefect(booBoos.nextElement(), i);
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    62
		}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    63
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    64
	
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    65
	public void printDefect(TestFailure booBoo, int count) { // only public for testing purposes
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    66
		printDefectHeader(booBoo, count);
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    67
		printDefectTrace(booBoo);
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    68
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    69
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    70
	protected void printDefectHeader(TestFailure booBoo, int count) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    71
		// I feel like making this a println, then adding a line giving the throwable a chance to print something
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    72
		// before we get to the stack trace.
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    73
		getWriter().print(count + ") " + booBoo.failedTest());
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    74
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    75
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    76
	protected void printDefectTrace(TestFailure booBoo) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    77
		getWriter().print(BaseTestRunner.getFilteredTrace(booBoo.trace()));
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    78
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    79
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    80
	protected void printFooter(TestResult result) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    81
		if (result.wasSuccessful()) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    82
			getWriter().println();
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    83
			getWriter().print("OK");
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    84
			getWriter().println (" (" + result.runCount() + " test" + (result.runCount() == 1 ? "": "s") + ")");
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    85
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    86
		} else {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    87
			getWriter().println();
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    88
			getWriter().println("FAILURES!!!");
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    89
			getWriter().println("Tests run: "+result.runCount()+ 
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    90
				         ",  Failures: "+result.failureCount()+
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    91
				         ",  Errors: "+result.errorCount());
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    92
		}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    93
	    getWriter().println();
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    94
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    95
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    96
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    97
	/**
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    98
	 * Returns the formatted string of the elapsed time.
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
    99
	 * Duplicated from BaseTestRunner. Fix it.
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   100
	 */
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   101
	protected String elapsedTimeAsString(long runTime) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   102
		return NumberFormat.getInstance().format((double)runTime/1000);
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   103
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   104
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   105
	public PrintStream getWriter() {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   106
		return fWriter;
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   107
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   108
	/**
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   109
	 * @see junit.framework.TestListener#addError(Test, Throwable)
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   110
	 */
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   111
	public void addError(Test test, Throwable t) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   112
		getWriter().print("E");
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   113
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   114
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   115
	/**
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   116
	 * @see junit.framework.TestListener#addFailure(Test, AssertionFailedError)
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   117
	 */
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   118
	public void addFailure(Test test, AssertionFailedError t) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   119
		getWriter().print("F");
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   120
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   121
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   122
	/**
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   123
	 * @see junit.framework.TestListener#endTest(Test)
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   124
	 */
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   125
	public void endTest(Test test) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   126
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   127
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   128
	/**
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   129
	 * @see junit.framework.TestListener#startTest(Test)
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   130
	 */
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   131
	public void startTest(Test test) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   132
		getWriter().print(".");
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   133
		if (fColumn++ >= 40) {
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   134
			getWriter().println();
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   135
			fColumn= 0;
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   136
		}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   137
	}
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   138
3ef299ba838f add files for RCL_2_2
cawthron
parents:
diff changeset
   139
}