jdk-24/test/langtools/tools/javac/switchextra/MultipleLabelsExpression.java
2022-07-29 17:35:22 +00:00

50 lines
1.3 KiB
Java

/*
* @test /nodynamiccopyright/
* @bug 8206986
* @summary Verify cases with multiple labels work properly.
* @compile/fail/ref=MultipleLabelsExpression-old.out --release 9 -XDrawDiagnostics MultipleLabelsExpression.java
* @compile MultipleLabelsExpression.java
* @run main MultipleLabelsExpression
*/
import java.util.Objects;
import java.util.function.Function;
public class MultipleLabelsExpression {
public static void main(String... args) {
new MultipleLabelsExpression().run();
}
private void run() {
runTest(this::expression1);
}
private void runTest(Function<T, String> print) {
check(T.A, print, "A");
check(T.B, print, "B-C");
check(T.C, print, "B-C");
check(T.D, print, "D");
check(T.E, print, "other");
}
private String expression1(T t) {
return switch (t) {
case A -> "A";
case B, C -> { yield "B-C"; }
case D -> "D";
default -> "other";
};
}
private void check(T t, Function<T, String> print, String expected) {
String result = print.apply(t);
if (!Objects.equals(result, expected)) {
throw new AssertionError("Unexpected result: " + result);
}
}
enum T {
A, B, C, D, E;
}
}