From 51d87091cc75badcb23aa872d71602e8b7dd1f19 Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Fri, 16 Feb 2018 22:40:56 +0300 Subject: [PATCH] Fix TimeUnit.convert implementation See #329 --- .../java/util/concurrent/TTimeUnit.java | 4 +-- .../java/util/concurrent/TimeUnitTest.java | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 tests/src/test/java/org/teavm/classlib/java/util/concurrent/TimeUnitTest.java diff --git a/classlib/src/main/java/org/teavm/classlib/java/util/concurrent/TTimeUnit.java b/classlib/src/main/java/org/teavm/classlib/java/util/concurrent/TTimeUnit.java index 591204226..74691d663 100644 --- a/classlib/src/main/java/org/teavm/classlib/java/util/concurrent/TTimeUnit.java +++ b/classlib/src/main/java/org/teavm/classlib/java/util/concurrent/TTimeUnit.java @@ -34,9 +34,9 @@ public enum TTimeUnit { long sourceNanos = sourceUnit.nanoseconds; long targetNanos = nanoseconds; if (sourceNanos < targetNanos) { - return sourceDuration * (targetNanos / sourceNanos); + return sourceDuration / (targetNanos / sourceNanos); } else { - return sourceDuration / (sourceNanos / targetNanos); + return sourceDuration * (sourceNanos / targetNanos); } } diff --git a/tests/src/test/java/org/teavm/classlib/java/util/concurrent/TimeUnitTest.java b/tests/src/test/java/org/teavm/classlib/java/util/concurrent/TimeUnitTest.java new file mode 100644 index 000000000..31a727569 --- /dev/null +++ b/tests/src/test/java/org/teavm/classlib/java/util/concurrent/TimeUnitTest.java @@ -0,0 +1,33 @@ +/* + * Copyright 2018 Alexey Andreev. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.teavm.classlib.java.util.concurrent; + +import static org.junit.Assert.assertEquals; +import java.util.concurrent.TimeUnit; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.teavm.junit.TeaVMTestRunner; + +@RunWith(TeaVMTestRunner.class) +public class TimeUnitTest { + @Test + public void convert() { + assertEquals(60, TimeUnit.MINUTES.toSeconds(1)); + assertEquals(30000, TimeUnit.SECONDS.toMillis(30)); + assertEquals(2, TimeUnit.DAYS.convert(48, TimeUnit.HOURS)); + assertEquals(180, TimeUnit.MINUTES.convert(3, TimeUnit.HOURS)); + } +}