package Ġcom . mapbox . navigation . ui . maps . route . arrow . api Ċ Ċ import Ġcom . mapbox . api . directions . v 5 . models . Directions Route Ċ import Ġcom . mapbox . geojson . Point Ċ import Ġcom . mapbox . geojson . utils . Polyline Utils Ċ import Ġcom . mapbox . maps . extension . style . layers . properties . generated . Visibility Ċ import Ġcom . mapbox . navigation . base . trip . model . Route Leg Progress Ċ import Ġcom . mapbox . navigation . base . trip . model . Route Progress Ċ import Ġcom . mapbox . navigation . base . trip . model . Route Progress State Ċ import Ġcom . mapbox . navigation . base . trip . model . Route Step Progress Ċ import Ġcom . mapbox . navigation . testing . FileUtils Ċ import Ġcom . mapbox . navigation . ui . base . model . route . Route Layer Constants Ċ import Ġcom . mapbox . navigation . ui . maps . route . arrow . model . Invalid Point Error Ċ import Ġcom . mapbox . navigation . ui . maps . route . arrow . model . Man eu ver Arrow Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . assertTrue Ċ import Ġorg . junit . Test Ċ Ċ class ĠMap box Route Arrow Api Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġupdate Up coming Man eu ver Arrow () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Sh aft Feature Ġ= Ġ"{\" type \":\" Feature \",\" geometry \":{\" type \":\" Line String \ "," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"\" coordinates \": [ [- 1 2 2 . 5 2 3 1 1 7 , 3 7 . 9 7 5 1 0 7 ],[- 1 2 2 . 5 2 3 1 3 1 , 3 7 . 9 7 5 0 6 7 ]," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" [- 1 2 2 . 4 7 7 3 9 5 , 3 7 . 8 5 9 5 1 3 ],[- 1 2 2 . 4 7 7 6 5 1 1 , 3 7 . 8 5 9 3 3 4 5 ]] }}" ĊĠĠĠĠĠĠĠ Ġval Ġexpected Head Feature Ġ= Ġ"{\" type \":\" Feature \",\" geometry \":{\" type \":\" Point \ "," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"\" coordinates \": [- 1 2 2 . 4 7 7 6 5 1 1 , 3 7 . 8 5 9 3 3 4 5 ]}, \" properties \ ":" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"{\" mapbox - navigation - arrow - be aring \": 2 2 8 . 5 5 3 8 0 5 8 0 1 8 1 6 5 4 }}" ĊĠĠĠĠĠĠĠ Ġval Ġupcoming Points Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 4 7 7 3 9 5 , Ġ 3 7 . 8 5 9 5 1 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 4 7 8 4 7 2 6 , Ġ 3 7 . 8 5 8 7 6 1 7 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġroute Ġ= Ġget Route () ĊĠĠĠĠĠĠĠ Ġval Ġroute Progress Ġ= Ġmock k < Route Progress > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcurrent Leg Progress Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġleg Index Ġ} Ġreturns Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcurrent Step Progress Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġstep Points Ġ} Ġreturns ĠPoly line Utils . decode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute . leg s () ! ![ 0 ]. steps () ! ![ 2 ]. geometry () !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdistance Tr ave led Ġ} Ġreturns Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġstep Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdistance () Ġ} Ġreturns Ġroute . leg s () ! ![ 0 ]. steps () ! ![ 2 ]. distance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġstep Index Ġ} Ġreturns Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcurrent State Ġ} Ġreturns ĠRoute Progress State . TRACK ING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġupcoming Step Points Ġ} Ġreturns Ġupcoming Points ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Route Arrow Api (). add Up coming Man eu ver Arrow ( route Progress ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġresult . value !!. layer Visibility Mod ifications . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Sh aft Feature , Ġresult . value !!. arrow Sh aft Feature !!. toJson ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Head Feature , Ġresult . value !!. arrow Head Feature !!. toJson ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġupdate Up coming Man eu ver Arrow _ when Up Com ing Points From Route Progress Are Empty () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġupcoming Points Ġ= ĠlistOf ( Point . from Lng Lat (- 1 2 2 . 4 7 7 3 9 5 , Ġ 3 7 . 8 5 9 5 1 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġroute Step Points Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 4 7 7 3 9 5 , Ġ 3 7 . 8 5 9 5 1 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 4 7 8 4 7 2 6 , Ġ 3 7 . 8 5 8 7 6 1 7 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġstep Progress Ġ= Ġmock k < Route Step Progress > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġstep Points Ġ} Ġreturns Ġroute Step Points ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġroute Leg Progress Ġ= Ġmock k < Route Leg Progress > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcurrent Step Progress Ġ} Ġreturns Ġstep Progress ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġroute Progress Ġ= Ġmock k < Route Progress > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcurrent Leg Progress Ġ} Ġreturns Ġroute Leg Progress ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġupcoming Step Points Ġ} Ġreturns Ġupcoming Points ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap box Route Arrow Api (). add Up coming Man eu ver Arrow ( route Progress ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( result . error Ġis ĠInvalid Point Error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġhide Man eu ver Arrow () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠMap box Route Arrow Api (). hide Man eu ver Arrow () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġresult . layer Visibility Mod ifications . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoute Layer Constants . ARROW _ SHA FT _ LINE _ LAYER _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . layer Visibility Mod ifications [ 0 ]. first ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Visibility . NONE , Ġresult . layer Visibility Mod ifications [ 0 ]. second ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoute Layer Constants . ARROW _ SHA FT _ CAS ING _ LINE _ LAYER _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . layer Visibility Mod ifications [ 1 ]. first ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Visibility . NONE , Ġresult . layer Visibility Mod ifications [ 1 ]. second ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoute Layer Constants . ARROW _ HEAD _ CAS ING _ LAYER _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . layer Visibility Mod ifications [ 2 ]. first ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Visibility . NONE , Ġresult . layer Visibility Mod ifications [ 2 ]. second ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoute Layer Constants . ARROW _ HEAD _ LAYER _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . layer Visibility Mod ifications [ 3 ]. first ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Visibility . NONE , Ġresult . layer Visibility Mod ifications [ 3 ]. second ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshow Man eu ver Arrow () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠMap box Route Arrow Api (). show Man eu ver Arrow () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġresult . layer Visibility Mod ifications . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoute Layer Constants . ARROW _ SHA FT _ LINE _ LAYER _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . layer Visibility Mod ifications [ 0 ]. first ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Visibility . VISIBLE , Ġresult . layer Visibility Mod ifications [ 0 ]. second ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoute Layer Constants . ARROW _ SHA FT _ CAS ING _ LINE _ LAYER _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . layer Visibility Mod ifications [ 1 ]. first ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Visibility . VISIBLE , Ġresult . layer Visibility Mod ifications [ 1 ]. second ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoute Layer Constants . ARROW _ HEAD _ CAS ING _ LAYER _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . layer Visibility Mod ifications [ 2 ]. first ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Visibility . VISIBLE , Ġresult . layer Visibility Mod ifications [ 2 ]. second ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoute Layer Constants . ARROW _ HEAD _ LAYER _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . layer Visibility Mod ifications [ 3 ]. first ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Visibility . VISIBLE , Ġresult . layer Visibility Mod ifications [ 3 ]. second ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd Arrow _ does Not Prevent Add Duplicates () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Points Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 5 4 0 , Ġ 3 7 . 9 7 1 1 6 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 6 3 7 , Ġ 3 7 . 9 7 0 1 8 7 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 0 7 6 , Ġ 3 7 . 9 6 9 7 6 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġfirst Man eu ver Arrow Ġ= ĠM ane u ver Arrow ( first Points ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsecond Points Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 0 7 6 , Ġ 3 7 . 9 6 9 7 6 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 7 4 1 8 , Ġ 3 7 . 9 6 9 3 2 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 6 4 0 9 , Ġ 3 7 . 9 6 8 7 6 7 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġsecond Man eu ver Arrow Ġ= ĠM ane u ver Arrow ( second Points ) ĊĊĠĠĠĠĠĠĠ Ġval Ġarrows Ġ= ĠMap box Route Arrow Api (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Arrow ( first Man eu ver Arrow ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġarrows . add Arrow ( second Man eu ver Arrow ) ĊĊĠĠĠĠĠĠĠ Ġval Ġredraw State Ġ= Ġarrows . redraw () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġarrows . get Ar rows (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġredraw State . arrow Head Feature Collection . features () !!. size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġredraw State . arrow Sh aft Feature Collection . features () !!. size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd Arrow () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Points Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 5 4 0 , Ġ 3 7 . 9 7 1 1 6 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 6 3 7 , Ġ 3 7 . 9 7 0 1 8 7 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 0 7 6 , Ġ 3 7 . 9 6 9 7 6 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġfirst Man eu ver Arrow Ġ= ĠM ane u ver Arrow ( first Points ) ĊĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠMap box Route Arrow Api (). add Arrow ( first Man eu ver Arrow ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġstate . value !!. arrow Head Feature Collection . features () !!. size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġstate . value !!. arrow Sh aft Feature Collection . features () !!. size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġremove Arrow () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Points Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 5 4 0 , Ġ 3 7 . 9 7 1 1 6 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 6 3 7 , Ġ 3 7 . 9 7 0 1 8 7 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 0 7 6 , Ġ 3 7 . 9 6 9 7 6 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġfirst Man eu ver Arrow Ġ= ĠM ane u ver Arrow ( first Points ) ĊĠĠĠĠĠĠĠ Ġval Ġsecond Points Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 7 4 1 8 , Ġ 3 7 . 9 6 9 3 2 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 6 4 0 9 , Ġ 3 7 . 9 6 8 7 6 7 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġsecond Man eu ver Arrow Ġ= ĠM ane u ver Arrow ( second Points ) ĊĊĠĠĠĠĠĠĠ Ġval Ġarrows Ġ= ĠMap box Route Arrow Api (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Arrow ( first Man eu ver Arrow ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Arrow ( second Man eu ver Arrow ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġarrows . get Ar rows (). size ) ĊĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġarrows . remove Arrow ( second Man eu ver Arrow ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġarrows . get Ar rows (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġstate . arrow Head Feature Collection . features () !!. size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġstate . arrow Sh aft Feature Collection . features () !!. size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġclear Ar rows () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Points Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 5 4 0 , Ġ 3 7 . 9 7 1 1 6 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 6 3 7 , Ġ 3 7 . 9 7 0 1 8 7 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 0 7 6 , Ġ 3 7 . 9 6 9 7 6 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġfirst Man eu ver Arrow Ġ= ĠM ane u ver Arrow ( first Points ) ĊĠĠĠĠĠĠĠ Ġval Ġsecond Points Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 7 4 1 8 , Ġ 3 7 . 9 6 9 3 2 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 6 4 0 9 , Ġ 3 7 . 9 6 8 7 6 7 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġsecond Man eu ver Arrow Ġ= ĠM ane u ver Arrow ( second Points ) ĊĠĠĠĠĠĠĠ Ġval Ġarrows Ġ= ĠMap box Route Arrow Api (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Arrow ( first Man eu ver Arrow ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Arrow ( second Man eu ver Arrow ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġarrows . get Ar rows (). size ) ĊĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġarrows . clear Ar rows () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġarrows . get Ar rows (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġstate . arrow Head Feature Collection . features () !!. size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġstate . arrow Sh aft Feature Collection . features () !!. size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Ar rows () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpoints Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 5 4 0 , Ġ 3 7 . 9 7 1 1 6 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 6 3 7 , Ġ 3 7 . 9 7 0 1 8 7 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 0 7 6 , Ġ 3 7 . 9 6 9 7 6 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġfirst Man eu ver Arrow Ġ= ĠM ane u ver Arrow ( points ) ĊĊĠĠĠĠĠĠĠ Ġval Ġarrows Ġ= ĠMap box Route Arrow Api (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Arrow ( first Man eu ver Arrow ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġarrows . get Ar rows (). size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Ar rows _ includes Man eu ver Arrow () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpoints Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 5 4 0 , Ġ 3 7 . 9 7 1 1 6 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 6 3 7 , Ġ 3 7 . 9 7 0 1 8 7 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 0 7 6 , Ġ 3 7 . 9 6 9 7 6 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġfirst Man eu ver Arrow Ġ= ĠM ane u ver Arrow ( points ) ĊĠĠĠĠĠĠĠ Ġval Ġroute Ġ= Ġget Directions Route () ĊĠĠĠĠĠĠĠ Ġval Ġroute Progress Ġ= Ġmock k < Route Progress > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcurrent Leg Progress Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġleg Index Ġ} Ġreturns Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcurrent Step Progress Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġstep Points Ġ} Ġreturns ĠPoly line Utils . decode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute . leg s () ! ![ 0 ]. steps () ! ![ 2 ]. geometry () !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdistance Tr ave led Ġ} Ġreturns Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġstep Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdistance () Ġ} Ġreturns Ġroute . leg s () ! ![ 0 ]. steps () ! ![ 2 ]. distance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġstep Index Ġ} Ġreturns Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġupcoming Step Points Ġ} Ġreturns ĠPoly line Utils . decode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute . leg s () ! ![ 0 ]. steps () ! ![ 2 ]. geometry () !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġarrows Ġ= ĠMap box Route Arrow Api (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Arrow ( first Man eu ver Arrow ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Up coming Man eu ver Arrow ( route Progress ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġarrows . get Ar rows (). size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġredraw () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Points Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 5 4 0 , Ġ 3 7 . 9 7 1 1 6 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 6 3 7 , Ġ 3 7 . 9 7 0 1 8 7 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 8 0 7 6 , Ġ 3 7 . 9 6 9 7 6 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġfirst Man eu ver Arrow Ġ= ĠM ane u ver Arrow ( first Points ) ĊĠĠĠĠĠĠĠ Ġval Ġsecond Points Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 7 4 1 8 , Ġ 3 7 . 9 6 9 3 2 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 5 2 6 4 0 9 , Ġ 3 7 . 9 6 8 7 6 7 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġsecond Man eu ver Arrow Ġ= ĠM ane u ver Arrow ( second Points ) ĊĠĠĠĠĠĠĠ Ġval Ġarrows Ġ= ĠMap box Route Arrow Api (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Arrow ( first Man eu ver Arrow ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Arrow ( second Man eu ver Arrow ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġarrows . redraw () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġstate . arrow Head Feature Collection . features () !!. size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġstate . arrow Sh aft Feature Collection . features () !!. size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Directions Route (): ĠDirection s Route Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Here Ġ= Ġ" some Token " ĊĠĠĠĠĠĠĠ Ġval Ġdirections Route As Json Ġ= ĠFileUtils . load Json Fixture (" van ish _ point _ test . txt ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" token Here ", Ġtoken Here ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠDirection s Route . fromJson ( directions Route As Json ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġredraw _ when Man eu ver Points Empty () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠMap box Route Arrow Api (). redraw () ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( result . arrow Head Feature Collection . features (). isNull OrEmpty ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( result . arrow Sh aft Feature Collection . features (). isNull OrEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġredraw _ when Man eu ver Points NotEmpty () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Sh aft Feature Ġ= Ġ"{\" type \":\" Feature Collection \",\" features \ ":" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ {\" type \":\" Feature \",\" geometry \":{\" type \":\" Line String \",\" coordinates \ ":" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ [- 1 2 2 . 5 2 3 1 1 7 , 3 7 . 9 7 5 1 0 7 ],[- 1 2 2 . 5 2 3 1 3 1 , 3 7 . 9 7 5 0 6 7 ],[- 1 2 2 . 4 7 7 3 9 5 , 3 7 . 8 5 9 5 1 3 ]," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" [- 1 2 2 . 4 7 7 6 5 1 1 , 3 7 . 8 5 9 3 3 4 5 ]] }, \" properties \": {}} ]}" ĊĠĠĠĠĠĠĠ Ġval Ġexpected Head Feature Ġ= Ġ"{\" type \":\" Feature Collection \",\" features \": [{ \" type \ ":" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"\" Feature \",\" geometry \":{\" type \":\" Point \",\" coordinates \ ":" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" [- 1 2 2 . 4 7 7 6 5 1 1 , 3 7 . 8 5 9 3 3 4 5 ]}, \" properties \":{\" mapbox - navigation - arrow - be aring \ ":" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 2 8 . 5 5 3 8 0 5 8 0 1 8 1 6 5 4 }} ]}" ĊĠĠĠĠĠĠĠ Ġval Ġupcoming Points Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 4 7 7 3 9 5 , Ġ 3 7 . 8 5 9 5 1 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint . from Lng Lat (- 1 2 2 . 4 7 8 4 7 2 6 , Ġ 3 7 . 8 5 8 7 6 1 7 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġroute Ġ= Ġget Route () ĊĠĠĠĠĠĠĠ Ġval Ġroute Progress Ġ= Ġmock k < Route Progress > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcurrent Leg Progress Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġleg Index Ġ} Ġreturns Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcurrent Step Progress Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġstep Points Ġ} Ġreturns ĠPoly line Utils . decode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute . leg s () ! ![ 0 ]. steps () ! ![ 2 ]. geometry () !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdistance Tr ave led Ġ} Ġreturns Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġstep Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdistance () Ġ} Ġreturns Ġroute . leg s () ! ![ 0 ]. steps () ! ![ 2 ]. distance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġstep Index Ġ} Ġreturns Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcurrent State Ġ} Ġreturns ĠRoute Progress State . TRACK ING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġupcoming Step Points Ġ} Ġreturns Ġupcoming Points ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġapi Ġ= ĠMap box Route Arrow Api () ĊĠĠĠĠĠĠĠ Ġapi . add Up coming Man eu ver Arrow ( route Progress ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġapi . redraw () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Sh aft Feature , Ġresult . arrow Sh aft Feature Collection . toJson ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Head Feature , Ġresult . arrow Head Feature Collection . toJson ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Route (): ĠDirection s Route Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroute As Json Ġ= ĠFileUtils . load Json Fixture (" short _ route . json ") ĊĠĠĠĠĠĠĠ Ġreturn ĠDirection s Route . fromJson ( route As Json ) ĊĠĠĠ Ġ} Ċ } Ċ