package net.bytebuddy.utility;
import net.bytebuddy.test.utility.ObjectPropertyAssertion;
import org.junit.Test;
import java.lang.instrument.Instrumentation;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Iterator;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
public class JavaModuleTest {
private static final String FOO = "foo";
@Test
public void testSupportsDisabledThrowException() throws Exception {
assertThat(JavaModule.Dispatcher.Disabled.INSTANCE.isAlive(), is(false));
}
@Test(expected = IllegalArgumentException.class)
public void testExtractModule() throws Exception {
JavaModule.of(mock(Object.class));
}
@Test
public void testUnwrap() throws Exception {
Object object = new Object();
JavaModule module = new JavaModule(object);
assertThat(module.unwrap(), sameInstance(object));
}
@Test(expected = IllegalStateException.class)
public void testIsNamedDisabledThrowException() throws Exception {
JavaModule.Dispatcher.Disabled.INSTANCE.isNamed(mock(Object.class));
}
@Test(expected = IllegalStateException.class)
public void testGetNameDisabledThrowException() throws Exception {
JavaModule.Dispatcher.Disabled.INSTANCE.getName(mock(Object.class));
}
@Test(expected = IllegalStateException.class)
public void testGetClassLoaderDisabledThrowException() throws Exception {
JavaModule.Dispatcher.Disabled.INSTANCE.getClassLoader(mock(Object.class));
}
@Test(expected = IllegalStateException.class)
public void testCanReadThrowsException() throws Exception {
JavaModule.Dispatcher.Disabled.INSTANCE.canRead(mock(Object.class), mock(Object.class));
}
@Test(expected = IllegalStateException.class)
public void testGetResourceAsStreamThrowsException() throws Exception {
JavaModule.Dispatcher.Disabled.INSTANCE.getResourceAsStream(mock(Object.class), FOO);
}
@Test(expected = IllegalStateException.class)
public void testAddReadsThrowsException() throws Exception {
JavaModule.Dispatcher.Disabled.INSTANCE.addReads(mock(Instrumentation.class), mock(Object.class), mock(Object.class));
}
@Test
public void testDisabledModuleIsNull() throws Exception {
assertThat(JavaModule.Dispatcher.Disabled.INSTANCE.moduleOf(Object.class), nullValue(JavaModule.class));
}
@Test
public void testObjectProperties() throws Exception {
ObjectPropertyAssertion.of(JavaModule.class).apply();
Object object = new Object();
assertThat(new JavaModule(object).hashCode(), is(object.hashCode()));
assertThat(new JavaModule(object).toString(), is(object.toString()));
final Iterator<Method> iterator = Arrays.asList(String.class.getDeclaredMethods()).iterator();
ObjectPropertyAssertion.of(JavaModule.Dispatcher.Enabled.class).create(new ObjectPropertyAssertion.Creator<Method>() {
@Override
public Method create() {
return iterator.next();
}
}).apply();
ObjectPropertyAssertion.of(JavaModule.Dispatcher.Disabled.class).apply();
ObjectPropertyAssertion.of(JavaModule.Dispatcher.CreationAction.class).apply();
}
}