### Question:
AbstractCaller implements IActionCaller, IUtilityCaller { @Override public final <T> T call(String actionName, IActionContext actionContext) throws ActionCallException, ActionNotFoundException, InterruptedException { return call(actionName, withSettings, actionContext); } AbstractCaller(); @Override final T call(String actionName, IActionContext actionContext); @Override final T call(String actionName, IActionContext actionContext, IMessage iMessage); @Override final T call(String actionName, IActionContext actionContext, BaseMessage baseMessage); @Override final T call(String actionName, IActionContext actionContext, Object message); @Override final T call(String actionName, IActionContext actionContext, HashMap<?, ?> hashMap); @Override @SuppressWarnings("unchecked") final T call(String utilityName, Object... args);  }### Answer:
@Test public void testIntFunc() throws UtilityCallException, UtilityNotFoundException, InterruptedException { Assert.assertEquals(1, util.<Object>call("func", 1)); }
@Test public void testDoubleFunc() throws UtilityCallException, UtilityNotFoundException, InterruptedException { Assert.assertEquals(1.5, util.<Object>call("func", 1.5)); }
@Test public void testDoubleFuncWithIntArg() throws UtilityCallException, UtilityNotFoundException, InterruptedException { Assert.assertEquals(5.0, util.<Object>call("funcDouble", 5)); }
@Test public void testIntVarArgFunc() throws UtilityCallException, UtilityNotFoundException, InterruptedException { int[] actual = util.call("funcVarInt", 1, 2, 3); int[] expected = { 1, 2, 3 }; Assert.assertArrayEquals(expected, actual); }
@Test public void testDoubleVarArgFunc() throws UtilityCallException, UtilityNotFoundException, InterruptedException { double[] actual = util.call("funcVarDouble", 1.1, 2.2, 3.3); double[] expected = { 1.1, 2.2, 3.3 }; Assert.assertArrayEquals(expected, actual, 0); }
@Test public void testDoubleVarArgFuncWithIntArgs() throws UtilityCallException, UtilityNotFoundException, InterruptedException { double[] actual = util.call("funcVarDouble", 1, 2, 3); double[] expected = { 1, 2, 3 }; Assert.assertArrayEquals(expected, actual, 0); }
@Test public void testVarArgFuncWithSingleArg() throws UtilityCallException, UtilityNotFoundException, InterruptedException { int[] actual = util.call("funcVarInt", 1); int[] expected = { 1 }; Assert.assertArrayEquals(expected, actual); }