Add ClockMark and measureTime tests with test clock

This commit is contained in:
Ilya Gorbunov
2019-04-15 23:25:35 +03:00
parent b5d16f1a9b
commit 682430766b
2 changed files with 59 additions and 0 deletions
@@ -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)
}
}