/* Ċ Ġ* ĠThe ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 ĠN ie k ĠH aar man Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 0 7 ĠMockito Ġcontributors Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġorg . mockito . kotlin Ċ Ċ import Ġorg . mockito . Mockito ĊĊ Ċ /** Ċ Ġ* ĠCreates Ġa Ġspy Ġof Ġthe Ġreal Ġobject . Ċ Ġ* ĠThe Ġspy Ġcalls Ġ< b > real </ b > Ġmethods Ġunless Ġthey Ġare Ġstub bed . Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġspy (): ĠT Ġ{ ĊĠĠĠ Ġreturn ĠMockito . spy ( T :: class . java ) !! Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġspy Ġof Ġthe Ġreal Ġobject , Ġallowing Ġfor Ġimmediate Ġstub bing . Ċ Ġ* ĠThe Ġspy Ġcalls Ġ< b > real </ b > Ġmethods Ġunless Ġthey Ġare Ġstub bed . Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġspy ( stub bing : ĠK Stub bing < T >. ( T ) Ġ-> ĠUnit ): ĠT Ġ{ ĊĠĠĠ Ġreturn ĠMockito . spy ( T :: class . java ) ĊĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĠK Stub bing ( this ). stub bing ( this ) Ġ} !! Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġspy Ġof Ġthe Ġreal Ġobject . ĠThe Ġspy Ġcalls Ġ< b > real </ b > Ġmethods Ġunless Ġthey Ġare Ġstub bed . Ċ Ġ*/ Ċ fun Ġ< T > Ġspy ( value : ĠT ): ĠT Ġ{ ĊĠĠĠ Ġreturn ĠMockito . spy ( value ) !! Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġspy Ġof Ġthe Ġreal Ġobject , Ġallowing Ġfor Ġimmediate Ġstub bing . Ċ Ġ* ĠThe Ġspy Ġcalls Ġ< b > real </ b > Ġmethods Ġunless Ġthey Ġare Ġstub bed . Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT > Ġspy ( value : ĠT , Ġstub bing : ĠK Stub bing < T >. ( T ) Ġ-> ĠUnit ): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġspy ( value ) ĊĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĠK Stub bing ( this ). stub bing ( this ) Ġ} !! Ċ }