Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: junit/framework/ComparisonFailure.java


1   package junit.framework;
2   
3   /**
4    * Thrown when an assert equals for Strings failed.
5    * 
6    * Inspired by a patch from Alex Chaffee mailto:alex@purpletech.com
7    */
8   public class ComparisonFailure extends AssertionFailedError {
9     private String fExpected;
10    private String fActual;
11  
12    /**
13     * Constructs a comparison failure.
14     * @param message the identifying message or null
15     * @param expected the expected string value
16     * @param actual the actual string value
17     */
18    public ComparisonFailure (String message, String expected, String actual) {
19      super (message);
20      fExpected= expected;
21      fActual= actual;
22    }
23    
24    /**
25     * Returns "..." in place of common prefix and "..." in
26     * place of common suffix between expected and actual.
27     * 
28     * @see java.lang.Throwable#getMessage()
29     */
30    public String getMessage() {
31      if (fExpected == null || fActual == null)
32        return Assert.format(super.getMessage(), fExpected, fActual);
33        
34      int end= Math.min(fExpected.length(), fActual.length());
35      
36      int i= 0;
37      for(; i < end; i++) {
38        if (fExpected.charAt(i) != fActual.charAt(i))
39          break;
40      }
41      int j= fExpected.length()-1;
42      int k= fActual.length()-1;
43      for (; k >= i && j >= i; k--,j--) {
44        if (fExpected.charAt(j) != fActual.charAt(k))
45          break;
46      }
47      String actual, expected;
48      
49      // equal strings
50      if (j < i && k < i) {
51        expected= fExpected;
52        actual= fActual;
53      } else {
54        expected= fExpected.substring(i, j+1);
55        actual= fActual.substring(i, k+1);
56        if (i <= end && i > 0) {
57          expected= "..."+expected;
58          actual= "..."+actual;
59        }
60        
61        if (j < fExpected.length()-1)
62          expected= expected+"...";
63        if (k < fActual.length()-1)
64          actual= actual+"...";
65      }  
66      return Assert.format(super.getMessage(), expected, actual);
67    }
68  }