package japicmp.test.service; import japicmp.cmp.JarArchiveComparator; import japicmp.cmp.JarArchiveComparatorOptions; import japicmp.model.JApiChangeStatus; import japicmp.model.JApiClass; import japicmp.model.JApiMethod; import org.junit.BeforeClass; import org.junit.Test; import java.util.List; import static japicmp.test.service.util.Helper.*; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; public class InterfaceTest { private static List<JApiClass> jApiClasses; @BeforeClass public static void beforeClass() { JarArchiveComparatorOptions options = new JarArchiveComparatorOptions(); options.setClassPathMode(JarArchiveComparatorOptions.ClassPathMode.TWO_SEPARATE_CLASSPATHS); options.setOldClassPath(createClassPath("v1")); options.setNewClassPath(createClassPath("v2")); JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options); jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-service-impl-v1.jar"), getArchive("japicmp-test-service-impl-v2.jar")); } @Test public void testMethodAdded() { JApiClass jApiClass = getJApiClass(jApiClasses, InterfaceMethodAddedImpl.class.getName()); assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(jApiClass.isBinaryCompatible(), is(true)); } @Test public void testMethodRemoved() { JApiClass jApiClass = getJApiClass(jApiClasses, InterfaceMethodRemovedImpl.class.getName()); assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(jApiClass.isBinaryCompatible(), is(false)); JApiMethod jApiMethod = getJApiMethod(jApiClass.getMethods(), "methodRemoved"); assertThat(jApiMethod.isBinaryCompatible(), is(false)); } }