Move convertDurationUnit into Duration companion
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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"
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user