Update idempotent call canonicalization test to use TestParameters.
Change-Id: Iaefe7eab9ffe00e7a32663aa406d682000b93267
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/IdempotentFunctionCallCanonicalizationTest.java b/src/test/java/com/android/tools/r8/ir/optimize/IdempotentFunctionCallCanonicalizationTest.java
index 5c731fc..eb679f8 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/IdempotentFunctionCallCanonicalizationTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/IdempotentFunctionCallCanonicalizationTest.java
@@ -4,19 +4,21 @@
package com.android.tools.r8.ir.optimize;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
import static org.junit.Assume.assumeTrue;
+import com.android.tools.r8.D8TestRunResult;
+import com.android.tools.r8.R8TestRunResult;
import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.TestRunResult;
-import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.graph.DexMethod;
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.MethodSubject;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.Streams;
import java.util.ArrayList;
import java.util.HashMap;
@@ -79,7 +81,6 @@
@RunWith(Parameterized.class)
public class IdempotentFunctionCallCanonicalizationTest extends TestBase {
private static final Class<?> MAIN = IdempotentFunctionMain.class;
- private static final List<Class<?>> CLASSES = ImmutableList.of(MAIN);
private static final String JAVA_OUTPUT = StringUtils.lines(
"true",
"false",
@@ -90,21 +91,26 @@
private static final String BOOLEAN_DESCRIPTOR = "Ljava/lang/Boolean;";
private static final String INTEGER_DESCRIPTOR = "Ljava/lang/Integer;";
private static final String LONG_DESCRIPTOR = "Ljava/lang/Long;";
+ private static final int EXPECTED_BOOLEAN_VALUE_OF = 2;
+ private static final int EXPECTED_INTEGER_VALUE_OF = 2;
+ private static final int EXPECTED_LONG_VALUE_OF = 7;
- private final Backend backend;
-
- @Parameterized.Parameters(name = "Backend: {0}")
- public static Backend[] data() {
- return ToolHelper.getBackends();
+ @Parameterized.Parameters(name = "{0}")
+ public static TestParametersCollection data() {
+ return getTestParameters().withAllRuntimes().build();
}
- public IdempotentFunctionCallCanonicalizationTest(Backend backend) {
- this.backend = backend;
+ private final TestParameters parameters;
+
+ public IdempotentFunctionCallCanonicalizationTest(TestParameters parameters) {
+ this.parameters = parameters;
}
@Test
- public void testJVMoutput() throws Exception {
- assumeTrue("Only run JVM reference once (for CF backend)", backend == Backend.CF);
+ public void testJVMOutput() throws Exception {
+ assumeTrue(
+ "Only run JVM reference once (for CF backend)",
+ parameters.getBackend() == Backend.CF);
testForJvm().addTestClasspath().run(MAIN).assertSuccessWithOutput(JAVA_OUTPUT);
}
@@ -140,34 +146,43 @@
@Test
public void testD8() throws Exception {
- assumeTrue("Only run D8 for Dex backend", backend == Backend.DEX);
+ assumeTrue("Only run D8 for Dex backend", parameters.getBackend() == Backend.DEX);
- TestRunResult result = testForD8()
- .debug()
- .addProgramClasses(CLASSES)
- .run(MAIN)
- .assertSuccessWithOutput(JAVA_OUTPUT);
- test(result, 2, 2, 7);
+ D8TestRunResult result =
+ testForD8()
+ .debug()
+ .addProgramClasses(MAIN)
+ .apply(parameters::setMinApiForRuntime)
+ .run(parameters.getRuntime(), MAIN)
+ .assertSuccessWithOutput(JAVA_OUTPUT);
+ test(result, EXPECTED_BOOLEAN_VALUE_OF, EXPECTED_INTEGER_VALUE_OF, EXPECTED_LONG_VALUE_OF);
- result = testForD8()
- .release()
- .addProgramClasses(CLASSES)
- .run(MAIN)
- .assertSuccessWithOutput(JAVA_OUTPUT);
- test(result, 2, 2, 7);
+ result =
+ testForD8()
+ .release()
+ .addProgramClasses(MAIN)
+ .apply(parameters::setMinApiForRuntime)
+ .run(parameters.getRuntime(), MAIN)
+ .assertSuccessWithOutput(JAVA_OUTPUT);
+ test(result, EXPECTED_BOOLEAN_VALUE_OF, EXPECTED_INTEGER_VALUE_OF, EXPECTED_LONG_VALUE_OF);
}
@Test
public void testR8() throws Exception {
- assumeTrue("Only applicable when constants are canonicalized", backend == Backend.DEX);
-
- TestRunResult result = testForR8(backend)
- .addProgramClasses(CLASSES)
- .enableProguardTestOptions()
- .enableInliningAnnotations()
- .addKeepMainRule(MAIN)
- .run(MAIN)
- .assertSuccessWithOutput(JAVA_OUTPUT);
- test(result, 2, 2, 7);
+ R8TestRunResult result =
+ testForR8(parameters.getBackend())
+ .addProgramClasses(MAIN)
+ .enableInliningAnnotations()
+ .addKeepMainRule(MAIN)
+ .apply(parameters::setMinApiForRuntime)
+ .run(parameters.getRuntime(), MAIN)
+ .assertSuccessWithOutput(JAVA_OUTPUT);
+ int expectedBooleanValueOfCount =
+ parameters.getBackend() == Backend.CF ? 6 : EXPECTED_BOOLEAN_VALUE_OF;
+ int expectedIntValueOfCount =
+ parameters.getBackend() == Backend.CF ? 5 : EXPECTED_INTEGER_VALUE_OF;
+ int expectedLongValueOfCount =
+ parameters.getBackend() == Backend.CF ? 10 : EXPECTED_LONG_VALUE_OF;
+ test(result, expectedBooleanValueOfCount, expectedIntValueOfCount, expectedLongValueOfCount);
}
}