AccessorTest.java
package net.minidev.asm;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import com.mindev.pojos.AccessorTestPojo;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import org.junit.jupiter.api.Test;
public class AccessorTest {
private static class AcceptAllFilter implements FieldFilter {
@Override
public boolean canUse(Field field) {
return true;
}
@Override
public boolean canUse(Field field, Method method) {
return true;
}
@Override
public boolean canRead(Field field) {
return true;
}
@Override
public boolean canWrite(Field field) {
return true;
}
}
private static class AcceptNoneFilter implements FieldFilter {
@Override
public boolean canUse(Field field) {
return false;
}
@Override
public boolean canUse(Field field, Method method) {
return false;
}
@Override
public boolean canRead(Field field) {
return false;
}
@Override
public boolean canWrite(Field field) {
return false;
}
}
@Test
public void testWriteOnlyField() throws NoSuchFieldException, SecurityException {
Field writeOnlyField = AccessorTestPojo.class.getDeclaredField("writeOnlyField");
Accessor accessor = new Accessor(AccessorTestPojo.class, writeOnlyField, new AcceptAllFilter());
assertTrue(accessor.isWritable());
assertFalse(accessor.isReadable());
accessor = new Accessor(AccessorTestPojo.class, writeOnlyField, new AcceptNoneFilter());
assertFalse(accessor.isWritable());
assertFalse(accessor.isReadable());
}
@Test
public void testReadOnlyField() throws NoSuchFieldException, SecurityException {
Field readOnlyField = AccessorTestPojo.class.getDeclaredField("readOnlyField");
Accessor accessor = new Accessor(AccessorTestPojo.class, readOnlyField, new AcceptAllFilter());
assertFalse(accessor.isWritable());
assertTrue(accessor.isReadable());
accessor = new Accessor(AccessorTestPojo.class, readOnlyField, new AcceptNoneFilter());
assertFalse(accessor.isWritable());
assertFalse(accessor.isReadable());
}
@Test
public void testReadAndWriteableField() throws NoSuchFieldException, SecurityException {
Field readAndWriteableField = AccessorTestPojo.class.getDeclaredField("readAndWriteableField");
Accessor accessor =
new Accessor(AccessorTestPojo.class, readAndWriteableField, new AcceptAllFilter());
assertTrue(accessor.isWritable());
assertTrue(accessor.isReadable());
accessor = new Accessor(AccessorTestPojo.class, readAndWriteableField, new AcceptNoneFilter());
assertFalse(accessor.isWritable());
assertFalse(accessor.isReadable());
}
}