/** Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠF ern ando ĠC ej as ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 . fer n ando ce jas . sample . core . inter actor Ċ Ċ import Ġcom . fer n ando ce jas . sample . Android Test Ċ import Ġcom . fer n ando ce jas . sample . core . exception . Failure Ċ import Ġcom . fer n ando ce jas . sample . core . functional . Either Ċ import Ġcom . fer n ando ce jas . sample . core . functional . Either . Right Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ // import Ġkotlinx . coroutines . experimental . run Blocking Ċ import Ġorg . am sh ove . k lu ent . should Equal Ċ import Ġorg . junit . Test Ċ Ċ class ĠUse Case Test Ġ: ĠAndroid Test () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTYPE _ TEST Ġ= Ġ" Test " ĊĠĠĠ Ġprivate Ġval ĠTYPE _ PARAM Ġ= Ġ" Param Test " ĊĊĠĠĠ Ġprivate Ġval Ġuse Case Ġ= ĠMy UseCase () ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` running Ġuse Ġcase Ġshould Ġreturn Ġ' Either ' Ġof Ġuse Ġcase Ġtype `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠMy Params ( TYPE _ PARAM ) ĊĠĠĠĠĠĠĠ Ġ// val Ġresult Ġ= Ġrun Blocking Ġ{ Ġuse Case . run ( params ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠGlobal Scope . launch Ġ{ Ġuse Case . run ( params ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġresult Ġshould Equal ĠRight ( My Type ( TYPE _ TEST )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` should Ġreturn Ġcorrect Ġdata Ġwhen Ġexecuting Ġuse Ġcase `() Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult : ĠEither < Failure , ĠMy Type >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠMy Params (" Test Param ") ĊĠĠĠĠĠĠĠ Ġval Ġon Result Ġ= Ġ{ Ġmy Result : ĠEither < Failure , ĠMy Type > Ġ-> Ġresult Ġ= Ġmy Result Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// run Blocking Ġ{ Ġuse Case ( params , Ġon Result ) Ġ} ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ Ġuse Case ( params , Ġon Result ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġresult Ġshould Equal ĠRight ( My Type ( TYPE _ TEST )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠMy Type ( val Ġname : ĠString ) ĊĠĠĠ Ġdata Ġclass ĠMy Params ( val Ġname : ĠString ) ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠMy UseCase Ġ: ĠUse Case < My Type , ĠMy Params >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġrun ( params : ĠMy Params ) Ġ= ĠRight ( My Type ( TYPE _ TEST )) ĊĠĠĠ Ġ} Ċ } Ċ