diff --git a/javaparser-core-testing/src/test/java/com/github/javaparser/ast/stmt/BlockStmtTest.java b/javaparser-core-testing/src/test/java/com/github/javaparser/ast/stmt/BlockStmtTest.java deleted file mode 100644 index 7487942261..0000000000 --- a/javaparser-core-testing/src/test/java/com/github/javaparser/ast/stmt/BlockStmtTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.github.javaparser.ast.stmt; - -import com.github.javaparser.JavaParser; -import com.github.javaparser.ParserConfiguration; -import com.github.javaparser.StaticJavaParser; -import com.github.javaparser.ast.expr.Expression; -import com.github.javaparser.ast.expr.MethodCallExpr; -import com.github.javaparser.ast.expr.NameExpr; -import com.github.javaparser.printer.lexicalpreservation.LexicalPreservingPrinter; -import org.junit.jupiter.api.Test; - -import static com.github.javaparser.StaticJavaParser.parse; -import static com.github.javaparser.utils.TestUtils.assertEqualsNoEol; -import static com.github.javaparser.utils.Utils.EOL; - -class BlockStmtTest { - @Test - void issue748AddingIdenticalStatementsDoesParentingRight() { - BlockStmt blockStmt = new BlockStmt(); - Expression exp = new NameExpr("x"); - MethodCallExpr expression = new MethodCallExpr(exp, "y"); - - blockStmt.addStatement(expression); - blockStmt.addStatement(expression.clone()); - // This fails when the issue exists: - String s = blockStmt.toString(); - } -} diff --git a/javaparser-core-testing/src/test/java/com/github/javaparser/printer/lexicalpreservation/TransformationsTest.java b/javaparser-core-testing/src/test/java/com/github/javaparser/printer/lexicalpreservation/TransformationsTest.java index 1e149ebd9f..d18ea5d286 100644 --- a/javaparser-core-testing/src/test/java/com/github/javaparser/printer/lexicalpreservation/TransformationsTest.java +++ b/javaparser-core-testing/src/test/java/com/github/javaparser/printer/lexicalpreservation/TransformationsTest.java @@ -1,6 +1,8 @@ package com.github.javaparser.printer.lexicalpreservation; import com.github.javaparser.StaticJavaParser; +import com.github.javaparser.ast.CompilationUnit; +import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration; import com.github.javaparser.ast.body.FieldDeclaration; import com.github.javaparser.ast.body.MethodDeclaration; import com.github.javaparser.ast.body.VariableDeclarator; @@ -11,10 +13,12 @@ import com.github.javaparser.ast.stmt.ReturnStmt; import com.github.javaparser.ast.stmt.Statement; import com.github.javaparser.ast.type.ArrayType; +import com.github.javaparser.ast.type.ClassOrInterfaceType; import com.github.javaparser.ast.type.PrimitiveType; import org.junit.jupiter.api.Test; import java.io.IOException; +import java.lang.reflect.Method; import static com.github.javaparser.ast.Modifier.Keyword.STATIC; import static com.github.javaparser.utils.TestUtils.assertEqualsNoEol; @@ -147,11 +151,11 @@ void exampleParam5() throws IOException { } @Test - void issue2099AddingAddingStatementAfterTraillingComment1() { + void issue2099AddingStatementAfterTraillingComment1() { Statement statement = LexicalPreservingPrinter.setup(StaticJavaParser.parseStatement( " if(value != null) {" + EOL + - " value.value();" + EOL + - " }")); + " value.value();" + EOL + + " }")); BlockStmt blockStmt = LexicalPreservingPrinter.setup(StaticJavaParser.parseBlock("{" + EOL + " value1();" + EOL + @@ -171,11 +175,11 @@ void issue2099AddingAddingStatementAfterTraillingComment1() { } @Test - void issue2099AddingAddingStatementAfterTraillingComment2() { + void issue2099AddingStatementAfterTraillingComment2() { Statement statement = LexicalPreservingPrinter.setup(StaticJavaParser.parseStatement( " if(value != null) {" + EOL + - " value.value();" + EOL + - " }")); + " value.value();" + EOL + + " }")); BlockStmt blockStmt = LexicalPreservingPrinter.setup(StaticJavaParser.parseBlock("{" + EOL + " value1();" + EOL + @@ -195,4 +199,63 @@ void issue2099AddingAddingStatementAfterTraillingComment2() { } + @Test + void AddingStatement1() { + Statement statement = LexicalPreservingPrinter.setup(StaticJavaParser.parseStatement( + " if(value != null) {" + EOL + + " value.value();" + EOL + + " }")); + + CompilationUnit compilationUnit = LexicalPreservingPrinter.setup(StaticJavaParser.parse("public class Test {" + EOL + + " public void method() {" + EOL + + " value1();" + EOL + + " value2(); // Test" + EOL + + " }" + EOL + + "}")); + ClassOrInterfaceDeclaration classOrInterfaceDeclaration = (ClassOrInterfaceDeclaration)compilationUnit.getChildNodes().get(0); + MethodDeclaration methodDeclaration = (MethodDeclaration)classOrInterfaceDeclaration.getChildNodes().get(2); + methodDeclaration.getBody().get().addStatement(statement); + + String s = LexicalPreservingPrinter.print(compilationUnit); + String expected = "public class Test {\n" + + " public void method() {\n" + + " value1();\n" + + " value2(); // Test\n" + + " if(value != null) {\n" + + " value.value();\n" + + " }\n" + + " }\n" + + "}"; + assertEqualsNoEol(expected, s); + } + + @Test + void AddingStatement2() { + Statement statement = LexicalPreservingPrinter.setup(StaticJavaParser.parseStatement( + " if(value != null) {" + EOL + + " value.value();" + EOL + + " }")); + + CompilationUnit compilationUnit = LexicalPreservingPrinter.setup(StaticJavaParser.parse("public class Test {" + EOL + + " public void method() {" + EOL + + " value1();" + EOL + + " value2();" + EOL + + " }" + EOL + + "}")); + ClassOrInterfaceDeclaration classOrInterfaceDeclaration = (ClassOrInterfaceDeclaration)compilationUnit.getChildNodes().get(0); + MethodDeclaration methodDeclaration = (MethodDeclaration)classOrInterfaceDeclaration.getChildNodes().get(2); + methodDeclaration.getBody().get().addStatement(statement); + + String s = LexicalPreservingPrinter.print(compilationUnit); + String expected = "public class Test {\n" + + " public void method() {\n" + + " value1();\n" + + " value2();\n" + + " if(value != null) {\n" + + " value.value();\n" + + " }\n" + + " }\n" + + "}"; + assertEqualsNoEol(expected, s); + } }