1   package net.sf.clirr.core.internal.checks;
2   
3   import java.net.URL;
4   import java.net.URLClassLoader;
5   
6   import net.sf.clirr.core.Checker;
7   import net.sf.clirr.core.CheckerFactory;
8   import net.sf.clirr.core.Severity;
9   import net.sf.clirr.core.internal.ClassChangeCheck;
10  import net.sf.clirr.core.internal.bcel.BcelTypeArrayBuilder;
11  import net.sf.clirr.core.spi.JavaType;
12  import net.sf.clirr.core.ClassFilter;
13  
14  public class ClassAddedRemovedTest extends AbstractCheckTestCase
15  {
16      public void testClassAddionOrRemovalIsReported() throws Exception
17      {
18          Checker checker = CheckerFactory.createChecker(null);
19          TestDiffListener tld = new TestDiffListener();
20          checker.addDiffListener(tld);
21          
22          ClassFilter classSelector = createClassSelector();
23  
24          final JavaType[] origClasses =
25              BcelTypeArrayBuilder.createClassSet(getBaseLine(), new URLClassLoader(new URL[]{}), classSelector);
26          
27          final JavaType[] newClasses =
28              BcelTypeArrayBuilder.createClassSet(getCurrent(), new URLClassLoader(new URL[]{}), classSelector);
29          
30          checker.reportDiffs(origClasses, newClasses);
31  
32          ExpectedDiff[] expected = new ExpectedDiff[] {
33                  new ExpectedDiff("Class testlib.AddedClass added", Severity.INFO, "testlib.AddedClass", null, null),
34                  new ExpectedDiff("Class testlib.RemovedClass removed", Severity.ERROR, "testlib.RemovedClass", null, null),
35              };
36          
37          tld.checkExpected(expected);
38      }
39      
40      protected ClassChangeCheck createCheck(TestDiffListener tdl)
41      {
42          // changes are reported directly by the Checker
43          return null;
44      }
45  
46  }