package net.bytebuddy.dynamic.loading; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.test.utility.ObjectPropertyAssertion; import org.junit.Test; import java.util.Collections; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.Mockito.*; public class InjectionClassLoaderTest { private static final String FOO = "foo"; @Test(expected = IllegalArgumentException.class) public void testBootrap() throws Exception { InjectionClassLoader.Strategy.INSTANCE.load(null, Collections.<TypeDescription, byte[]>emptyMap()); } @Test @SuppressWarnings("unchecked") public void testInjection() throws Exception { InjectionClassLoader classLoader = mock(InjectionClassLoader.class); TypeDescription typeDescription = mock(TypeDescription.class); byte[] binaryRepresentation = new byte[0]; when(typeDescription.getName()).thenReturn(FOO); when(classLoader.defineClass(FOO, binaryRepresentation)).thenReturn((Class) Object.class); assertThat(InjectionClassLoader.Strategy.INSTANCE.load(classLoader, Collections.singletonMap(typeDescription, binaryRepresentation)), is(Collections.<TypeDescription, Class<?>>singletonMap(typeDescription, Object.class))); verify(classLoader).defineClass(FOO, binaryRepresentation); verifyNoMoreInteractions(classLoader); } @Test(expected = IllegalStateException.class) public void testInjectionException() throws Exception { InjectionClassLoader classLoader = mock(InjectionClassLoader.class); TypeDescription typeDescription = mock(TypeDescription.class); byte[] binaryRepresentation = new byte[0]; when(typeDescription.getName()).thenReturn(FOO); when(classLoader.defineClass(FOO, binaryRepresentation)).thenThrow(new ClassNotFoundException(FOO)); InjectionClassLoader.Strategy.INSTANCE.load(classLoader, Collections.singletonMap(typeDescription, binaryRepresentation)); } @Test public void testObjectProperties() throws Exception { ObjectPropertyAssertion.of(InjectionClassLoader.Strategy.class).apply(); } }