package Ġcom . mapbox . navigation . core . faster route Ċ Ċ import Ġcom . mapbox . api . directions . v 5 . models . Directions Route Ċ import Ġcom . mapbox . base . common . logger . Logger Ċ import Ġcom . mapbox . navigation . core . directions . session . Adjust ed Route Options Provider Ċ import Ġcom . mapbox . navigation . core . directions . session . Directions Session Ċ import Ġcom . mapbox . navigation . core . directions . session . Routes Request Callback Ċ import Ġcom . mapbox . navigation . core . trip . session . Trip Session Ċ import Ġcom . mapbox . navigation . testing . Main Coroutine Rule Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . mock k Object Ċ import Ġio . mock k . slot Ċ import Ġio . mock k . un mock k Object Ċ import Ġio . mock k . verify Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ @ Experimental Cor outines Api Ċ class ĠF aster Route Controller Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġcoroutine Rule Ġ= ĠMain Coroutine Rule () ĊĊĠĠĠ Ġprivate Ġval Ġdirections Session : ĠDirection s Session Ġ= Ġmock k () ĊĠĠĠ Ġprivate Ġval Ġtrip Session : ĠTrip Session Ġ= Ġmock k () ĊĠĠĠ Ġprivate Ġval Ġfaster Route Observer : ĠF aster Route Observer Ġ= Ġmock k Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrestart After Millis () Ġ} Ġreturns ĠF aster Route Observer . DEFAULT _ INTERVAL _ M ILL IS ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġon F aster Route ( any (), Ġany (), Ġany ()) Ġ} Ġreturns ĠUnit ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġroutes Request Callbacks Ġ= Ġslot < Routes Request Callback >() ĊĊĠĠĠ Ġprivate Ġval Ġlogger : ĠLogger Ġ= Ġmock k () ĊĠĠĠ Ġprivate Ġval Ġfaster Route Controller Ġ= ĠF aster Route Controller ( directions Session , Ġtrip Session , Ġlogger ) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock k Object ( Adjust ed Route Options Provider ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĠAdjust ed Route Options Provider . get Route Options ( any (), Ġany (), Ġany ()) Ġ} Ġreturns Ġmock k () ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdirections Session . get Route Options () Ġ} Ġreturns Ġmock k () ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdirections Session . request F aster Route ( any (), Ġcapture ( routes Request Callbacks )) Ġ} Ġreturns Ġmock k () ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtrip Session . get Route Progress () Ġ} Ġreturns Ġmock k () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun Ġteardown () Ġ{ ĊĠĠĠĠĠĠĠ Ġun mock k Object ( Adjust ed Route Options Provider ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠIllegalStateException :: class ) ĊĠĠĠ Ġfun Ġ` should Ġthrow Ġwhen Ġinterval Ġis Ġless Ġthan Ġ 2 Ġminutes `() Ġ= Ġcoroutine Rule . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfaster Route Observer : ĠF aster Route Observer Ġ= Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrestart After Millis () Ġ} Ġreturns ĠTimeUnit . MIN UTES . to Millis ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġon F aster Route ( any (), Ġany (), Ġany ()) Ġ} Ġreturns ĠUnit ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfaster Route Controller . attach ( faster Route Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġnot Ġthrow Ġwhen Ġinterval Ġis Ġ 2 Ġor Ġmore Ġminutes `() Ġ= Ġcoroutine Rule . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfaster Route Observer : ĠF aster Route Observer Ġ= Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrestart After Millis () Ġ} Ġreturns ĠTimeUnit . MIN UTES . to Millis ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġon F aster Route ( any (), Ġany (), Ġany ()) Ġ} Ġreturns ĠUnit ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfaster Route Controller . attach ( faster Route Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġrequest Ġevery Ġ 5 Ġminutes `() Ġ= Ġcoroutine Rule . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdirections Session . routes Ġ} Ġreturns ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġroute Index () Ġ} Ġreturns Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġduration () Ġ} Ġreturns Ġ 1 7 2 7 . 2 2 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtrip Session . get Enhanced Location () Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġlatitude Ġ} Ġreturns Ġ- 3 3 . 8 7 4 3 0 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġlongitude Ġ} Ġreturns Ġ 1 5 1 . 2 0 6 0 8 7 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfaster Route Controller . attach ( faster Route Observer ) ĊĠĠĠĠĠĠĠ Ġcoroutine Rule . test Dispatcher . advance Time By ( TimeUnit . MIN UTES . to Millis ( 2 5 )) ĊĠĠĠĠĠĠĠ Ġfaster Route Controller . stop () ĊĊĠĠĠĠĠĠĠ Ġcoroutine Rule . test Dispatcher . cleanup Test Cor outines () ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 5 ) Ġ{ Ġdirections Session . request F aster Route ( any (), Ġany ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġonly Ġrequest Ġwith Ġa Ġroute `() Ġ= Ġcoroutine Rule . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdirections Session . routes Ġ} Ġreturns Ġempty List () ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtrip Session . get Enhanced Location () Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġlatitude Ġ} Ġreturns Ġ- 3 3 . 8 7 4 3 0 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġlongitude Ġ} Ġreturns Ġ 1 5 1 . 2 0 6 0 8 7 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfaster Route Controller . attach ( faster Route Observer ) ĊĠĠĠĠĠĠĠ Ġcoroutine Rule . test Dispatcher . advance Time By ( TimeUnit . MIN UTES . to Millis ( 6 )) ĊĠĠĠĠĠĠĠ Ġfaster Route Controller . stop () ĊĊĠĠĠĠĠĠĠ Ġcoroutine Rule . test Dispatcher . cleanup Test Cor outines () ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġdirections Session . request F aster Route ( any (), Ġany ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġnotify Ġobserver Ġof Ġa Ġfaster Ġroute `() Ġ= Ġcoroutine Rule . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Route : ĠDirection s Route Ġ= Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġroute Index () Ġ} Ġreturns Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġduration () Ġ} Ġreturns Ġ 8 0 1 . 3 3 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdirections Session . routes Ġ} Ġreturns ĠlistOf ( current Route ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtrip Session . get Enhanced Location () Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġlatitude Ġ} Ġreturns Ġ- 3 3 . 8 7 4 3 0 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġlongitude Ġ} Ġreturns Ġ 1 5 1 . 2 0 6 0 8 7 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtrip Session . get Route Progress () Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġduration Remaining () Ġ} Ġreturns Ġ 6 0 1 . 3 3 4 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdirections Session . request F aster Route ( any (), Ġcapture ( routes Request Callbacks )) Ġ} Ġreturns Ġmock k () ĊĊĠĠĠĠĠĠĠ Ġfaster Route Controller . attach ( faster Route Observer ) ĊĠĠĠĠĠĠĠ Ġcoroutine Rule . test Dispatcher . advance Time By ( TimeUnit . MIN UTES . to Millis ( 6 )) ĊĠĠĠĠĠĠĠ Ġval Ġroutes Ġ= ĠlistOf < Directions Route >( mock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġroute Index () Ġ} Ġreturns Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġduration () Ġ} Ġreturns Ġ 3 5 1 . 0 1 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġroutes Request Callbacks . captured . on Routes Ready ( routes ) ĊĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġfaster Route Observer . on F aster Route ( current Route , Ġroutes , Ġtrue ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġfaster Route Controller . stop () ĊĠĠĠĠĠĠĠ Ġcoroutine Rule . test Dispatcher . cleanup Test Cor outines () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġnotify Ġobserver Ġif Ġcurrent Ġroute Ġis Ġfast est `() Ġ= Ġcoroutine Rule . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Route : ĠDirection s Route Ġ= Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġroute Index () Ġ} Ġreturns Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġduration () Ġ} Ġreturns Ġ 8 0 1 . 3 3 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdirections Session . routes Ġ} Ġreturns ĠlistOf ( current Route ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtrip Session . get Enhanced Location () Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġlatitude Ġ} Ġreturns Ġ- 3 3 . 8 7 4 3 0 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġlongitude Ġ} Ġreturns Ġ 1 5 1 . 2 0 6 0 8 7 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtrip Session . get Route Progress () Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġduration Remaining () Ġ} Ġreturns Ġ 7 5 1 . 3 3 4 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdirections Session . request F aster Route ( any (), Ġcapture ( routes Request Callbacks )) Ġ} Ġreturns Ġmock k () ĊĊĠĠĠĠĠĠĠ Ġfaster Route Controller . attach ( faster Route Observer ) ĊĠĠĠĠĠĠĠ Ġcoroutine Rule . test Dispatcher . advance Time By ( TimeUnit . MIN UTES . to Millis ( 6 )) ĊĠĠĠĠĠĠĠ Ġval Ġroutes Ġ= ĠlistOf < Directions Route >( mock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġroute Index () Ġ} Ġreturns Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġduration () Ġ} Ġreturns Ġ 9 5 1 . 0 1 3 ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġroutes Request Callbacks . captured . on Routes Ready ( routes ) ĊĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġfaster Route Observer . on F aster Route ( current Route , Ġroutes , Ġfalse ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġfaster Route Controller . stop () ĊĠĠĠĠĠĠĠ Ġcoroutine Rule . test Dispatcher . cleanup Test Cor outines () ĊĠĠĠ Ġ} Ċ } Ċ