package japicmp.filter; import japicmp.exception.JApiCmpException; import japicmp.util.CtClassBuilder; import japicmp.util.CtFieldBuilder; import javassist.CannotCompileException; import javassist.ClassPool; import javassist.CtClass; import javassist.CtField; import org.junit.Test; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; public class FieldFilterTest { @Test public void testOneFieldMatches() throws CannotCompileException { JavadocLikeFieldFilter fieldFilter = new JavadocLikeFieldFilter("japicmp.Test#field"); CtClass ctClass = CtClassBuilder.create().name("japicmp.Test").addToClassPool(new ClassPool()); CtField ctField = CtFieldBuilder.create().name("field").addToClass(ctClass); assertThat(fieldFilter.matches(ctField), is(true)); } @Test public void testOneFieldMatchesNot() throws CannotCompileException { JavadocLikeFieldFilter fieldFilter = new JavadocLikeFieldFilter("japicmp.Test#field42"); CtClass ctClass = CtClassBuilder.create().name("japicmp.Test").addToClassPool(new ClassPool()); CtField ctField = CtFieldBuilder.create().name("field").addToClass(ctClass); assertThat(fieldFilter.matches(ctField), is(false)); } @Test(expected = JApiCmpException.class) public void testTwoHashSigns() throws CannotCompileException { JavadocLikeFieldFilter fieldFilter = new JavadocLikeFieldFilter("japicmp.Test##field42"); CtClass ctClass = CtClassBuilder.create().name("japicmp.Test").addToClassPool(new ClassPool()); CtField ctField = CtFieldBuilder.create().name("field").addToClass(ctClass); assertThat(fieldFilter.matches(ctField), is(false)); } public void testFieldOfInnerClass() throws CannotCompileException { JavadocLikeFieldFilter fieldFilter = new JavadocLikeFieldFilter("japicmp.Test$InnerClass#field"); CtClass ctClass = CtClassBuilder.create().name("japicmp.Test$InnerClass").addToClassPool(new ClassPool()); CtField ctField = CtFieldBuilder.create().name("field").addToClass(ctClass); assertThat(fieldFilter.matches(ctField), is(false)); } }