|
|
|
@ -22,6 +22,7 @@ import java.lang.annotation.RetentionPolicy; |
|
|
|
import java.lang.annotation.Target; |
|
|
|
import java.lang.annotation.Target; |
|
|
|
import java.lang.reflect.Constructor; |
|
|
|
import java.lang.reflect.Constructor; |
|
|
|
import java.lang.reflect.Method; |
|
|
|
import java.lang.reflect.Method; |
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.concurrent.Callable; |
|
|
|
import java.util.concurrent.Callable; |
|
|
|
|
|
|
|
|
|
|
|
import org.junit.Before; |
|
|
|
import org.junit.Before; |
|
|
|
@ -149,6 +150,44 @@ public class MethodParameterTests { |
|
|
|
assertThat(methodParameter.getGenericParameterType()).isEqualTo(ResolvableType.forClassWithGenerics(Callable.class, Integer.class).getType()); |
|
|
|
assertThat(methodParameter.getGenericParameterType()).isEqualTo(ResolvableType.forClassWithGenerics(Callable.class, Integer.class).getType()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
public void multipleResolveParameterTypeCalls() throws Exception { |
|
|
|
|
|
|
|
Method method = ArrayList.class.getMethod("get", int.class); |
|
|
|
|
|
|
|
MethodParameter methodParameter = MethodParameter.forExecutable(method, -1); |
|
|
|
|
|
|
|
assertEquals(Object.class, methodParameter.getParameterType()); |
|
|
|
|
|
|
|
GenericTypeResolver.resolveParameterType(methodParameter, StringList.class); |
|
|
|
|
|
|
|
assertEquals(String.class, methodParameter.getParameterType()); |
|
|
|
|
|
|
|
GenericTypeResolver.resolveParameterType(methodParameter, IntegerList.class); |
|
|
|
|
|
|
|
assertEquals(Integer.class, methodParameter.getParameterType()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
public void equalsAndHashCodeConsidersContainingClass() throws Exception { |
|
|
|
|
|
|
|
Method method = ArrayList.class.getMethod("get", int.class); |
|
|
|
|
|
|
|
MethodParameter m1 = MethodParameter.forExecutable(method, -1); |
|
|
|
|
|
|
|
MethodParameter m2 = MethodParameter.forExecutable(method, -1); |
|
|
|
|
|
|
|
MethodParameter m3 = MethodParameter.forExecutable(method, -1).nested(); |
|
|
|
|
|
|
|
assertEquals(m1, m2); |
|
|
|
|
|
|
|
assertNotEquals(m1, m3); |
|
|
|
|
|
|
|
assertEquals(m1.hashCode(), m2.hashCode()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
public void equalsAndHashCodeConsidersNesting() throws Exception { |
|
|
|
|
|
|
|
Method method = ArrayList.class.getMethod("get", int.class); |
|
|
|
|
|
|
|
MethodParameter m1 = MethodParameter.forExecutable(method, -1); |
|
|
|
|
|
|
|
GenericTypeResolver.resolveParameterType(m1, StringList.class); |
|
|
|
|
|
|
|
MethodParameter m2 = MethodParameter.forExecutable(method, -1); |
|
|
|
|
|
|
|
GenericTypeResolver.resolveParameterType(m2, StringList.class); |
|
|
|
|
|
|
|
MethodParameter m3 = MethodParameter.forExecutable(method, -1); |
|
|
|
|
|
|
|
GenericTypeResolver.resolveParameterType(m3, IntegerList.class); |
|
|
|
|
|
|
|
MethodParameter m4 = MethodParameter.forExecutable(method, -1); |
|
|
|
|
|
|
|
assertEquals(m1, m2); |
|
|
|
|
|
|
|
assertNotEquals(m1, m3); |
|
|
|
|
|
|
|
assertNotEquals(m1, m4); |
|
|
|
|
|
|
|
assertEquals(m1.hashCode(), m2.hashCode()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public int method(String p1, long p2) { |
|
|
|
public int method(String p1, long p2) { |
|
|
|
return 42; |
|
|
|
return 42; |
|
|
|
@ -173,4 +212,12 @@ public class MethodParameterTests { |
|
|
|
private @interface Param { |
|
|
|
private @interface Param { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings("serial") |
|
|
|
|
|
|
|
private static class StringList extends ArrayList<String> { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings("serial") |
|
|
|
|
|
|
|
private static class IntegerList extends ArrayList<Integer> { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|