package Ġapp . future d . ark ite kt . rx use cases . dis pos ables Ċ Ċ import Ġapp . future d . ark ite kt . rx use cases . use cases . Maybe UseCase Ċ import Ġapp . future d . ark ite kt . rx use cases . use cases . Rx Mockito JUnit Runner Ċ import Ġio . reactivex . Maybe Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . assertTrue Ċ import Ġorg . junit . Test Ċ Ċ class ĠMaybe Dis pos ables Owner Test Ġ: ĠRx Mockito JUnit Runner () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġinterface Ġcan Ġbe Ġcalled Ġproperly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtemp May ber Ġ= Ġobject Ġ: ĠMaybe UseCase < String , ĠString >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprepare ( args : ĠString ) Ġ= ĠMaybe . just ( args ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith Dis pos ables Owner Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp May ber . execute (" Hello ") Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith Dis pos ables Owner Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp May ber . execute (" Hello ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonComplete Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith Dis pos ables Owner Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp May ber . create (" "). subscribe () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` success Ġhandled Ġproperly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtemp May ber Ġ= Ġobject Ġ: ĠMaybe UseCase < String , ĠString >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprepare ( args : ĠString ) Ġ= ĠMaybe . just ( args ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġcaptured String Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġwith Dis pos ables Owner Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp May ber . execute (" Hello ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ{ Ġcaptured String Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( captured String , Ġ" Hello ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` error Ġhandled Ġproperly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtemp Exception Ġ= ĠRuntimeException (" test Ġexc ") ĊĠĠĠĠĠĠĠ Ġval Ġtemp May ber Ġ= Ġobject Ġ: ĠMaybe UseCase < Unit , ĠUnit >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprepare ( args : ĠUnit ) Ġ= ĠMaybe . error < Unit >( temp Exception ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġcaptured Exception Ġ= ĠThrowable () ĊĊĠĠĠĠĠĠĠ Ġwith Dis pos ables Owner Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp May ber . execute ( Unit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ{ Ġcaptured Exception Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( captured Exception , Ġtemp Exception ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` previous Ġrun Ġdis posable Ġshould Ġbe Ġdisposed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtemp May ber Ġ= Ġobject Ġ: ĠMaybe UseCase < String , ĠString >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprepare ( args : ĠString ) Ġ= ĠMaybe . never < String >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdis pos ables List Ġ= Ġmutable ListOf < Disposable >() ĊĊĠĠĠĠĠĠĠ Ġval Ġrun Execute : Ġ( Maybe Dis pos ables Owner . () Ġ-> ĠUnit ) Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis pos ables List . add ( temp May ber . execute (" Hello ") Ġ{}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith Dis pos ables Owner Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Execute () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( dis pos ables List . size Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( dis pos ables List [ 0 ]. is Disposed ) ĊĠĠĠĠĠĠĠ ĠassertTrue (! dis pos ables List [ 1 ]. is Disposed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` previous Ġrun Ġdis posable Ġnot Ġdisposed Ġwhen Ġrequested `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtemp May ber Ġ= Ġobject Ġ: ĠMaybe UseCase < String , ĠString >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprepare ( args : ĠString ) Ġ= ĠMaybe . never < String >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdis pos ables List Ġ= Ġmutable ListOf < Disposable >() ĊĊĠĠĠĠĠĠĠ Ġval Ġrun Execute : Ġ( Maybe Dis pos ables Owner . () Ġ-> ĠUnit ) Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsing ler Ġ= Ġtemp May ber . execute (" Hello ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispose Previous ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis pos ables List . add ( sing ler ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith Dis pos ables Owner Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Execute () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( dis pos ables List . size Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠassertTrue (! dis pos ables List [ 0 ]. is Disposed ) ĊĠĠĠĠĠĠĠ ĠassertTrue (! dis pos ables List [ 1 ]. is Disposed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` onStart Ġshould Ġbe Ġcalled Ġbefore Ġsubscription Ġfor Ġexecute Ġmethod `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest May ber Ġ= Ġobject Ġ: ĠMaybe UseCase < Unit , ĠString >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprepare ( args : ĠUnit ) Ġ= ĠMaybe . from Callable Ġ{ Ġ" result " Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġevents Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠĠĠĠĠ Ġwith Dis pos ables Owner Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest May ber . execute ( Unit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonStart Ġ{ Ġevents . add (" start ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ{ Ġevents . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġevents . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" start ", Ġevents [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals (" result ", Ġevents [ 1 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` onStart Ġshould Ġbe Ġcalled Ġbefore Ġsubscription Ġfor Ġexecute Stream Ġmethod `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Maybe Ġ= ĠMaybe . from Callable Ġ{ Ġ" result " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġevents Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠĠĠĠĠ Ġwith Dis pos ables Owner Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Maybe . execute Stream Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonStart Ġ{ Ġevents . add (" start ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ{ Ġevents . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġevents . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" start ", Ġevents [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals (" result ", Ġevents [ 1 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` run Ġexecute Ġwithout Ġparams `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtemp May ber Ġ= Ġobject Ġ: ĠMaybe UseCase < Unit , ĠString >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprepare ( args : ĠUnit ) Ġ= ĠMaybe . just (" Hello ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġcaptured String Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġwith Dis pos ables Owner Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp May ber . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcaptured String Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( captured String , Ġ" Hello ") ĊĠĠĠ Ġ} Ċ } Ċ