Move test to jdk11 package
Bug: b/341991457
Change-Id: I317ecdcbfa93189f5fdb9b0025888e8cedb3914f
diff --git a/src/test/examplesJava11/nesthostexample/NestOnProgramOnClassPathTest.java b/src/test/examplesJava11/nesthostexample/NestOnProgramOnClassPathTest.java
new file mode 100644
index 0000000..d2e3d0c
--- /dev/null
+++ b/src/test/examplesJava11/nesthostexample/NestOnProgramOnClassPathTest.java
@@ -0,0 +1,114 @@
+// Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package nesthostexample;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import com.android.tools.r8.D8TestCompileResult;
+import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.utils.codeinspector.CodeInspector;
+import com.android.tools.r8.utils.codeinspector.FoundClassSubject;
+import com.android.tools.r8.utils.codeinspector.FoundMethodSubject;
+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 NestOnProgramOnClassPathTest extends TestBase {
+
+ public NestOnProgramOnClassPathTest(TestParameters parameters) {
+ this.parameters = parameters;
+ }
+
+ private final TestParameters parameters;
+
+ @Parameters(name = "{0}")
+ public static TestParametersCollection data() {
+ return getTestParameters().withDexRuntimes().withAllApiLevels().build();
+ }
+
+ @Test
+ public void testD8MethodBridgesPresent() throws Exception {
+ parameters.assumeDexRuntime();
+ Class<?> nestHost = BasicNestHostWithInnerClassMethods.class;
+ // 1 inner class.
+ D8TestCompileResult singleInner =
+ compileClassesWithD8ProgramClasses(
+ nestHost, BasicNestHostWithInnerClassMethods.BasicNestedClass.class);
+ singleInner.inspect(inspector -> assertThisNumberOfBridges(inspector, 2));
+ // Outer class.
+ D8TestCompileResult host = compileClassesWithD8ProgramClasses(nestHost, nestHost);
+ host.inspect(inspector -> assertThisNumberOfBridges(inspector, 2));
+ // 2 inner classes.
+ D8TestCompileResult multipleInner =
+ compileClassesWithD8ProgramClasses(
+ NestHostExample.class,
+ NestHostExample.StaticNestMemberInner.class,
+ NestHostExample.StaticNestMemberInner.StaticNestMemberInnerInner.class);
+ multipleInner.inspect(inspector -> assertThisNumberOfBridges(inspector, 5));
+ }
+
+ @Test
+ public void testD8ConstructorBridgesPresent() throws Exception {
+ parameters.assumeDexRuntime();
+ Class<?> nestHost = BasicNestHostWithInnerClassConstructors.class;
+ D8TestCompileResult inner =
+ compileClassesWithD8ProgramClasses(
+ nestHost, BasicNestHostWithInnerClassConstructors.BasicNestedClass.class);
+ inner.inspect(
+ inspector -> {
+ assertThisNumberOfBridges(inspector, 3);
+ assertNestConstructor(inspector);
+ });
+ D8TestCompileResult host = compileClassesWithD8ProgramClasses(nestHost, nestHost);
+ host.inspect(
+ inspector -> {
+ assertThisNumberOfBridges(inspector, 1);
+ assertNestConstructor(inspector);
+ });
+ }
+
+ @Test
+ public void testD8ConstructorNestMergeCorrect() throws Exception {
+ // Multiple Nest Constructor classes have to be merged here.
+ parameters.assumeDexRuntime();
+ Class<?> nestHost = BasicNestHostWithInnerClassConstructors.class;
+ D8TestCompileResult inner =
+ compileClassesWithD8ProgramClasses(
+ nestHost, BasicNestHostWithInnerClassConstructors.BasicNestedClass.class);
+ D8TestCompileResult host = compileClassesWithD8ProgramClasses(nestHost, nestHost);
+ testForD8()
+ .addProgramFiles(inner.writeToZip(), host.writeToZip())
+ .setMinApi(parameters)
+ .compile()
+ .run(parameters.getRuntime(), nestHost)
+ .assertSuccessWithOutputLines(BasicNestHostWithInnerClassConstructors.getExpectedResult());
+ }
+
+ private D8TestCompileResult compileClassesWithD8ProgramClasses(
+ Class<?> nestHost, Class<?>... classes) throws Exception {
+ return testForD8()
+ .setMinApi(parameters)
+ .addProgramClasses(classes)
+ .addClasspathClasses(nestHost.getNestMembers())
+ .compile();
+ }
+
+ private static void assertNestConstructor(CodeInspector inspector) {
+ assertTrue(inspector.allClasses().stream().anyMatch(FoundClassSubject::isSynthetic));
+ }
+
+ private static void assertThisNumberOfBridges(CodeInspector inspector, int numBridges) {
+ for (FoundClassSubject clazz : inspector.allClasses()) {
+ if (!clazz.isSynthetic()) {
+ assertEquals(numBridges, clazz.allMethods(FoundMethodSubject::isSynthetic).size());
+ }
+ }
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAccessControlTestUtils.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAccessControlTestUtils.java
index e0df74d..cba6309 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAccessControlTestUtils.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAccessControlTestUtils.java
@@ -4,13 +4,9 @@
package com.android.tools.r8.desugar.nestaccesscontrol;
-import static com.android.tools.r8.utils.FileUtils.CLASS_EXTENSION;
import static com.android.tools.r8.utils.FileUtils.JAR_EXTENSION;
-import static java.util.stream.Collectors.toList;
-import static org.hamcrest.core.StringContains.containsString;
import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.utils.StringUtils;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import java.nio.file.Path;
@@ -23,7 +19,6 @@
Paths.get(ToolHelper.EXAMPLES_JAVA11_JAR_DIR).resolve("nesthostexample" + JAR_EXTENSION);
public static final Path CLASSES_PATH =
Paths.get(ToolHelper.getExamplesJava11BuildDir()).resolve("nesthostexample/");
- public static final String PACKAGE_NAME = "nesthostexample.";
public static final List<String> CLASS_NAMES =
ImmutableList.of(
@@ -82,90 +77,10 @@
.put("pvtCallInlined", "NestPvtMethodCallInlined")
.put("memberPropagated", "NestPvtFieldPropagated")
.build();
- public static final String ALL_RESULT_LINE =
- String.join(
- ", ",
- new String[] {
- "field",
- "staticField",
- "staticField",
- "hostMethod",
- "staticHostMethod",
- "staticHostMethod",
- "nest1SField",
- "staticNest1SField",
- "staticNest1SField",
- "nest1SMethod",
- "staticNest1SMethod",
- "staticNest1SMethod",
- "nest2SField",
- "staticNest2SField",
- "staticNest2SField",
- "nest2SMethod",
- "staticNest2SMethod",
- "staticNest2SMethod",
- "nest1Field",
- "nest1Method",
- "nest2Field",
- "nest2Method"
- });
- public static final ImmutableMap<String, String> EXPECTED_RESULTS =
- ImmutableMap.<String, String>builder()
- .put(
- "fields",
- StringUtils.lines(
- "RWnestFieldRWRWnestFieldRWRWnestFieldnoBridge", "RWfieldRWRWfieldRWRWnestField"))
- .put(
- "methods",
- StringUtils.lines(
- "nestMethodstaticNestMethodstaticNestMethodnoBridge",
- "hostMethodstaticHostMethodstaticNestMethod"))
- .put(
- "constructors",
- StringUtils.lines(
- "field", "nest1SField", "1", "innerFieldUnusedConstructor", "nothing"))
- .put(
- "anonymous",
- StringUtils.lines(
- "fieldstaticFieldstaticFieldhostMethodstaticHostMethodstaticHostMethod"))
- .put(
- "all",
- StringUtils.lines(
- ALL_RESULT_LINE,
- ALL_RESULT_LINE,
- ALL_RESULT_LINE,
- ALL_RESULT_LINE,
- "staticInterfaceMethodstaticStaticInterfaceMethod",
- "staticInterfaceMethodstaticStaticInterfaceMethod",
- "staticInterfaceMethodstaticStaticInterfaceMethod",
- "staticInterfaceMethodstaticStaticInterfaceMethod",
- "3"))
- .put(
- "pvtCallInlined",
- StringUtils.lines(
- "nestPvtCallToInlineInner",
- "nestPvtCallToInlineInnerInterface",
- "notInlinedPvtCallInner",
- "notInlinedPvtCallInnerInterface",
- "notInlinedPvtCallInnerSub",
- "notInlinedPvtCallInnerInterface",
- "nestPvtCallToInlineInnerSub",
- "nestPvtCallToInlineInner"))
- .put("memberPropagated", StringUtils.lines("toPropagateStatic"))
- .build();
public static String getMainClass(String id) {
- return PACKAGE_NAME + MAIN_CLASSES.get(id);
+ return "nesthostexample." + MAIN_CLASSES.get(id);
}
- public static String getExpectedResult(String id) {
- return EXPECTED_RESULTS.get(id);
- }
- public static List<Path> classesMatching(String matcher) {
- return CLASS_NAMES.stream()
- .filter(name -> containsString(matcher).matches(name))
- .map(name -> CLASSES_PATH.resolve(name + CLASS_EXTENSION))
- .collect(toList());
- }
}
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestOnProgramAndClassPathTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestOnProgramAndClassPathTest.java
deleted file mode 100644
index 464e2c1..0000000
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestOnProgramAndClassPathTest.java
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-package com.android.tools.r8.desugar.nestaccesscontrol;
-
-import static com.android.tools.r8.desugar.nestaccesscontrol.NestAccessControlTestUtils.CLASSES_PATH;
-import static com.android.tools.r8.desugar.nestaccesscontrol.NestAccessControlTestUtils.CLASS_NAMES;
-import static com.android.tools.r8.desugar.nestaccesscontrol.NestAccessControlTestUtils.JAR;
-import static com.android.tools.r8.desugar.nestaccesscontrol.NestAccessControlTestUtils.getExpectedResult;
-import static com.android.tools.r8.desugar.nestaccesscontrol.NestAccessControlTestUtils.getMainClass;
-import static com.android.tools.r8.utils.FileUtils.CLASS_EXTENSION;
-import static java.util.stream.Collectors.toList;
-import static org.hamcrest.core.StringContains.containsString;
-import static org.hamcrest.core.StringEndsWith.endsWith;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import com.android.tools.r8.D8TestCompileResult;
-import com.android.tools.r8.TestBase;
-import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.TestParametersCollection;
-import com.android.tools.r8.utils.codeinspector.CodeInspector;
-import com.android.tools.r8.utils.codeinspector.FoundClassSubject;
-import com.android.tools.r8.utils.codeinspector.FoundMethodSubject;
-import java.nio.file.Path;
-import java.util.List;
-import org.hamcrest.Matcher;
-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 NestOnProgramAndClassPathTest extends TestBase {
-
- public NestOnProgramAndClassPathTest(TestParameters parameters) {
- this.parameters = parameters;
- }
-
- private final TestParameters parameters;
-
- @Parameters(name = "{0}")
- public static TestParametersCollection data() {
- return getTestParameters().withDexRuntimes().withAllApiLevels().build();
- }
-
- @Test
- public void testD8MethodBridgesPresent() throws Exception {
- parameters.assumeDexRuntime();
- // 1 inner class.
- D8TestCompileResult singleInner =
- compileClassesWithD8ProgramClassesMatching(
- containsString("BasicNestHostWithInnerClassMethods$BasicNestedClass"));
- singleInner.inspect(inspector -> assertThisNumberOfBridges(inspector, 2));
- // Outer class.
- D8TestCompileResult host =
- compileClassesWithD8ProgramClassesMatching(endsWith("BasicNestHostWithInnerClassMethods"));
- host.inspect(inspector -> assertThisNumberOfBridges(inspector, 2));
- // 2 inner classes.
- D8TestCompileResult multipleInner =
- compileClassesWithD8ProgramClassesMatching(
- containsString("NestHostExample$StaticNestMemberInner"));
- multipleInner.inspect(inspector -> assertThisNumberOfBridges(inspector, 5));
- }
-
- @Test
- public void testD8ConstructorBridgesPresent() throws Exception {
- parameters.assumeDexRuntime();
- D8TestCompileResult inner =
- compileClassesWithD8ProgramClassesMatching(
- containsString("BasicNestHostWithInnerClassConstructors$BasicNestedClass"));
- inner.inspect(
- inspector -> {
- assertThisNumberOfBridges(inspector, 3);
- assertNestConstructor(inspector);
- });
- D8TestCompileResult host =
- compileClassesWithD8ProgramClassesMatching(
- endsWith("BasicNestHostWithInnerClassConstructors"));
- host.inspect(
- inspector -> {
- assertThisNumberOfBridges(inspector, 1);
- assertNestConstructor(inspector);
- });
- }
-
- @Test
- public void testD8ConstructorNestMergeCorrect() throws Exception {
- // Multiple Nest Constructor classes have to be merged here.
- parameters.assumeDexRuntime();
- D8TestCompileResult inner =
- compileClassesWithD8ProgramClassesMatching(
- containsString("BasicNestHostWithInnerClassConstructors$BasicNestedClass"));
- D8TestCompileResult host =
- compileClassesWithD8ProgramClassesMatching(
- endsWith("BasicNestHostWithInnerClassConstructors"));
- testForD8()
- .addProgramFiles(inner.writeToZip(), host.writeToZip())
- .setMinApi(parameters)
- .compile()
- .run(parameters.getRuntime(), getMainClass("constructors"))
- .assertSuccessWithOutput(getExpectedResult("constructors"));
- }
-
- private D8TestCompileResult compileClassesWithD8ProgramClassesMatching(Matcher<String> matcher)
- throws Exception {
- List<Path> matchingClasses =
- CLASS_NAMES.stream()
- .filter(matcher::matches)
- .map(name -> CLASSES_PATH.resolve(name + CLASS_EXTENSION))
- .collect(toList());
- return testForD8()
- .setMinApi(parameters)
- .addProgramFiles(matchingClasses)
- .addClasspathFiles(JAR)
- .compile();
- }
-
- private static void assertNestConstructor(CodeInspector inspector) {
- assertTrue(inspector.allClasses().stream().anyMatch(FoundClassSubject::isSynthetic));
- }
-
- private static void assertThisNumberOfBridges(CodeInspector inspector, int numBridges) {
- for (FoundClassSubject clazz : inspector.allClasses()) {
- if (!clazz.isSynthetic()) {
- assertEquals(numBridges, clazz.allMethods(FoundMethodSubject::isSynthetic).size());
- }
- }
- }
-}