Move some example tests to new test infra.

This moves constants, controlflow and conversions.

Bug: b/167145686
Change-Id: I8319e983f41d573c1fc2e65016ecd5efdd2a6ea7
diff --git a/src/test/java/com/android/tools/r8/R8RunExamplesTest.java b/src/test/java/com/android/tools/r8/R8RunExamplesTest.java
index c2a1ba2..e2b1b04 100644
--- a/src/test/java/com/android/tools/r8/R8RunExamplesTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunExamplesTest.java
@@ -26,9 +26,6 @@
   public static Collection<String[]> data() {
     String[] tests = {
         "arithmetic.Arithmetic",
-        "constants.Constants",
-        "controlflow.ControlFlow",
-        "conversions.Conversions",
         "floating_point_annotations.FloatingPointValuedAnnotationTest",
         "filledarray.FilledArray",
         "hello.Hello",
diff --git a/src/test/java/com/android/tools/r8/debug/ExamplesDebugTest.java b/src/test/java/com/android/tools/r8/debug/ExamplesDebugTest.java
index 563fc09..3e716f0 100644
--- a/src/test/java/com/android/tools/r8/debug/ExamplesDebugTest.java
+++ b/src/test/java/com/android/tools/r8/debug/ExamplesDebugTest.java
@@ -60,21 +60,6 @@
   }
 
   @Test
-  public void testConstants() throws Exception {
-    testDebugging("constants", "Constants");
-  }
-
-  @Test
-  public void testControlFlow() throws Exception {
-    testDebugging("controlflow", "ControlFlow");
-  }
-
-  @Test
-  public void testConversions() throws Exception {
-    testDebugging("conversions", "Conversions");
-  }
-
-  @Test
   public void testFloatingPointValuedAnnotation() throws Exception {
     testDebugging("floating_point_annotations", "FloatingPointValuedAnnotationTest");
   }
diff --git a/src/test/examples/constants/Constants.java b/src/test/java/com/android/tools/r8/examples/constants/Constants.java
similarity index 97%
rename from src/test/examples/constants/Constants.java
rename to src/test/java/com/android/tools/r8/examples/constants/Constants.java
index 6349749..83aed19 100644
--- a/src/test/examples/constants/Constants.java
+++ b/src/test/java/com/android/tools/r8/examples/constants/Constants.java
@@ -4,7 +4,7 @@
 
 // This code is not run directly. It needs to be compiled to dex code.
 // 'constants.dex' is what is run.
-package constants;
+package com.android.tools.r8.examples.constants;
 
 class Constants {
 
diff --git a/src/test/java/com/android/tools/r8/examples/constants/ConstantsTestRunner.java b/src/test/java/com/android/tools/r8/examples/constants/ConstantsTestRunner.java
new file mode 100644
index 0000000..40432f5
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/examples/constants/ConstantsTestRunner.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2023, 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.examples.constants;
+
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.examples.ExamplesTestBase;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+@RunWith(Parameterized.class)
+public class ConstantsTestRunner extends ExamplesTestBase {
+
+  @Parameterized.Parameters(name = "{0}")
+  public static TestParametersCollection data() {
+    return getTestParameters().withAllRuntimesAndApiLevels().enableApiLevelsForCf().build();
+  }
+
+  public ConstantsTestRunner(TestParameters parameters) {
+    super(parameters);
+  }
+
+  @Override
+  public Class<?> getMainClass() {
+    return Constants.class;
+  }
+
+  @Override
+  public String getExpected() {
+    return "-8-1017-32768-9832767-65536-26843545625165824015728640983040-214748364865536-3276932768"
+        + "-65535-26843545525165824115728641983041-214748364765537-32768-10132767-32769"
+        + "-2147483648214748364732768-281474976710656"
+        + "-11529215046068469761080863910568919040675539944105574404222124650659840"
+        + "-92233720368547758082814749767106569223090561878065152-21474836492147483648"
+        + "-140737488355329-281474976710655"
+        + "-11529215046068469751080863910568919041675539944105574414222124650659841"
+        + "-922337203685477580728147497671065792233720368547758079223090561878065153";
+  }
+
+  @Test
+  public void testDesugaring() throws Exception {
+    runTestDesugaring();
+  }
+
+  @Test
+  public void testR8() throws Exception {
+    runTestR8();
+  }
+
+  @Test
+  public void testDebug() throws Exception {
+    runTestDebugComparator();
+  }
+}
diff --git a/src/test/examples/controlflow/ControlFlow.java b/src/test/java/com/android/tools/r8/examples/controlflow/ControlFlow.java
similarity index 97%
rename from src/test/examples/controlflow/ControlFlow.java
rename to src/test/java/com/android/tools/r8/examples/controlflow/ControlFlow.java
index ffdabe0..5296c77 100644
--- a/src/test/examples/controlflow/ControlFlow.java
+++ b/src/test/java/com/android/tools/r8/examples/controlflow/ControlFlow.java
@@ -5,7 +5,7 @@
 // This code is not run directly. It needs to be compiled to dex code.
 // 'controlflow.dex' is what is run.
 
-package controlflow;
+package com.android.tools.r8.examples.controlflow;
 
 public class ControlFlow {
 
diff --git a/src/test/java/com/android/tools/r8/examples/controlflow/ControlFlowTestRunner.java b/src/test/java/com/android/tools/r8/examples/controlflow/ControlFlowTestRunner.java
new file mode 100644
index 0000000..770ec02
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/examples/controlflow/ControlFlowTestRunner.java
@@ -0,0 +1,82 @@
+// Copyright (c) 2023, 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.examples.controlflow;
+
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.examples.ExamplesTestBase;
+import com.android.tools.r8.utils.StringUtils;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+@RunWith(Parameterized.class)
+public class ControlFlowTestRunner extends ExamplesTestBase {
+
+  @Parameterized.Parameters(name = "{0}")
+  public static TestParametersCollection data() {
+    return getTestParameters().withAllRuntimesAndApiLevels().enableApiLevelsForCf().build();
+  }
+
+  public ControlFlowTestRunner(TestParameters parameters) {
+    super(parameters);
+  }
+
+  @Override
+  public Class<?> getMainClass() {
+    return ControlFlow.class;
+  }
+
+  @Override
+  public String getExpected() {
+    return StringUtils.lines(
+        "Fisk",
+        "Hest",
+        "Fisk 1 1.1 true",
+        "Hest 2 2.2 false",
+        "Fisk",
+        "Hep!",
+        "10",
+        "10",
+        "5",
+        "10",
+        "5",
+        "2",
+        "10",
+        "10",
+        "5",
+        "10",
+        "5",
+        "2",
+        "simpleLoop",
+        "simpleLoop",
+        "count: 0",
+        "simpleLoop",
+        "count: 0",
+        "count: 1",
+        "count: 2",
+        "count: 3",
+        "count: 4",
+        "count: 5",
+        "count: 6",
+        "count: 7",
+        "count: 8",
+        "count: 9");
+  }
+
+  @Test
+  public void testDesugaring() throws Exception {
+    runTestDesugaring();
+  }
+
+  @Test
+  public void testR8() throws Exception {
+    runTestR8();
+  }
+
+  @Test
+  public void testDebug() throws Exception {
+    runTestDebugComparator();
+  }
+}
diff --git a/src/test/examples/conversions/Conversions.java b/src/test/java/com/android/tools/r8/examples/conversions/Conversions.java
similarity index 96%
rename from src/test/examples/conversions/Conversions.java
rename to src/test/java/com/android/tools/r8/examples/conversions/Conversions.java
index 456972d..28f3c55 100644
--- a/src/test/examples/conversions/Conversions.java
+++ b/src/test/java/com/android/tools/r8/examples/conversions/Conversions.java
@@ -1,7 +1,7 @@
 // Copyright (c) 2016, 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 conversions;
+package com.android.tools.r8.examples.conversions;
 
 public class Conversions {
 
diff --git a/src/test/java/com/android/tools/r8/examples/conversions/ConversionsTestRunner.java b/src/test/java/com/android/tools/r8/examples/conversions/ConversionsTestRunner.java
new file mode 100644
index 0000000..15ccd76
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/examples/conversions/ConversionsTestRunner.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2023, 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.examples.conversions;
+
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.examples.ExamplesTestBase;
+import com.android.tools.r8.utils.StringUtils;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+@RunWith(Parameterized.class)
+public class ConversionsTestRunner extends ExamplesTestBase {
+
+  @Parameterized.Parameters(name = "{0}")
+  public static TestParametersCollection data() {
+    return getTestParameters().withAllRuntimesAndApiLevels().enableApiLevelsForCf().build();
+  }
+
+  public ConversionsTestRunner(TestParameters parameters) {
+    super(parameters);
+  }
+
+  @Override
+  public Class<?> getMainClass() {
+    return Conversions.class;
+  }
+
+  @Override
+  public String getExpected() {
+    return StringUtils.lines(
+        "1", "1.0", "1.0", "1", "1.0", "1.0", "1", "1", "1.0", "1", "1", "1.0", "1", "\u0001", "1");
+  }
+
+  @Test
+  public void testDesugaring() throws Exception {
+    runTestDesugaring();
+  }
+
+  @Test
+  public void testR8() throws Exception {
+    runTestR8();
+  }
+
+  @Test
+  public void testDebug() throws Exception {
+    runTestDebugComparator();
+  }
+}