package japicmp.test; import japicmp.cmp.JarArchiveComparator; import japicmp.cmp.JarArchiveComparatorOptions; import japicmp.model.JApiChangeStatus; import japicmp.model.JApiClass; import japicmp.model.JApiMethod; import japicmp.model.JApiReturnType; import org.junit.BeforeClass; import org.junit.Test; import java.util.List; import static japicmp.test.util.Helper.*; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; public class MethodReturnTypeTest { private static List<JApiClass> jApiClasses; @BeforeClass public static void beforeClass() { JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(new JarArchiveComparatorOptions()); jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar")); } @Test public void testMethodReturnTypeUnchanged() { JApiClass jApiClass = getJApiClass(jApiClasses, MethodReturnType.class.getName()); JApiMethod jApiMethod = getJApiMethod(jApiClass.getMethods(), "methodReturnTypeUnchanged"); assertThat(jApiMethod.getChangeStatus(), is(JApiChangeStatus.UNCHANGED)); JApiReturnType jApiReturnType = jApiMethod.getReturnType(); assertThat(jApiReturnType.getChangeStatus(), is(JApiChangeStatus.UNCHANGED)); assertThat(jApiReturnType.getOldReturnType(), is("int")); assertThat(jApiReturnType.getNewReturnType(), is("int")); } @Test public void testMethodReturnTypeChangesFromIntToString() { JApiClass jApiClass = getJApiClass(jApiClasses, MethodReturnType.class.getName()); JApiMethod jApiMethod = getJApiMethod(jApiClass.getMethods(), "methodReturnTypeChangesFromIntToString"); assertThat(jApiMethod.getChangeStatus(), is(JApiChangeStatus.MODIFIED)); JApiReturnType jApiReturnType = jApiMethod.getReturnType(); assertThat(jApiReturnType.getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(jApiReturnType.getOldReturnType(), is("int")); assertThat(jApiReturnType.getNewReturnType(), is("java.lang.String")); } @Test public void testMethodReturnTypeChangesFromStringToInt() { JApiClass jApiClass = getJApiClass(jApiClasses, MethodReturnType.class.getName()); JApiMethod jApiMethod = getJApiMethod(jApiClass.getMethods(), "methodReturnTypeChangesFromStringToInt"); assertThat(jApiMethod.getChangeStatus(), is(JApiChangeStatus.MODIFIED)); JApiReturnType jApiReturnType = jApiMethod.getReturnType(); assertThat(jApiReturnType.getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(jApiReturnType.getOldReturnType(), is("java.lang.String")); assertThat(jApiReturnType.getNewReturnType(), is("int")); } @Test public void testMethodReturnTypeChangesFromListToMap() { JApiClass jApiClass = getJApiClass(jApiClasses, MethodReturnType.class.getName()); JApiMethod jApiMethod = getJApiMethod(jApiClass.getMethods(), "methodReturnTypeChangesFromListToMap"); assertThat(jApiMethod.getChangeStatus(), is(JApiChangeStatus.MODIFIED)); JApiReturnType jApiReturnType = jApiMethod.getReturnType(); assertThat(jApiReturnType.getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(jApiReturnType.getOldReturnType(), is("java.util.List")); assertThat(jApiReturnType.getNewReturnType(), is("java.util.Map")); } @Test public void testMethodReturnTypeChangesFromVoidToInt() { JApiClass jApiClass = getJApiClass(jApiClasses, MethodReturnType.class.getName()); JApiMethod jApiMethod = getJApiMethod(jApiClass.getMethods(), "methodReturnTypeChangesFromVoidToInt"); assertThat(jApiMethod.getChangeStatus(), is(JApiChangeStatus.MODIFIED)); JApiReturnType jApiReturnType = jApiMethod.getReturnType(); assertThat(jApiReturnType.getChangeStatus(), is(JApiChangeStatus.MODIFIED)); assertThat(jApiReturnType.getOldReturnType(), is("void")); assertThat(jApiReturnType.getNewReturnType(), is("int")); } }