OSDN Git Service

original
[gb-231r1-is01/Gingerbread_2.3.3_r1_IS01.git] / dalvik / tests / 021-string2 / src / 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 }