package net.bytebuddy.utility.privilege; import net.bytebuddy.test.utility.ObjectPropertyAssertion; import org.junit.Test; import java.lang.reflect.AccessibleObject; import java.util.Arrays; import java.util.Iterator; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; public class SetAccessibleActionTest { private static final String BAR = "bar"; @Test public void testAccessAction() throws Exception { AccessibleObjectSpy accessibleObjectSpy = new AccessibleObjectSpy(Foo.class.getDeclaredField(BAR)); assertThat(new SetAccessibleAction<AccessibleObjectSpy>(accessibleObjectSpy).run(), is(accessibleObjectSpy)); assertThat(accessibleObjectSpy.accessible, is(true)); } @Test public void testObjectProperties() throws Exception { final Iterator<AccessibleObject> iterator = Arrays.<AccessibleObject>asList(Foo.class.getDeclaredFields()).iterator(); ObjectPropertyAssertion.of(SetAccessibleAction.class).create(new ObjectPropertyAssertion.Creator<AccessibleObject>() { @Override public AccessibleObject create() { return iterator.next(); } }).apply(); } @SuppressWarnings("unused") private static class Foo { Object bar, qux; } private static class AccessibleObjectSpy extends AccessibleObject { private final AccessibleObject accessibleObject; public boolean accessible; public AccessibleObjectSpy(AccessibleObject accessibleObject) { this.accessibleObject = accessibleObject; } @Override public void setAccessible(boolean flag) { accessible = flag; accessibleObject.setAccessible(flag); } } }