Update SwitchCaseRemovalTest to verify redundant cases are removed
Change-Id: I7e78c2c7bee4ceba6fa83ecd1bcdfec5326abc98
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/SwitchCaseRemovalTest.java b/src/test/java/com/android/tools/r8/ir/optimize/SwitchCaseRemovalTest.java
index 1e430ad..3dbf05f 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/SwitchCaseRemovalTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/SwitchCaseRemovalTest.java
@@ -15,11 +15,16 @@
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.ir.code.IRCode;
+import com.android.tools.r8.ir.code.Instruction;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.codeinspector.ClassSubject;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.android.tools.r8.utils.codeinspector.InstructionSubject;
import com.android.tools.r8.utils.codeinspector.MethodSubject;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Streams;
+import java.util.Set;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -71,6 +76,9 @@
assertEquals(
parameters.isCfRuntime() ? 3 : 2,
methodSubject.streamInstructions().filter(InstructionSubject::isReturnObject).count());
+ verifyUniqueSwitchHasExactCases(
+ methodSubject.buildIR(),
+ parameters.isCfRuntime() ? ImmutableSet.of(0, 1) : ImmutableSet.of(0));
}
{
@@ -88,6 +96,19 @@
}
}
+ private void verifyUniqueSwitchHasExactCases(IRCode code, Set<Integer> expectedCases) {
+ Streams.stream(code.instructions())
+ .filter(Instruction::isSwitch)
+ .map(Instruction::asSwitch)
+ .forEach(
+ theSwitch -> {
+ assertEquals(expectedCases.size(), theSwitch.numberOfKeys());
+ for (int i : theSwitch.getKeys()) {
+ assertTrue(expectedCases.contains(i));
+ }
+ });
+ }
+
static class TestClass {
public static final int x = System.currentTimeMillis() >= 0 ? 0 : 42;