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);
|
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)
|
val sourceCompareTarget = sourceUnit.scale.compareTo(targetUnit.scale)
|
||||||
return when {
|
return when {
|
||||||
sourceCompareTarget > 0 -> value * (sourceUnit.scale / targetUnit.scale)
|
sourceCompareTarget > 0 -> value * (sourceUnit.scale / targetUnit.scale)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ package kotlin.time
|
|||||||
|
|
||||||
public actual typealias DurationUnit = java.util.concurrent.TimeUnit
|
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)
|
val sourceInTargets = targetUnit.convert(1, sourceUnit)
|
||||||
if (sourceInTargets > 0)
|
if (sourceInTargets > 0)
|
||||||
return value * sourceInTargets
|
return value * sourceInTargets
|
||||||
|
|||||||
@@ -34,6 +34,10 @@ public inline class Duration internal constructor(internal val value: Double) :
|
|||||||
companion object {
|
companion object {
|
||||||
val ZERO: Duration = Duration(0.0)
|
val ZERO: Duration = Duration(0.0)
|
||||||
val INFINITE: Duration = Duration(Double.POSITIVE_INFINITY)
|
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
|
// 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]. */
|
/** 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) {
|
repeat(10) {
|
||||||
val d1 = value.toDuration(unit)
|
val d1 = value.toDuration(unit)
|
||||||
val unit2 = units.random()
|
val unit2 = units.random()
|
||||||
val value2 = convertDurationUnit(value, unit, unit2)
|
val value2 = Duration.convert(value, unit, unit2)
|
||||||
val d2 = value2.toDuration(unit2)
|
val d2 = value2.toDuration(unit2)
|
||||||
assertEquals(d1, d2, "$value $unit in $unit2")
|
assertEquals(d1, d2, "$value $unit in $unit2")
|
||||||
assertEquals(d1.hashCode(), d2.hashCode())
|
assertEquals(d1.hashCode(), d2.hashCode())
|
||||||
@@ -124,7 +124,7 @@ class DurationTest {
|
|||||||
val unit = units.random()
|
val unit = units.random()
|
||||||
val unit2 = 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 conversion() {
|
||||||
fun test(sourceValue: Double, sourceUnit: DurationUnit, targetValue: Double, targetUnit: DurationUnit) {
|
fun test(sourceValue: Double, sourceUnit: DurationUnit, targetValue: Double, targetUnit: DurationUnit) {
|
||||||
assertEquals(
|
assertEquals(
|
||||||
targetValue, convertDurationUnit(sourceValue, sourceUnit, targetUnit),
|
targetValue, Duration.convert(sourceValue, sourceUnit, targetUnit),
|
||||||
"Expected $sourceValue $sourceUnit to be $targetValue $targetUnit"
|
"Expected $sourceValue $sourceUnit to be $targetValue $targetUnit"
|
||||||
)
|
)
|
||||||
assertEquals(
|
assertEquals(
|
||||||
sourceValue, convertDurationUnit(targetValue, targetUnit, sourceUnit),
|
sourceValue, Duration.convert(targetValue, targetUnit, sourceUnit),
|
||||||
"Expected $targetValue $targetUnit to be $sourceValue $sourceUnit"
|
"Expected $targetValue $targetUnit to be $sourceValue $sourceUnit"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user