/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠIN O VA ĠIT Ġd . o . o . Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġsi . in ova . kotlin ova . time Ċ Ċ import Ġandroid . os . System Clock Ċ import Ġandroidx . annotation . Restrict To Ċ import Ġorg . th reet en . bp . Clock Ċ import Ġorg . th reet en . bp . Instant Ċ import Ġorg . th reet en . bp . LocalDate Ċ import Ġorg . th reet en . bp . LocalDateTime Ċ import Ġorg . th reet en . bp . Zone Id Ċ import Ġorg . th reet en . bp . Zone Offset Ċ Ċ /** Ċ Ġ* ĠTime Ġprovider Ġfor ĠAndroid Ġsystem Ġtime Ġand Ġbackport ed ĠThree Ten Ġtime Ġobjects Ċ Ġ* Ċ Ġ* ĠAll Ġmethods Ġin Ġthis Ġclass Ġare Ġover rid able , Ġallowing Ġfor Ġmock ing Ġtime Ċ Ġ* Ċ Ġ* Ġ@ author ĠM ate j ĠD ro bn ic Ċ Ġ*/ Ċ object ĠAndroid Time Provider Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see ĠSystem Clock . elapsed Realtime ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġelapsed Realtime (): ĠLong Ġ= Ġelapsed Realtime Provider () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see ĠSystem Clock . uptime Millis ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġu ptime Millis (): ĠLong Ġ= Ġu ptime Millis Provider () ĊĊĠĠĠ Ġfun Ġcurrent Instant (): ĠInstant Ġ= ĊĠĠĠĠĠĠĠ ĠInstant . now ( clock Provider ( Zone Offset . UTC )) ĊĊĠĠĠ Ġfun Ġtoday LocalDate (): ĠLocalDate Ġ= ĠLocalDate . now ( clock Provider ( Zone Id . system Default ())) ĊĊĠĠĠ Ġfun Ġcurrent LocalDateTime (): ĠLocalDateTime Ġ= ĊĠĠĠĠĠĠĠ ĠLocalDateTime . now ( clock Provider ( Zone Id . system Default ())) ĊĊĠĠĠ Ġ@ Restrict To ( Restrict To . Scope . TESTS ) ĊĠĠĠ Ġvar Ġelapsed Realtime Provider Ġ= Ġ{ ĠSystem Clock . elapsed Realtime () Ġ} ĊĊĠĠĠ Ġ@ Restrict To ( Restrict To . Scope . TESTS ) ĊĠĠĠ Ġvar Ġu ptime Millis Provider Ġ= Ġ{ ĠSystem Clock . uptime Millis () Ġ} ĊĊĠĠĠ Ġ@ Restrict To ( Restrict To . Scope . TESTS ) ĊĠĠĠ Ġvar Ġclock Provider : Ġ( Zone Id ) Ġ-> ĠClock Ġ= Ġ{ ĠClock . system ( it ) Ġ} Ċ }