Move convertDurationUnit into Duration companion

This commit is contained in:
Ilya Gorbunov
2019-05-30 21:12:16 +03:00
parent ca10d13f34
commit 368452748b
6 changed files with 11 additions and 7 deletions
@@ -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
+2 -2
View File
@@ -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"
)
}