package Ġplay ground . dis posal Ċ Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . in Order Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . never Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Ċ import Ġio . reactivex . rx java 3 . core . Comp letable Ċ import Ġio . reactivex . rx java 3 . core . Observable Ċ import Ġio . reactivex . rx java 3 . schedul ers . Schedulers Ċ import Ġorg . junit . Test Ċ Ċ class ĠDis posal Exercise Test Ġ{ ĊĊĠĠĠ Ġprivate Ġinterface ĠRx Lifecycle Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġdo Finally () ĊĠĠĠĠĠĠĠ Ġfun Ġdo On Dispose () ĊĠĠĠĠĠĠĠ Ġfun Ġdo On Subscribe () ĊĠĠĠĠĠĠĠ Ġfun Ġdo On Complete () ĊĠĠĠĠĠĠĠ Ġfun Ġunsubscribe On () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ ĠEx planation : Ġsubscribe Ġdisconnect s Ġthe Ġupstream ĠDis posable Ġwhen Ġit Ġreceives Ġa Ġterminal Ġevent Ġthus Ġyou Ġcan 't Ġdispose Ġan Ġalready Ġcompleted Ġsequence ĊĠĠĠ Ġhttps :// github . com / Reactive X / Rx Java / issues / 5 2 6 4 ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsubscribe _ dispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġverifier Ġ= Ġmock < Rx Lifecycle >() ĊĊĠĠĠĠĠĠĠ ĠObservable . from Callable Ġ{ Ġ" 2 " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġverifier . do On Subscribe () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Dispose Ġ{ Ġverifier . do On Dispose () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. dispose () ĊĊĠĠĠĠĠĠĠ Ġverify ( verifier ). do On Subscribe () ĊĠĠĠĠĠĠĠ Ġverify ( verifier , Ġnever ()). do On Dispose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// What Ġis Ġthe Ġfix ? ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsubscribe _ dispose _ finally () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġverifier Ġ= Ġmock < Rx Lifecycle >() ĊĊĠĠĠĠĠĠĠ ĠObservable . from Callable Ġ{ Ġ" 2 " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġverifier . do On Subscribe () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do Finally Ġ{ Ġverifier . do Finally () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. dispose () ĊĊĠĠĠĠĠĠĠ Ġin Order ( verifier ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( verifier ). do On Subscribe () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( verifier ). do Finally () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdo finally _ thread () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġverifier Ġ= Ġmock < Rx Lifecycle >() ĊĊĠĠĠĠĠĠĠ ĠObservable . just ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Comp letable Ġ{ ĠComp letable . complete () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do Finally Ġ{ Ġverifier . do Finally () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Complete Ġ{ Ġverifier . do On Complete () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. unsubscribe On ( Schedulers . from Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverifier . unsubscribe On () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . run () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe () ĊĊĠĠĠĠĠĠĠ Ġin Order ( verifier ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverifier . do On Complete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverifier . unsubscribe On () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverifier . do Finally () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }