    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    }