public void testPartialCU1() throws Exception { IPackageFragment pack1 = fSourceFolder.createPackageFragment("test1", false, null); StringBuffer buf = new StringBuffer(); buf.append("package test1;\n"); buf.append("import java.util.Vector;\n"); buf.append("public class E {\n"); buf.append(" private int fField1;\n"); buf.append(" private int fField2;\n"); buf.append(" public void foo1() {\n"); buf.append(" fField1 = fField2;\n"); buf.append(" }\n"); buf.append(" public int foo1(int i) {\n"); buf.append(" return i;\n"); buf.append(" }\n"); buf.append("}"); String existing = buf.toString(); ICompilationUnit cu = pack1.createCompilationUnit("E.java", existing, false, null); String statement = "fField1 = fField2;"; int offset = existing.indexOf(statement); CompilationUnit astRoot = getPartialCompilationUnit(cu, offset); String string = ASTNodes.asFormattedString(astRoot, 0, String.valueOf('\n'), null); buf = new StringBuffer(); buf.append("package test1;\n"); buf.append("import java.util.Vector;\n"); buf.append("public class E {\n"); buf.append(" private int fField1;\n"); buf.append(" private int fField2;\n"); buf.append(" public void foo1() {\n"); buf.append(" fField1 = fField2;\n"); buf.append(" }\n"); buf.append(" public int foo1(int i) {\n"); buf.append(" }\n"); buf.append("}"); String expected = buf.toString(); assertEqualString(string, expected); offset = expected.indexOf(statement); ASTNode node = NodeFinder.perform(astRoot, offset, statement.length()); Assignment assignment = (Assignment) ((ExpressionStatement) node).getExpression(); Expression e1 = assignment.getLeftHandSide(); Expression e2 = assignment.getRightHandSide(); assertNotNull(e1.resolveTypeBinding()); assertNotNull(e2.resolveTypeBinding()); assertTrue(((SimpleName) e1).resolveBinding() instanceof IVariableBinding); assertTrue(((SimpleName) e2).resolveBinding() instanceof IVariableBinding); assertAllBindings(astRoot); }
public void testPartialCUPositionNotInMethod2() throws Exception { IPackageFragment pack1 = fSourceFolder.createPackageFragment("test1", false, null); StringBuffer buf = new StringBuffer(); buf.append("package test1;\n"); buf.append("import java.util.Vector;\n"); buf.append("import java.io.IOException;\n"); buf.append("import java.text.ParseException;\n"); buf.append("public class E {\n"); buf.append(" private class EInner {\n"); buf.append(" {\n"); buf.append(" System.out.println();\n"); buf.append(" }\n"); buf.append(" }\n"); buf.append(" private int fField1;\n"); buf.append(" private int fField2;\n"); buf.append(" public void foo1() throws IOException, ParseException {\n"); buf.append(" fField1 = fField2;\n"); buf.append(" if (fField1 == 0) {\n"); buf.append(" fField2++;\n"); buf.append(" }\n"); buf.append(" EInner inner = new EInner();\n"); buf.append(" }\n"); buf.append(" public int foo2(int i) {\n"); buf.append(" private class Local {\n"); buf.append(" private int fField3;\n"); buf.append(" public int local(int i) {\n"); buf.append(" return 1;\n"); buf.append(" }\n"); buf.append(" }\n"); buf.append(" Local local = new Local();\n"); buf.append(" return i;\n"); buf.append(" }\n"); buf.append("}"); String existing = buf.toString(); ICompilationUnit cu = pack1.createCompilationUnit("E.java", existing, false, null); int offset = existing.indexOf("private int fField3;"); CompilationUnit astRoot = getPartialCompilationUnit(cu, offset); String string = ASTNodes.asFormattedString(astRoot, 0, String.valueOf('\n'), null); buf = new StringBuffer(); buf.append("package test1;\n"); buf.append("import java.util.Vector;\n"); buf.append("import java.io.IOException;\n"); buf.append("import java.text.ParseException;\n"); buf.append("public class E {\n"); buf.append(" private class EInner {\n"); buf.append(" {\n"); buf.append(" }\n"); buf.append(" }\n"); buf.append(" private int fField1;\n"); buf.append(" private int fField2;\n"); buf.append(" public void foo1() throws IOException, ParseException {\n"); buf.append(" }\n"); buf.append(" public int foo2(int i) {\n"); buf.append(" private class Local {\n"); buf.append(" private int fField3;\n"); buf.append(" public int local(int i) {\n"); buf.append(" return 1;\n"); buf.append(" }\n"); buf.append(" }\n"); buf.append(" Local local = new Local();\n"); buf.append(" return i;\n"); buf.append(" }\n"); buf.append("}"); String expected = buf.toString(); assertEqualString(string, expected); assertAllBindings(astRoot); }