KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > clirr > core > internal > checks > TestDiffListener


1 package net.sf.clirr.core.internal.checks;
2
3 import java.util.Set JavaDoc;
4 import java.util.HashSet JavaDoc;
5 import java.util.Iterator JavaDoc;
6
7 import net.sf.clirr.core.internal.ApiDiffDispatcher;
8 import net.sf.clirr.core.internal.checks.ExpectedDiff;
9 import net.sf.clirr.core.ApiDifference;
10 import net.sf.clirr.core.DiffListener;
11 import net.sf.clirr.core.MessageTranslator;
12 import junit.framework.TestCase;
13
14 class TestDiffListener implements ApiDiffDispatcher, DiffListener
15 {
16         private MessageTranslator translator = new MessageTranslator();
17
18         private Set JavaDoc diffs = new HashSet JavaDoc();
19
20         public void fireDiff(ApiDifference difference)
21         {
22             diffs.add(difference);
23         }
24
25         public void checkExpected(ExpectedDiff[] expectedDiffs)
26         {
27             for (int i=0; i<expectedDiffs.length; ++i)
28             {
29                 ExpectedDiff expected = expectedDiffs[i];
30
31                 // now see if the expected diff is in fact in the set of
32
// diffs that occurred during the test comparison
33
boolean found = false;
34                 for(Iterator JavaDoc j = diffs.iterator(); j.hasNext() && !found;)
35                 {
36                     ApiDifference actual = (ApiDifference) j.next();
37                     found = expected.matches(actual);
38                 }
39
40                 if (!found)
41                 {
42                     // build a useful failure message
43
MessageTranslator translator = new MessageTranslator();
44
45                     StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
46                     buf.append("Expected diff " + expected + " was not generated.\n");
47                     if (diffs.size() == 0)
48                     {
49                         buf.append("No diffs were generated.");
50                     }
51                     else
52                     {
53                         buf.append("Actual diffs generated were: \n");
54                         for(Iterator JavaDoc diffIter = diffs.iterator(); diffIter.hasNext();)
55                         {
56                             ApiDifference diff = (ApiDifference) diffIter.next();
57
58                             buf.append(" * ");
59                             buf.append(diff.toString(translator));
60                             buf.append("\n");
61                         }
62                     }
63
64                     TestCase.fail(buf.toString());
65                 }
66             }
67
68             StringBuffer JavaDoc buf = null;
69             for (Iterator JavaDoc it = diffs.iterator(); it.hasNext();)
70             {
71                 ApiDifference actual = (ApiDifference) it.next();
72
73                 // see if the actual (generated) diff is in the expected set
74
boolean found = false;
75                 for(int i=0; i<expectedDiffs.length && !found; ++i)
76                 {
77                     found = expectedDiffs[i].matches(actual);
78                 }
79
80                 if (!found)
81                 {
82                     if (buf == null)
83                     {
84                         buf = new StringBuffer JavaDoc();
85                         buf.append("Unexpected diffs:\n");
86                     }
87                     buf.append(" * ");
88                     buf.append(actual.toString(translator));
89                     buf.append("\n");
90                 }
91             }
92
93             if (buf != null)
94             {
95                 // we must have found at least one unexpected diff
96
TestCase.fail(buf.toString());
97             }
98         }
99
100         public void start()
101         {
102         }
103
104         public void reportDiff(ApiDifference difference) {
105             diffs.add(difference);
106         }
107
108         public void stop()
109         {
110         }
111 }
112
Popular Tags