Java cvprof Coverage Report for
ResultPrinter.java

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