Add ClockMark and measureTime tests with test clock
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright 2010-2019 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.
|
||||
*/
|
||||
|
||||
package test.time
|
||||
|
||||
import kotlin.test.*
|
||||
import kotlin.time.*
|
||||
|
||||
class ClockMarkTest {
|
||||
|
||||
@Test
|
||||
fun adjustment() {
|
||||
val clock = TestClock(unit = DurationUnit.NANOSECONDS)
|
||||
|
||||
val mark = clock.mark()
|
||||
val markFuture1 = mark + 1.milliseconds
|
||||
val markFuture2 = mark - (-1).milliseconds
|
||||
|
||||
val markPast1 = mark - 1.milliseconds
|
||||
val markPast2 = markFuture1 + (-2).milliseconds
|
||||
|
||||
clock.reading = 500_000L
|
||||
|
||||
val elapsed = mark.elapsed()
|
||||
val elapsedFromFuture = elapsed - 1.milliseconds
|
||||
val elapsedFromPast = elapsed + 1.milliseconds
|
||||
|
||||
assertEquals(0.5.milliseconds, elapsed)
|
||||
assertEquals(elapsedFromFuture, markFuture1.elapsed())
|
||||
assertEquals(elapsedFromFuture, markFuture2.elapsed())
|
||||
|
||||
assertEquals(elapsedFromPast, markPast1.elapsed())
|
||||
assertEquals(elapsedFromPast, markPast2.elapsed())
|
||||
}
|
||||
}
|
||||
@@ -44,4 +44,26 @@ class MeasureTimeTest {
|
||||
assertEquals(someResult, result)
|
||||
assertTrue(elapsed > Duration.ZERO)
|
||||
}
|
||||
|
||||
|
||||
@Test fun measureTimeTestClock() {
|
||||
val clock = TestClock(unit = DurationUnit.NANOSECONDS)
|
||||
val expectedNs = Random.nextLong(1_000_000_000L)
|
||||
val elapsed = clock.measureTime {
|
||||
clock.reading += expectedNs
|
||||
}
|
||||
|
||||
assertEquals(expectedNs.nanoseconds, elapsed)
|
||||
|
||||
val expectedResult: Long
|
||||
|
||||
val (result, elapsed2) = clock.withMeasureTime {
|
||||
clock.reading += expectedNs
|
||||
expectedResult = expectedNs
|
||||
expectedNs
|
||||
}
|
||||
|
||||
assertEquals(expectedResult, result)
|
||||
assertEquals(result.nanoseconds, elapsed2)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user