package japicmp.test; import japicmp.cmp.JarArchiveComparator; import japicmp.cmp.JarArchiveComparatorOptions; import japicmp.model.JApiChangeStatus; import japicmp.model.JApiClass; import japicmp.test.util.Helper; import org.junit.Test; import java.util.List; import static japicmp.test.util.Helper.getArchive; import static japicmp.test.util.Helper.getJApiClass; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; public class ModifierTest { @Test public void testOptionPublicModifier() { JarArchiveComparatorOptions options = new JarArchiveComparatorOptions(); JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options); List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar")); JApiClass modifierInnerClass = getJApiClass(jApiClasses, Modifier.ModifierPublicToProtected.class.getName()); JApiClass modifierClass = getJApiClass(jApiClasses, Modifier.class.getName()); assertThat(modifierInnerClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(Helper.getJApiMethod(modifierClass.getMethods(), "publicToPrivateMethod").getChangeStatus(), is(JApiChangeStatus.MODIFIED)); } @Test public void testOptionPrivateModifier() { JarArchiveComparatorOptions options = new JarArchiveComparatorOptions(); JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options); List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar")); JApiClass modifierInnerClass = getJApiClass(jApiClasses, Modifier.ModifierPublicToProtected.class.getName()); JApiClass modifierClass = getJApiClass(jApiClasses, Modifier.class.getName()); assertThat(modifierInnerClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(Helper.getJApiMethod(modifierClass.getMethods(), "publicToPrivateMethod").getChangeStatus(), is(JApiChangeStatus.MODIFIED)); } @Test public void testFinalModifierChanges() { JarArchiveComparatorOptions options = new JarArchiveComparatorOptions(); JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options); List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar")); JApiClass modifierClass = getJApiClass(jApiClasses, Modifier.class.getName()); assertThat(Helper.getJApiMethod(modifierClass.getMethods(), "nonFinalToFinalMethod").getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(Helper.getJApiMethod(modifierClass.getMethods(), "finalToNonFinalMethod").getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(Helper.getJApiMethod(modifierClass.getMethods(), "finalStaysFinalMethod").getChangeStatus(), is(JApiChangeStatus.UNCHANGED)); assertThat(Helper.getJApiMethod(modifierClass.getMethods(), "nonFinalStaysNonFinalMethod").getChangeStatus(), is(JApiChangeStatus.UNCHANGED)); } @Test public void testStaticModifierChanges() { JarArchiveComparatorOptions options = new JarArchiveComparatorOptions(); JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options); List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar")); JApiClass modifierClass = getJApiClass(jApiClasses, Modifier.class.getName()); assertThat(Helper.getJApiMethod(modifierClass.getMethods(), "nonStaticToStaticMethod").getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(Helper.getJApiMethod(modifierClass.getMethods(), "StaticToNonStaticMethod").getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(Helper.getJApiMethod(modifierClass.getMethods(), "staticStaysStaticMethod").getChangeStatus(), is(JApiChangeStatus.UNCHANGED)); assertThat(Helper.getJApiMethod(modifierClass.getMethods(), "nonStaticStaysNonStaticMethod").getChangeStatus(), is(JApiChangeStatus.UNCHANGED)); } }