158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotpackage junit.framework; 258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot/** 458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * Thrown when an assert equals for Strings failed. 558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * 658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * Inspired by a patch from Alex Chaffee mailto:alex@purpletech.com 758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot */ 858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotpublic class ComparisonFailure extends AssertionFailedError { 958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private static final int MAX_CONTEXT_LENGTH= 20; 1058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private static final long serialVersionUID= 1L; 1158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 1258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private String fExpected; 1358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private String fActual; 1458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 1558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot /** 1658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * Constructs a comparison failure. 1758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * @param message the identifying message or null 1858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * @param expected the expected string value 1958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * @param actual the actual string value 2058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot */ 2158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public ComparisonFailure (String message, String expected, String actual) { 2258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot super (message); 2358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fExpected= expected; 2458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fActual= actual; 2558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 2658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 2758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot /** 2858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * Returns "..." in place of common prefix and "..." in 2958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * place of common suffix between expected and actual. 3058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * 31b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot * @see Throwable#getMessage() 3258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot */ 33b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot @Override 3458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public String getMessage() { 3558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return new ComparisonCompactor(MAX_CONTEXT_LENGTH, fExpected, fActual).compact(super.getMessage()); 3658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 3758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 3858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot /** 3958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * Gets the actual string value 4058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * @return the actual string value 4158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot */ 4258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public String getActual() { 4358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return fActual; 4458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 4558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot /** 4658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * Gets the expected string value 4758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * @return the expected string value 4858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot */ 4958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public String getExpected() { 5058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return fExpected; 5158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 5258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot}