blob: 01431ad6d2109939d5f0d57161ff045a4ef45b61 [file] [log] [blame]
package com.github.javaparser.ast.expr;
import com.github.javaparser.ast.NodeList;
import com.github.javaparser.ast.stmt.BlockStmt;
import com.github.javaparser.ast.stmt.SwitchEntry;
import org.junit.jupiter.api.Test;
import static com.github.javaparser.ast.stmt.SwitchEntry.Type.*;
import static com.github.javaparser.utils.TestParser.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
class SwitchExprTest {
@Test
void jep325Example2() {
NodeList<Expression> entry2labels = parseStatement("int numLetters = switch (day) {\n" +
" case MONDAY, FRIDAY, SUNDAY -> 6;\n" +
" case TUESDAY -> 7;\n" +
" case THURSDAY, SATURDAY -> 8;\n" +
" case WEDNESDAY -> 9;\n" +
"};").findAll(SwitchEntry.class).get(0).getLabels();
assertEquals(3, entry2labels.size());
assertEquals("MONDAY", entry2labels.get(0).toString());
assertEquals("FRIDAY", entry2labels.get(1).toString());
assertEquals("SUNDAY", entry2labels.get(2).toString());
}
@Test
void funkyExpressions() {
parseStatement("int numLetters = switch (day) {\n" +
" case 1+1, 2+2 -> 6;\n" +
" case \"Henk\"-> 7;\n" +
" case ((3)+3)+3 -> 8;\n" +
"};");
}
@Test
void jep325Example3() {
parseBodyDeclaration("static void howMany(int k) {\n" +
" switch (k) {\n" +
" case 1 -> System.out.println(\"one\");\n" +
" case 2 -> System.out.println(\"two\");\n" +
" case 3 -> System.out.println(\"many\");\n" +
" }\n" +
"}");
}
@Test
void aThrowStatement() {
SwitchExpr switchExpr = parseExpression("switch (k) {\n" +
" case 1 -> throw new Exception(\"one\");\n" +
" }").findFirst(SwitchExpr.class).get();
assertEquals(THROWS_STATEMENT, switchExpr.getEntry(0).getType());
}
@Test
void jep325Example4() {
SwitchExpr switchExpr = parseStatement("T result = switch (arg) {\n" +
" case L1 -> e1;\n" +
" case L2 -> e2;\n" +
" default -> e3;\n" +
"};").findFirst(SwitchExpr.class).get();
assertEquals(EXPRESSION, switchExpr.getEntry(0).getType());
}
@Test
void jep325Example5() {
SwitchExpr switchExpr = parseStatement("int j = switch (day) {\n" +
" case MONDAY -> 0;\n" +
" case TUESDAY -> 1;\n" +
" default -> {\n" +
" int k = day.toString().length();\n" +
" int result = f(k);\n" +
" break result;\n" +
" }\n" +
"};").findFirst(SwitchExpr.class).get();
assertEquals(BLOCK, switchExpr.getEntry(2).getType());
assertEquals(BlockStmt.class, switchExpr.getEntry(2).getStatements().get(0).getClass());
}
@Test
void jep325Example6() {
parseStatement("int result = switch (s) {\n" +
" case \"Foo\": \n" +
" break 1;\n" +
" case \"Bar\":\n" +
" break 2;\n" +
" default:\n" +
" System.out.println(\"Neither Foo nor Bar, hmmm...\");\n" +
" break 0;\n" +
"};");
}
}