diff --git a/libraries/stdlib/js/src/kotlin/time/DurationUnit.kt b/libraries/stdlib/js/src/kotlin/time/DurationUnit.kt index af1028026d5..f0627fd2be8 100644 --- a/libraries/stdlib/js/src/kotlin/time/DurationUnit.kt +++ b/libraries/stdlib/js/src/kotlin/time/DurationUnit.kt @@ -37,7 +37,7 @@ public actual enum class DurationUnit(internal val scale: Double) { DAYS(86400e9); } -public actual fun convertDurationUnit(value: Double, sourceUnit: DurationUnit, targetUnit: DurationUnit): Double { +internal actual fun convertDurationUnit(value: Double, sourceUnit: DurationUnit, targetUnit: DurationUnit): Double { val sourceCompareTarget = sourceUnit.scale.compareTo(targetUnit.scale) return when { sourceCompareTarget > 0 -> value * (sourceUnit.scale / targetUnit.scale) diff --git a/libraries/stdlib/jvm/src/kotlin/time/DurationUnitJvm.kt b/libraries/stdlib/jvm/src/kotlin/time/DurationUnitJvm.kt index 466f5e273cd..6da24720647 100644 --- a/libraries/stdlib/jvm/src/kotlin/time/DurationUnitJvm.kt +++ b/libraries/stdlib/jvm/src/kotlin/time/DurationUnitJvm.kt @@ -10,7 +10,7 @@ package kotlin.time public actual typealias DurationUnit = java.util.concurrent.TimeUnit -public actual fun convertDurationUnit(value: Double, sourceUnit: DurationUnit, targetUnit: DurationUnit): Double { +internal actual fun convertDurationUnit(value: Double, sourceUnit: DurationUnit, targetUnit: DurationUnit): Double { val sourceInTargets = targetUnit.convert(1, sourceUnit) if (sourceInTargets > 0) return value * sourceInTargets diff --git a/libraries/stdlib/src/kotlin/time/Duration.kt b/libraries/stdlib/src/kotlin/time/Duration.kt index 10d7fb78912..6e28afc3ab8 100644 --- a/libraries/stdlib/src/kotlin/time/Duration.kt +++ b/libraries/stdlib/src/kotlin/time/Duration.kt @@ -34,6 +34,10 @@ public inline class Duration internal constructor(internal val value: Double) : companion object { val ZERO: Duration = Duration(0.0) val INFINITE: Duration = Duration(Double.POSITIVE_INFINITY) + + /** Converts the given time duration [value] expressed in the specified [sourceUnit] into the specified [targetUnit]. */ + public fun convert(value: Double, sourceUnit: DurationUnit, targetUnit: DurationUnit): Double = + convertDurationUnit(value, sourceUnit, targetUnit) } // arithmetic operators diff --git a/libraries/stdlib/src/kotlin/time/DurationUnit.kt b/libraries/stdlib/src/kotlin/time/DurationUnit.kt index 9bdc5a73ae8..5fa8e1c945c 100644 --- a/libraries/stdlib/src/kotlin/time/DurationUnit.kt +++ b/libraries/stdlib/src/kotlin/time/DurationUnit.kt @@ -46,7 +46,7 @@ public expect enum class DurationUnit { } /** Converts the given time duration [value] expressed in the specified [sourceUnit] into the specified [targetUnit]. */ -public expect fun convertDurationUnit(value: Double, sourceUnit: DurationUnit, targetUnit: DurationUnit): Double +internal expect fun convertDurationUnit(value: Double, sourceUnit: DurationUnit, targetUnit: DurationUnit): Double diff --git a/libraries/stdlib/test/time/DurationTest.kt b/libraries/stdlib/test/time/DurationTest.kt index 5214ae4274f..72a8b91871c 100644 --- a/libraries/stdlib/test/time/DurationTest.kt +++ b/libraries/stdlib/test/time/DurationTest.kt @@ -52,7 +52,7 @@ class DurationTest { repeat(10) { val d1 = value.toDuration(unit) val unit2 = units.random() - val value2 = convertDurationUnit(value, unit, unit2) + val value2 = Duration.convert(value, unit, unit2) val d2 = value2.toDuration(unit2) assertEquals(d1, d2, "$value $unit in $unit2") assertEquals(d1.hashCode(), d2.hashCode()) @@ -124,7 +124,7 @@ class DurationTest { val unit = units.random() val unit2 = units.random() - assertAlmostEquals(convertDurationUnit(value.toDouble(), unit, unit2), value.toDuration(unit).toDouble(unit2)) + assertAlmostEquals(Duration.convert(value.toDouble(), unit, unit2), value.toDuration(unit).toDouble(unit2)) } } diff --git a/libraries/stdlib/test/time/DurationUnitTest.kt b/libraries/stdlib/test/time/DurationUnitTest.kt index 566e2e869a3..2a441abbeb6 100644 --- a/libraries/stdlib/test/time/DurationUnitTest.kt +++ b/libraries/stdlib/test/time/DurationUnitTest.kt @@ -22,11 +22,11 @@ class DurationUnitTest { fun conversion() { fun test(sourceValue: Double, sourceUnit: DurationUnit, targetValue: Double, targetUnit: DurationUnit) { assertEquals( - targetValue, convertDurationUnit(sourceValue, sourceUnit, targetUnit), + targetValue, Duration.convert(sourceValue, sourceUnit, targetUnit), "Expected $sourceValue $sourceUnit to be $targetValue $targetUnit" ) assertEquals( - sourceValue, convertDurationUnit(targetValue, targetUnit, sourceUnit), + sourceValue, Duration.convert(targetValue, targetUnit, sourceUnit), "Expected $targetValue $targetUnit to be $sourceValue $sourceUnit" ) }