@Test public void testGetTargetBlockMethodInSuperInterface() throws Exception { assertEquals( toSootClass(F.class).getMethodByName("run"), ObjCBlockPlugin.getBlockTargetMethod( toSootClass(Runners.class).getMethodByName("runner2"), 0)); }
@Test public void testGetTargetBlockMethodDirect2() throws Exception { assertEquals( toSootClass(Runnable.class).getMethodByName("run"), ObjCBlockPlugin.getBlockTargetMethod( toSootClass(Runners.class).getMethodByName("runner9"), 0)); }
private void testResolveTargetMethodSignature( String runnerMethodName, Type expectedReturnType, Type... expectedParamTypes) { SootMethod m = toSootClass(Runners.class).getMethodByName(runnerMethodName); SootMethodType mType = new SootMethodType(m); SootMethod target = ObjCBlockPlugin.getBlockTargetMethod(m, 0); Type[] types = ObjCBlockPlugin.resolveTargetMethodSignature( m, target, mType.getGenericParameterTypes()[0]); assertEquals(target.getParameterCount() + 1, types.length); assertEquals(expectedReturnType, types[0]); for (int i = 0; i < types.length - 1; i++) { assertEquals(expectedParamTypes[i], types[i + 1]); } }
@Test(expected = CompilerException.class) public void testGetTargetBlockMethodNoMethods() throws Exception { ObjCBlockPlugin.getBlockTargetMethod(toSootClass(Runners.class).getMethodByName("runner12"), 0); }