@@ -21,6 +21,7 @@ import {
2121 type NavigationController ,
2222 type NavigationInitErrorCode ,
2323 type NavigationViewController ,
24+ type TimeAndDistance ,
2425} from '@googlemaps/react-native-navigation-sdk' ;
2526import { Platform } from 'react-native' ;
2627
@@ -345,3 +346,72 @@ export const testRouteSegments = async (testTools: TestTools) => {
345346 failTest ( 'navigationController.init() exception' ) ;
346347 }
347348} ;
349+
350+ export const testGetCurrentTimeAndDistance = async ( testTools : TestTools ) => {
351+ const {
352+ navigationController,
353+ addListeners,
354+ passTest,
355+ failTest,
356+ expectFalseError,
357+ } = testTools ;
358+ let beginTimeAndDistance : TimeAndDistance ;
359+ addListeners ( {
360+ onNavigationReady : async ( ) => {
361+ await navigationController . simulator . simulateLocation ( {
362+ lat : 37.79136614772824 ,
363+ lng : - 122.41565900473043 ,
364+ } ) ;
365+ await navigationController . setDestination ( {
366+ title : 'Grace Cathedral' ,
367+ position : {
368+ lat : 37.791957 ,
369+ lng : - 122.412529 ,
370+ } ,
371+ } ) ;
372+ await navigationController . startGuidance ( ) ;
373+
374+ // Timeout here is used to avoid issues on Android.
375+ setTimeout ( async ( ) => {
376+ beginTimeAndDistance =
377+ await navigationController . getCurrentTimeAndDistance ( ) ;
378+ if ( beginTimeAndDistance . seconds <= 0 ) {
379+ return expectFalseError ( 'beginTimeAndDistance.seconds <= 0' ) ;
380+ }
381+ if ( beginTimeAndDistance . meters <= 0 ) {
382+ return expectFalseError ( 'beginTimeAndDistance.meters <= 0' ) ;
383+ }
384+ await navigationController . simulator . simulateLocationsAlongExistingRoute (
385+ {
386+ speedMultiplier : 5 ,
387+ }
388+ ) ;
389+ } , 3000 ) ;
390+ } ,
391+ onNavigationInitError : ( errorCode : NavigationInitErrorCode ) => {
392+ console . log ( errorCode ) ;
393+ failTest ( 'onNavigatonInitError' ) ;
394+ } ,
395+ onArrival : async ( ) => {
396+ const endTimeAndDistance =
397+ await navigationController . getCurrentTimeAndDistance ( ) ;
398+ if ( endTimeAndDistance . meters >= beginTimeAndDistance . meters ) {
399+ return expectFalseError (
400+ 'endTimeAndDistance.meters >= beginTimeAndDistance.meters'
401+ ) ;
402+ }
403+ if ( endTimeAndDistance . seconds >= beginTimeAndDistance . seconds ) {
404+ return expectFalseError (
405+ 'endTimeAndDistance.seconds >= beginTimeAndDistance.seconds'
406+ ) ;
407+ }
408+ passTest ( ) ;
409+ } ,
410+ } ) ;
411+ try {
412+ await navigationController . init ( ) ;
413+ } catch ( error ) {
414+ console . error ( 'Error initializing navigator' , error ) ;
415+ failTest ( 'navigationController.init() exception' ) ;
416+ }
417+ } ;
0 commit comments