/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠLINE ĠCorporation Ċ Ġ* Ċ Ġ* Ġ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 . line corp . lich . view model . test Ċ Ċ import Ġandroidx . lifecycle . ViewModel Store Owner Ċ import Ġcom . line corp . lich . view model . Abstract ViewModel Ċ import Ġcom . line corp . lich . view model . Saved State Ċ import Ġcom . line corp . lich . view model . ViewModel Factory Ċ Ċ /** Ċ Ġ* ĠUtility Ġclass Ġto Ġhandle Ġmocked ĠViewModel Ġinstances . Ċ Ġ* Ċ Ġ* Ġ@ param Ġmock Producer Ġa Ġfunction Ġto Ġcreate Ġa Ġnew Ġmock Ġinstance . Ċ Ġ*/ Ċ class ĠMock ViewModel Handle < T Ġ: ĠAbstract ViewModel >( private Ġval Ġmock Producer : Ġ( Saved State ) Ġ-> ĠT ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ mock : ĠT ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġ_ viewModel Store Owner : ĠViewModel Store Owner ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġ_ saved State : ĠSaved State ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTrue Ġif Ġat Ġleast Ġone Ġmock ĠViewModel Ġinstance Ġwas Ġcreated Ġfor Ġthis Ġhandle . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġis Created : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ mock Ġ!= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġmock ĠViewModel Ġinstance Ġif Ġcreated , Ġotherwise Ġthrows Ġ[ IllegalStateException ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġmultiple Ġmock Ġinstances Ġwere Ġcreated Ġbefore , Ġthis Ġis Ġthe Ġlast Ġcreated Ġone . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġmock : ĠT ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ mock Ġ?: Ġthrow Not Created Exception () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ ViewModel Store Owner ] Ġfor Ġwhich Ġ[ mock ] Ġwas Ġcreated . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠviewModel Store Owner : ĠViewModel Store Owner ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ viewModel Store Owner Ġ?: Ġthrow Not Created Exception () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ Saved State ] Ġfor Ġwhich Ġ[ mock ] Ġwas Ġcreated . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsaved State : ĠSaved State ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ saved State Ġ?: Ġthrow Not Created Exception () ĊĊĠĠĠ Ġprivate Ġfun Ġthrow Not Created Exception (): ĠNothing Ġ= ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Mock ĠViewModel Ġis Ġnot Ġcreated Ġyet .") ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Mock ( viewModel Store Owner : ĠViewModel Store Owner , Ġsaved State : ĠSaved State ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmock Ġ= Ġmock Producer ( saved State ) ĊĠĠĠĠĠĠĠ Ġ_ mock Ġ= Ġmock ĊĠĠĠĠĠĠĠ Ġ_ viewModel Store Owner Ġ= ĠviewModel Store Owner ĊĠĠĠĠĠĠĠ Ġ_ saved State Ġ= Ġsaved State ĊĠĠĠĠĠĠĠ Ġreturn Ġmock ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthis Ġhandle Ġas Ġa Ġmock ĠViewModel Ġfactory Ġfor Ġ[ factory ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġset Mock ViewModel ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġset As Mock ViewModel For ( ĊĠĠĠĠĠĠĠ Ġfactory : ĠViewModel Factory < T >, ĊĠĠĠĠĠĠĠ Ġmock ViewModel Manager : ĠMock ViewModel Manager Ġ= Ġget Mock ViewModel Manager () ĊĠĠĠ Ġ): ĠMock ViewModel Handle < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġmock ViewModel Manager . set Mock ViewModel ( factory , Ġthis :: create Mock ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} Ċ } Ċ