package Ġio . github . reactive circ us . li ved ata . test . ext Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . junit . Assert . assert Throws Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ @ Experimental Std lib Api Ċ class ĠTest Observer Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġinstant Task Executor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġprivate Ġval Ġlive Data Ġ= ĠMutable LiveData < Int >() ĊĊĠĠĠ Ġprivate Ġval Ġtest Observer Ġ= ĠTest Observer < Int >() ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` can Ġtake Ġfirst Ġn Ġrecorded Ġvalues Ġfrom ĠTest Observer Ġwhen Ġn Ġis Ġless Ġor Ġequal Ġto Ġthe Ġnumber Ġof Ġall Ġrecorded Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Data . observe Fore ver ( test Observer ) ĊĊĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġ 3 ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Observer . take ( 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly ( 1 , Ġ 2 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Observer . take ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly ( 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` throws Ġexception Ġwhen Ġtaking Ġless Ġthan Ġ 1 Ġrecorded Ġvalue Ġfrom ĠTest Observer `() Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Data . observe Fore ver ( test Observer ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= ĠassertThrows ( IllegalArgumentException :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Observer . take ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( exception ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Message That () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo (" Least Ġnumber Ġof Ġvalues Ġto Ġtake Ġis Ġ 1 .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` throws Ġexception Ġwhen Ġtaking Ġmore Ġthan Ġthe Ġtotal Ġnumber Ġof Ġrecorded Ġvalue Ġfrom ĠTest Observer `() Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Data . observe Fore ver ( test Observer ) ĊĊĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= ĠassertThrows ( IllegalArgumentException :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Observer . take ( 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( exception ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Message That () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo (" T aking Ġ 2 Ġbut Ġonly Ġ 1 Ġvalue ( s ) Ġhave Ġbeen Ġrecorded .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` can Ġtake Ġall Ġrecorded Ġvalues Ġfrom ĠTest Observer `() Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Data . observe Fore ver ( test Observer ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Observer . take All ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEmpty () ĊĊĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġ 3 ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Observer . take All ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly ( 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` re corded Ġvalues Ġare Ġcleared Ġafter Ġreset `() Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Data . observe Fore ver ( test Observer ) ĊĊĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġ 3 ĊĊĠĠĠĠĠĠĠ Ġtest Observer . reset () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Observer . take All ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEmpty () ĊĠĠĠ Ġ} Ċ } Ċ