package japicmp.test;
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.getArchive;
import static japicmp.test.util.Helper.getJApiClass;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
public class ClassTypeTest {
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 testClassToClass() {
JApiClass jApiClass = getJApiClass(jApiClasses, ClassType.ClassToClass.class.getName());
assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.UNCHANGED));
assertThat(jApiClass.isBinaryCompatible(), is(true));
assertThat(jApiClass.getClassType().getChangeStatus(), is(JApiChangeStatus.UNCHANGED));
assertThat(jApiClass.getClassType().getOldType(), is("CLASS"));
assertThat(jApiClass.getClassType().getNewType(), is("CLASS"));
}
@Test
public void testClassToInterface() {
JApiClass jApiClass = getJApiClass(jApiClasses, ClassType.ClassToInterface.class.getName());
assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.isBinaryCompatible(), is(false));
assertThat(jApiClass.getClassType().getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.getClassType().getOldType(), is("CLASS"));
assertThat(jApiClass.getClassType().getNewType(), is("INTERFACE"));
}
@Test
public void testClassToAnnotation() {
JApiClass jApiClass = getJApiClass(jApiClasses, ClassType.ClassToAnnotation.class.getName());
assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.isBinaryCompatible(), is(false));
assertThat(jApiClass.getClassType().getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.getClassType().getOldType(), is("CLASS"));
assertThat(jApiClass.getClassType().getNewType(), is("ANNOTATION"));
}
@Test
public void testClassToEnum() {
JApiClass jApiClass = getJApiClass(jApiClasses, ClassType.ClassToEnum.class.getName());
assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.isBinaryCompatible(), is(false));
assertThat(jApiClass.getClassType().getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.getClassType().getOldType(), is("CLASS"));
assertThat(jApiClass.getClassType().getNewType(), is("ENUM"));
}
@Test
public void testInterfaceToClass() {
JApiClass jApiClass = getJApiClass(jApiClasses, ClassType.InterfaceToClass.class.getName());
assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.isBinaryCompatible(), is(false));
assertThat(jApiClass.getClassType().getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.getClassType().getOldType(), is("INTERFACE"));
assertThat(jApiClass.getClassType().getNewType(), is("CLASS"));
}
@Test
public void testInterfaceToInterface() {
JApiClass jApiClass = getJApiClass(jApiClasses, ClassType.InterfaceToInterface.class.getName());
assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.UNCHANGED));
assertThat(jApiClass.isBinaryCompatible(), is(true));
assertThat(jApiClass.getClassType().getChangeStatus(), is(JApiChangeStatus.UNCHANGED));
assertThat(jApiClass.getClassType().getOldType(), is("INTERFACE"));
assertThat(jApiClass.getClassType().getNewType(), is("INTERFACE"));
}
@Test
public void testInterfaceToAnnotation() {
JApiClass jApiClass = getJApiClass(jApiClasses, ClassType.InterfaceToAnnotation.class.getName());
assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.isBinaryCompatible(), is(false));
assertThat(jApiClass.getClassType().getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.getClassType().getOldType(), is("INTERFACE"));
assertThat(jApiClass.getClassType().getNewType(), is("ANNOTATION"));
}
@Test
public void testInterfaceToEnum() {
JApiClass jApiClass = getJApiClass(jApiClasses, ClassType.InterfaceToEnum.class.getName());
assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.isBinaryCompatible(), is(false));
assertThat(jApiClass.getClassType().getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.getClassType().getOldType(), is("INTERFACE"));
assertThat(jApiClass.getClassType().getNewType(), is("ENUM"));
}
@Test
public void testAnnotationToClass() {
JApiClass jApiClass = getJApiClass(jApiClasses, ClassType.AnnotationToClass.class.getName());
assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.isBinaryCompatible(), is(false));
assertThat(jApiClass.getClassType().getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.getClassType().getOldType(), is("ANNOTATION"));
assertThat(jApiClass.getClassType().getNewType(), is("CLASS"));
}
@Test
public void testAnnotationToInterface() {
JApiClass jApiClass = getJApiClass(jApiClasses, ClassType.AnnotationToInterface.class.getName());
assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.isBinaryCompatible(), is(false));
assertThat(jApiClass.getClassType().getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.getClassType().getOldType(), is("ANNOTATION"));
assertThat(jApiClass.getClassType().getNewType(), is("INTERFACE"));
}
@Test
public void testAnnotationToAnnotation() {
JApiClass jApiClass = getJApiClass(jApiClasses, ClassType.AnnotationToAnnotation.class.getName());
assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.UNCHANGED));
assertThat(jApiClass.isBinaryCompatible(), is(true));
assertThat(jApiClass.getClassType().getChangeStatus(), is(JApiChangeStatus.UNCHANGED));
assertThat(jApiClass.getClassType().getOldType(), is("ANNOTATION"));
assertThat(jApiClass.getClassType().getNewType(), is("ANNOTATION"));
}
@Test
public void testAnnotationToEnum() {
JApiClass jApiClass = getJApiClass(jApiClasses, ClassType.AnnotationToEnum.class.getName());
assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.isBinaryCompatible(), is(false));
assertThat(jApiClass.getClassType().getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.getClassType().getOldType(), is("ANNOTATION"));
assertThat(jApiClass.getClassType().getNewType(), is("ENUM"));
}
@Test
public void testEnumToClass() {
JApiClass jApiClass = getJApiClass(jApiClasses, ClassType.EnumToClass.class.getName());
assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.isBinaryCompatible(), is(false));
assertThat(jApiClass.getClassType().getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.getClassType().getOldType(), is("ENUM"));
assertThat(jApiClass.getClassType().getNewType(), is("CLASS"));
}
@Test
public void testEnumToInterface() {
JApiClass jApiClass = getJApiClass(jApiClasses, ClassType.EnumToInterface.class.getName());
assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.isBinaryCompatible(), is(false));
assertThat(jApiClass.getClassType().getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.getClassType().getOldType(), is("ENUM"));
assertThat(jApiClass.getClassType().getNewType(), is("INTERFACE"));
}
@Test
public void testEnumToAnnotation() {
JApiClass jApiClass = getJApiClass(jApiClasses, ClassType.EnumToAnnotation.class.getName());
assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.isBinaryCompatible(), is(false));
assertThat(jApiClass.getClassType().getChangeStatus(), is(JApiChangeStatus.MODIFIED));
assertThat(jApiClass.getClassType().getOldType(), is("ENUM"));
assertThat(jApiClass.getClassType().getNewType(), is("ANNOTATION"));
}
@Test
public void testEnumToEnum() {
JApiClass jApiClass = getJApiClass(jApiClasses, ClassType.EnumToEnum.class.getName());
assertThat(jApiClass.getChangeStatus(), is(JApiChangeStatus.UNCHANGED));
assertThat(jApiClass.isBinaryCompatible(), is(true));
assertThat(jApiClass.getClassType().getChangeStatus(), is(JApiChangeStatus.UNCHANGED));
assertThat(jApiClass.getClassType().getOldType(), is("ENUM"));
assertThat(jApiClass.getClassType().getNewType(), is("ENUM"));
}
}