@Test public void testJavaLangReflectMethod() { assertParameterTypes(getMethod(new Object(){ public void m(String p) {}}), "java.lang.String"); assertParameterTypes(getMethod(new Object(){ public void m(String[] p) {}}), "java.lang.String[]"); assertParameterTypes(getMethod(new Object(){ public void m(String[][] p) {}}), "java.lang.String[][]"); assertParameterTypes(getMethod(new Object(){ public void m(List<String> p) {}}), "java.util.List<java.lang.String>"); assertParameterTypes(getMethod(new Object(){ public void m(List<String>[] p) {}}), "java.util.List<java.lang.String>[]"); }
private static void assertParameterTypes(Method m, String... parameterTypes) { MethodHandle handle = new MethodHandle(m); assertEquals(parameterTypes.length, handle.getParameterSize()); for (int i = 0;i < parameterTypes.length;i++) { assertEquals(parameterTypes[i], handle.getParameterAt(i)); } }
@Test public void testInvalid() { String[] a = { "a", "a#", "a#b", "a#b(", "a#b(c", "a#b(,)", }; for (String s : a) { try { MethodHandle.parse(s); fail(); } catch (IllegalArgumentException ignore) { } } }
private static void assertParameterTypes(Method m, String... parameterTypes) { MethodHandle handle = new MethodHandle(m); assertEquals(parameterTypes.length, handle.getParameterSize()); for (int i = 0;i < parameterTypes.length;i++) { assertEquals(parameterTypes[i], handle.getParameterAt(i)); } }
@Test public void testInvalid() { String[] a = { "a", "a#", "a#b", "a#b(", "a#b(c", "a#b(,)", }; for (String s : a) { try { MethodHandle.parse(s); fail(); } catch (IllegalArgumentException ignore) { } } }
@Test public void testJavaLangReflectMethod() { assertParameterTypes(getMethod(new Object(){ public void m(String p) {}}), "java.lang.String"); assertParameterTypes(getMethod(new Object(){ public void m(String[] p) {}}), "java.lang.String[]"); assertParameterTypes(getMethod(new Object(){ public void m(String[][] p) {}}), "java.lang.String[][]"); assertParameterTypes(getMethod(new Object(){ public void m(List<String> p) {}}), "java.util.List<java.lang.String>"); assertParameterTypes(getMethod(new Object(){ public void m(List<String>[] p) {}}), "java.util.List<java.lang.String>[]"); }
@Test public void testParse() { assertEquals(new MethodHandle("a", "b"), MethodHandle.parse("a#b()")); assertEquals(new MethodHandle("a", "b", "c"), MethodHandle.parse("a#b(c)")); assertEquals(new MethodHandle("a", "b", "c", "d"), MethodHandle.parse("a#b(c,d)")); }
@Test public void testToString() { assertEquals("a#b()", new MethodHandle("a", "b").toString()); assertEquals("a#b(c)", new MethodHandle("a", "b", "c").toString()); assertEquals("a#b(c,d)", new MethodHandle("a", "b", "c", "d").toString()); }
@Test public void testParse() { assertEquals(new MethodHandle("a", "b"), MethodHandle.parse("a#b()")); assertEquals(new MethodHandle("a", "b", "c"), MethodHandle.parse("a#b(c)")); assertEquals(new MethodHandle("a", "b", "c", "d"), MethodHandle.parse("a#b(c,d)")); }
@Test public void testToString() { assertEquals("a#b()", new MethodHandle("a", "b").toString()); assertEquals("a#b(c)", new MethodHandle("a", "b", "c").toString()); assertEquals("a#b(c,d)", new MethodHandle("a", "b", "c", "d").toString()); }