/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠAndroid Ġ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 Ġandroidx . compose . runtime . rx java 2 Ċ Ċ import Ġandroidx . test . filters . Medium Test Ċ import Ġandroidx . ui . test . create Compose Rule Ċ import Ġandroidx . ui . test . run On Idle Ċ import Ġcom . google . common . truth . Truth Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . Comp letable Emitter Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . JUnit 4 Ċ Ċ @ Medium Test Ċ @ RunWith ( JUnit 4 :: class ) Ċ class ĠComp letable Adapter Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġrule Ġ= Ġcreate Compose Rule () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen Not Completed Set We Got False () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstream Ġ= ĠComp letable Stream () ĊĠĠĠĠĠĠĠ Ġvar Ġreal Value : ĠBoolean ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġrule . setContent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreal Value Ġ= Ġstream . comp letable . subscribe As State (). value ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( real Value ). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwe Got True When We Subscribe To Completed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstream Ġ= ĠComp letable Stream () ĊĠĠĠĠĠĠĠ Ġstream . onComplete () ĊĠĠĠĠĠĠĠ Ġvar Ġreal Value : ĠBoolean ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġrule . setContent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreal Value Ġ= Ġstream . comp letable . subscribe As State (). value ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( real Value ). isTrue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwe Got True When We Complete After Sub scri bing () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstream Ġ= ĠComp letable Stream () ĊĊĠĠĠĠĠĠĠ Ġvar Ġreal Value : ĠBoolean ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġrule . setContent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreal Value Ġ= Ġstream . comp letable . subscribe As State (). value ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun On Idle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstream . onComplete () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun On Idle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( real Value ). isTrue () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠComp letable Stream Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġemitter s Ġ= Ġmutable ListOf < Comp letable Emitter >() ĊĊĠĠĠ Ġval Ġcomplet able Ġ= ĠComp letable . create Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( completed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . onComplete () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter s . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġcompleted Ġ= Ġfalse ĊĊĠĠĠ Ġfun ĠonComplete () Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire (! completed ) ĊĠĠĠĠĠĠĠ Ġcompleted Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġemitter s . forEach Ġ{ Ġif Ġ(! it . is Disposed ) Ġit . onComplete () Ġ} ĊĠĠĠ Ġ} Ċ }