Merge "MethodHandle: Add tests for invokeWithArguments(List<?>)"
diff --git a/luni/src/test/java/libcore/java/lang/invoke/MethodHandleCombinersTest.java b/luni/src/test/java/libcore/java/lang/invoke/MethodHandleCombinersTest.java
index f7bfff2..9bf02ef 100644
--- a/luni/src/test/java/libcore/java/lang/invoke/MethodHandleCombinersTest.java
+++ b/luni/src/test/java/libcore/java/lang/invoke/MethodHandleCombinersTest.java
@@ -1214,7 +1214,13 @@
Object ret = handle.invokeWithArguments(new Object[]{"a", "b", "c"});
assertEquals(42, (int) ret);
- handle.invokeWithArguments(new String[]{"a", "b", "c"});
+ ret = handle.invokeWithArguments(new String[]{"a", "b", "c"});
+ assertEquals(42, (int) ret);
+
+ // Also test the versions that take a List<?> instead of an array.
+ ret = handle.invokeWithArguments(Arrays.asList(new Object[] {"a", "b", "c"}));
+ assertEquals(42, (int) ret);
+ ret = handle.invokeWithArguments(Arrays.asList(new String[]{"a", "b", "c"}));
assertEquals(42, (int) ret);
// Pass in an array that's too small. Should throw an IAE.
@@ -1225,6 +1231,14 @@
} catch (WrongMethodTypeException expected) {
}
+ try {
+ handle.invokeWithArguments(Arrays.asList(new Object[]{"a", "b"}));
+ fail();
+ } catch (IllegalArgumentException expected) {
+ } catch (WrongMethodTypeException expected) {
+ }
+
+
// Test implicit unboxing.
MethodType methodType2 = MethodType.methodType(int.class,
new Class<?>[]{String.class, int.class});