package japicmp.test; import com.google.common.base.Optional; import japicmp.cmp.JarArchiveComparator; import japicmp.cmp.JarArchiveComparatorOptions; import japicmp.model.JApiChangeStatus; import japicmp.model.JApiClass; import org.junit.BeforeClass; import org.junit.Test; import java.util.List; import static japicmp.test.util.Helper.*; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; public class AbstractTest { private static List<JApiClass> jApiClasses; @BeforeClass public static void beforeClass() { JarArchiveComparatorOptions options = new JarArchiveComparatorOptions(); JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options); jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar")); } @Test public void testAbstractToNonAbstract() { JApiClass abstractModifierClass = getJApiClass(jApiClasses, AbstractModifier.class.getName()); assertThat(abstractModifierClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(abstractModifierClass.getAbstractModifier().getChangeStatus(), is(JApiChangeStatus.UNCHANGED)); assertThat(abstractModifierClass.getAbstractModifier().getOldModifier(), is(Optional.of(japicmp.model.AbstractModifier.ABSTRACT))); assertThat(abstractModifierClass.getAbstractModifier().getNewModifier(), is(Optional.of(japicmp.model.AbstractModifier.ABSTRACT))); assertThat(getJApiMethod(abstractModifierClass.getMethods(), "abstractToNonAbstract").getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(getJApiMethod(abstractModifierClass.getMethods(), "abstractToNonAbstract").getAbstractModifier().getOldModifier(), is(Optional.of(japicmp.model.AbstractModifier.ABSTRACT))); assertThat(getJApiMethod(abstractModifierClass.getMethods(), "abstractToNonAbstract").getAbstractModifier().getNewModifier(), is(Optional.of(japicmp.model.AbstractModifier.NON_ABSTRACT))); } @Test public void testNonAbstractToAbstract() { JApiClass abstractModifierClass = getJApiClass(jApiClasses, AbstractModifier.class.getName()); assertThat(abstractModifierClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(abstractModifierClass.getAbstractModifier().getChangeStatus(), is(JApiChangeStatus.UNCHANGED)); assertThat(abstractModifierClass.getAbstractModifier().getOldModifier(), is(Optional.of(japicmp.model.AbstractModifier.ABSTRACT))); assertThat(abstractModifierClass.getAbstractModifier().getNewModifier(), is(Optional.of(japicmp.model.AbstractModifier.ABSTRACT))); assertThat(getJApiMethod(abstractModifierClass.getMethods(), "nonAbstractToAbstract").getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(getJApiMethod(abstractModifierClass.getMethods(), "nonAbstractToAbstract").getAbstractModifier().getOldModifier(), is(Optional.of(japicmp.model.AbstractModifier.NON_ABSTRACT))); assertThat(getJApiMethod(abstractModifierClass.getMethods(), "nonAbstractToAbstract").getAbstractModifier().getNewModifier(), is(Optional.of(japicmp.model.AbstractModifier.ABSTRACT))); } @Test public void testAbstractRemainsAbstract() { JApiClass abstractModifierClass = getJApiClass(jApiClasses, AbstractModifier.class.getName()); assertThat(abstractModifierClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(abstractModifierClass.getAbstractModifier().getChangeStatus(), is(JApiChangeStatus.UNCHANGED)); assertThat(abstractModifierClass.getAbstractModifier().getOldModifier(), is(Optional.of(japicmp.model.AbstractModifier.ABSTRACT))); assertThat(abstractModifierClass.getAbstractModifier().getNewModifier(), is(Optional.of(japicmp.model.AbstractModifier.ABSTRACT))); assertThat(getJApiMethod(abstractModifierClass.getMethods(), "abstractRemainsAbstract").getChangeStatus(), is(JApiChangeStatus.UNCHANGED)); assertThat(getJApiMethod(abstractModifierClass.getMethods(), "abstractRemainsAbstract").getAbstractModifier().getOldModifier(), is(Optional.of(japicmp.model.AbstractModifier.ABSTRACT))); assertThat(getJApiMethod(abstractModifierClass.getMethods(), "abstractRemainsAbstract").getAbstractModifier().getNewModifier(), is(Optional.of(japicmp.model.AbstractModifier.ABSTRACT))); } }