package hudson.plugins.analysis.core;
import static org.junit.Assert.*;
import org.junit.Test;
import hudson.plugins.analysis.util.Compatibility;
/**
* Test for {@link Compatibility.isOverridden} method.
*/
public class IsOverriddenTest {
/**
* Test that a method is found by isOverridden even when it is inherited from an intermediate class.
*/
@Test
public void isOverriddenTest() {
assertTrue(Compatibility.isOverridden(Base.class, Derived.class, "method"));
assertTrue(Compatibility.isOverridden(Base.class, Intermediate.class, "method"));
assertFalse(Compatibility.isOverridden(Base.class, Base.class, "method"));
}
/**
* Negative test.
* Trying to check for a method which does not exist in the hierarchy,
*/
@Test(expected = AssertionError.class)
public void isOverriddenNegativeTest() {
Compatibility.isOverridden(Base.class, Derived.class, "method2");
}
public abstract class Base {
protected abstract void method();
}
public abstract class Intermediate extends Base {
protected void method() {}
}
public class Derived extends Intermediate {}
}