Parameterize analysis tests.
Change-Id: I010e7b2983edaaad4a3164578bbabed833d56be1
diff --git a/src/test/java/com/android/tools/r8/ir/analysis/AnalysisTestBase.java b/src/test/java/com/android/tools/r8/ir/analysis/AnalysisTestBase.java
index b2acadc..3af6b17 100644
--- a/src/test/java/com/android/tools/r8/ir/analysis/AnalysisTestBase.java
+++ b/src/test/java/com/android/tools/r8/ir/analysis/AnalysisTestBase.java
@@ -7,6 +7,7 @@
import static org.junit.Assert.fail;
import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestParameters;
import com.android.tools.r8.dex.ApplicationReader;
import com.android.tools.r8.graph.AppInfo;
import com.android.tools.r8.graph.AppView;
@@ -23,23 +24,39 @@
public abstract class AnalysisTestBase extends TestBase {
+ protected final TestParameters parameters;
private final AndroidApp app;
private final String className;
private final InternalOptions options = new InternalOptions();
public AppView<?> appView;
- public AnalysisTestBase(Class<?> clazz) throws Exception {
- this.app = testForD8().release().addProgramClasses(clazz).compile().app;
+ public AnalysisTestBase(TestParameters parameters, Class<?> clazz) throws Exception {
+ this.parameters = parameters;
+ this.app =
+ testForD8()
+ .release()
+ .setMinApi(parameters.getRuntime())
+ .addProgramClasses(clazz)
+ .compile()
+ .app;
this.className = clazz.getTypeName();
}
- public AnalysisTestBase(String mainClassName, Class<?>... classes) throws Exception {
- this.app = testForD8().addProgramClasses(classes).compile().app;
+ public AnalysisTestBase(
+ TestParameters parameters, String mainClassName, Class<?>... classes) throws Exception {
+ this.parameters = parameters;
+ this.app =
+ testForD8()
+ .addProgramClasses(classes)
+ .setMinApi(parameters.getRuntime())
+ .compile()
+ .app;
this.className = mainClassName;
}
- public AnalysisTestBase(AndroidApp app, String className) {
+ public AnalysisTestBase(TestParameters parameters, AndroidApp app, String className) {
+ this.parameters = parameters;
this.app = app;
this.className = className;
}
diff --git a/src/test/java/com/android/tools/r8/ir/analysis/DeterminismAnalysisTest.java b/src/test/java/com/android/tools/r8/ir/analysis/DeterminismAnalysisTest.java
index 1ea789d..5bd8472 100644
--- a/src/test/java/com/android/tools/r8/ir/analysis/DeterminismAnalysisTest.java
+++ b/src/test/java/com/android/tools/r8/ir/analysis/DeterminismAnalysisTest.java
@@ -5,14 +5,24 @@
import static org.junit.Assert.assertEquals;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.ir.code.IRCode;
import java.util.function.Consumer;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+@RunWith(Parameterized.class)
public class DeterminismAnalysisTest extends AnalysisTestBase {
- public DeterminismAnalysisTest() throws Exception {
- super(TestClass.class.getTypeName(), TestClass.class);
+ @Parameterized.Parameters(name = "{0}")
+ public static TestParametersCollection data() {
+ return getTestParameters().withAllRuntimes().build();
+ }
+
+ public DeterminismAnalysisTest(TestParameters parameters) throws Exception {
+ super(parameters, TestClass.class.getTypeName(), TestClass.class);
}
@Test
diff --git a/src/test/java/com/android/tools/r8/ir/analysis/escape/EscapeAnalysisForNameReflectionTest.java b/src/test/java/com/android/tools/r8/ir/analysis/escape/EscapeAnalysisForNameReflectionTest.java
index de19967..1f10390 100644
--- a/src/test/java/com/android/tools/r8/ir/analysis/escape/EscapeAnalysisForNameReflectionTest.java
+++ b/src/test/java/com/android/tools/r8/ir/analysis/escape/EscapeAnalysisForNameReflectionTest.java
@@ -8,6 +8,8 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.ir.analysis.AnalysisTestBase;
@@ -24,11 +26,21 @@
import java.util.function.Consumer;
import java.util.function.Predicate;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+@RunWith(Parameterized.class)
public class EscapeAnalysisForNameReflectionTest extends AnalysisTestBase {
- public EscapeAnalysisForNameReflectionTest() throws Exception {
- super(TestClass.class.getTypeName(), TestClass.class, Helper.class, NamingInterface.class);
+ @Parameterized.Parameters(name = "{0}")
+ public static TestParametersCollection data() {
+ return getTestParameters().withAllRuntimes().build();
+ }
+
+ public EscapeAnalysisForNameReflectionTest(TestParameters parameters) throws Exception {
+ super(
+ parameters,
+ TestClass.class.getTypeName(), TestClass.class, Helper.class, NamingInterface.class);
}
private static Predicate<Instruction> invokesMethodWithName(String name) {
diff --git a/src/test/java/com/android/tools/r8/ir/analysis/type/ArrayTypeTest.java b/src/test/java/com/android/tools/r8/ir/analysis/type/ArrayTypeTest.java
index 2d50834..e5e0a86 100644
--- a/src/test/java/com/android/tools/r8/ir/analysis/type/ArrayTypeTest.java
+++ b/src/test/java/com/android/tools/r8/ir/analysis/type/ArrayTypeTest.java
@@ -9,6 +9,8 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.ir.analysis.AnalysisTestBase;
import com.android.tools.r8.ir.code.ArrayGet;
import com.android.tools.r8.ir.code.ArrayPut;
@@ -20,11 +22,19 @@
import com.android.tools.r8.ir.code.Value;
import java.util.function.Consumer;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+@RunWith(Parameterized.class)
public class ArrayTypeTest extends AnalysisTestBase {
- public ArrayTypeTest() throws Exception {
- super(TestClass.class);
+ @Parameterized.Parameters(name = "{0}")
+ public static TestParametersCollection data() {
+ return getTestParameters().withAllRuntimes().build();
+ }
+
+ public ArrayTypeTest(TestParameters parameters) throws Exception {
+ super(parameters, TestClass.class);
}
@Test
diff --git a/src/test/java/com/android/tools/r8/ir/analysis/type/ConstrainedPrimitiveTypeTest.java b/src/test/java/com/android/tools/r8/ir/analysis/type/ConstrainedPrimitiveTypeTest.java
index 06ea239..fd6ada0 100644
--- a/src/test/java/com/android/tools/r8/ir/analysis/type/ConstrainedPrimitiveTypeTest.java
+++ b/src/test/java/com/android/tools/r8/ir/analysis/type/ConstrainedPrimitiveTypeTest.java
@@ -11,6 +11,8 @@
import static org.junit.Assert.assertEquals;
import com.android.tools.r8.NeverInline;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.ir.analysis.AnalysisTestBase;
import com.android.tools.r8.ir.code.ConstNumber;
import com.android.tools.r8.ir.code.IRCode;
@@ -19,11 +21,19 @@
import com.google.common.collect.Streams;
import java.util.function.Consumer;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+@RunWith(Parameterized.class)
public class ConstrainedPrimitiveTypeTest extends AnalysisTestBase {
- public ConstrainedPrimitiveTypeTest() throws Exception {
- super(TestClass.class);
+ @Parameterized.Parameters(name = "{0}")
+ public static TestParametersCollection data() {
+ return getTestParameters().withAllRuntimes().build();
+ }
+
+ public ConstrainedPrimitiveTypeTest(TestParameters parameters) throws Exception {
+ super(parameters, TestClass.class);
}
@Test
@@ -33,11 +43,11 @@
testForJvm().addTestClasspath().run(TestClass.class).assertSuccessWithOutput(expectedOutput);
- testForR8(Backend.DEX)
+ testForR8(parameters.getBackend())
.addInnerClasses(ConstrainedPrimitiveTypeTest.class)
.addKeepMainRule(TestClass.class)
.enableInliningAnnotations()
- .run(TestClass.class)
+ .run(parameters.getRuntime(), TestClass.class)
.assertSuccessWithOutput(expectedOutput);
}
diff --git a/src/test/java/com/android/tools/r8/ir/analysis/type/TypeConstraintOnTrivialPhiTest.java b/src/test/java/com/android/tools/r8/ir/analysis/type/TypeConstraintOnTrivialPhiTest.java
index 7c69cc4..ad428dd 100644
--- a/src/test/java/com/android/tools/r8/ir/analysis/type/TypeConstraintOnTrivialPhiTest.java
+++ b/src/test/java/com/android/tools/r8/ir/analysis/type/TypeConstraintOnTrivialPhiTest.java
@@ -10,6 +10,8 @@
import static com.android.tools.r8.ir.analysis.type.TypeLatticeElement.LONG;
import static org.junit.Assert.assertEquals;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.ir.analysis.AnalysisTestBase;
import com.android.tools.r8.ir.code.ConstNumber;
@@ -21,7 +23,10 @@
import com.google.common.collect.ImmutableList;
import java.util.function.Consumer;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+@RunWith(Parameterized.class)
public class TypeConstraintOnTrivialPhiTest extends AnalysisTestBase {
private enum Config {
@@ -61,8 +66,13 @@
}
}
- public TypeConstraintOnTrivialPhiTest() throws Exception {
- super(buildApp(), "TestClass");
+ @Parameterized.Parameters(name = "{0}")
+ public static TestParametersCollection data() {
+ return getTestParameters().withAllRuntimes().build();
+ }
+
+ public TypeConstraintOnTrivialPhiTest(TestParameters parameters) throws Exception {
+ super(parameters, buildApp(), "TestClass");
}
public static AndroidApp buildApp() throws Exception {
diff --git a/src/test/java/com/android/tools/r8/ir/analysis/type/UnconstrainedPrimitiveTypeTest.java b/src/test/java/com/android/tools/r8/ir/analysis/type/UnconstrainedPrimitiveTypeTest.java
index ffa586b..09c27ea 100644
--- a/src/test/java/com/android/tools/r8/ir/analysis/type/UnconstrainedPrimitiveTypeTest.java
+++ b/src/test/java/com/android/tools/r8/ir/analysis/type/UnconstrainedPrimitiveTypeTest.java
@@ -8,6 +8,8 @@
import static com.android.tools.r8.ir.analysis.type.TypeLatticeElement.LONG;
import static org.junit.Assert.assertEquals;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.ir.analysis.AnalysisTestBase;
import com.android.tools.r8.ir.code.ConstNumber;
import com.android.tools.r8.ir.code.IRCode;
@@ -19,11 +21,19 @@
import com.google.common.collect.Streams;
import java.util.function.Consumer;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+@RunWith(Parameterized.class)
public class UnconstrainedPrimitiveTypeTest extends AnalysisTestBase {
- public UnconstrainedPrimitiveTypeTest() throws Exception {
- super(buildApp(), "TestClass");
+ @Parameterized.Parameters(name = "{0}")
+ public static TestParametersCollection data() {
+ return getTestParameters().withAllRuntimes().build();
+ }
+
+ public UnconstrainedPrimitiveTypeTest(TestParameters parameters) throws Exception {
+ super(parameters, buildApp(), "TestClass");
}
private static AndroidApp buildApp() throws Exception {
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizerAnalysisTest.java b/src/test/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizerAnalysisTest.java
index d562e53..7cd2190 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizerAnalysisTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizerAnalysisTest.java
@@ -5,6 +5,8 @@
import static org.junit.Assert.assertEquals;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.ir.analysis.AnalysisTestBase;
@@ -15,11 +17,22 @@
import java.util.function.Consumer;
import org.junit.Ignore;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+@RunWith(Parameterized.class)
public class StringBuilderOptimizerAnalysisTest extends AnalysisTestBase {
- public StringBuilderOptimizerAnalysisTest() throws Exception {
- super(StringConcatenationTestClass.class.getTypeName(), StringConcatenationTestClass.class);
+ @Parameterized.Parameters(name = "{0}")
+ public static TestParametersCollection data() {
+ return getTestParameters().withAllRuntimes().build();
+ }
+
+ public StringBuilderOptimizerAnalysisTest(TestParameters parameters) throws Exception {
+ super(
+ parameters,
+ StringConcatenationTestClass.class.getTypeName(),
+ StringConcatenationTestClass.class);
}
@Test
@@ -67,7 +80,7 @@
}));
}
- // TODO(b/114002137): Parameterize tests and make sure analysis result is same at all VMs.
+ // TODO(b/114002137): Make sure analysis result / tests don't depend on VMs.
@Ignore("b/114002137")
@Test
public void testPhiAtInit() throws Exception {