package Ġcom . example . demo view component Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . example . demo view component . arch . View Input Ċ import Ġcom . example . demo view component . arch . View Output Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġcom . example . demo view component . arch . View Ġas ĠView Component Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġkotlinx . android . synt hetic . main . activity _ component _ test .* Ċ Ċ class ĠComponent Test Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġval Ġrender Subject Ġ= ĠPublish Subject . create < Component To Test >() ĊĠĠĠ Ġprivate Ġval Ġdis posable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ component _ test ) ĊĊĠĠĠĠĠĠĠ Ġdis posable . add ( render Subject ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent _ root . removeAll Views () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview = ĠClass . forName ( it . class Path ). construct ors [ 0 ]. newInstance ( this ) Ġas ĠView Component < View Input , ĠView Output > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Ġis ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent _ root . addView ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . render ( it . state To Test ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġdis posable . clear () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠComponent To Test ( ĊĠĠĠĠĠĠĠ Ġval Ġclass Path : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġstate To Test : ĠView Input ĊĠĠĠ Ġ) Ċ } Ċ