Suggest duration static factories instead of number extension properties
Introduce Duration companion functions to convert numbers to Duration. Deprecate number extension properties and propose to use these new functions instead.
This commit is contained in:
@@ -1,85 +1,106 @@
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.days() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.days(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Double.days: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.days() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.days(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Int.days: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.days() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.days(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Long.days: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.hours() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.hours(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Double.hours: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.hours() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.hours(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Int.hours: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.hours() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.hours(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Long.hours: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.microseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.microseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Double.microseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.microseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.microseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Int.microseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.microseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.microseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Long.microseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.milliseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.milliseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Double.milliseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.milliseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.milliseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Int.milliseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.milliseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.milliseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Long.milliseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.minutes() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.minutes(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Double.minutes: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.minutes() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.minutes(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Int.minutes: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.minutes() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.minutes(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Long.minutes: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.nanoseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.nanoseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Double.nanoseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.nanoseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.nanoseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Int.nanoseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.nanoseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.nanoseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Long.nanoseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.seconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.seconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Double.seconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.seconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.seconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Int.seconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.seconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.seconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Long.seconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@@ -236,6 +257,69 @@ public final inline class Duration : kotlin.Comparable<kotlin.time.Duration> {
|
||||
public final val ZERO: kotlin.time.Duration { get; }
|
||||
|
||||
public final fun convert(value: kotlin.Double, sourceUnit: kotlin.time.DurationUnit, targetUnit: kotlin.time.DurationUnit): kotlin.Double
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun days(value: kotlin.Double): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun days(value: kotlin.Int): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun days(value: kotlin.Long): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun hours(value: kotlin.Double): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun hours(value: kotlin.Int): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun hours(value: kotlin.Long): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun microseconds(value: kotlin.Double): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun microseconds(value: kotlin.Int): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun microseconds(value: kotlin.Long): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun milliseconds(value: kotlin.Double): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun milliseconds(value: kotlin.Int): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun milliseconds(value: kotlin.Long): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun minutes(value: kotlin.Double): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun minutes(value: kotlin.Int): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun minutes(value: kotlin.Long): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun nanoseconds(value: kotlin.Double): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun nanoseconds(value: kotlin.Int): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun nanoseconds(value: kotlin.Long): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun seconds(value: kotlin.Double): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun seconds(value: kotlin.Int): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun seconds(value: kotlin.Long): kotlin.time.Duration
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,85 +1,106 @@
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.days() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.days(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Double.days: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.days() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.days(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Int.days: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.days() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.days(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Long.days: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.hours() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.hours(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Double.hours: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.hours() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.hours(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Int.hours: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.hours() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.hours(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Long.hours: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.microseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.microseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Double.microseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.microseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.microseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Int.microseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.microseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.microseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Long.microseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.milliseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.milliseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Double.milliseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.milliseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.milliseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Int.milliseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.milliseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.milliseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Long.milliseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.minutes() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.minutes(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Double.minutes: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.minutes() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.minutes(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Int.minutes: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.minutes() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.minutes(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Long.minutes: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.nanoseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.nanoseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Double.nanoseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.nanoseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.nanoseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Int.nanoseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.nanoseconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.nanoseconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Long.nanoseconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.seconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.seconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Double.seconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.seconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.seconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Int.seconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.Deprecated(message = "Use Duration.seconds() function instead.", replaceWith = kotlin.ReplaceWith(expression = "Duration.seconds(this)", imports = {"kotlin.time.Duration"}))
|
||||
public val kotlin.Long.seconds: kotlin.time.Duration { get; }
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.3")
|
||||
@@ -236,6 +257,69 @@ public final inline class Duration : kotlin.Comparable<kotlin.time.Duration> {
|
||||
public final val ZERO: kotlin.time.Duration { get; }
|
||||
|
||||
public final fun convert(value: kotlin.Double, sourceUnit: kotlin.time.DurationUnit, targetUnit: kotlin.time.DurationUnit): kotlin.Double
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun days(value: kotlin.Double): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun days(value: kotlin.Int): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun days(value: kotlin.Long): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun hours(value: kotlin.Double): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun hours(value: kotlin.Int): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun hours(value: kotlin.Long): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun microseconds(value: kotlin.Double): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun microseconds(value: kotlin.Int): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun microseconds(value: kotlin.Long): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun milliseconds(value: kotlin.Double): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun milliseconds(value: kotlin.Int): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun milliseconds(value: kotlin.Long): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun minutes(value: kotlin.Double): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun minutes(value: kotlin.Int): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun minutes(value: kotlin.Long): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun nanoseconds(value: kotlin.Double): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun nanoseconds(value: kotlin.Int): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun nanoseconds(value: kotlin.Long): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun seconds(value: kotlin.Double): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun seconds(value: kotlin.Int): kotlin.time.Duration
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.5")
|
||||
public final fun seconds(value: kotlin.Long): kotlin.time.Duration
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -20,7 +20,7 @@ import java.time.*
|
||||
@ExperimentalTime
|
||||
@kotlin.internal.InlineOnly
|
||||
public inline fun java.time.Duration.toKotlinDuration(): Duration =
|
||||
this.seconds.seconds + this.nano.nanoseconds
|
||||
Duration.seconds(this.seconds) + Duration.nanoseconds(this.nano)
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -15,7 +15,9 @@ class DurationConversionTest {
|
||||
@Test
|
||||
fun twoWayConversion() {
|
||||
fun test(days: Int, hours: Int, minutes: Int, seconds: Int, millis: Int, nanos: Int) {
|
||||
val duration = days.days + hours.hours + minutes.minutes + seconds.seconds + millis.milliseconds + nanos.nanoseconds
|
||||
val duration = with(Duration) {
|
||||
days(days) + hours(hours) + minutes(minutes) + seconds(seconds) + milliseconds(millis) + nanoseconds(nanos)
|
||||
}
|
||||
val jtDuration = JTDuration.ZERO
|
||||
.plusDays(days.toLong())
|
||||
.plusHours(hours.toLong())
|
||||
@@ -44,12 +46,12 @@ class DurationConversionTest {
|
||||
fun javaToKotlinRounding() {
|
||||
val jtDuration = JTDuration.ofDays(105).plusNanos(1)
|
||||
val duration = jtDuration.toKotlinDuration()
|
||||
assertEquals(105.days, duration)
|
||||
assertEquals(Duration.days(105), duration)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun kotlinToJavaClamping() {
|
||||
val duration = Long.MAX_VALUE.seconds * 5
|
||||
val duration = Duration.seconds(Long.MAX_VALUE) * 5
|
||||
val jtDuration = duration.toJavaDuration()
|
||||
assertEquals(JTDuration.ofSeconds(Long.MAX_VALUE), jtDuration)
|
||||
|
||||
@@ -60,7 +62,7 @@ class DurationConversionTest {
|
||||
@Test
|
||||
fun randomIsoConversionEquivalence() {
|
||||
repeat(100) {
|
||||
val duration = Random.nextLong(-(1 shl 53) + 1, 1 shl 53).nanoseconds
|
||||
val duration = Duration.nanoseconds(Random.nextLong(-(1 shl 53) + 1, 1 shl 53))
|
||||
val fromString = JTDuration.parse(duration.toIsoString())
|
||||
val fromDuration = duration.toJavaDuration()
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -37,7 +37,7 @@ internal class HrTimeSource(val process: Process) : TimeSource {
|
||||
override fun markNow(): TimeMark = object : TimeMark() {
|
||||
val startedAt = process.hrtime()
|
||||
override fun elapsedNow(): Duration =
|
||||
process.hrtime(startedAt).let { (seconds, nanos) -> seconds.seconds + nanos.nanoseconds }
|
||||
process.hrtime(startedAt).let { (seconds, nanos) -> Duration.seconds(seconds) + Duration.nanoseconds(nanos) }
|
||||
}
|
||||
|
||||
override fun toString(): String = "TimeSource(process.hrtime())"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -13,32 +13,32 @@ class Durations {
|
||||
|
||||
@Sample
|
||||
fun toIsoString() {
|
||||
assertPrints(25.nanoseconds.toIsoString(), "PT0.000000025S")
|
||||
assertPrints(120.3.milliseconds.toIsoString(), "PT0.120300S")
|
||||
assertPrints(30.5.seconds.toIsoString(), "PT30.500S")
|
||||
assertPrints(30.5.minutes.toIsoString(), "PT30M30S")
|
||||
assertPrints(86420.seconds.toIsoString(), "PT24H0M20S")
|
||||
assertPrints(2.days.toIsoString(), "PT48H")
|
||||
assertPrints(Duration.nanoseconds(25).toIsoString(), "PT0.000000025S")
|
||||
assertPrints(Duration.milliseconds(120.3).toIsoString(), "PT0.120300S")
|
||||
assertPrints(Duration.seconds(30.5).toIsoString(), "PT30.500S")
|
||||
assertPrints(Duration.minutes(30.5).toIsoString(), "PT30M30S")
|
||||
assertPrints(Duration.seconds(86420).toIsoString(), "PT24H0M20S")
|
||||
assertPrints(Duration.days(2).toIsoString(), "PT48H")
|
||||
assertPrints(Duration.ZERO.toIsoString(), "PT0S")
|
||||
assertPrints(Duration.INFINITE.toIsoString(), "PT2147483647H")
|
||||
}
|
||||
|
||||
@Sample
|
||||
fun toStringDefault() {
|
||||
assertPrints(45.days, "45.0d")
|
||||
assertPrints(1.5.days, "36.0h")
|
||||
assertPrints(1230.minutes, "20.5h")
|
||||
assertPrints(920.minutes, "920m")
|
||||
assertPrints(1.546.seconds, "1.55s")
|
||||
assertPrints(25.12.milliseconds, "25.1ms")
|
||||
assertPrints(Duration.days(45), "45.0d")
|
||||
assertPrints(Duration.days(1.5), "36.0h")
|
||||
assertPrints(Duration.minutes(1230), "20.5h")
|
||||
assertPrints(Duration.minutes(920), "920m")
|
||||
assertPrints(Duration.seconds(1.546), "1.55s")
|
||||
assertPrints(Duration.milliseconds(25.12), "25.1ms")
|
||||
}
|
||||
|
||||
@Sample
|
||||
fun toStringDecimals() {
|
||||
assertPrints(1230.minutes.toString(DurationUnit.DAYS, 2), "0.85d")
|
||||
assertPrints(1230.minutes.toString(DurationUnit.HOURS, 2), "20.50h")
|
||||
assertPrints(1230.minutes.toString(DurationUnit.MINUTES), "1230m")
|
||||
assertPrints(1230.minutes.toString(DurationUnit.SECONDS), "73800s")
|
||||
assertPrints(Duration.minutes(1230).toString(DurationUnit.DAYS, 2), "0.85d")
|
||||
assertPrints(Duration.minutes(1230).toString(DurationUnit.HOURS, 2), "20.50h")
|
||||
assertPrints(Duration.minutes(1230).toString(DurationUnit.MINUTES), "1230m")
|
||||
assertPrints(Duration.minutes(1230).toString(DurationUnit.SECONDS), "73800s")
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -18,9 +18,9 @@ private inline val storageUnit get() = DurationUnit.NANOSECONDS
|
||||
* A negative duration is possible in a situation when the second instant is earlier than the first one.
|
||||
* An infinite duration value [Duration.INFINITE] can be used to represent infinite timeouts.
|
||||
*
|
||||
* To construct a duration use either the extension function [toDuration],
|
||||
* or the extension properties [hours], [minutes], [seconds], and so on,
|
||||
* available on [Int], [Long], and [Double] numeric types.
|
||||
* To construct a duration use either the extension function [toDuration] available on [Int], [Long], and [Double] numeric types,
|
||||
* or the `Duration` companion object functions [Duration.hours], [Duration.minutes], [Duration.seconds], and so on,
|
||||
* taking [Int], [Long], or [Double] numbers as parameters.
|
||||
*
|
||||
* To get the value of this duration expressed in a particular [duration units][DurationUnit]
|
||||
* use the functions [toInt], [toLong], and [toDouble]
|
||||
@@ -44,6 +44,119 @@ public value class Duration internal constructor(internal val value: Double) : C
|
||||
/** 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)
|
||||
|
||||
/** Returns a [Duration] representing the specified [value] number of nanoseconds. */
|
||||
@SinceKotlin("1.5")
|
||||
public fun nanoseconds(value: Int): Duration = value.toDuration(DurationUnit.NANOSECONDS)
|
||||
|
||||
/** Returns a [Duration] representing the specified [value] number of nanoseconds. */
|
||||
@SinceKotlin("1.5")
|
||||
public fun nanoseconds(value: Long): Duration = value.toDuration(DurationUnit.NANOSECONDS)
|
||||
|
||||
/**
|
||||
* Returns a [Duration] representing the specified [value] number of nanoseconds.
|
||||
*
|
||||
* @throws IllegalArgumentException if the provided `Double` [value] is `NaN`.
|
||||
*/
|
||||
@SinceKotlin("1.5")
|
||||
public fun nanoseconds(value: Double): Duration = value.toDuration(DurationUnit.NANOSECONDS)
|
||||
|
||||
/** Returns a [Duration] representing the specified [value] number of microseconds. */
|
||||
@SinceKotlin("1.5")
|
||||
public fun microseconds(value: Int): Duration = value.toDuration(DurationUnit.MICROSECONDS)
|
||||
|
||||
/** Returns a [Duration] representing the specified [value] number of microseconds. */
|
||||
@SinceKotlin("1.5")
|
||||
public fun microseconds(value: Long): Duration = value.toDuration(DurationUnit.MICROSECONDS)
|
||||
|
||||
/**
|
||||
* Returns a [Duration] representing the specified [value] number of microseconds.
|
||||
*
|
||||
* @throws IllegalArgumentException if the provided `Double` [value] is `NaN`.
|
||||
*/
|
||||
@SinceKotlin("1.5")
|
||||
public fun microseconds(value: Double): Duration = value.toDuration(DurationUnit.MICROSECONDS)
|
||||
|
||||
/** Returns a [Duration] representing the specified [value] number of milliseconds. */
|
||||
@SinceKotlin("1.5")
|
||||
public fun milliseconds(value: Int): Duration = value.toDuration(DurationUnit.MILLISECONDS)
|
||||
|
||||
/** Returns a [Duration] representing the specified [value] number of milliseconds. */
|
||||
@SinceKotlin("1.5")
|
||||
public fun milliseconds(value: Long): Duration = value.toDuration(DurationUnit.MILLISECONDS)
|
||||
|
||||
/**
|
||||
* Returns a [Duration] representing the specified [value] number of milliseconds.
|
||||
*
|
||||
* @throws IllegalArgumentException if the provided `Double` [value] is `NaN`.
|
||||
*/
|
||||
@SinceKotlin("1.5")
|
||||
public fun milliseconds(value: Double): Duration = value.toDuration(DurationUnit.MILLISECONDS)
|
||||
|
||||
/** Returns a [Duration] representing the specified [value] number of seconds. */
|
||||
@SinceKotlin("1.5")
|
||||
public fun seconds(value: Int): Duration = value.toDuration(DurationUnit.SECONDS)
|
||||
|
||||
/** Returns a [Duration] representing the specified [value] number of seconds. */
|
||||
@SinceKotlin("1.5")
|
||||
public fun seconds(value: Long): Duration = value.toDuration(DurationUnit.SECONDS)
|
||||
|
||||
/**
|
||||
* Returns a [Duration] representing the specified [value] number of seconds.
|
||||
*
|
||||
* @throws IllegalArgumentException if the provided `Double` [value] is `NaN`.
|
||||
*/
|
||||
@SinceKotlin("1.5")
|
||||
public fun seconds(value: Double): Duration = value.toDuration(DurationUnit.SECONDS)
|
||||
|
||||
/** Returns a [Duration] representing the specified [value] number of minutes. */
|
||||
@SinceKotlin("1.5")
|
||||
public fun minutes(value: Int): Duration = value.toDuration(DurationUnit.MINUTES)
|
||||
|
||||
/** Returns a [Duration] representing the specified [value] number of minutes. */
|
||||
@SinceKotlin("1.5")
|
||||
public fun minutes(value: Long): Duration = value.toDuration(DurationUnit.MINUTES)
|
||||
|
||||
/**
|
||||
* Returns a [Duration] representing the specified [value] number of minutes.
|
||||
*
|
||||
* @throws IllegalArgumentException if the provided `Double` [value] is `NaN`.
|
||||
*/
|
||||
@SinceKotlin("1.5")
|
||||
public fun minutes(value: Double): Duration = value.toDuration(DurationUnit.MINUTES)
|
||||
|
||||
/** Returns a [Duration] representing the specified [value] number of hours. */
|
||||
@SinceKotlin("1.5")
|
||||
public fun hours(value: Int): Duration = value.toDuration(DurationUnit.HOURS)
|
||||
|
||||
/** Returns a [Duration] representing the specified [value] number of hours. */
|
||||
@SinceKotlin("1.5")
|
||||
public fun hours(value: Long): Duration = value.toDuration(DurationUnit.HOURS)
|
||||
|
||||
/**
|
||||
* Returns a [Duration] representing the specified [value] number of hours.
|
||||
*
|
||||
* @throws IllegalArgumentException if the provided `Double` [value] is `NaN`.
|
||||
*/
|
||||
@SinceKotlin("1.5")
|
||||
public fun hours(value: Double): Duration = value.toDuration(DurationUnit.HOURS)
|
||||
|
||||
/** Returns a [Duration] representing the specified [value] number of days. */
|
||||
@SinceKotlin("1.5")
|
||||
public fun days(value: Int): Duration = value.toDuration(DurationUnit.DAYS)
|
||||
|
||||
/** Returns a [Duration] representing the specified [value] number of days. */
|
||||
@SinceKotlin("1.5")
|
||||
public fun days(value: Long): Duration = value.toDuration(DurationUnit.DAYS)
|
||||
|
||||
/**
|
||||
* Returns a [Duration] representing the specified [value] number of days.
|
||||
*
|
||||
* @throws IllegalArgumentException if the provided `Double` [value] is `NaN`.
|
||||
*/
|
||||
@SinceKotlin("1.5")
|
||||
public fun days(value: Double): Duration = value.toDuration(DurationUnit.DAYS)
|
||||
|
||||
}
|
||||
|
||||
// arithmetic operators
|
||||
@@ -394,11 +507,13 @@ public fun Double.toDuration(unit: DurationUnit): Duration = Duration(convertDur
|
||||
/** Returns a [Duration] equal to this [Int] number of nanoseconds. */
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.nanoseconds() function instead.", ReplaceWith("Duration.nanoseconds(this)", "kotlin.time.Duration"))
|
||||
public val Int.nanoseconds get() = toDuration(DurationUnit.NANOSECONDS)
|
||||
|
||||
/** Returns a [Duration] equal to this [Long] number of nanoseconds. */
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.nanoseconds() function instead.", ReplaceWith("Duration.nanoseconds(this)", "kotlin.time.Duration"))
|
||||
public val Long.nanoseconds get() = toDuration(DurationUnit.NANOSECONDS)
|
||||
|
||||
/**
|
||||
@@ -408,16 +523,19 @@ public val Long.nanoseconds get() = toDuration(DurationUnit.NANOSECONDS)
|
||||
*/
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.nanoseconds() function instead.", ReplaceWith("Duration.nanoseconds(this)", "kotlin.time.Duration"))
|
||||
public val Double.nanoseconds get() = toDuration(DurationUnit.NANOSECONDS)
|
||||
|
||||
/** Returns a [Duration] equal to this [Int] number of microseconds. */
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.microseconds() function instead.", ReplaceWith("Duration.microseconds(this)", "kotlin.time.Duration"))
|
||||
public val Int.microseconds get() = toDuration(DurationUnit.MICROSECONDS)
|
||||
|
||||
/** Returns a [Duration] equal to this [Long] number of microseconds. */
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.microseconds() function instead.", ReplaceWith("Duration.microseconds(this)", "kotlin.time.Duration"))
|
||||
public val Long.microseconds get() = toDuration(DurationUnit.MICROSECONDS)
|
||||
|
||||
/**
|
||||
@@ -427,16 +545,19 @@ public val Long.microseconds get() = toDuration(DurationUnit.MICROSECONDS)
|
||||
*/
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.microseconds() function instead.", ReplaceWith("Duration.microseconds(this)", "kotlin.time.Duration"))
|
||||
public val Double.microseconds get() = toDuration(DurationUnit.MICROSECONDS)
|
||||
|
||||
/** Returns a [Duration] equal to this [Int] number of milliseconds. */
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.milliseconds() function instead.", ReplaceWith("Duration.milliseconds(this)", "kotlin.time.Duration"))
|
||||
public val Int.milliseconds get() = toDuration(DurationUnit.MILLISECONDS)
|
||||
|
||||
/** Returns a [Duration] equal to this [Long] number of milliseconds. */
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.milliseconds() function instead.", ReplaceWith("Duration.milliseconds(this)", "kotlin.time.Duration"))
|
||||
public val Long.milliseconds get() = toDuration(DurationUnit.MILLISECONDS)
|
||||
|
||||
/**
|
||||
@@ -446,16 +567,19 @@ public val Long.milliseconds get() = toDuration(DurationUnit.MILLISECONDS)
|
||||
*/
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.milliseconds() function instead.", ReplaceWith("Duration.milliseconds(this)", "kotlin.time.Duration"))
|
||||
public val Double.milliseconds get() = toDuration(DurationUnit.MILLISECONDS)
|
||||
|
||||
/** Returns a [Duration] equal to this [Int] number of seconds. */
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.seconds() function instead.", ReplaceWith("Duration.seconds(this)", "kotlin.time.Duration"))
|
||||
public val Int.seconds get() = toDuration(DurationUnit.SECONDS)
|
||||
|
||||
/** Returns a [Duration] equal to this [Long] number of seconds. */
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.seconds() function instead.", ReplaceWith("Duration.seconds(this)", "kotlin.time.Duration"))
|
||||
public val Long.seconds get() = toDuration(DurationUnit.SECONDS)
|
||||
|
||||
/**
|
||||
@@ -465,16 +589,19 @@ public val Long.seconds get() = toDuration(DurationUnit.SECONDS)
|
||||
*/
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.seconds() function instead.", ReplaceWith("Duration.seconds(this)", "kotlin.time.Duration"))
|
||||
public val Double.seconds get() = toDuration(DurationUnit.SECONDS)
|
||||
|
||||
/** Returns a [Duration] equal to this [Int] number of minutes. */
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.minutes() function instead.", ReplaceWith("Duration.minutes(this)", "kotlin.time.Duration"))
|
||||
public val Int.minutes get() = toDuration(DurationUnit.MINUTES)
|
||||
|
||||
/** Returns a [Duration] equal to this [Long] number of minutes. */
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.minutes() function instead.", ReplaceWith("Duration.minutes(this)", "kotlin.time.Duration"))
|
||||
public val Long.minutes get() = toDuration(DurationUnit.MINUTES)
|
||||
|
||||
/**
|
||||
@@ -484,16 +611,19 @@ public val Long.minutes get() = toDuration(DurationUnit.MINUTES)
|
||||
*/
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.minutes() function instead.", ReplaceWith("Duration.minutes(this)", "kotlin.time.Duration"))
|
||||
public val Double.minutes get() = toDuration(DurationUnit.MINUTES)
|
||||
|
||||
/** Returns a [Duration] equal to this [Int] number of hours. */
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.hours() function instead.", ReplaceWith("Duration.hours(this)", "kotlin.time.Duration"))
|
||||
public val Int.hours get() = toDuration(DurationUnit.HOURS)
|
||||
|
||||
/** Returns a [Duration] equal to this [Long] number of hours. */
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.hours() function instead.", ReplaceWith("Duration.hours(this)", "kotlin.time.Duration"))
|
||||
public val Long.hours get() = toDuration(DurationUnit.HOURS)
|
||||
|
||||
/**
|
||||
@@ -503,16 +633,19 @@ public val Long.hours get() = toDuration(DurationUnit.HOURS)
|
||||
*/
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.hours() function instead.", ReplaceWith("Duration.hours(this)", "kotlin.time.Duration"))
|
||||
public val Double.hours get() = toDuration(DurationUnit.HOURS)
|
||||
|
||||
/** Returns a [Duration] equal to this [Int] number of days. */
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.days() function instead.", ReplaceWith("Duration.days(this)", "kotlin.time.Duration"))
|
||||
public val Int.days get() = toDuration(DurationUnit.DAYS)
|
||||
|
||||
/** Returns a [Duration] equal to this [Long] number of days. */
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.days() function instead.", ReplaceWith("Duration.days(this)", "kotlin.time.Duration"))
|
||||
public val Long.days get() = toDuration(DurationUnit.DAYS)
|
||||
|
||||
/**
|
||||
@@ -522,6 +655,7 @@ public val Long.days get() = toDuration(DurationUnit.DAYS)
|
||||
*/
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@Deprecated("Use Duration.days() function instead.", ReplaceWith("Duration.days(this)", "kotlin.time.Duration"))
|
||||
public val Double.days get() = toDuration(DurationUnit.DAYS)
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -71,54 +71,54 @@ class DurationTest {
|
||||
val n2 = Random.nextLong(Long.MAX_VALUE)
|
||||
val n3 = Random.nextDouble()
|
||||
|
||||
assertEquals(n1.toDuration(DurationUnit.DAYS), n1.days)
|
||||
assertEquals(n2.toDuration(DurationUnit.DAYS), n2.days)
|
||||
assertEquals(n3.toDuration(DurationUnit.DAYS), n3.days)
|
||||
assertEquals(n1.toDuration(DurationUnit.DAYS), Duration.days(n1))
|
||||
assertEquals(n2.toDuration(DurationUnit.DAYS), Duration.days(n2))
|
||||
assertEquals(n3.toDuration(DurationUnit.DAYS), Duration.days(n3))
|
||||
|
||||
assertEquals(n1.toDuration(DurationUnit.HOURS), n1.hours)
|
||||
assertEquals(n2.toDuration(DurationUnit.HOURS), n2.hours)
|
||||
assertEquals(n3.toDuration(DurationUnit.HOURS), n3.hours)
|
||||
assertEquals(n1.toDuration(DurationUnit.HOURS), Duration.hours(n1))
|
||||
assertEquals(n2.toDuration(DurationUnit.HOURS), Duration.hours(n2))
|
||||
assertEquals(n3.toDuration(DurationUnit.HOURS), Duration.hours(n3))
|
||||
|
||||
assertEquals(n1.toDuration(DurationUnit.MINUTES), n1.minutes)
|
||||
assertEquals(n2.toDuration(DurationUnit.MINUTES), n2.minutes)
|
||||
assertEquals(n3.toDuration(DurationUnit.MINUTES), n3.minutes)
|
||||
assertEquals(n1.toDuration(DurationUnit.MINUTES), Duration.minutes(n1))
|
||||
assertEquals(n2.toDuration(DurationUnit.MINUTES), Duration.minutes(n2))
|
||||
assertEquals(n3.toDuration(DurationUnit.MINUTES), Duration.minutes(n3))
|
||||
|
||||
assertEquals(n1.toDuration(DurationUnit.SECONDS), n1.seconds)
|
||||
assertEquals(n2.toDuration(DurationUnit.SECONDS), n2.seconds)
|
||||
assertEquals(n3.toDuration(DurationUnit.SECONDS), n3.seconds)
|
||||
assertEquals(n1.toDuration(DurationUnit.SECONDS), Duration.seconds(n1))
|
||||
assertEquals(n2.toDuration(DurationUnit.SECONDS), Duration.seconds(n2))
|
||||
assertEquals(n3.toDuration(DurationUnit.SECONDS), Duration.seconds(n3))
|
||||
|
||||
assertEquals(n1.toDuration(DurationUnit.MILLISECONDS), n1.milliseconds)
|
||||
assertEquals(n2.toDuration(DurationUnit.MILLISECONDS), n2.milliseconds)
|
||||
assertEquals(n3.toDuration(DurationUnit.MILLISECONDS), n3.milliseconds)
|
||||
assertEquals(n1.toDuration(DurationUnit.MILLISECONDS), Duration.milliseconds(n1))
|
||||
assertEquals(n2.toDuration(DurationUnit.MILLISECONDS), Duration.milliseconds(n2))
|
||||
assertEquals(n3.toDuration(DurationUnit.MILLISECONDS), Duration.milliseconds(n3))
|
||||
|
||||
assertEquals(n1.toDuration(DurationUnit.MICROSECONDS), n1.microseconds)
|
||||
assertEquals(n2.toDuration(DurationUnit.MICROSECONDS), n2.microseconds)
|
||||
assertEquals(n3.toDuration(DurationUnit.MICROSECONDS), n3.microseconds)
|
||||
assertEquals(n1.toDuration(DurationUnit.MICROSECONDS), Duration.microseconds(n1))
|
||||
assertEquals(n2.toDuration(DurationUnit.MICROSECONDS), Duration.microseconds(n2))
|
||||
assertEquals(n3.toDuration(DurationUnit.MICROSECONDS), Duration.microseconds(n3))
|
||||
|
||||
assertEquals(n1.toDuration(DurationUnit.NANOSECONDS), n1.nanoseconds)
|
||||
assertEquals(n2.toDuration(DurationUnit.NANOSECONDS), n2.nanoseconds)
|
||||
assertEquals(n3.toDuration(DurationUnit.NANOSECONDS), n3.nanoseconds)
|
||||
assertEquals(n1.toDuration(DurationUnit.NANOSECONDS), Duration.nanoseconds(n1))
|
||||
assertEquals(n2.toDuration(DurationUnit.NANOSECONDS), Duration.nanoseconds(n2))
|
||||
assertEquals(n3.toDuration(DurationUnit.NANOSECONDS), Duration.nanoseconds(n3))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun conversionToNumber() {
|
||||
assertEquals(24.0, 1.days.inHours)
|
||||
assertEquals(0.5, 12.hours.inDays)
|
||||
assertEquals(15.0, 0.25.hours.inMinutes)
|
||||
assertEquals(600.0, 10.minutes.inSeconds)
|
||||
assertEquals(500.0, 0.5.seconds.inMilliseconds)
|
||||
assertEquals(50_000.0, 0.05.seconds.inMicroseconds)
|
||||
assertEquals(50_000.0, 0.05.milliseconds.inNanoseconds)
|
||||
assertEquals(24.0, Duration.days(1).inHours)
|
||||
assertEquals(0.5, Duration.hours(12).inDays)
|
||||
assertEquals(15.0, Duration.hours(0.25).inMinutes)
|
||||
assertEquals(600.0, Duration.minutes(10).inSeconds)
|
||||
assertEquals(500.0, Duration.seconds(0.5).inMilliseconds)
|
||||
assertEquals(50_000.0, Duration.seconds(0.05).inMicroseconds)
|
||||
assertEquals(50_000.0, Duration.milliseconds(0.05).inNanoseconds)
|
||||
|
||||
assertEquals(365 * 86400e9, 365.days.inNanoseconds)
|
||||
assertEquals(365 * 86400e9, Duration.days(365).inNanoseconds)
|
||||
|
||||
assertEquals(0.0, Duration.ZERO.inNanoseconds)
|
||||
|
||||
assertEquals(10500, 10.5.seconds.toLongMilliseconds())
|
||||
assertEquals(11, 11.5.milliseconds.toLongMilliseconds())
|
||||
assertEquals(-11, (-11.5).milliseconds.toLongMilliseconds())
|
||||
assertEquals(252_000_000, 252.milliseconds.toLongNanoseconds())
|
||||
assertEquals(Long.MAX_VALUE, (365.days * 293).toLongNanoseconds()) // clamping overflowed value
|
||||
assertEquals(10500, Duration.seconds(10.5).toLongMilliseconds())
|
||||
assertEquals(11, Duration.milliseconds(11.5).toLongMilliseconds())
|
||||
assertEquals(-11, Duration.milliseconds((-11.5)).toLongMilliseconds())
|
||||
assertEquals(252_000_000, Duration.milliseconds(252).toLongNanoseconds())
|
||||
assertEquals(Long.MAX_VALUE, (Duration.days(365) * 293).toLongNanoseconds()) // clamping overflowed value
|
||||
|
||||
repeat(100) {
|
||||
val value = Random.nextLong(1000)
|
||||
@@ -136,7 +136,7 @@ class DurationTest {
|
||||
val m = Random.nextInt(60)
|
||||
val s = Random.nextInt(60)
|
||||
val ns = Random.nextInt(1e9.toInt())
|
||||
(h.hours + m.minutes + s.seconds + ns.nanoseconds).run {
|
||||
(Duration.hours(h) + Duration.minutes(m) + Duration.seconds(s) + Duration.nanoseconds(ns)).run {
|
||||
toComponents { seconds, nanoseconds ->
|
||||
assertEquals(h.toLong() * 3600 + m * 60 + s, seconds)
|
||||
assertEquals(ns, nanoseconds)
|
||||
@@ -165,7 +165,7 @@ class DurationTest {
|
||||
|
||||
@Test
|
||||
fun componentsOfCarriedSum() {
|
||||
(36.hours + 90.minutes + 90.seconds + 1500.milliseconds).run {
|
||||
(Duration.hours(36) + Duration.minutes(90) + Duration.seconds(90) + Duration.milliseconds(1500)).run {
|
||||
toComponents { days, hours, minutes, seconds, nanoseconds ->
|
||||
assertEquals(1, days)
|
||||
assertEquals(13, hours)
|
||||
@@ -180,11 +180,11 @@ class DurationTest {
|
||||
fun infinite() {
|
||||
assertTrue(Duration.INFINITE.isInfinite())
|
||||
assertTrue((-Duration.INFINITE).isInfinite())
|
||||
assertTrue(Double.POSITIVE_INFINITY.nanoseconds.isInfinite())
|
||||
assertTrue(Duration.nanoseconds(Double.POSITIVE_INFINITY).isInfinite())
|
||||
|
||||
// seconds converted to nanoseconds overflow to infinite
|
||||
assertTrue(Double.MAX_VALUE.seconds.isInfinite())
|
||||
assertTrue((-Double.MAX_VALUE).seconds.isInfinite())
|
||||
assertTrue(Duration.seconds(Double.MAX_VALUE).isInfinite())
|
||||
assertTrue(Duration.seconds((-Double.MAX_VALUE)).isInfinite())
|
||||
}
|
||||
|
||||
|
||||
@@ -200,8 +200,8 @@ class DurationTest {
|
||||
|
||||
@Test
|
||||
fun signAndAbsoluteValue() {
|
||||
val negative = -1.seconds
|
||||
val positive = 1.seconds
|
||||
val negative = -Duration.seconds(1)
|
||||
val positive = Duration.seconds(1)
|
||||
val zero = Duration.ZERO
|
||||
|
||||
assertTrue(negative.isNegative())
|
||||
@@ -232,45 +232,45 @@ class DurationTest {
|
||||
assertEquals(0, Duration.ZERO.compareTo(value))
|
||||
assertEquals(0, Duration.ZERO.inNanoseconds.compareTo(value.inNanoseconds))
|
||||
}
|
||||
equivalentToZero((-0.0).seconds)
|
||||
equivalentToZero(Duration.seconds(-0.0))
|
||||
equivalentToZero((-0.0).toDuration(DurationUnit.DAYS))
|
||||
equivalentToZero(-Duration.ZERO)
|
||||
equivalentToZero((-1).seconds / Double.POSITIVE_INFINITY)
|
||||
equivalentToZero(0.seconds / -1)
|
||||
equivalentToZero((-1).seconds * 0.0)
|
||||
equivalentToZero(0.seconds * -1)
|
||||
equivalentToZero(Duration.seconds(-1) / Double.POSITIVE_INFINITY)
|
||||
equivalentToZero(Duration.seconds(0) / -1)
|
||||
equivalentToZero(Duration.seconds(-1) * 0.0)
|
||||
equivalentToZero(Duration.seconds(0) * -1)
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
fun addition() {
|
||||
assertEquals(1.5.hours, 1.hours + 30.minutes)
|
||||
assertEquals(0.5.days, 6.hours + 360.minutes)
|
||||
assertEquals(0.5.seconds, 200.milliseconds + 300_000.microseconds)
|
||||
assertEquals(Duration.hours(1.5), Duration.hours(1) + Duration.minutes(30))
|
||||
assertEquals(Duration.days(0.5), Duration.hours(6) + Duration.minutes(360))
|
||||
assertEquals(Duration.seconds(0.5), Duration.milliseconds(200) + Duration.microseconds(300_000))
|
||||
|
||||
assertFailsWith<IllegalArgumentException> { Duration.INFINITE + (-Duration.INFINITE) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun subtraction() {
|
||||
assertEquals(10.hours, 0.5.days - 120.minutes)
|
||||
assertEquals(850.milliseconds, 1.seconds - 150.milliseconds)
|
||||
assertEquals(Duration.hours(10), Duration.days(0.5) - Duration.minutes(120))
|
||||
assertEquals(Duration.milliseconds(850), Duration.seconds(1) - Duration.milliseconds(150))
|
||||
|
||||
assertFailsWith<IllegalArgumentException> { Duration.INFINITE - Duration.INFINITE }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun multiplication() {
|
||||
assertEquals(1.days, 12.hours * 2)
|
||||
assertEquals(1.days, 60.minutes * 24.0)
|
||||
assertEquals(1.microseconds, 20.nanoseconds * 50)
|
||||
assertEquals(Duration.days(1), Duration.hours(12) * 2)
|
||||
assertEquals(Duration.days(1), Duration.minutes(60) * 24.0)
|
||||
assertEquals(Duration.microseconds(1), Duration.nanoseconds(20) * 50)
|
||||
|
||||
assertEquals(1.days, 2 * 12.hours)
|
||||
assertEquals(12.5.hours, 12.5 * 60.minutes)
|
||||
assertEquals(1.microseconds, 50 * 20.nanoseconds)
|
||||
assertEquals(Duration.days(1), 2 * Duration.hours(12))
|
||||
assertEquals(Duration.hours(12.5), 12.5 * Duration.minutes(60))
|
||||
assertEquals(Duration.microseconds(1), 50 * Duration.nanoseconds(20))
|
||||
|
||||
assertEquals(Duration.ZERO, 0 * 1.hours)
|
||||
assertEquals(Duration.ZERO, 1.seconds * 0.0)
|
||||
assertEquals(Duration.ZERO, 0 * Duration.hours(1))
|
||||
assertEquals(Duration.ZERO, Duration.seconds(1) * 0.0)
|
||||
|
||||
assertFailsWith<IllegalArgumentException> { Duration.INFINITE * 0 }
|
||||
assertFailsWith<IllegalArgumentException> { 0 * Duration.INFINITE }
|
||||
@@ -278,21 +278,21 @@ class DurationTest {
|
||||
|
||||
@Test
|
||||
fun divisionByNumber() {
|
||||
assertEquals(12.hours, 1.days / 2)
|
||||
assertEquals(60.minutes, 1.days / 24.0)
|
||||
assertEquals(20.seconds, 2.minutes / 6)
|
||||
assertEquals(Duration.hours(12), Duration.days(1) / 2)
|
||||
assertEquals(Duration.minutes(60), Duration.days(1) / 24.0)
|
||||
assertEquals(Duration.seconds(20), Duration.minutes(2) / 6)
|
||||
|
||||
assertEquals(Duration.INFINITE, 1.seconds / 0.0)
|
||||
assertEquals(-Duration.INFINITE, -1.seconds / 0.0)
|
||||
assertEquals(Duration.INFINITE, Duration.seconds(1) / 0.0)
|
||||
assertEquals(-Duration.INFINITE, -Duration.seconds(1) / 0.0)
|
||||
assertFailsWith<IllegalArgumentException> { Duration.INFINITE / Double.POSITIVE_INFINITY }
|
||||
assertFailsWith<IllegalArgumentException> { Duration.ZERO / 0 }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun divisionByDuration() {
|
||||
assertEquals(24.0, 1.days / 1.hours)
|
||||
assertEquals(0.1, 9.minutes / 1.5.hours)
|
||||
assertEquals(50.0, 1.microseconds / 20.nanoseconds)
|
||||
assertEquals(24.0, Duration.days(1) / Duration.hours(1))
|
||||
assertEquals(0.1, Duration.minutes(9) / Duration.hours(1.5))
|
||||
assertEquals(50.0, Duration.microseconds(1) / Duration.nanoseconds(20))
|
||||
|
||||
assertTrue((Duration.INFINITE / Duration.INFINITE).isNaN())
|
||||
}
|
||||
@@ -303,30 +303,30 @@ class DurationTest {
|
||||
assertEquals("PT0S", Duration.ZERO.toIsoString())
|
||||
|
||||
// single unit
|
||||
assertEquals("PT24H", 1.days.toIsoString())
|
||||
assertEquals("PT1H", 1.hours.toIsoString())
|
||||
assertEquals("PT1M", 1.minutes.toIsoString())
|
||||
assertEquals("PT1S", 1.seconds.toIsoString())
|
||||
assertEquals("PT0.001S", 1.milliseconds.toIsoString())
|
||||
assertEquals("PT0.000001S", 1.microseconds.toIsoString())
|
||||
assertEquals("PT0.000000001S", 1.nanoseconds.toIsoString())
|
||||
assertEquals("PT24H", Duration.days(1).toIsoString())
|
||||
assertEquals("PT1H", Duration.hours(1).toIsoString())
|
||||
assertEquals("PT1M", Duration.minutes(1).toIsoString())
|
||||
assertEquals("PT1S", Duration.seconds(1).toIsoString())
|
||||
assertEquals("PT0.001S", Duration.milliseconds(1).toIsoString())
|
||||
assertEquals("PT0.000001S", Duration.microseconds(1).toIsoString())
|
||||
assertEquals("PT0.000000001S", Duration.nanoseconds(1).toIsoString())
|
||||
|
||||
// rounded to zero
|
||||
assertEquals("PT0S", 0.1.nanoseconds.toIsoString())
|
||||
assertEquals("PT0S", 0.9.nanoseconds.toIsoString())
|
||||
assertEquals("PT0S", Duration.nanoseconds(0.1).toIsoString())
|
||||
assertEquals("PT0S", Duration.nanoseconds(0.9).toIsoString())
|
||||
|
||||
// several units combined
|
||||
assertEquals("PT24H1M", (1.days + 1.minutes).toIsoString())
|
||||
assertEquals("PT24H0M1S", (1.days + 1.seconds).toIsoString())
|
||||
assertEquals("PT24H0M0.001S", (1.days + 1.milliseconds).toIsoString())
|
||||
assertEquals("PT1H30M", (1.hours + 30.minutes).toIsoString())
|
||||
assertEquals("PT1H0M0.500S", (1.hours + 500.milliseconds).toIsoString())
|
||||
assertEquals("PT2M0.500S", (2.minutes + 500.milliseconds).toIsoString())
|
||||
assertEquals("PT1M30.500S", (90_500.milliseconds).toIsoString())
|
||||
assertEquals("PT24H1M", (Duration.days(1) + Duration.minutes(1)).toIsoString())
|
||||
assertEquals("PT24H0M1S", (Duration.days(1) + Duration.seconds(1)).toIsoString())
|
||||
assertEquals("PT24H0M0.001S", (Duration.days(1) + Duration.milliseconds(1)).toIsoString())
|
||||
assertEquals("PT1H30M", (Duration.hours(1) + Duration.minutes(30)).toIsoString())
|
||||
assertEquals("PT1H0M0.500S", (Duration.hours(1) + Duration.milliseconds(500)).toIsoString())
|
||||
assertEquals("PT2M0.500S", (Duration.minutes(2) + Duration.milliseconds(500)).toIsoString())
|
||||
assertEquals("PT1M30.500S", (Duration.milliseconds(90_500)).toIsoString())
|
||||
|
||||
// negative
|
||||
assertEquals("-PT23H45M", (-1.days + 15.minutes).toIsoString())
|
||||
assertEquals("-PT24H15M", (-1.days - 15.minutes).toIsoString())
|
||||
assertEquals("-PT23H45M", (-Duration.days(1) + Duration.minutes(15)).toIsoString())
|
||||
assertEquals("-PT24H15M", (-Duration.days(1) - Duration.minutes(15)).toIsoString())
|
||||
|
||||
// infinite
|
||||
assertEquals("PT2147483647H", Duration.INFINITE.toIsoString())
|
||||
@@ -334,7 +334,10 @@ class DurationTest {
|
||||
|
||||
@Test
|
||||
fun toStringInUnits() {
|
||||
var d = 1.days + 15.hours + 31.minutes + 45.seconds + 678.milliseconds + 920.microseconds + 516.34.nanoseconds
|
||||
var d = with(Duration) {
|
||||
days(1) + hours(15) + minutes(31) + seconds(45) +
|
||||
milliseconds(678) + microseconds(920) + nanoseconds(516.34)
|
||||
}
|
||||
|
||||
fun test(unit: DurationUnit, vararg representations: String) {
|
||||
assertFails { d.toString(unit, -1) }
|
||||
@@ -344,25 +347,25 @@ class DurationTest {
|
||||
test(DurationUnit.DAYS, "2d", "1.6d", "1.65d", "1.647d")
|
||||
test(DurationUnit.HOURS, "40h", "39.5h", "39.53h")
|
||||
test(DurationUnit.MINUTES, "2372m", "2371.8m", "2371.76m")
|
||||
d -= 39.hours
|
||||
d -= Duration.hours(39)
|
||||
test(DurationUnit.SECONDS, "1906s", "1905.7s", "1905.68s", "1905.679s")
|
||||
d -= 1904.seconds
|
||||
d -= Duration.seconds(1904)
|
||||
test(DurationUnit.MILLISECONDS, "1679ms", "1678.9ms", "1678.92ms", "1678.921ms")
|
||||
d -= 1678.milliseconds
|
||||
d -= Duration.milliseconds(1678)
|
||||
test(DurationUnit.MICROSECONDS, "921us", "920.5us", "920.52us", "920.516us")
|
||||
d -= 920.microseconds
|
||||
d -= Duration.microseconds(920)
|
||||
// sub-nanosecond precision errors
|
||||
test(DurationUnit.NANOSECONDS, "516ns", "516.3ns", "516.34ns", "516.344ns", "516.3438ns")
|
||||
d = (d - 516.nanoseconds) / 17
|
||||
d = (d - Duration.nanoseconds(516)) / 17
|
||||
test(DurationUnit.NANOSECONDS, "0ns", "0.0ns", "0.02ns", "0.020ns", "0.0202ns")
|
||||
|
||||
d = Double.MAX_VALUE.nanoseconds
|
||||
d = Duration.nanoseconds(Double.MAX_VALUE)
|
||||
test(DurationUnit.DAYS, "2.08e+294d")
|
||||
test(DurationUnit.NANOSECONDS, "1.80e+308ns")
|
||||
|
||||
assertEquals("0.500000000000s", 0.5.seconds.toString(DurationUnit.SECONDS, 100))
|
||||
assertEquals("99999000000000.000000000000ns", 99_999.seconds.toString(DurationUnit.NANOSECONDS, 15))
|
||||
assertEquals("1.00e+14ns", 100_000.seconds.toString(DurationUnit.NANOSECONDS, 9))
|
||||
assertEquals("0.500000000000s", Duration.seconds(0.5).toString(DurationUnit.SECONDS, 100))
|
||||
assertEquals("99999000000000.000000000000ns", Duration.seconds(99_999).toString(DurationUnit.NANOSECONDS, 15))
|
||||
assertEquals("1.00e+14ns", Duration.seconds(100_000).toString(DurationUnit.NANOSECONDS, 9))
|
||||
|
||||
d = Duration.INFINITE
|
||||
test(DurationUnit.DAYS, "Infinity", "Infinity")
|
||||
@@ -383,58 +386,58 @@ class DurationTest {
|
||||
assertEquals("-$actual", (-duration).toString())
|
||||
}
|
||||
|
||||
test(101.days, "101d")
|
||||
test(45.3.days, "45.3d")
|
||||
test(45.days, "45.0d")
|
||||
test(Duration.days(101), "101d")
|
||||
test(Duration.days(45.3), "45.3d")
|
||||
test(Duration.days(45), "45.0d")
|
||||
|
||||
test(40.5.days, "972h")
|
||||
test(40.hours + 15.minutes, "40.3h", "40.2h")
|
||||
test(40.hours, "40.0h")
|
||||
test(Duration.days(40.5), "972h")
|
||||
test(Duration.hours(40) + Duration.minutes(15), "40.3h", "40.2h")
|
||||
test(Duration.hours(40), "40.0h")
|
||||
|
||||
test(12.5.hours, "750m")
|
||||
test(30.minutes, "30.0m")
|
||||
test(17.5.minutes, "17.5m")
|
||||
test(Duration.hours(12.5), "750m")
|
||||
test(Duration.minutes(30), "30.0m")
|
||||
test(Duration.minutes(17.5), "17.5m")
|
||||
|
||||
test(16.5.minutes, "990s")
|
||||
test(90.36.seconds, "90.4s")
|
||||
test(50.seconds, "50.0s")
|
||||
test(1.3.seconds, "1.30s")
|
||||
test(1.seconds, "1.00s")
|
||||
test(Duration.minutes(16.5), "990s")
|
||||
test(Duration.seconds(90.36), "90.4s")
|
||||
test(Duration.seconds(50), "50.0s")
|
||||
test(Duration.seconds(1.3), "1.30s")
|
||||
test(Duration.seconds(1), "1.00s")
|
||||
|
||||
test(0.5.seconds, "500ms")
|
||||
test(40.2.milliseconds, "40.2ms")
|
||||
test(4.225.milliseconds, "4.23ms", "4.22ms")
|
||||
test(4.245.milliseconds, "4.25ms")
|
||||
test(1.milliseconds, "1.00ms")
|
||||
test(Duration.seconds(0.5), "500ms")
|
||||
test(Duration.milliseconds(40.2), "40.2ms")
|
||||
test(Duration.milliseconds(4.225), "4.23ms", "4.22ms")
|
||||
test(Duration.milliseconds(4.245), "4.25ms")
|
||||
test(Duration.milliseconds(1), "1.00ms")
|
||||
|
||||
test(0.75.milliseconds, "750us")
|
||||
test(75.35.microseconds, "75.4us", "75.3us")
|
||||
test(7.25.microseconds, "7.25us")
|
||||
test(1.035.microseconds, "1.04us", "1.03us")
|
||||
test(1.005.microseconds, "1.01us", "1.00us")
|
||||
test(Duration.milliseconds(0.75), "750us")
|
||||
test(Duration.microseconds(75.35), "75.4us", "75.3us")
|
||||
test(Duration.microseconds(7.25), "7.25us")
|
||||
test(Duration.microseconds(1.035), "1.04us", "1.03us")
|
||||
test(Duration.microseconds(1.005), "1.01us", "1.00us")
|
||||
|
||||
test(950.5.nanoseconds, "951ns", "950ns")
|
||||
test(85.23.nanoseconds, "85.2ns")
|
||||
test(8.235.nanoseconds, "8.24ns", "8.23ns")
|
||||
test(1.3.nanoseconds, "1.30ns")
|
||||
test(Duration.nanoseconds(950.5), "951ns", "950ns")
|
||||
test(Duration.nanoseconds(85.23), "85.2ns")
|
||||
test(Duration.nanoseconds(8.235), "8.24ns", "8.23ns")
|
||||
test(Duration.nanoseconds(1.3), "1.30ns")
|
||||
|
||||
test(0.75.nanoseconds, "0.75ns")
|
||||
test(0.7512.nanoseconds, "0.7512ns")
|
||||
test(0.023.nanoseconds, "0.023ns")
|
||||
test(0.0034.nanoseconds, "0.0034ns")
|
||||
test(0.0000035.nanoseconds, "0.0000035ns")
|
||||
test(Duration.nanoseconds(0.75), "0.75ns")
|
||||
test(Duration.nanoseconds(0.7512), "0.7512ns")
|
||||
test(Duration.nanoseconds(0.023), "0.023ns")
|
||||
test(Duration.nanoseconds(0.0034), "0.0034ns")
|
||||
test(Duration.nanoseconds(0.0000035), "0.0000035ns")
|
||||
|
||||
test(Duration.ZERO, "0s")
|
||||
test(365.days * 10000, "3650000d")
|
||||
test(300.days * 100000, "3.00e+7d")
|
||||
test(365.days * 100000, "3.65e+7d")
|
||||
test(Duration.days(365) * 10000, "3650000d")
|
||||
test(Duration.days(300) * 100000, "3.00e+7d")
|
||||
test(Duration.days(365) * 100000, "3.65e+7d")
|
||||
|
||||
val universeAge = 365.25.days * 13.799e9
|
||||
val planckTime = 5.4e-44.seconds
|
||||
val universeAge = Duration.days(365.25) * 13.799e9
|
||||
val planckTime = Duration.seconds(5.4e-44)
|
||||
|
||||
test(universeAge, "5.04e+12d")
|
||||
test(planckTime, "5.40e-44s")
|
||||
test(Double.MAX_VALUE.nanoseconds, "2.08e+294d")
|
||||
test(Duration.nanoseconds(Double.MAX_VALUE), "2.08e+294d")
|
||||
test(Duration.INFINITE, "Infinity")
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -52,20 +52,20 @@ class MeasureTimeTest {
|
||||
val timeSource = TestTimeSource()
|
||||
val expectedNs = Random.nextLong(1_000_000_000L)
|
||||
val elapsed = timeSource.measureTime {
|
||||
timeSource += expectedNs.nanoseconds
|
||||
timeSource += Duration.nanoseconds(expectedNs)
|
||||
}
|
||||
|
||||
assertEquals(expectedNs.nanoseconds, elapsed)
|
||||
assertEquals(Duration.nanoseconds(expectedNs), elapsed)
|
||||
|
||||
val expectedResult: Long
|
||||
|
||||
val (result, elapsed2) = timeSource.measureTimedValue {
|
||||
timeSource += expectedNs.nanoseconds
|
||||
timeSource += Duration.nanoseconds(expectedNs)
|
||||
expectedResult = expectedNs
|
||||
expectedNs
|
||||
}
|
||||
|
||||
assertEquals(expectedResult, result)
|
||||
assertEquals(result.nanoseconds, elapsed2)
|
||||
assertEquals(Duration.nanoseconds(result), elapsed2)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -13,14 +13,14 @@ class TestTimeSourceTest {
|
||||
|
||||
@Test
|
||||
fun overflows() {
|
||||
for (enormousDuration in listOf(Duration.INFINITE, Double.MAX_VALUE.nanoseconds, Long.MAX_VALUE.nanoseconds * 2)) {
|
||||
for (enormousDuration in listOf(Duration.INFINITE, Duration.nanoseconds(Double.MAX_VALUE), Duration.nanoseconds(Long.MAX_VALUE) * 2)) {
|
||||
assertFailsWith<IllegalStateException>(enormousDuration.toString()) { TestTimeSource() += enormousDuration }
|
||||
assertFailsWith<IllegalStateException>((-enormousDuration).toString()) { TestTimeSource() += -enormousDuration }
|
||||
}
|
||||
|
||||
val moderatePositiveDuration = Long.MAX_VALUE.takeHighestOneBit().nanoseconds
|
||||
val borderlinePositiveDuration = Long.MAX_VALUE.nanoseconds // rounded to 2.0^63, which is slightly more than Long.MAX_VALUE
|
||||
val borderlineNegativeDuration = Long.MIN_VALUE.nanoseconds
|
||||
val moderatePositiveDuration = Duration.nanoseconds(Long.MAX_VALUE.takeHighestOneBit())
|
||||
val borderlinePositiveDuration = Duration.nanoseconds(Long.MAX_VALUE) // rounded to 2.0^63, which is slightly more than Long.MAX_VALUE
|
||||
val borderlineNegativeDuration = Duration.nanoseconds(Long.MIN_VALUE)
|
||||
run {
|
||||
val timeSource = TestTimeSource()
|
||||
timeSource += moderatePositiveDuration
|
||||
@@ -29,12 +29,12 @@ class TestTimeSourceTest {
|
||||
run {
|
||||
val timeSource = TestTimeSource()
|
||||
timeSource += borderlinePositiveDuration
|
||||
assertFailsWith<IllegalStateException>("Should overflow positive") { timeSource += 1.nanoseconds }
|
||||
assertFailsWith<IllegalStateException>("Should overflow positive") { timeSource += Duration.nanoseconds(1) }
|
||||
}
|
||||
run {
|
||||
val timeSource = TestTimeSource()
|
||||
timeSource += borderlineNegativeDuration
|
||||
assertFailsWith<IllegalStateException>("Should overflow negative") { timeSource += -1.nanoseconds }
|
||||
assertFailsWith<IllegalStateException>("Should overflow negative") { timeSource += -Duration.nanoseconds(1) }
|
||||
}
|
||||
|
||||
run {
|
||||
@@ -51,12 +51,12 @@ class TestTimeSourceTest {
|
||||
val mark = timeSource.markNow()
|
||||
|
||||
repeat(10_000) {
|
||||
timeSource += 0.9.nanoseconds
|
||||
timeSource += Duration.nanoseconds(0.9)
|
||||
|
||||
assertEquals(Duration.ZERO, mark.elapsedNow())
|
||||
}
|
||||
|
||||
timeSource += 1.9.nanoseconds
|
||||
assertEquals(1.nanoseconds, mark.elapsedNow())
|
||||
timeSource += Duration.nanoseconds(1.9)
|
||||
assertEquals(Duration.nanoseconds(1), mark.elapsedNow())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -19,23 +19,27 @@ class TimeMarkTest {
|
||||
assertEquals(!hasPassed, this.hasNotPassedNow(), "Expected mark in the future")
|
||||
assertEquals(hasPassed, this.hasPassedNow(), "Expected mark in the past")
|
||||
|
||||
assertEquals(!hasPassed, this.elapsedNow() < Duration.ZERO, "Mark elapsed: ${this.elapsedNow()}, expected hasPassed: $hasPassed")
|
||||
assertEquals(
|
||||
!hasPassed,
|
||||
this.elapsedNow() < Duration.ZERO,
|
||||
"Mark elapsed: ${this.elapsedNow()}, expected hasPassed: $hasPassed"
|
||||
)
|
||||
}
|
||||
|
||||
val mark = timeSource.markNow()
|
||||
val markFuture1 = (mark + 1.milliseconds).apply { assertHasPassed(false) }
|
||||
val markFuture2 = (mark - (-1).milliseconds).apply { assertHasPassed(false) }
|
||||
val markFuture1 = (mark + Duration.milliseconds(1)).apply { assertHasPassed(false) }
|
||||
val markFuture2 = (mark - Duration.milliseconds((-1))).apply { assertHasPassed(false) }
|
||||
|
||||
val markPast1 = (mark - 1.milliseconds).apply { assertHasPassed(true) }
|
||||
val markPast2 = (markFuture1 + (-2).milliseconds).apply { assertHasPassed(true) }
|
||||
val markPast1 = (mark - Duration.milliseconds(1)).apply { assertHasPassed(true) }
|
||||
val markPast2 = (markFuture1 + Duration.milliseconds((-2))).apply { assertHasPassed(true) }
|
||||
|
||||
timeSource += 500_000.nanoseconds
|
||||
timeSource += Duration.nanoseconds(500_000)
|
||||
|
||||
val elapsed = mark.elapsedNow()
|
||||
val elapsedFromFuture = elapsed - 1.milliseconds
|
||||
val elapsedFromPast = elapsed + 1.milliseconds
|
||||
val elapsedFromFuture = elapsed - Duration.milliseconds(1)
|
||||
val elapsedFromPast = elapsed + Duration.milliseconds(1)
|
||||
|
||||
assertEquals(0.5.milliseconds, elapsed)
|
||||
assertEquals(Duration.milliseconds(0.5), elapsed)
|
||||
assertEquals(elapsedFromFuture, markFuture1.elapsedNow())
|
||||
assertEquals(elapsedFromFuture, markFuture2.elapsedNow())
|
||||
|
||||
@@ -45,7 +49,7 @@ class TimeMarkTest {
|
||||
markFuture1.assertHasPassed(false)
|
||||
markPast1.assertHasPassed(true)
|
||||
|
||||
timeSource += 1.milliseconds
|
||||
timeSource += Duration.milliseconds(1)
|
||||
|
||||
markFuture1.assertHasPassed(true)
|
||||
markPast1.assertHasPassed(true)
|
||||
|
||||
+21
@@ -5694,8 +5694,29 @@ public final class kotlin/time/Duration : java/lang/Comparable {
|
||||
|
||||
public final class kotlin/time/Duration$Companion {
|
||||
public final fun convert (DLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit;)D
|
||||
public final fun days-UwyO8pc (D)D
|
||||
public final fun days-UwyO8pc (I)D
|
||||
public final fun days-UwyO8pc (J)D
|
||||
public final fun getINFINITE-UwyO8pc ()D
|
||||
public final fun getZERO-UwyO8pc ()D
|
||||
public final fun hours-UwyO8pc (D)D
|
||||
public final fun hours-UwyO8pc (I)D
|
||||
public final fun hours-UwyO8pc (J)D
|
||||
public final fun microseconds-UwyO8pc (D)D
|
||||
public final fun microseconds-UwyO8pc (I)D
|
||||
public final fun microseconds-UwyO8pc (J)D
|
||||
public final fun milliseconds-UwyO8pc (D)D
|
||||
public final fun milliseconds-UwyO8pc (I)D
|
||||
public final fun milliseconds-UwyO8pc (J)D
|
||||
public final fun minutes-UwyO8pc (D)D
|
||||
public final fun minutes-UwyO8pc (I)D
|
||||
public final fun minutes-UwyO8pc (J)D
|
||||
public final fun nanoseconds-UwyO8pc (D)D
|
||||
public final fun nanoseconds-UwyO8pc (I)D
|
||||
public final fun nanoseconds-UwyO8pc (J)D
|
||||
public final fun seconds-UwyO8pc (D)D
|
||||
public final fun seconds-UwyO8pc (I)D
|
||||
public final fun seconds-UwyO8pc (J)D
|
||||
}
|
||||
|
||||
public final class kotlin/time/DurationKt {
|
||||
|
||||
Reference in New Issue
Block a user