KickJava   Java API By Example, From Geeks To Geeks.

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


1 package net.sf.clirr.core.internal.checks;
2
3 import junit.framework.TestCase;
4 import net.sf.clirr.core.Checker;
5 import net.sf.clirr.core.ClassSelector;
6 import net.sf.clirr.core.ApiDifference;
7 import net.sf.clirr.core.CheckerFactory;
8 import net.sf.clirr.core.ClassFilter;
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
13 import org.apache.bcel.util.ClassSet;
14
15 import java.io.File JavaDoc;
16 import java.net.URL JavaDoc;
17 import java.net.URLClassLoader JavaDoc;
18
19 /**
20  * Abstract Baseclass to test individual Checks.
21  * @author lkuehne
22  */

23 public abstract class AbstractCheckTestCase extends TestCase
24 {
25     protected final File JavaDoc getTestInputDir()
26     {
27         // property is set in project.properties
28
return new File JavaDoc(System.getProperty("testinput"));
29     }
30
31     protected void verify(
32             Checker checker,
33             ClassSet baseline, ClassSet current,
34             ApiDifference[] expected)
35     {
36     }
37
38     protected File JavaDoc[] getBaseLine()
39     {
40         return new File JavaDoc[]{
41             new File JavaDoc(getTestInputDir(), "testlib-v1.jar")
42         };
43     }
44
45     protected File JavaDoc[] getCurrent()
46     {
47         return new File JavaDoc[]{
48             new File JavaDoc(getTestInputDir(), "testlib-v2.jar")
49         };
50     }
51
52     protected void verify(ExpectedDiff[] expected)
53     throws Exception JavaDoc
54     {
55         TestDiffListener tdl = new TestDiffListener();
56         Checker checker = CheckerFactory.createChecker(createCheck(tdl));
57         ClassFilter classSelector = createClassSelector();
58
59         final JavaType[] origClasses =
60             BcelTypeArrayBuilder.createClassSet(getBaseLine(), new URLClassLoader JavaDoc(new URL JavaDoc[]{}), classSelector);
61         
62         final JavaType[] newClasses =
63             BcelTypeArrayBuilder.createClassSet(getCurrent(), new URLClassLoader JavaDoc(new URL JavaDoc[]{}), classSelector);
64         
65         checker.reportDiffs(origClasses, newClasses);
66
67         tdl.checkExpected(expected);
68     }
69
70     /**
71      * Creates an object which selects the appropriate classes from the
72      * test jars for this test.
73      * <p>
74      * This base implementation returns a selector which selects all classes
75      * in the base "testlib" package (but no sub-packages). Tests which wish
76      * to select different classes from the test jars should override this
77      * method.
78      */

79     protected ClassFilter createClassSelector()
80     {
81         // only check classes in the base "testlib" package of the jars
82
ClassSelector classSelector = new ClassSelector(ClassSelector.MODE_IF);
83         classSelector.addPackage("testlib");
84         return classSelector;
85     }
86
87     /**
88      * Creates a check and sets it up so ApiDifferences are reported to the test diff listener.
89      *
90      * @param tdl the test diff listener that records the recognized api changes.
91      * @return the confiured check
92      */

93     protected abstract ClassChangeCheck createCheck(TestDiffListener tdl);
94 }
95
Popular Tags