/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 - 2 0 1 9 ĠHERE ĠEurope ĠB . V . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . here . ms dk ui app . common . map selection Ċ Ċ import Ġandroidx . appcompat . app . ActionBar Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . Relative Layout Ċ import Ġandroid . widget . TextView Ċ import Ġcom . here . android . mp a . common . Geo Coordinate Ċ import Ġcom . here . ms dk ui . routing . Waypoint Entry Ċ import Ġcom . here . ms dk ui app . R Ċ import Ġcom . here . ms dk ui app . base Activity Ċ import Ġcom . here . ms dk ui app . map . Map Fragment Wrapper Ċ import Ġcom . here . ms dk ui app . routing . Routing Activity Ċ import Ġcom . here . ms dk ui app . routing . Routing Coordinator Ċ import Ġcom . here . test utils . any Safe Ċ import Ġcom . here . test utils . argument Captor Ċ import Ġjunit . framework . TestCase . assertFalse Ċ import Ġorg . junit . Assert . assertNotNull Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Answers Ċ import Ġorg . mockito . Argument Matchers Ċ import Ġorg . mockito . Argument Matchers . any Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . Mockito .` when ` Ċ import Ġorg . mockito . Mockito . any Boolean Ċ import Ġorg . mockito . Mockito . any Int Ċ import Ġorg . mockito . Mockito . mock Ċ import Ġorg . mockito . Mockito . spy Ċ import Ġorg . mockito . Mockito . times Ċ import Ġorg . mockito . Mockito . verify Ċ import Ġorg . mockito . Mockito Annotations Ċ Ċ /** Ċ Ġ* ĠTests Ġfor Ġ[ Waypoint Selection Fragment ]. Ċ Ġ*/ Ċ class ĠWay point Selection Fragment Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfragment : ĠWay point Selection Fragment ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Presenter : ĠWay point Selection Presenter ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Map Fragment : ĠMap Fragment Wrapper ĊĊĠĠĠ Ġ@ Mock ( answer Ġ= ĠAn swers . RET URNS _ DE EP _ ST UB S ) ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Activity : ĠRouting Activity ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock View Ġ: ĠView ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠMockito Annotations . init Mocks ( this ) ĊĠĠĠĠĠĠĠ Ġfragment Ġ= Ġspy ( Waypoint Selection Fragment . newInstance ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter Ġ= Ġmock Presenter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Fragment Ġ= Ġmock Map Fragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Instance Ġ= Ġmock Activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` when `( base Activity ). thenReturn ( mock Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` when `( view ). thenReturn ( mock View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( presenter ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( map Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( map Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Init () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġmock ( LayoutInflater :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġmock View Ġ= Ġmock ( View :: class . java ) ĊĠĠĠĠĠĠĠ Ġ` when `( in flater . inflate ( any Int (), Ġany (), Ġany Boolean ())). thenReturn ( mock View ) ĊĠĠĠĠĠĠĠ Ġfragment . onCreate View ( in flater , Ġmock ( ViewGroup :: class . java ), Ġnull ) ĊĠĠĠĠĠĠĠ Ġverify ( in flater ). inflate ( any Int (), Ġany (), ĠArgument Matchers . any Boolean ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest On View Created () Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment . on View Created ( mock ( View :: class . java ), Ġnull ) ĊĠĠĠĠĠĠĠ Ġverify ( mock Presenter ). update UI () ĊĠĠĠĠĠĠĠ Ġval Ġcapt or Ġ= Ġargument Captor < () Ġ-> ĠUnit >() ĊĠĠĠĠĠĠĠ Ġverify ( mock Map Fragment ). start ( capt or . capture ()) ĊĠĠĠĠĠĠĠ Ġcapt or . value . invoke () ĊĠĠĠĠĠĠĠ Ġverify ( mock Map Fragment ). on Touch ( Argument Matchers . any Boolean (), Ġany Safe ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Traffic Get Set () Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment . traffic Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġverify ( fragment . presenter ). traffic Mode Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ` when `( fragment . presenter . traffic Mode ). thenReturn ( false ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( fragment . traffic ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Update Positions () Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment . set Geo Coordinate For Waypoint ( mock ( Geo Coordinate :: class . java )) ĊĠĠĠĠĠĠĠ Ġverify ( mock Presenter ). set Geo Coordinate For Waypoint ( any Safe ()) ĊĠĠĠĠĠĠĠ Ġfragment . update Position ( entry Ġ= Ġmock ( Waypoint Entry :: class . java )) ĊĠĠĠĠĠĠĠ Ġverify ( mock Presenter ). update Position ( any Int (), Ġany Safe ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest On Point Selected On Map () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc ords Ġ= Ġmock ( Geo Coordinate :: class . java ) ĊĠĠĠĠĠĠĠ Ġfragment . on Point Selected On Map ( cord s ) ĊĠĠĠĠĠĠĠ Ġverify ( mock Presenter ). set Geo Coordinate For Waypoint ( cord s ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest On Back Clicked () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġmock ( Waypoint Entry :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġmock Routing Coordinator Ġ= Ġmock ( Routing Coordinator :: class . java ) ĊĠĠĠĠĠĠĠ Ġ` when `( mock Activity . coordinator ). thenReturn ( mock Routing Coordinator ) ĊĠĠĠĠĠĠĠ Ġfragment . on Back Clicked ( 8 , Ġentry ) ĊĠĠĠĠĠĠĠ Ġverify ( mock Routing Coordinator ). on Waypoint Selection Cancelled ( 8 , Ġentry ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest On Right Icon Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġmock ( Waypoint Entry :: class . java ) ĊĠĠĠĠĠĠĠ Ġ` when `( entry . isValid ). thenReturn ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġmock Routing Coordinator Ġ= Ġmock ( Routing Coordinator :: class . java ) ĊĠĠĠĠĠĠĠ Ġ` when `( mock Activity . coordinator ). thenReturn ( mock Routing Coordinator ) ĊĠĠĠĠĠĠĠ Ġfragment . on Right Icon Clicked ( null , Ġentry ) ĊĠĠĠĠĠĠĠ Ġverify ( mock Routing Coordinator ). on Waypoint Selected ( null , Ġentry ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest On Ui Update () Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( mock View . findViewById < View >( R . id . selected _ waypoint _ label )). thenReturn ( mock ( TextView :: class . java )) ĊĠĠĠĠĠĠĠ Ġval Ġmock View 1 Ġ= Ġmock ( Relative Layout :: class . java ) ĊĠĠĠĠĠĠĠ Ġ` when `( mock View . findViewById < View >( R . id . ws _ container )). thenReturn ( mock View 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmock ImageView Ġ= Ġmock Right Icon () ĊĠĠĠĠĠĠĠ Ġfragment . on Ui Update ("", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġverify ( mock View 1 ). set BackgroundColor ( Argument Matchers . any Int ()) ĊĠĠĠĠĠĠĠ Ġverify ( mock ImageView ). setColor Filter ( Argument Matchers . any Int (), Ġany Safe ()) ĊĊĠĠĠĠĠĠĠ Ġfragment . on Ui Update ("", Ġfalse ) ĊĠĠĠĠĠĠĠ Ġverify ( mock ImageView , Ġtimes ( 2 )). setColor Filter ( Argument Matchers . any Int (), Ġany Safe ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest On Progress Behaviour () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmock ImageView Ġ= Ġmock Right Icon () ĊĠĠĠĠĠĠĠ Ġfragment . on Progress ( true ) ĊĠĠĠĠĠĠĠ Ġverify ( mock ImageView ). isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġfragment . on Progress ( false ) ĊĠĠĠĠĠĠĠ Ġverify ( mock ImageView ). isEnabled Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmock Right Icon () Ġ: ĠImageView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmock View 2 Ġ= Ġmock ( View :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġmock ImageView Ġ= Ġmock ( ImageView :: class . java ) ĊĠĠĠĠĠĠĠ Ġ` when `( mock View 2 . findViewById < ImageView >( R . id . ac _ right _ icon )). thenReturn ( mock ImageView ) ĊĠĠĠĠĠĠĠ Ġval Ġmock ActionBar Ġ= Ġmock ( ActionBar :: class . java ) ĊĠĠĠĠĠĠĠ Ġ` when `( mock ActionBar . custom View ). thenReturn ( mock View 2 ) ĊĠĠĠĠĠĠĠ Ġ` when `( mock Activity . support ActionBar ). thenReturn ( mock ActionBar ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmock ImageView ĊĠĠĠ Ġ} Ċ }