@Before public void setUp() throws Exception { testBean = new TestBean(); classCache.clear(); }
TestBean.class, "bar", NumberUtils.INTEGER_ONE, "a", "b")); TestBean.verify(new ImmutablePair<String, Object[]>("String...", new String[]{"x", "y"}), MethodUtils.invokeStaticMethod(TestBean.class, "varOverloadEchoStatic", "x", "y")); TestBean.verify(new ImmutablePair<String, Object[]>("Number...", new Number[]{17, 23, 42}), MethodUtils.invokeStaticMethod(TestBean.class, "varOverloadEchoStatic", 17, 23, 42)); TestBean.verify(new ImmutablePair<String, Object[]>("String...", new String[]{"x", "y"}), MethodUtils.invokeStaticMethod(TestBean.class, "varOverloadEchoStatic", "x", "y")); TestBean.verify(new ImmutablePair<String, Object[]>("Number...", new Number[]{17, 23, 42}), MethodUtils.invokeStaticMethod(TestBean.class, "varOverloadEchoStatic", 17, 23, 42));
TestBean.verify(new ImmutablePair<String, Object[]>("String...", new String[]{"x", "y"}), MethodUtils.invokeMethod(testBean, "varOverloadEcho", "x", "y")); TestBean.verify(new ImmutablePair<String, Object[]>("Number...", new Number[]{17, 23, 42}), MethodUtils.invokeMethod(testBean, "varOverloadEcho", 17, 23, 42)); TestBean.verify(new ImmutablePair<String, Object[]>("String...", new String[]{"x", "y"}), MethodUtils.invokeMethod(testBean, "varOverloadEcho", "x", "y")); TestBean.verify(new ImmutablePair<String, Object[]>("Number...", new Number[]{17, 23, 42}), MethodUtils.invokeMethod(testBean, "varOverloadEcho", 17, 23, 42));
@Test public void verifyJavaVarargsOverloadingResolution() throws Exception { // This code is not a test of MethodUtils. // Rather it makes explicit the behavior of the Java specification for // various cases of overload resolution. assertEquals("Byte...", TestBean.varOverload((byte) 1, (byte) 2)); assertEquals("Short...", TestBean.varOverload((short) 1, (short) 2)); assertEquals("Integer...", TestBean.varOverload(1, 2)); assertEquals("Long...", TestBean.varOverload(1L, 2L)); assertEquals("Float...", TestBean.varOverload(1f, 2f)); assertEquals("Double...", TestBean.varOverload(1d, 2d)); assertEquals("Character...", TestBean.varOverload('a', 'b')); assertEquals("String...", TestBean.varOverload("a", "b")); assertEquals("Boolean...", TestBean.varOverload(true, false)); assertEquals("Object...", TestBean.varOverload(1, "s")); assertEquals("Object...", TestBean.varOverload(1, true)); assertEquals("Object...", TestBean.varOverload(1.1, true)); assertEquals("Object...", TestBean.varOverload('c', true)); assertEquals("Number...", TestBean.varOverload(1, 1.1)); assertEquals("Number...", TestBean.varOverload(1, 1L)); assertEquals("Number...", TestBean.varOverload(1d, 1f)); assertEquals("Number...", TestBean.varOverload((short) 1, (byte) 1)); assertEquals("Object...", TestBean.varOverload(1, 'c')); assertEquals("Object...", TestBean.varOverload('c', "s")); }
static void verify(final ImmutablePair<String, Object[]> a, final Object _b) { @SuppressWarnings("unchecked") final ImmutablePair<String, Object[]> b = (ImmutablePair<String, Object[]>) _b; verify(a, b); }
@Test public void testVarArgsUnboxing() throws Exception { final TestBean testBean = new TestBean(); final int[] actual = (int[]) MethodUtils.invokeMethod(testBean, "unboxing", Integer.valueOf(1), Integer.valueOf(2)); assertArrayEquals(new int[]{1, 2}, actual); }