001 package junit.framework;
002
003 /**
004 * Thrown when an assert equals for Strings failed.
005 *
006 * Inspired by a patch from Alex Chaffee mailto:alex@purpletech.com
007 */
008 public class ComparisonFailure extends AssertionFailedError {
009 private static final int MAX_CONTEXT_LENGTH = 20;
010 private static final long serialVersionUID = 1L;
011
012 private String fExpected;
013 private String fActual;
014
015 /**
016 * Constructs a comparison failure.
017 *
018 * @param message the identifying message or null
019 * @param expected the expected string value
020 * @param actual the actual string value
021 */
022 public ComparisonFailure(String message, String expected, String actual) {
023 super(message);
024 fExpected = expected;
025 fActual = actual;
026 }
027
028 /**
029 * Returns "..." in place of common prefix and "..." in
030 * place of common suffix between expected and actual.
031 *
032 * @see Throwable#getMessage()
033 */
034 @Override
035 public String getMessage() {
036 return new ComparisonCompactor(MAX_CONTEXT_LENGTH, fExpected, fActual).compact(super.getMessage());
037 }
038
039 /**
040 * Gets the actual string value
041 *
042 * @return the actual string value
043 */
044 public String getActual() {
045 return fActual;
046 }
047
048 /**
049 * Gets the expected string value
050 *
051 * @return the expected string value
052 */
053 public String getExpected() {
054 return fExpected;
055 }
056 }