public void testRemoveLocalVariable() throws Exception {
final MethodGen mg = getMethod(Foo.class, "bar");
final LocalVariableGen lv = mg.getLocalVariables()[1];
assertEquals("variable name", "a", lv.getName());
final InstructionHandle start = lv.getStart();
final InstructionHandle end = lv.getEnd();
assertNotNull("scope start", start);
assertNotNull("scope end", end);
assertTrue("scope start not targeted by the local variable", Arrays.asList(start.getTargeters()).contains(lv));
assertTrue("scope end not targeted by the local variable", Arrays.asList(end.getTargeters()).contains(lv));
mg.removeLocalVariable(lv);
assertFalse("scope start still targeted by the removed variable", Arrays.asList(start.getTargeters()).contains(lv));
assertFalse("scope end still targeted by the removed variable", Arrays.asList(end.getTargeters()).contains(lv));
assertNull("scope start", lv.getStart());
assertNull("scope end", lv.getEnd());
}
|