/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 1 Ġ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 . Ċ Ġ*/ Ċ Ċ @ file : Opt In ( Experimental Time :: class ) Ċ package Ġtest . time Ċ Ċ import Ġkotlin . test .* Ċ import Ġkotlin . time .* Ċ import Ġkotlin . time . Duration . Companion . nan oseconds Ċ Ċ class ĠTest Time Source Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġoverflow s () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( en orm ous Duration Ġin ĠlistOf ( Duration . INF IN ITE , ĠDouble . MAX _ VALUE . nan oseconds , ĠLong . MAX _ VALUE . nan oseconds Ġ* Ġ 2 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException >( en orm ous Duration . toString ()) Ġ{ ĠTest Time Source () Ġ+= Ġen orm ous Duration Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > ((- en orm ous Duration ). toString ()) Ġ{ ĠTest Time Source () Ġ+= Ġ- en orm ous Duration Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmod erate Positive Duration Ġ= ĠLong . MAX _ VALUE . nan oseconds Ġ/ Ġ 1 . 5 ĊĠĠĠĠĠĠĠ Ġval Ġborder line Qu arter Positive Duration Ġ= Ġ( Long . MAX _ VALUE Ġ/ Ġ 4 ). nan oseconds Ġ// Ġprecise Ġnumber Ġof Ġns ĊĠĠĠĠĠĠĠ Ġval Ġborder line Qu arter Negative Duration Ġ= Ġ( Long . MIN _ VALUE Ġ/ Ġ 4 ). nan oseconds ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Source Ġ= ĠTest Time Source () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Source Ġ+= Ġmod erate Positive Duration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException >(" Should Ġoverflow Ġpositive ") Ġ{ Ġtime Source Ġ+= Ġmod erate Positive Duration Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Source Ġ= ĠTest Time Source () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 4 ) Ġ{ Ġtime Source Ġ+= Ġborder line Qu arter Positive Duration Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException >(" Should Ġoverflow Ġpositive ") Ġ{ Ġtime Source Ġ+= Ġ 4 . nan oseconds Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Source Ġ= ĠTest Time Source () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 4 ) Ġ{ Ġtime Source Ġ+= Ġborder line Qu arter Negative Duration Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException >(" Should Ġoverflow Ġnegative ") Ġ{ Ġtime Source Ġ+= Ġ- 4 . nan oseconds Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Source Ġ= ĠTest Time Source () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Source Ġ+= Ġmod erate Positive Duration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdoes Ġnot Ġoverflow Ġeven Ġif Ġduration Ġdoesn 't Ġfit Ġin Ġlong , Ġbut Ġthe Ġresult Ġfits ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Source Ġ+= Ġ- mod erate Positive Duration Ġ- ĠLong . MAX _ VALUE . nan oseconds ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġnan ose cond Round ing () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Source Ġ= ĠTest Time Source () ĊĠĠĠĠĠĠĠ Ġval Ġmark Ġ= Ġtime Source . mark Now () ĊĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 _ 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Source Ġ+= Ġ 0 . 4 . nan oseconds ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Duration . ZERO , Ġmark . elapsed Now ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtime Source Ġ+= Ġ 1 . 9 . nan oseconds ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 . nan oseconds , Ġmark . elapsed Now ()) ĊĠĠĠ Ġ} Ċ } Ċ