/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġandroid . support . we arable . comp lications Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġandroidx . we ar . comp lications . Shared Ro bo lectric TestRunner Ċ import Ġcom . google . common . truth . Truth Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġjava . util . Calendar Ċ import Ġjava . util . G regorian Calendar Ċ import Ġjava . util . TimeZone Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ @ RunWith ( Shared Ro bo lectric TestRunner :: class ) Ċ public Ġclass ĠTime Format Text Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Resources Ġ= ĠApplication Provider . getApplicationContext < Context >(). resources ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġtest Default Style Format () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN Ġa ĠTime Format Text Ġobject Ġusing Ġthe Ġdefault Ġstyle ĊĠĠĠĠĠĠĠ Ġval Ġt ft Ġ= ĠTime Format Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" E Ġ' in ' ĠL LL ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Text . FORMAT _ STYLE _ DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĠgetText Ġis Ġcalled Ġfor Ġa Ġgiven Ġdate ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ft . getText At ( m Resources , ĠG regorian Calendar ( 2 0 1 6 , Ġ 2 , Ġ 4 ). time In Millis ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN Ġthe Ġresults Ġare Ġin Ġthe Ġdefault Ġcase . ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" Fri Ġin ĠMar ", Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġtest UpperCase Style Format () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN Ġa ĠTime Format Text Ġobject Ġusing Ġthe Ġupper Ġcase Ġstyle ĊĠĠĠĠĠĠĠ Ġval Ġt ft Ġ= ĠTime Format Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" E Ġ' in ' ĠL LL ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Text . FORMAT _ STYLE _ UPPER _ CASE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĠgetText Ġis Ġcalled Ġfor Ġa Ġgiven Ġdate ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ft . getText At ( m Resources , ĠG regorian Calendar ( 2 0 1 6 , Ġ 2 , Ġ 4 ). time In Millis ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN Ġthe Ġresults Ġare Ġin Ġupper Ġcase . ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" FR I ĠIN ĠM AR ", Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġtest LowerCase Style Format () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN Ġa ĠTime Format Text Ġobject Ġusing Ġthe Ġlower Ġcase Ġstyle ĊĠĠĠĠĠĠĠ Ġval Ġt ft Ġ= ĠTime Format Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" E Ġ' in ' ĠL LL ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Text . FORMAT _ STYLE _ LOWER _ CASE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĠgetText Ġis Ġcalled Ġfor Ġa Ġgiven Ġdate ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ft . getText At ( m Resources , ĠG regorian Calendar ( 2 0 1 6 , Ġ 2 , Ġ 4 ). time In Millis ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN Ġthe Ġresults Ġare Ġin Ġlower Ġcase . ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" f ri Ġin Ġmar ", Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġtest Format With TimeZone () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN Ġa ĠTime Format Text Ġobject Ġusing Ġthe Ġdefault Ġstyle Ġand Ġa Ġtime Ġzone Ġspecified . ĊĠĠĠĠĠĠĠ Ġval Ġt ft Ġ= ĠTime Format Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" HH : mm ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Text . FORMAT _ STYLE _ DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime Zone . getTime Zone (" America / Los _ An ge les ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG regorian Calendar ( TimeZone . getTime Zone (" GMT + 0 ")) ĊĠĠĠĠĠĠĠ Ġcalendar [ 2 0 1 6 , Ġ 2 , Ġ 4 , Ġ 1 5 , Ġ 1 2 ] Ġ= Ġ 5 8 ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĠgetText Ġis Ġcalled Ġfor Ġa Ġgiven Ġdate ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġt ft . getText At ( m Resources , Ġcalendar . time In Millis ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN Ġthe Ġresults Ġare Ġadjusted Ġfor Ġthe Ġtime Ġzone . ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" 0 7 : 1 2 ", Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġtest Return Same Time () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN Ġa ĠTime Format Text Ġobject Ġusing Ġthe Ġlower Ġcase Ġstyle ĊĠĠĠĠĠĠĠ Ġvar Ġt ft Ġ= ĠTime Format Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" HH : mm ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Text . FORMAT _ STYLE _ LOWER _ CASE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN Ġreturns Same Text Ġis Ġcalled Ġfor Ġtwo Ġtime Ġin Ġthe Ġdifferent Ġperiod . ĊĠĠĠĠĠĠĠ Ġ// ĠTHEN Ġthe Ġresult Ġof ĠgetText Ġshould Ġbe Ġdifferent . ĊĠĠĠĠĠĠĠ Ġvar Ġtest Time 1 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . HOUR S . to Millis ( 2 3 ) Ġ+ ĠTimeUnit . MIN UTES . to Millis ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġtest Time 2 Ġ= Ġtest Time 1 Ġ+ ĠTimeUnit . MIN UTES . to Millis ( 3 0 ) ĊĠĠĠĠĠĠĠ ĠAssert . assertFalse ( t ft . returns Same Text ( test Time 1 , Ġtest Time 2 )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN Ġreturns Same Text Ġis Ġcalled Ġfor Ġtwo Ġtime Ġin Ġthe Ġsame Ġperiod . ĊĠĠĠĠĠĠĠ Ġ// ĠTHEN Ġthe Ġresult Ġof ĠgetText Ġshould Ġbe Ġthe Ġsame . ĊĠĠĠĠĠĠĠ Ġtest Time 1 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . HOUR S . to Millis ( 2 3 ) Ġ+ ĠTimeUnit . MIN UTES . to Millis ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġtest Time 2 Ġ= Ġtest Time 1 Ġ+ ĠTimeUnit . SECONDS . to Millis ( 3 0 ) ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( t ft . returns Same Text ( test Time 1 , Ġtest Time 2 )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN Ġa ĠTime Format Text Ġobject Ġusing Ġthe Ġlower Ġcase Ġstyle Ġand Ġa Ġspecify Ġtime Ġzone . ĊĠĠĠĠĠĠĠ Ġval Ġtz Ġ= ĠTime Zone . getTime Zone (" America / An ch orage ") ĊĠĠĠĠĠĠĠ Ġt ft Ġ= ĠTime Format Text (" d ", ĠComp lication Text . FORMAT _ STYLE _ LOWER _ CASE , Ġtz ) ĊĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN Ġreturns Same Text Ġis Ġcalled Ġfor Ġtwo Ġtime Ġin Ġdifferent Ġdate . ĊĠĠĠĠĠĠĠ Ġ// ĠTHEN Ġthe Ġresult Ġof ĠgetText Ġshould Ġbe Ġthe Ġsame . ĊĠĠĠĠĠĠĠ Ġcal . time Zone Ġ= Ġtz ĊĠĠĠĠĠĠĠ Ġcal [ 2 0 1 6 , Ġ 7 , Ġ 7 , Ġ 2 3 , Ġ 5 9 ] Ġ= Ġ 5 9 ĊĠĠĠĠĠĠĠ Ġval Ġtime 1 Ġ= Ġcal . time In Millis ĊĠĠĠĠĠĠĠ Ġcal [ 2 0 1 6 , Ġ 7 , Ġ 8 , Ġ 0 , Ġ 0 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġtime 2 Ġ= Ġcal . time In Millis ĊĠĠĠĠĠĠĠ ĠAssert . assertFalse ( t ft . returns Same Text ( time 1 , Ġtime 2 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġtest Time Format With TimeZone () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcomp lication Text Ġ= ĠTime Format Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" HH : mm ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Text . FORMAT _ STYLE _ DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime Zone . getTime Zone (" Asia / Se oul ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG regorian Calendar ( TimeZone . getTime Zone (" GMT + 0 ")) ĊĠĠĠĠĠĠĠ Ġcalendar [ 2 0 1 6 , Ġ 2 , Ġ 4 , Ġ 1 8 , Ġ 5 2 ] Ġ= Ġ 5 8 ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Text . getText At ( m Resources , Ġcalendar . time In Millis ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" 0 3 : 5 2 ", Ġresult . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġtest Parcel Time Format Text Without TimeZone () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĠTime Format Text Ġwith Ġno Ġtime Ġzone ĊĠĠĠĠĠĠĠ Ġval Ġoriginal Text Ġ= ĠTime Format Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" EEE Ġ' the ' Ġd ĠL LL ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Text . FORMAT _ STYLE _ LOWER _ CASE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN Ġthe Ġobject Ġis Ġparcel led Ġand Ġun parcel led ĊĠĠĠĠĠĠĠ Ġval Ġnew Text Ġ= Ġoriginal Text . round Trip Parcelable () !! ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN Ġthe Ġobject Ġbehaves Ġas Ġexpected . ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Text . getText At ( m Resources , ĠG regorian Calendar ( 2 0 1 6 , Ġ 2 , Ġ 4 ). time In Millis ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" f ri Ġthe Ġ 4 Ġmar ", Ġresult . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġtest Parcel Time Format Text With TimeZone () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĠTime Format Text Ġwith Ġa Ġtime Ġzone Ġspecified ĊĠĠĠĠĠĠĠ Ġval Ġoriginal Text Ġ= ĠTime Format Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" EEE Ġ' the ' Ġd ĠL LL ĠHH : mm ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Text . FORMAT _ STYLE _ LOWER _ CASE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime Zone . getTime Zone (" GMT + 5 ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN Ġthe Ġobject Ġis Ġparcel led Ġand Ġun parcel led ĊĠĠĠĠĠĠĠ Ġval Ġnew Text Ġ= Ġoriginal Text . round Trip Parcelable () !! ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN Ġthe Ġobject Ġbehaves Ġas Ġexpected . ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠG regorian Calendar ( TimeZone . getTime Zone (" GMT + 0 ")) ĊĠĠĠĠĠĠĠ Ġcalendar [ 2 0 1 6 , Ġ 2 , Ġ 4 , Ġ 1 8 , Ġ 5 2 ] Ġ= Ġ 5 8 ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġnew Text . getText At ( m Resources , Ġcalendar . time In Millis ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" f ri Ġthe Ġ 4 Ġmar Ġ 2 3 : 5 2 ", Ġresult . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġnext Change Time Seconds () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Format Text Ġ= ĠTime Format Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" HH : mm : ss ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Text . FORMAT _ STYLE _ DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime Zone . getDefault () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNext Ġchange Ġis Ġat Ġthe Ġnext Ġsecond Ġboundary . ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( 1 0 0 0 0 3 5 7 8 9 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 1 0 0 0 0 3 6 0 0 0 L ) ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( 7 0 0 0 0 6 0 0 0 0 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 7 0 0 0 0 6 1 0 0 0 L ) ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( 1 9 0 0 0 0 0 0 0 1 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 1 9 0 0 0 0 1 0 0 0 L ) ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( 1 1 1 1 1 0 0 9 9 9 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 1 1 1 1 1 0 1 0 0 0 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġnext Change Time Min ut ely () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Format Text Ġ= ĠTime Format Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" HH : mm ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Text . FORMAT _ STYLE _ DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime Zone . getTime Zone (" Asia / Se oul ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNext Ġchange Ġis Ġat Ġthe Ġnext Ġminute Ġboundary . ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( 6 0 0 0 0 3 5 7 8 9 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 6 0 0 0 0 6 0 0 0 0 L ) ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( 6 0 0 0 0 6 0 0 0 0 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 6 0 0 0 1 2 0 0 0 0 L ) ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( 6 0 0 0 0 6 0 0 0 1 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 6 0 0 0 1 2 0 0 0 0 L ) ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( 6 0 0 0 0 5 9 9 9 9 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 6 0 0 0 0 6 0 0 0 0 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġnext Change Time Hour ly () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Format Text Ġ= ĠTime Format Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" d ĠL LL ĠHH ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Text . FORMAT _ STYLE _ DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime Zone . getDefault () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNext Ġchange Ġis Ġat Ġthe Ġnext Ġhour Ġboundary . ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( 3 6 0 0 0 0 3 5 7 8 9 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 3 6 0 0 3 6 0 0 0 0 0 L ) ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( 3 6 0 0 0 6 0 0 0 0 0 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 3 6 0 0 3 6 0 0 0 0 0 L ) ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( 3 6 0 0 3 6 0 0 0 0 0 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 3 6 0 0 7 2 0 0 0 0 0 L ) ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( 3 6 0 0 7 1 9 9 9 9 9 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 3 6 0 0 7 2 0 0 0 0 0 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġnext Change Time Daily Utc () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Format Text Ġ= ĠTime Format Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" d ĠL LL ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Text . FORMAT _ STYLE _ DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime Zone . getTime Zone (" UTC ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNext Ġchange Ġis Ġat Ġthe Ġnext Ġday Ġboundary . ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( 8 6 4 0 0 0 0 0 3 5 7 8 9 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 8 6 4 0 0 8 6 4 0 0 0 0 0 L ) ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( 8 6 4 0 0 8 6 3 9 9 9 9 9 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 8 6 4 0 0 8 6 4 0 0 0 0 0 L ) ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( 8 6 4 0 0 8 6 4 0 0 0 0 0 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 8 6 4 0 1 7 2 8 0 0 0 0 0 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġnext Change Time Daily TimeZone () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Format Text Ġ= ĠTime Format Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" d ĠL LL ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Text . FORMAT _ STYLE _ DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime Zone . getTime Zone (" GMT - 5 ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġcalendar : ĠCalendar Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG regorian Calendar ( TimeZone . getTime Zone (" UTC ")) ĊĠĠĠĠĠĠĠ Ġcalendar [ 2 0 1 8 , ĠCalendar . AP R IL , Ġ 1 7 , Ġ 8 , Ġ 0 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġcalendar [ Calendar . MILLI SECOND ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġinput Time Ġ= Ġcalendar . time In Millis ĊĊĠĠĠĠĠĠĠ Ġ// ĠNext Ġchange Ġis Ġat Ġmid night Ġin Ġthe Ġspecified Ġtime Ġzone . ĊĠĠĠĠĠĠĠ Ġcalendar [ 2 0 1 8 , ĠCalendar . AP R IL , Ġ 1 8 , Ġ 5 , Ġ 0 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġexpected Time Ġ= Ġcalendar . time In Millis ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( input Time )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( expected Time ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġnext Change Time Daily TimeZone Next Day () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Format Text Ġ= ĠTime Format Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" d ĠL LL ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Text . FORMAT _ STYLE _ DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime Zone . getTime Zone (" GMT + 5 ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġcalendar : ĠCalendar Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG regorian Calendar ( TimeZone . getTime Zone (" UTC ")) ĊĠĠĠĠĠĠĠ Ġcalendar [ 2 0 1 8 , ĠCalendar . AP R IL , Ġ 1 7 , Ġ 2 3 , Ġ 0 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġcalendar [ Calendar . MILLI SECOND ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġinput Time Ġ= Ġcalendar . time In Millis ĊĊĠĠĠĠĠĠĠ Ġ// ĠNext Ġchange Ġis Ġat Ġmid night Ġin Ġthe Ġspecified Ġtime Ġzone , Ġthe Ġday Ġafter Ġthe Ġstart Ġtime ĊĠĠĠĠĠĠĠ Ġ// Ġ( which ĊĠĠĠĠĠĠĠ Ġ// Ġis Ġafter Ġmid night Ġin ĠGMT + 5 ). ĊĠĠĠĠĠĠĠ Ġcalendar [ 2 0 1 8 , ĠCalendar . AP R IL , Ġ 1 8 , Ġ 1 9 , Ġ 0 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġexpected Time Ġ= Ġcalendar . time In Millis ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( time Format Text . getNext Change Time ( input Time )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( expected Time ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġtest Time Format Text Get Precision () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdate Formats Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" S ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" s ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" d ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" m ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" h ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" D ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" W ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" y ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" E ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" w ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" EEE Ġ' the ' Ġd ĠL LL ĠHH : mm ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"' now Ġtime Ġis ' ĠHH Ġ' o '' clock '", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" yyyy - MM - dd ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" yyyy - MM - dd ĠHH : mm ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" yyyy - MM - dd ĠHH : mm Z ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" yyyy - MM - dd ĠHH : mm : ss . SS SZ ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" yyyy - MM - dd ' T ' HH : mm : ss . SS SZ ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" yyyy Ġ''' Ġhello '", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" yyyy Ġ''' '' Ġhello ' Ġs ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" LL L ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" LL L Ġa " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval ĠdateFormat Precision Ġ= Ġlong ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . SECONDS . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . SECONDS . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . DAYS . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . MIN UTES . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . HOUR S . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . DAYS . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . DAYS . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . DAYS . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . DAYS . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . DAYS . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . MIN UTES . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . HOUR S . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . DAYS . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . MIN UTES . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . MIN UTES . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . SECONDS . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . SECONDS . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . DAYS . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . SECONDS . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . DAYS . to Millis ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . HOUR S . to Millis ( 1 2 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdate Formats . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĠTime Format Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Formats [ i ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Text . FORMAT _ STYLE _ DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( date Format Precision [ i ], Ġtext . precision ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }