package net.bytebuddy.pool; import org.junit.Test; import org.objectweb.asm.Type; import java.util.List; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.MatcherAssert.assertThat; public class TypePoolDefaultParameterBagTest { private static final String FOO = "foo", BAR = "bar", QUX = "qux"; @Test public void testFullResolutionStaticMethod() throws Exception { Type[] type = new Type[3]; type[0] = Type.getType(Object.class); type[1] = Type.getType(long.class); type[2] = Type.getType(String.class); TypePool.Default.ParameterBag parameterBag = new TypePool.Default.ParameterBag(type); parameterBag.register(0, FOO); parameterBag.register(1, BAR); parameterBag.register(3, QUX); List<TypePool.Default.LazyTypeDescription.MethodToken.ParameterToken> tokens = parameterBag.resolve(true); assertThat(tokens.size(), is(3)); assertThat(tokens.get(0).getName(), is(FOO)); assertThat(tokens.get(1).getName(), is(BAR)); assertThat(tokens.get(2).getName(), is(QUX)); assertThat(tokens.get(0).getModifiers(), nullValue(Integer.class)); assertThat(tokens.get(1).getModifiers(), nullValue(Integer.class)); assertThat(tokens.get(2).getModifiers(), nullValue(Integer.class)); } @Test public void testFullResolutionNonStaticMethod() throws Exception { Type[] type = new Type[3]; type[0] = Type.getType(Object.class); type[1] = Type.getType(long.class); type[2] = Type.getType(String.class); TypePool.Default.ParameterBag parameterBag = new TypePool.Default.ParameterBag(type); parameterBag.register(1, FOO); parameterBag.register(2, BAR); parameterBag.register(4, QUX); List<TypePool.Default.LazyTypeDescription.MethodToken.ParameterToken> tokens = parameterBag.resolve(false); assertThat(tokens.size(), is(3)); assertThat(tokens.get(0).getName(), is(FOO)); assertThat(tokens.get(1).getName(), is(BAR)); assertThat(tokens.get(2).getName(), is(QUX)); assertThat(tokens.get(0).getModifiers(), nullValue(Integer.class)); assertThat(tokens.get(1).getModifiers(), nullValue(Integer.class)); assertThat(tokens.get(2).getModifiers(), nullValue(Integer.class)); } @Test public void testPartlyResolutionStaticMethod() throws Exception { Type[] type = new Type[3]; type[0] = Type.getType(Object.class); type[1] = Type.getType(long.class); type[2] = Type.getType(String.class); TypePool.Default.ParameterBag parameterBag = new TypePool.Default.ParameterBag(type); parameterBag.register(0, FOO); parameterBag.register(3, QUX); List<TypePool.Default.LazyTypeDescription.MethodToken.ParameterToken> tokens = parameterBag.resolve(true); assertThat(tokens.size(), is(3)); assertThat(tokens.get(0).getName(), is(FOO)); assertThat(tokens.get(1).getName(), nullValue(String.class)); assertThat(tokens.get(2).getName(), is(QUX)); assertThat(tokens.get(0).getModifiers(), nullValue(Integer.class)); assertThat(tokens.get(1).getModifiers(), nullValue(Integer.class)); assertThat(tokens.get(2).getModifiers(), nullValue(Integer.class)); } @Test public void testEmptyResolutionStaticMethod() throws Exception { Type[] type = new Type[3]; type[0] = Type.getType(Object.class); type[1] = Type.getType(long.class); type[2] = Type.getType(String.class); TypePool.Default.ParameterBag parameterBag = new TypePool.Default.ParameterBag(type); List<TypePool.Default.LazyTypeDescription.MethodToken.ParameterToken> tokens = parameterBag.resolve(true); assertThat(tokens.size(), is(3)); assertThat(tokens.get(0).getName(), nullValue(String.class)); assertThat(tokens.get(1).getName(), nullValue(String.class)); assertThat(tokens.get(2).getName(), nullValue(String.class)); assertThat(tokens.get(0).getModifiers(), nullValue(Integer.class)); assertThat(tokens.get(1).getModifiers(), nullValue(Integer.class)); assertThat(tokens.get(2).getModifiers(), nullValue(Integer.class)); } }