[Clirr-devel] CVS: clirr/src/test/net/sf/clirr/checks AbstractCheckTestCase.java,NONE,1.1 GenderChan
Status: Alpha
Brought to you by:
lkuehne
|
From: Lars K?h. <lk...@us...> - 2003-10-05 17:54:38
|
Update of /cvsroot/clirr/clirr/src/test/net/sf/clirr/checks
In directory sc8-pr-cvs1:/tmp/cvs-serv23255/src/test/net/sf/clirr/checks
Added Files:
AbstractCheckTestCase.java GenderChangeCheckTest.java
TestDiffListener.java
Log Message:
a great day for Clirr - started to add unit tests
--- NEW FILE ---
package net.sf.clirr.checks;
import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
import junit.framework.TestCase;
import net.sf.clirr.Checker;
import net.sf.clirr.CheckerFactory;
import net.sf.clirr.event.ApiDifference;
import net.sf.clirr.framework.ClassChangeCheck;
import org.apache.bcel.util.ClassSet;
/**
* Abstract Baseclass to test individual Checks.
* @author lkuehne
*/
public abstract class AbstractCheckTestCase extends TestCase
{
protected final File getTestInputDir()
{
// property is set in project.properties
return new File(System.getProperty("testinput"));
}
protected void verify(
Checker checker,
ClassSet baseline, ClassSet current,
ApiDifference[] expected)
{
}
protected File[] getBaseLine()
{
return new File[]{
new File(getTestInputDir(), "testlib-v1.jar")
};
}
protected File[] getCurrent()
{
return new File[]{
new File(getTestInputDir(), "testlib-v2.jar")
};
}
protected void verify(ApiDifference[] expected)
{
TestDiffListener tdl = new TestDiffListener();
Checker checker = CheckerFactory.createChecker(createCheck(tdl));
checker.reportDiffs(getBaseLine(), getCurrent(), new URLClassLoader(new URL[]{}), new URLClassLoader(new URL[]{}));
tdl.checkExpected(expected);
}
/**
* Creates a check and sets it up so ApiDifferences are reported to the test diff listener.
*
* @param tdl the test diff listener that records the recognized api changes.
* @return the confiured check
*/
protected abstract ClassChangeCheck createCheck(TestDiffListener tdl);
}
--- NEW FILE ---
package net.sf.clirr.checks;
import net.sf.clirr.event.ApiDifference;
import net.sf.clirr.event.Severity;
import net.sf.clirr.framework.ClassChangeCheck;
public class GenderChangeCheckTest extends AbstractCheckTestCase
{
public void testGenderChangeCheckTest()
{
ApiDifference[] expected = new ApiDifference[] {
new ApiDifference("Changed Gender of testlib.ClassBecomesInterface", Severity.ERROR),
new ApiDifference("Changed Gender of testlib.InterfaceBecomesClass", Severity.ERROR),
};
verify(expected);
}
protected final ClassChangeCheck createCheck(TestDiffListener tdl) {
return new GenderChangeCheck(tdl);
}
}
--- NEW FILE ---
package net.sf.clirr.checks;
import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
import net.sf.clirr.framework.ApiDiffDispatcher;
import net.sf.clirr.event.ApiDifference;
import junit.framework.TestCase;
class TestDiffListener implements ApiDiffDispatcher
{
private Set diffs = new HashSet();
public void fireDiff(ApiDifference difference)
{
diffs.add(difference);
}
public void checkExpected(ApiDifference[] expected)
{
HashSet expectedDiffs = new HashSet();
for (int i = 0; i < expected.length; i++) {
ApiDifference apiDifference = expected[i];
expectedDiffs.add(apiDifference);
}
for (Iterator it = expectedDiffs.iterator(); it.hasNext();) {
ApiDifference apiDifference = (ApiDifference) it.next();
TestCase.assertTrue("expected diff " + apiDifference + " was not generated",
diffs.contains(apiDifference));
}
for (Iterator it = diffs.iterator(); it.hasNext();) {
ApiDifference apiDifference = (ApiDifference) it.next();
TestCase.assertTrue("unexpected diff " + apiDifference,
expectedDiffs.contains(apiDifference));
}
}
}
|