package org.bindgen.processor;
import static org.junit.Assert.*;
import org.junit.Test;
public class AccessTest extends AbstractBindgenTestCase {
@Test
public void shouldGenerateBindingsForNonPublicAnnotatedFields() throws Exception {
ClassLoader loader = this.compile("org/bindgen/processor/access/AccessBean.java");
Class<?> clazz = loader.loadClass("org.bindgen.processor.access.AccessBeanBindingPath");
assertPublic(clazz.getDeclaredMethod("publicField"));
assertProtected(clazz.getDeclaredMethod("protectedField"));
assertPackage(clazz.getDeclaredMethod("packageField"));
assertPublic(clazz.getDeclaredMethod("publicMethod"));
assertProtected(clazz.getDeclaredMethod("protectedMethod"));
assertPackage(clazz.getDeclaredMethod("packageMethod"));
}
@Test
public void shouldNotGenerateBindingsForPrivateFields() throws Exception {
ClassLoader loader = this.compile("org/bindgen/processor/access/AccessBean.java");
Class<?> clazz = loader.loadClass("org.bindgen.processor.access.AccessBeanBindingPath");
try {
clazz.getDeclaredMethod("privateField");
fail();
} catch (NoSuchMethodException e) {
//noop
}
try {
clazz.getDeclaredMethod("privateMethod");
fail();
} catch (NoSuchMethodException e) {
//noop
}
}
@Test
public void shouldNotGenerateBindingsForInheritedNonPublicFields() throws Exception {
this.compile("org/bindgen/processor/access/package1/Bean1.java", "org/bindgen/processor/access/package2/Bean2.java");
}
public void canGenerateBindingsForClassesInDefaultPackage() throws Exception {
ClassLoader loader = this.compile("ClassInDefaultPackage.java");
loader.loadClass("ClassInDefaultPackageBindingPath");
}
}