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;
