158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotpackage junit.framework;
258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot
358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.io.PrintWriter;
458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.io.StringWriter;
558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot
658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot
758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot/**
858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * A <code>TestFailure</code> collects a failed test together with
958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * the caught exception.
1058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * @see TestResult
1158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot */
1258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotpublic class TestFailure extends Object {
1358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	protected Test fFailedTest;
1458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	protected Throwable fThrownException;
1558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot
1658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot
1758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	/**
1858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	 * Constructs a TestFailure with the given test and exception.
1958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	 */
2058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	public TestFailure(Test failedTest, Throwable thrownException) {
2158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		fFailedTest= failedTest;
2258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		fThrownException= thrownException;
2358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
2458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	/**
2558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	 * Gets the failed test.
2658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	 */
2758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	public Test failedTest() {
2858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	    return fFailedTest;
2958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
3058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	/**
3158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	 * Gets the thrown exception.
3258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	 */
3358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	public Throwable thrownException() {
3458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	    return fThrownException;
3558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
3658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	/**
3758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	 * Returns a short description of the failure.
3858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	 */
39b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	@Override
4058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	public String toString() {
4158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	    StringBuffer buffer= new StringBuffer();
4258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	    buffer.append(fFailedTest+": "+fThrownException.getMessage());
4358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	    return buffer.toString();
4458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
4558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	public String trace() {
4658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		StringWriter stringWriter= new StringWriter();
4758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		PrintWriter writer= new PrintWriter(stringWriter);
4858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		thrownException().printStackTrace(writer);
4958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		StringBuffer buffer= stringWriter.getBuffer();
5058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		return buffer.toString();
5158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
5258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	public String exceptionMessage() {
5358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		return thrownException().getMessage();
5458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
5558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	public boolean isFailure() {
5658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		return thrownException() instanceof AssertionFailedError;
5758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
5858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot}