@Override public int compare(Invokable<?, ?> left, Invokable<?, ?> right) { return Ints.compare(left.getParameters().size(), right.getParameters().size()); } };
@Override public int compare(Invokable<?, ?> left, Invokable<?, ?> right) { return Ordering.usingToString().compare(left.getParameters(), right.getParameters()); } };
@Override protected Object handleInvocation(Object proxy, Method method, Object[] args) { Invokable<?, ?> invokable = interfaceType.method(method); ImmutableList<Parameter> params = invokable.getParameters(); for (int i = 0; i < args.length; i++) { Parameter param = params.get(i); if (!isNullable(param)) { checkNotNull(args[i]); } } return dummyReturnValue(interfaceType.resolveType(method.getGenericReturnType())); }
private boolean hasInstanceMethodToTestNulls(Class<?> c, Visibility visibility) { for (Method method : nullPointerTester.getInstanceMethodsToTest(c, visibility)) { for (Parameter param : Invokable.from(method).getParameters()) { if (!NullPointerTester.isPrimitiveOrNullable(param)) { return true; } } } return false; }
public void testAnonymousClassWithTwoParametersConstructor() { abstract class Base { @SuppressWarnings("unused") // called by reflection Base(String s, int i) {} } Class<?> anonymous = new Base("test", 0) {}.getClass(); Constructor<?> constructor = anonymous.getDeclaredConstructors()[0]; assertEquals(2, Invokable.from(constructor).getParameters().size()); }
public void testLocalClassDefaultConstructor() { final int i = 1; final String s = "hello world"; class LocalWithDefaultConstructor implements Runnable { @Override public void run() { System.out.println(s + i); } } Constructor<?> constructor = LocalWithDefaultConstructor.class.getDeclaredConstructors()[0]; assertEquals(0, Invokable.from(constructor).getParameters().size()); }
public void testNestedInnerClassDefaultConstructor() { Constructor<?> constructor = InnerWithDefaultConstructor.NestedInner.class.getDeclaredConstructors()[0]; assertEquals(0, Invokable.from(constructor).getParameters().size()); }
public void testLocalClassWithAnnotatedConstructorParameter() throws Exception { class LocalWithAnnotatedConstructorParameter { @SuppressWarnings("unused") // called by reflection LocalWithAnnotatedConstructorParameter(@Nullable String s) {} } Constructor<?> constructor = LocalWithAnnotatedConstructorParameter.class.getDeclaredConstructors()[0]; Invokable<?, ?> invokable = Invokable.from(constructor); assertEquals(1, invokable.getParameters().size()); assertEquals(TypeToken.of(String.class), invokable.getParameters().get(0).getType()); }
public void testInnerClassWithAnnotatedConstructorParameter() { Constructor<?> constructor = InnerWithAnnotatedConstructorParameter.class.getDeclaredConstructors()[0]; Invokable<?, ?> invokable = Invokable.from(constructor); assertEquals(1, invokable.getParameters().size()); assertEquals(TypeToken.of(String.class), invokable.getParameters().get(0).getType()); }
public void testInnerClassWithOneParameterConstructor() { Constructor<?> constructor = InnerWithOneParameterConstructor.class.getDeclaredConstructors()[0]; Invokable<?, ?> invokable = Invokable.from(constructor); assertEquals(1, invokable.getParameters().size()); assertEquals(TypeToken.of(String.class), invokable.getParameters().get(0).getType()); }
public void testInnerClassWithGenericConstructorParameter() { Constructor<?> constructor = InnerWithGenericConstructorParameter.class.getDeclaredConstructors()[0]; Invokable<?, ?> invokable = Invokable.from(constructor); assertEquals(2, invokable.getParameters().size()); assertEquals(new TypeToken<Iterable<String>>() {}, invokable.getParameters().get(0).getType()); assertEquals(TypeToken.of(String.class), invokable.getParameters().get(1).getType()); }
public void testLocalClassWithGenericConstructorParameter() throws Exception { class LocalWithGenericConstructorParameter { @SuppressWarnings("unused") // called by reflection LocalWithGenericConstructorParameter(Iterable<String> it, String s) {} } Constructor<?> constructor = LocalWithGenericConstructorParameter.class.getDeclaredConstructors()[0]; Invokable<?, ?> invokable = Invokable.from(constructor); assertEquals(2, invokable.getParameters().size()); assertEquals(new TypeToken<Iterable<String>>() {}, invokable.getParameters().get(0).getType()); assertEquals(TypeToken.of(String.class), invokable.getParameters().get(1).getType()); }
public <T extends Container<String>> void testConstructor_parameterTypes() throws NoSuchMethodException { @SuppressWarnings("rawtypes") // Reflection API skew Constructor<Container> constructor = Container.class.getConstructor(Object.class); Invokable<T, ?> invokable = new TypeToken<T>(getClass()) {}.constructor(constructor); ImmutableList<Parameter> params = invokable.getParameters(); assertEquals(1, params.size()); assertEquals(TypeToken.of(String.class), params.get(0).getType()); }
public <T extends List<String>> void testMethod_parameterTypes() throws NoSuchMethodException { Method setMethod = List.class.getMethod("set", int.class, Object.class); Invokable<T, ?> invokable = new TypeToken<T>(getClass()) {}.method(setMethod); ImmutableList<Parameter> params = invokable.getParameters(); assertEquals(2, params.size()); assertEquals(TypeToken.of(int.class), params.get(0).getType()); assertEquals(TypeToken.of(String.class), params.get(1).getType()); }
public void testNulls() { for (Method method : ParameterTest.class.getDeclaredMethods()) { for (Parameter param : Invokable.from(method).getParameters()) { new NullPointerTester().testAllPublicInstanceMethods(param); } } }
public void testWildcardCaptured_methodParameter_upperBound() throws Exception { TypeToken<Holder<?>> type = new TypeToken<Holder<?>>() {}; ImmutableList<Parameter> parameters = type.method(Holder.class.getDeclaredMethod("setList", List.class)).getParameters(); assertThat(parameters).hasSize(1); TypeToken<?> parameterType = parameters.get(0).getType(); assertEquals(List.class, parameterType.getRawType()); assertFalse( parameterType.getType().toString(), parameterType.isSupertypeOf(new TypeToken<List<Integer>>() {})); }
public void testWildcardCaptured_wildcardWithExplicitBound() throws Exception { TypeToken<Holder<? extends Number>> type = new TypeToken<Holder<? extends Number>>() {}; ImmutableList<Parameter> parameters = type.method(Holder.class.getDeclaredMethod("setList", List.class)).getParameters(); assertThat(parameters).hasSize(1); TypeToken<?> parameterType = parameters.get(0).getType(); Type[] typeArgs = ((ParameterizedType) parameterType.getType()).getActualTypeArguments(); assertThat(typeArgs).asList().hasSize(1); TypeVariable<?> captured = (TypeVariable<?>) typeArgs[0]; assertThat(captured.getBounds()).asList().containsExactly(Number.class); assertThat(new TypeToken<List<? extends Number>>() {}.isSupertypeOf(parameterType)).isTrue(); }
public void testWildcardCaptured_wildcardWithImplicitBound() throws Exception { TypeToken<Holder<?>> type = new TypeToken<Holder<?>>() {}; ImmutableList<Parameter> parameters = type.method(Holder.class.getDeclaredMethod("setList", List.class)).getParameters(); assertThat(parameters).hasSize(1); TypeToken<?> parameterType = parameters.get(0).getType(); Type[] typeArgs = ((ParameterizedType) parameterType.getType()).getActualTypeArguments(); assertThat(typeArgs).asList().hasSize(1); TypeVariable<?> captured = (TypeVariable<?>) typeArgs[0]; assertThat(captured.getBounds()).asList().containsExactly(Object.class); assertThat(new TypeToken<List<?>>() {}.isSupertypeOf(parameterType)).isTrue(); }
public void testEquals() { EqualsTester tester = new EqualsTester(); for (Method method : ParameterTest.class.getDeclaredMethods()) { for (Parameter param : Invokable.from(method).getParameters()) { tester.addEqualityGroup(param); } } tester.testEquals(); }
public void testInstanceMethod_parameters() throws Exception { Invokable<?, ?> delegate = Prepender.method("prepend", Iterable.class); ImmutableList<Parameter> parameters = delegate.getParameters(); assertEquals(1, parameters.size()); assertEquals(new TypeToken<Iterable<String>>() {}, parameters.get(0).getType()); assertThat(parameters.get(0).getAnnotations()).isEmpty(); new EqualsTester().addEqualityGroup(parameters.get(0)).testEquals(); }