FileDocCategorySizeDatePackage
ComparisonFailure.javaAPI DocAndroid 1.5 API1732Wed May 06 22:41:02 BST 2009junit.framework

ComparisonFailure

public class ComparisonFailure extends AssertionFailedError
Thrown when an assert equals for Strings failed. Inspired by a patch from Alex Chaffee mailto:alex@purpletech.com

Fields Summary
private String
fExpected
private String
fActual
Constructors Summary
public ComparisonFailure(String message, String expected, String actual)
Constructs a comparison failure.

param
message the identifying message or null
param
expected the expected string value
param
actual the actual string value

		super (message);
		fExpected= expected;
		fActual= actual;
	
Methods Summary
public java.lang.StringgetMessage()
Returns "..." in place of common prefix and "..." in place of common suffix between expected and actual.

see
java.lang.Throwable#getMessage()

		if (fExpected == null || fActual == null)
			return Assert.format(super.getMessage(), fExpected, fActual);
			
		int end= Math.min(fExpected.length(), fActual.length());
		
		int i= 0;
		for(; i < end; i++) {
			if (fExpected.charAt(i) != fActual.charAt(i))
				break;
		}
		int j= fExpected.length()-1;
		int k= fActual.length()-1;
		for (; k >= i && j >= i; k--,j--) {
			if (fExpected.charAt(j) != fActual.charAt(k))
				break;
		}
		String actual, expected;
		
		// equal strings
		if (j < i && k < i) {
			expected= fExpected;
			actual= fActual;
		} else {
			expected= fExpected.substring(i, j+1);
			actual= fActual.substring(i, k+1);
			if (i <= end && i > 0) {
				expected= "..."+expected;
				actual= "..."+actual;
			}
			
			if (j < fExpected.length()-1)
				expected= expected+"...";
			if (k < fActual.length()-1)
				actual= actual+"...";
		}	
		return Assert.format(super.getMessage(), expected, actual);