diff options
Diffstat (limited to 'javaparser-testing/src/test/java/com/github/javaparser/ast/stmt')
3 files changed, 139 insertions, 0 deletions
diff --git a/javaparser-testing/src/test/java/com/github/javaparser/ast/stmt/BlockStmtTest.java b/javaparser-testing/src/test/java/com/github/javaparser/ast/stmt/BlockStmtTest.java new file mode 100644 index 000000000..5e5976ab8 --- /dev/null +++ b/javaparser-testing/src/test/java/com/github/javaparser/ast/stmt/BlockStmtTest.java @@ -0,0 +1,21 @@ +package com.github.javaparser.ast.stmt; + +import com.github.javaparser.ast.expr.Expression; +import com.github.javaparser.ast.expr.MethodCallExpr; +import com.github.javaparser.ast.expr.NameExpr; +import org.junit.Test; + +public class BlockStmtTest { + @Test + public 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-testing/src/test/java/com/github/javaparser/ast/stmt/IfElseStmtTest.java b/javaparser-testing/src/test/java/com/github/javaparser/ast/stmt/IfElseStmtTest.java new file mode 100644 index 000000000..5775bd049 --- /dev/null +++ b/javaparser-testing/src/test/java/com/github/javaparser/ast/stmt/IfElseStmtTest.java @@ -0,0 +1,37 @@ +package com.github.javaparser.ast.stmt; + +import com.github.javaparser.JavaParser; +import com.github.javaparser.ast.expr.Expression; +import com.github.javaparser.ast.expr.MethodCallExpr; +import com.github.javaparser.ast.expr.NameExpr; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class IfElseStmtTest { + + @Test + public void issue1247withElseSingleStmt() { + IfStmt ifStmt = (IfStmt) JavaParser.parseStatement("if (cond) doSomething(); else doSomethingElse();"); + assertEquals(false, ifStmt.hasElseBlock()); + assertEquals(true, ifStmt.hasElseBranch()); + assertEquals(false, ifStmt.hasCascadingIfStmt()); + } + + @Test + public void issue1247withElseBlockStmt() { + IfStmt ifStmt = (IfStmt) JavaParser.parseStatement("if (cond) doSomething(); else { doSomethingElse(); }"); + assertEquals(true, ifStmt.hasElseBlock()); + assertEquals(true, ifStmt.hasElseBranch()); + assertEquals(false, ifStmt.hasCascadingIfStmt()); + } + + @Test + public void issue1247withElseSingleStmtWhichIsAnIf() { + IfStmt ifStmt = (IfStmt) JavaParser.parseStatement("if (cond1) doSomething(); else if (cond2) doSomethingElse();"); + assertEquals(false, ifStmt.hasElseBlock()); + assertEquals(true, ifStmt.hasElseBranch()); + assertEquals(true, ifStmt.hasCascadingIfStmt()); + } + +} diff --git a/javaparser-testing/src/test/java/com/github/javaparser/ast/stmt/TryStmtTest.java b/javaparser-testing/src/test/java/com/github/javaparser/ast/stmt/TryStmtTest.java new file mode 100644 index 000000000..1a63b21f7 --- /dev/null +++ b/javaparser-testing/src/test/java/com/github/javaparser/ast/stmt/TryStmtTest.java @@ -0,0 +1,81 @@ +package com.github.javaparser.ast.stmt; + +import com.github.javaparser.JavaParser; +import com.github.javaparser.ParseResult; +import com.github.javaparser.ParseStart; +import com.github.javaparser.ParserConfiguration; +import com.github.javaparser.ast.expr.FieldAccessExpr; +import com.github.javaparser.ast.expr.NameExpr; +import com.github.javaparser.ast.expr.VariableDeclarationExpr; +import com.github.javaparser.ast.validator.Java9Validator; +import org.junit.Test; + +import static com.github.javaparser.ParserConfiguration.LanguageLevel.*; +import static com.github.javaparser.Providers.provider; +import static com.github.javaparser.utils.TestUtils.assertInstanceOf; +import static org.junit.Assert.assertTrue; + +public class TryStmtTest { + @Test + public void simpleTest() { + TryStmt tryStmt = parse9("try(Reader x = new FileReader()){}"); + assertInstanceOf(VariableDeclarationExpr.class, tryStmt.getResources().get(0)); + } + + @Test + public void multipleTest() { + TryStmt tryStmt = parse9("try(Reader x = new FileReader(); Reader x = new FileReader()){}"); + assertInstanceOf(VariableDeclarationExpr.class, tryStmt.getResources().get(0)); + + } + + @Test + public void modifiersTest() { + TryStmt tryStmt = parse9("try(final @A Reader x = new FileReader()){}"); + assertInstanceOf(VariableDeclarationExpr.class, tryStmt.getResources().get(0)); + + } + + @Test + public void simpleVariable() { + TryStmt tryStmt = parse9("try(a){}"); + assertInstanceOf(NameExpr.class, tryStmt.getResources().get(0)); + + } + + @Test + public void twoSimpleVariables() { + TryStmt tryStmt = parse9("try(a;b){}"); + assertInstanceOf(NameExpr.class, tryStmt.getResources().get(0)); + assertInstanceOf(NameExpr.class, tryStmt.getResources().get(1)); + + } + + @Test + public void complexVariable() { + TryStmt tryStmt = parse9("try(a.b.c){}"); + assertInstanceOf(FieldAccessExpr.class, tryStmt.getResources().get(0)); + + } + + @Test + public void superAccess() { + TryStmt tryStmt = parse9("try(super.a){}"); + assertInstanceOf(FieldAccessExpr.class, tryStmt.getResources().get(0)); + + } + + @Test + public void outerClassAccess() { + TryStmt tryStmt = parse9("try(X.this.a){}"); + assertInstanceOf(FieldAccessExpr.class, tryStmt.getResources().get(0)); + + } + + private <T> T parse9(String code) { + JavaParser parser = new JavaParser(new ParserConfiguration().setLanguageLevel(JAVA_9)); + ParseResult<Statement> result = parser.parse(ParseStart.STATEMENT, provider(code)); + assertTrue(result.toString(), result.isSuccessful()); + return (T) result.getResult().get(); + } +} |