Store Duration value as a multi-range Long

Now precision loss happens at bigger durations.

This changes the binary API due different underlying type of Duration.
This commit is contained in:
Ilya Gorbunov
2021-02-17 20:15:18 +03:00
parent 3f4fa7eb98
commit fa7460ba48
9 changed files with 596 additions and 182 deletions
@@ -44,9 +44,14 @@ class DurationConversionTest {
@Test
fun javaToKotlinRounding() {
val jtDuration = JTDuration.ofDays(105).plusNanos(1)
val duration = jtDuration.toKotlinDuration()
assertEquals(Duration.days(105), duration)
val jtDuration1 = JTDuration.ofDays(365 * 150)
val jtDuration2 = jtDuration1.plusNanos(1)
assertNotEquals(jtDuration1, jtDuration2)
val duration1 = jtDuration1.toKotlinDuration()
val duration2 = jtDuration1.toKotlinDuration()
assertEquals(duration1, duration2)
assertEquals(Duration.days(365 * 150), duration2)
}
@Test