package Ġcom . bad oo . ri bs . sandbox . rib . menu Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . test . internal . runner . junit 4 . statement . Ui Thread Statement . run On Ui Thread Ċ import Ġcom . bad oo . ri bs . test . R ib s Rule Ċ import Ġcom . bad oo . ri bs . test . R ib Test Activity Ċ import Ġcom . bad oo . ri bs . core . modal ity . BuildContext . Companion . root Ċ import Ġcom . bad oo . ri bs . sandbox . rib . menu . Menu . Input . Select MenuItem Ċ import Ġcom . bad oo . ri bs . sandbox . rib . menu . Menu . MenuItem . Foo Bar Ċ import Ġcom . bad oo . ri bs . sandbox . rib . menu . Menu . MenuItem . HelloWorld Ċ import Ġcom . bad oo . ri bs . sandbox . rib . menu . element . Menu Element Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . ob servers . Test Observer Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ /** Ċ Ġ* ĠUI Ġintegration Ġtest Ġthat Ġchecks Ġall ĠR IB Ġcomponents Ġin Ġisolation Ċ Ġ* ĠIt Ġinteract s Ġwith Ġthe ĠR IB Ġusing Ġreal ĠUI Ġ( button Ġclicks / sw ip es ) Ġand ĠR IB Ġinput , Ċ Ġ* Ġit Ġcan Ġmake Ġassertions Ġbased Ġon ĠUI Ġstate Ġand Ġproduced Ġoutput Ċ Ġ*/ Ċ class ĠMenu Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġri bs Rule Ġ= ĠR ib s Rule ( builder Ġ= Ġthis :: build R ib ) ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġ rib : ĠMenu ĊĊĠĠĠ Ġprivate Ġval Ġmenu Ġ= ĠMenu Element () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠinitialState _ no Selected Elements () Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu . assert Nothing Selected () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġselect Item Input _ select s Item () Ġ{ ĊĠĠĠĠĠĠĠ Ġaccept Input ( Select MenuItem ( HelloWorld )) ĊĊĠĠĠĠĠĠĠ Ġmenu . hello Item . assertIs Selected () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġclick On Item _ does Not Select Item () Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu . dialogs Item . click () ĊĊĠĠĠĠĠĠĠ Ġmenu . dialogs Item . assertIs Not Selected () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġitem Click _ pro duces Select Output () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġ rib . output . subscribe On Test Observer () ĊĊĠĠĠĠĠĠĠ Ġmenu . foo Item . click () ĊĊĠĠĠĠĠĠĠ Ġobserver . assert Value ( Menu . Output . MenuItem Selected ( Foo Bar )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġselect Item Input Two Times _ display s Only Last Selection () Ġ{ ĊĠĠĠĠĠĠĠ Ġaccept Input ( Select MenuItem ( HelloWorld )) ĊĠĠĠĠĠĠĠ Ġaccept Input ( Select MenuItem ( Foo Bar )) ĊĊĠĠĠĠĠĠĠ Ġmenu . hello Item . assertIs Not Selected () ĊĠĠĠĠĠĠĠ Ġmenu . foo Item . assertIs Selected () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġaccept Input ( input : ĠMenu . Input ) Ġ= Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠ Ġ rib . input . accept ( input ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild R ib ( rib Test Activity : ĠR ib Test Activity , ĠsavedInstanceState : ĠBundle ?) Ġ= ĊĠĠĠĠĠĠĠ ĠMenu Builder ( object Ġ: ĠMenu . Dependency Ġ{ ĊĠĠĠĠĠĠĠ Ġ}). build ( root ( savedInstanceState )). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ rib Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > ĠObservable < T >. subscribe On Test Observer () Ġ= ĠTest Observer < T >(). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġsubscribe ( this ) ĊĠĠĠ Ġ} Ċ } Ċ