blob: 3eed340e77e5739ae22d52adc74e9bf4df22e760 [file] [log] [blame]
Clément Béra6f6b5fb2022-08-18 09:18:48 +02001// Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
2// for details. All rights reserved. Use of this source code is governed by a
3// BSD-style license that can be found in the LICENSE file.
4
Clément Bérac8cf48b2025-03-11 11:26:29 +01005package timeunit;
Clément Béra6f6b5fb2022-08-18 09:18:48 +02006
7import static com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification.DEFAULT_SPECIFICATIONS;
Clément Béra8af92eb2022-10-06 09:03:28 +02008import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.JDK11;
9import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.JDK11_PATH;
Clément Béra6f6b5fb2022-08-18 09:18:48 +020010
11import com.android.tools.r8.TestParameters;
12import com.android.tools.r8.ToolHelper;
Clément Béra6f6b5fb2022-08-18 09:18:48 +020013import com.android.tools.r8.desugar.desugaredlibrary.DesugaredLibraryTestBase;
14import com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification;
15import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification;
16import com.android.tools.r8.utils.AndroidApiLevel;
17import com.android.tools.r8.utils.StringUtils;
Clément Béra8af92eb2022-10-06 09:03:28 +020018import com.google.common.collect.ImmutableList;
Clément Bérac8cf48b2025-03-11 11:26:29 +010019import java.time.Duration;
20import java.time.temporal.ChronoUnit;
Clément Béra6f6b5fb2022-08-18 09:18:48 +020021import java.util.List;
Clément Bérac8cf48b2025-03-11 11:26:29 +010022import java.util.concurrent.TimeUnit;
Clément Béra6f6b5fb2022-08-18 09:18:48 +020023import org.junit.Test;
24import org.junit.runner.RunWith;
25import org.junit.runners.Parameterized;
26import org.junit.runners.Parameterized.Parameters;
27
28@RunWith(Parameterized.class)
29public class TimeUnitTest extends DesugaredLibraryTestBase {
30
31 private final TestParameters parameters;
32 private final LibraryDesugaringSpecification libraryDesugaringSpecification;
33 private final CompilationSpecification compilationSpecification;
34
Clément Béra8af92eb2022-10-06 09:03:28 +020035 private static final String EXPECTED_OUTPUT = StringUtils.lines("Nanos", "0");
Clément Bérac8cf48b2025-03-11 11:26:29 +010036 private static final Class<?> MAIN_CLASS = Example.class;
Clément Béra6f6b5fb2022-08-18 09:18:48 +020037
38 @Parameters(name = "{0}, spec: {1}, {2}")
39 public static List<Object[]> data() {
40 return buildParameters(
Clément Béra8af92eb2022-10-06 09:03:28 +020041 getTestParameters().withDexRuntimes().withAllApiLevels().build(),
42 ImmutableList.of(JDK11, JDK11_PATH),
Clément Béra6f6b5fb2022-08-18 09:18:48 +020043 DEFAULT_SPECIFICATIONS);
44 }
45
46 public TimeUnitTest(
47 TestParameters parameters,
48 LibraryDesugaringSpecification libraryDesugaringSpecification,
49 CompilationSpecification compilationSpecification) {
50 this.parameters = parameters;
51 this.libraryDesugaringSpecification = libraryDesugaringSpecification;
52 this.compilationSpecification = compilationSpecification;
53 }
54
55 @Test
56 public void test() throws Exception {
57 testForDesugaredLibrary(parameters, libraryDesugaringSpecification, compilationSpecification)
Clément Bérac8cf48b2025-03-11 11:26:29 +010058 .addInnerClassesAndStrippedOuter(getClass())
Clément Béra6f6b5fb2022-08-18 09:18:48 +020059 .overrideLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.T))
60 .addKeepMainRule(MAIN_CLASS)
61 .run(parameters.getRuntime(), MAIN_CLASS)
62 .assertSuccessWithOutput(EXPECTED_OUTPUT);
63 }
Clément Bérac8cf48b2025-03-11 11:26:29 +010064
65 public static class Example {
66
67 public static void main(String[] args) {
68 TimeUnit timeUnit = TimeUnit.of(ChronoUnit.NANOS);
69 System.out.println(timeUnit.toChronoUnit());
70 System.out.println(timeUnit.convert(Duration.ZERO));
71 }
72 }
Clément Béra6f6b5fb2022-08-18 09:18:48 +020073}