Clément Béra | 6f6b5fb | 2022-08-18 09:18:48 +0200 | [diff] [blame] | 1 | // 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éra | c8cf48b | 2025-03-11 11:26:29 +0100 | [diff] [blame] | 5 | package timeunit; |
Clément Béra | 6f6b5fb | 2022-08-18 09:18:48 +0200 | [diff] [blame] | 6 | |
| 7 | import static com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification.DEFAULT_SPECIFICATIONS; |
Clément Béra | 8af92eb | 2022-10-06 09:03:28 +0200 | [diff] [blame] | 8 | import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.JDK11; |
| 9 | import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.JDK11_PATH; |
Clément Béra | 6f6b5fb | 2022-08-18 09:18:48 +0200 | [diff] [blame] | 10 | |
| 11 | import com.android.tools.r8.TestParameters; |
| 12 | import com.android.tools.r8.ToolHelper; |
Clément Béra | 6f6b5fb | 2022-08-18 09:18:48 +0200 | [diff] [blame] | 13 | import com.android.tools.r8.desugar.desugaredlibrary.DesugaredLibraryTestBase; |
| 14 | import com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification; |
| 15 | import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification; |
| 16 | import com.android.tools.r8.utils.AndroidApiLevel; |
| 17 | import com.android.tools.r8.utils.StringUtils; |
Clément Béra | 8af92eb | 2022-10-06 09:03:28 +0200 | [diff] [blame] | 18 | import com.google.common.collect.ImmutableList; |
Clément Béra | c8cf48b | 2025-03-11 11:26:29 +0100 | [diff] [blame] | 19 | import java.time.Duration; |
| 20 | import java.time.temporal.ChronoUnit; |
Clément Béra | 6f6b5fb | 2022-08-18 09:18:48 +0200 | [diff] [blame] | 21 | import java.util.List; |
Clément Béra | c8cf48b | 2025-03-11 11:26:29 +0100 | [diff] [blame] | 22 | import java.util.concurrent.TimeUnit; |
Clément Béra | 6f6b5fb | 2022-08-18 09:18:48 +0200 | [diff] [blame] | 23 | import org.junit.Test; |
| 24 | import org.junit.runner.RunWith; |
| 25 | import org.junit.runners.Parameterized; |
| 26 | import org.junit.runners.Parameterized.Parameters; |
| 27 | |
| 28 | @RunWith(Parameterized.class) |
| 29 | public class TimeUnitTest extends DesugaredLibraryTestBase { |
| 30 | |
| 31 | private final TestParameters parameters; |
| 32 | private final LibraryDesugaringSpecification libraryDesugaringSpecification; |
| 33 | private final CompilationSpecification compilationSpecification; |
| 34 | |
Clément Béra | 8af92eb | 2022-10-06 09:03:28 +0200 | [diff] [blame] | 35 | private static final String EXPECTED_OUTPUT = StringUtils.lines("Nanos", "0"); |
Clément Béra | c8cf48b | 2025-03-11 11:26:29 +0100 | [diff] [blame] | 36 | private static final Class<?> MAIN_CLASS = Example.class; |
Clément Béra | 6f6b5fb | 2022-08-18 09:18:48 +0200 | [diff] [blame] | 37 | |
| 38 | @Parameters(name = "{0}, spec: {1}, {2}") |
| 39 | public static List<Object[]> data() { |
| 40 | return buildParameters( |
Clément Béra | 8af92eb | 2022-10-06 09:03:28 +0200 | [diff] [blame] | 41 | getTestParameters().withDexRuntimes().withAllApiLevels().build(), |
| 42 | ImmutableList.of(JDK11, JDK11_PATH), |
Clément Béra | 6f6b5fb | 2022-08-18 09:18:48 +0200 | [diff] [blame] | 43 | 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éra | c8cf48b | 2025-03-11 11:26:29 +0100 | [diff] [blame] | 58 | .addInnerClassesAndStrippedOuter(getClass()) |
Clément Béra | 6f6b5fb | 2022-08-18 09:18:48 +0200 | [diff] [blame] | 59 | .overrideLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.T)) |
| 60 | .addKeepMainRule(MAIN_CLASS) |
| 61 | .run(parameters.getRuntime(), MAIN_CLASS) |
| 62 | .assertSuccessWithOutput(EXPECTED_OUTPUT); |
| 63 | } |
Clément Béra | c8cf48b | 2025-03-11 11:26:29 +0100 | [diff] [blame] | 64 | |
| 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éra | 6f6b5fb | 2022-08-18 09:18:48 +0200 | [diff] [blame] | 73 | } |