Migrate legacy test B124357885Test

Bug: 167145686
Change-Id: I317a7cfb596052ea6dc944bb6e6fd03ce26d0868
diff --git a/src/test/java/com/android/tools/r8/naming/b124357885/B124357885Test.java b/src/test/java/com/android/tools/r8/naming/b124357885/B124357885Test.java
index 18d0719..8757685 100644
--- a/src/test/java/com/android/tools/r8/naming/b124357885/B124357885Test.java
+++ b/src/test/java/com/android/tools/r8/naming/b124357885/B124357885Test.java
@@ -14,9 +14,11 @@
 
 import com.android.tools.r8.R8TestCompileResult;
 import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.graph.DexAnnotationElement;
 import com.android.tools.r8.graph.DexValue;
 import com.android.tools.r8.graph.DexValue.DexValueArray;
+import com.android.tools.r8.shaking.ProguardKeepAttributes;
 import com.android.tools.r8.utils.BooleanUtils;
 import com.android.tools.r8.utils.DescriptorUtils;
 import com.android.tools.r8.utils.StringUtils;
@@ -25,20 +27,26 @@
 import com.android.tools.r8.utils.codeinspector.MethodSubject;
 import java.lang.reflect.Method;
 import java.lang.reflect.ParameterizedType;
+import java.util.List;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
 
 @RunWith(Parameterized.class)
 public class B124357885Test extends TestBase {
-  public final boolean minification;
 
-  @Parameterized.Parameters(name = "Minification: {0}")
-  public static Boolean[] data() {
-    return BooleanUtils.values();
+  private final TestParameters parameters;
+  private final boolean minification;
+
+  @Parameters(name = "{0}, minification: {1}")
+  public static List<Object[]> data() {
+    return buildParameters(
+        getTestParameters().withAllRuntimesAndApiLevels().build(), BooleanUtils.values());
   }
 
-  public B124357885Test(boolean minification) {
+  public B124357885Test(TestParameters parameters, boolean minification) {
+    this.parameters = parameters;
     this.minification = minification;
   }
 
@@ -69,11 +77,15 @@
   @Test
   public void test() throws Exception {
     R8TestCompileResult compileResult =
-        testForR8(Backend.DEX)
+        testForR8(parameters.getBackend())
             .addProgramClasses(Main.class, Service.class, Foo.class, FooImpl.class)
             .addKeepMainRule(Main.class)
-            .addKeepRules("-keepattributes Signature,InnerClasses,EnclosingMethod")
+            .addKeepAttributes(
+                ProguardKeepAttributes.SIGNATURE,
+                ProguardKeepAttributes.INNER_CLASSES,
+                ProguardKeepAttributes.ENCLOSING_METHOD)
             .minification(minification)
+            .setMinApi(parameters.getApiLevel())
             .compile()
             .inspect(
                 inspector -> {
@@ -88,31 +100,31 @@
                   checkSignatureAnnotation(inspector, signature);
                 });
 
-        String fooImplFinalName = compileResult.inspector().clazz(FooImpl.class).getFinalName();
+    String fooImplFinalName = compileResult.inspector().clazz(FooImpl.class).getFinalName();
 
-        compileResult
-            .run(Main.class)
-            .assertSuccessWithOutput(StringUtils.lines(fooImplFinalName, fooImplFinalName));
+    compileResult
+        .run(parameters.getRuntime(), Main.class)
+        .assertSuccessWithOutput(StringUtils.lines(fooImplFinalName, fooImplFinalName));
   }
-}
 
-class Main {
-  public static void main(String... args) throws Exception {
-    Method method = Service.class.getMethod("fooList");
-    ParameterizedType type = (ParameterizedType) method.getGenericReturnType();
-    Class<?> rawType = (Class<?>) type.getRawType();
-    System.out.println(rawType.getName());
+  public static class Main {
+    public static void main(String... args) throws Exception {
+      Method method = Service.class.getMethod("fooList");
+      ParameterizedType type = (ParameterizedType) method.getGenericReturnType();
+      Class<?> rawType = (Class<?>) type.getRawType();
+      System.out.println(rawType.getName());
 
-    // Convince R8 we only use subtypes to get class merging of Foo into FooImpl.
-    Foo<String> foo = new FooImpl<>();
-    System.out.println(foo.getClass().getCanonicalName());
+      // Convince R8 we only use subtypes to get class merging of Foo into FooImpl.
+      Foo<String> foo = new FooImpl<>();
+      System.out.println(foo.getClass().getCanonicalName());
+    }
   }
+
+  interface Service {
+    Foo<String> fooList();
+  }
+
+  interface Foo<T> {}
+
+  public static class FooImpl<T> implements Foo<T> {}
 }
-
-interface Service {
-  Foo<String> fooList();
-}
-
-interface Foo<T> {}
-
-class FooImpl<T> implements Foo<T> {}