package Ġcom . equ alex perts . client . software design systems . eat out Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . test . espress o . No Matching View Exception Ċ import Ġandroidx . test . espress o . Ui Controller Ċ import Ġandroidx . test . espress o . View Action Ċ import Ġandroidx . test . espress o . matcher . View Matchers Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġcom . equ alex perts . client . software design systems . eat out . services . Location Ċ import Ġorg . hamcrest . Base Matcher Ċ import Ġorg . hamcrest . Description Ċ import Ġorg . hamcrest . Matcher Ċ import Ġorg . os md roid . util . BoundingBox Ċ import Ġorg . os md roid . util . Geo Point Ċ import Ġorg . os md roid . views . MapView Ċ import Ġorg . os md roid . views . overlay . Folder Overlay Ċ import Ġorg . os md roid . views . overlay . Marker Ċ import Ġkotlin . math . abs ĊĊ Ċ internal Ġfun Ġclick On Marker With Text ( restaurant Name : ĠString ): ĠView Action Ġ{ ĊĠĠĠ Ġreturn Ġobject Ġ: ĠView Action Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetDescription () Ġ= Ġ" Click Ġon Ġthe Ġmarker Ġmatching Ġtext Ġ'$ restaurant Name '" ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Constraints () Ġ= ĠView Matchers . isAssignableFrom ( MapView :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġperform ( ui Controller : ĠUi Controller ?, Ġview : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap View Ġ= Ġview Ġas ĠMap View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfolder Overlay Ġ= Ġmap View . overlay s . find Ġ{ Ġit Ġis ĠFolder Overlay Ġ} Ġas ? ĠFolder Overlay Ġ?: Ġthrow ĠIllegalStateException (" Map Ġview Ġcurrently Ġhas Ġno Ġfolder Ġoverlay s ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmarker Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Overlay . items . find Ġ{ Ġ( it Ġas ĠMarker ). title Ġ== Ġrestaurant Name Ġ} Ġas ĠMarker ? ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker ?. let Ġ{ Ġit . show Info Window () Ġ} Ġ?: Ġthrow ĠNo Matching View Exception . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġdrag Map To ( latitude : ĠDouble , Ġlongitude : ĠDouble ): ĠView Action Ġ{ ĊĠĠĠ Ġreturn Ġobject Ġ: ĠView Action Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetDescription () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Drag Ġthe Ġmap Ġto Ġlatitude Ġand Ġlongitude : Ġ$ latitude , Ġ$ longitude " ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Constraints () Ġ= ĠView Matchers . isAssignableFrom ( MapView :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġperform ( ui Controller : ĠUi Controller ?, Ġview : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap View Ġ= Ġview Ġas ĠMap View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap View . controller . set Center ( Geo Point ( latitude , Ġlongitude )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġhas Overlay With Text ( restaurant Name : ĠString ): ĠBase Matcher < in ĠView > Ġ{ ĊĠĠĠ Ġreturn Ġobject Ġ: ĠBase Matcher < View ?> () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" map Ġdisplaying Ġoverlay Ġwith Ġrestaurant Ġ$ restaurant Name ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches ( item : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġis ĠMap View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . overlay s . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠFolder Overlay ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit . items . any Ġ{ Ġ( it Ġas ? ĠMarker )?. title Ġ== Ġrestaurant Name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ internal Ġfun Ġoutside Of Bounds ( latitude : ĠDouble , Ġlongitude : ĠDouble ): ĠMatcher < in ĠView > Ġ{ ĊĠĠĠ Ġreturn Ġobject Ġ: ĠBase Matcher < View ?> () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" map Ġis Ġnot Ġdisplaying Ġ$ latitude Ġ$ longitude ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches ( item : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġis ĠMap View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ! item . bounding Box . contains ( latitude , Ġlongitude ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġinside Of Bounds ( latitude : ĠDouble , Ġlongitude : ĠDouble ): ĠMatcher < in ĠView > Ġ{ ĊĠĠĠ Ġreturn Ġobject Ġ: ĠBase Matcher < View ?> () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" map Ġis Ġdisplaying Ġ$ latitude Ġ$ longitude ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches ( item : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġis ĠMap View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem . bounding Box . contains ( latitude , Ġlongitude ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġmap Display ing BoundingBox Near ( bounding Box : ĠBounding Box ): ĠMatcher < in ĠView > Ġ{ ĊĠĠĠ Ġreturn Ġobject Ġ: ĠBase Matcher < View ?> () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" map Ġdisplaying Ġbounding Ġbox Ġwithin Ġ 0 . 0 1 Ġdegrees Ġof Ġ$ bounding Box ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches ( item : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġis ĠMap View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġabs ( item . bounding Box . lat North ) Ġ- Ġabs ( bounding Box . lat North ) Ġ< Ġ 0 . 0 1 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġabs ( item . bounding Box . lat South ) Ġ- Ġabs ( bounding Box . lat South ) Ġ< Ġ 0 . 0 1 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġabs ( item . bounding Box . lon East ) Ġ- Ġabs ( bounding Box . lon East ) Ġ< Ġ 0 . 0 1 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġabs ( item . bounding Box . lon West ) Ġ- Ġabs ( bounding Box . lon West ) Ġ< Ġ 0 . 0 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġmap Centre Close To Location ( location : ĠLocation ): ĠMatcher < in ĠView > Ġ{ ĊĠĠĠ Ġreturn Ġobject Ġ: ĠBase Matcher < View ?> () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" map Ġdisplaying Ġlocation Ġwithin Ġ 0 . 0 1 Ġdegrees Ġof Ġ${ location . latitude }, Ġ${ location . longitude }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches ( item : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġis ĠMap View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġabs ( item . map Center . latitude ) Ġ- Ġabs ( location . latitude ) Ġ< Ġ 0 . 0 1 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġabs ( item . map Center . longitude ) Ġ- Ġabs ( location . longitude ) Ġ< Ġ 0 . 0 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun ĠhasError Text ( string Resource : ĠInt ) Ġ= ĊĠĠĠ ĠView Matchers . has Error Text ( ĊĠĠĠĠĠĠĠ ĠInstrument ation Registry . get Instrumentation (). target Context . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstring Resource ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ)