1 package net.sf.clirr.core.internal.checks; 2 3 import java.util.Set ; 4 import java.util.HashSet ; 5 import java.util.Iterator ; 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 diffs = new HashSet (); 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 boolean found = false; 34 for(Iterator 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 MessageTranslator translator = new MessageTranslator(); 44 45 StringBuffer buf = new StringBuffer (); 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 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 buf = null; 69 for (Iterator it = diffs.iterator(); it.hasNext();) 70 { 71 ApiDifference actual = (ApiDifference) it.next(); 72 73 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 (); 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 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 |