package Ġcom . hyper track . android . gui ĊĊ Ċ import Ġcom . hyper track . android . ui . screens . place _ details . Place Vis its Adapter Ċ import Ġcom . hyper track . android . ui . screens . vis its _ management . tabs . history . Time Distance Formatter Ċ import Ġcom . hyper track . android . utils . Os Utils Provider Ċ import Ġcom . hyper track . android . utils . format ters . DateTime Formatter Impl Ċ import Ġcom . hyper track . android . utils . format ters . Datetime Formatter Ċ import Ġcom . hyper track . android . utils . format ters . pretty Format Date Ċ Ċ import Ġcom . hyper track . logistics . android . github . R Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġjunit . framework . TestCase . assertEquals Ċ import Ġorg . junit . Test Ċ import Ġjava . time . Zone Id Ċ import Ġjava . time . Z onedDateTime Ċ import Ġjava . time . format . DateTime Formatter Ċ Ċ class ĠGe ofence DateFormat ting Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġproperly Ġformat Ġenter Ġand Ġexit Ġrange `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġformatter : ĠDate time Formatter Ġ= Ġobject Ġ: ĠDateTime Formatter Impl ( Zone Id . of (" UTC ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġformat Time ( dt : ĠZ onedDateTime ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdt . format ( DateTime Formatter . ISO _ DATE _ TIME ). replace ("[ UTC ]", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġos Utils Provider Ġ= Ġmock k < Os Utils Provider >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġstring From Resource ( R . string . place _ today ) Ġ} Ġreturns Ġ" Today " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġstring From Resource ( R . string . place _ y esterday ) Ġ} Ġreturns Ġ" Y esterday " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠPlace Vis its Adapter ( os Utils Provider , Ġformatter , Ġmock k (), Ġmock k ()) Ġ{} ĊĠĠĠĠĠĠĠ Ġval Ġtoday Ġ= ĠZ onedDateTime . now (). with Zone Same Instant ( Zone Id . of (" UTC ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Hour ( 1 3 ). with Minute ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġyesterday Ġ= Ġtoday . minus Days ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġweek Ago Ġ= Ġtoday . minus Days ( 7 ) ĊĠĠĠĠĠĠĠ Ġval Ġlong Time Ago Ġ= Ġtoday . minus Days ( 1 4 ) ĊĊĠĠĠĠĠĠĠ Ġtest ( adapter , Ġtoday , Ġtoday , Ġos Utils Provider , Ġformatter ) Ġ{ Ġres , Ġdt 1 , Ġdt 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( res ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ" Today , Ġ${ formatter . format Time ( dt 1 )} ĠâĢĶ Ġ${ formatter . format Time ( dt 2 )}" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( expected ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġres ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtest ( adapter , Ġyesterday , Ġyesterday , Ġos Utils Provider , Ġformatter ) Ġ{ Ġres , Ġdt 1 , Ġdt 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y esterday , Ġ${ formatter . format Time ( dt 1 )} ĠâĢĶ Ġ${ formatter . format Time ( dt 2 )} ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtest ( adapter , Ġyesterday , Ġtoday , Ġos Utils Provider , Ġformatter ) Ġ{ Ġres , Ġdt 1 , Ġdt 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y esterday , Ġ${ formatter . format Time ( dt 1 )} ĠâĢĶ ĠToday , Ġ${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformatter . format Time ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdt 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ", Ġres ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtest ( adapter , Ġweek Ago , Ġyesterday , Ġos Utils Provider , Ġformatter ) Ġ{ Ġres , Ġdt 1 , Ġdt 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ week Ago . pretty Format Date ()}, Ġ${ formatter . format Time ( dt 1 )} ĠâĢĶ ĠY esterday , Ġ${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformatter . format Time ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdt 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ", Ġres ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtest ( adapter , Ġweek Ago , Ġweek Ago , Ġos Utils Provider , Ġformatter ) Ġ{ Ġres , Ġdt 1 , Ġdt 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ week Ago . pretty Format Date ()}, Ġ${ formatter . format Time ( dt 1 )} ĠâĢĶ Ġ${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformatter . format Time ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdt 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ", Ġres ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtest ( adapter , Ġlong Time Ago , Ġweek Ago , Ġos Utils Provider , Ġformatter ) Ġ{ Ġres , Ġdt 1 , Ġdt 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ long Time Ago . pretty Format Date ()}, Ġ${ formatter . format Time ( dt 1 )} ĠâĢĶ Ġ${ week Ago . pretty Format Date ()}, Ġ${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformatter . format Time ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdt 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ", Ġres ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest ( ĊĠĠĠĠĠĠĠ Ġadapter : ĠPlace Vis its Adapter , ĊĠĠĠĠĠĠĠ Ġbase Dt 1 : ĠZ onedDateTime , ĊĠĠĠĠĠĠĠ Ġbase Dt 2 : ĠZ onedDateTime , ĊĠĠĠĠĠĠĠ Ġos Utils Provider : ĠOs Utils Provider , ĊĠĠĠĠĠĠĠ Ġdatetime Formatter : ĠDate time Formatter , ĊĠĠĠĠĠĠĠ Ġchecks : Ġ( res : ĠString , Ġdt 1 : ĠZ onedDateTime , Ġdt 2 : ĠZ onedDateTime ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdt 1 Ġ= Ġbase Dt 1 ĊĠĠĠĠĠĠĠ Ġval Ġdt 2 Ġ= Ġbase Dt 2 . with Minute ( 3 0 ). with Second ( 1 ) ĊĊĠĠĠĠĠĠĠ ĠPlace Vis its Adapter . format Date ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdt 1 , Ġdt 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġos Utils Provider , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime Distance Formatter ( datetime Formatter , Ġmock k ( relax ed Ġ= Ġtrue )), ĊĠĠĠĠĠĠĠ Ġ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchecks . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdt 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdt 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }