package net.bytebuddy.dynamic.loading; import net.bytebuddy.test.utility.MockitoRule; import net.bytebuddy.test.utility.ObjectPropertyAssertion; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestRule; import org.mockito.Mock; import java.lang.reflect.Method; import java.util.Arrays; import java.util.Iterator; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; public class ByteArrayClassLoaderSynchronizationStrategyTest { private static final String FOO = "foo"; @Rule public TestRule mockitoRule = new MockitoRule(this); @Mock private ClassLoader classLoader; @Test public void testInitialize() throws Exception { assertThat(ByteArrayClassLoader.SynchronizationStrategy.ForLegacyVm.INSTANCE.initialize(), is((ByteArrayClassLoader.SynchronizationStrategy) ByteArrayClassLoader.SynchronizationStrategy.ForLegacyVm.INSTANCE)); } @Test public void testLegacyVm() throws Exception { assertThat(ByteArrayClassLoader.SynchronizationStrategy.ForLegacyVm.INSTANCE.getClassLoadingLock(classLoader, FOO), is((Object) classLoader)); } @Test public void testObjectProperties() throws Exception { ObjectPropertyAssertion.of(ByteArrayClassLoader.SynchronizationStrategy.CreationAction.class).apply(); ObjectPropertyAssertion.of(ByteArrayClassLoader.SynchronizationStrategy.ForLegacyVm.class).apply(); final Iterator<Method> iterator = Arrays.asList(Object.class.getDeclaredMethods()).iterator(); ObjectPropertyAssertion.of(ByteArrayClassLoader.SynchronizationStrategy.ForJava7CapableVm.class).create(new ObjectPropertyAssertion.Creator<Method>() { @Override public Method create() { return iterator.next(); } }).apply(); } }