package Ġio . ash dav ies . lifecycle . testing Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Timeout Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġjava . lang . Thread . State . WAIT ING Ċ import Ġjava . util . concurrent . TimeUnit . MILLISECONDS Ċ Ċ internal Ġclass ĠLive Data Iterable Test Ġ{ ĊĊĠ Ġprivate Ġval Ġiterable Ġ= ĠLive Data Iterable < String >() ĊĊĠ Ġ@ Test ĊĠ Ġ@ Timeout ( value Ġ= Ġ 1 0 0 , Ġunit Ġ= ĠMIL LI SECONDS ) ĊĠ Ġfun Ġ` should Ġawait Ġvalue Ġin def initely `() Ġ{ ĊĠĠĠ Ġval Ġthread Ġ= ĠThread ( Runnable Ġ{ ĊĠĠĠĠĠ Ġiterable . await () ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġthread . start () ĊĊĠĠĠ Ġwhile Ġ( thread . state Ġ!= ĠWAIT ING ) Ġ{ ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġ@ Timeout ( value Ġ= Ġ 1 0 0 , Ġunit Ġ= ĠMIL LI SECONDS ) ĊĠ Ġfun Ġ` should Ġawait Ġvalue `() Ġ{ ĊĠĠĠ ĠThread ( Runnable Ġ{ ĊĠĠĠĠĠ Ġiterable . emit (" Hello ĠWorld ") ĊĠĠĠ Ġ}). start () ĊĊĠĠĠ Ġiterable . await () ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` should Ġemit Ġvalues `() Ġ{ ĊĠĠĠ Ġiterable . emit (" Hello ", Ġ" World ") ĊĊĠĠĠ Ġiterable . expect (" Hello ", Ġ" World ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` should Ġexpect Ġvalues `() Ġ{ ĊĠĠĠ Ġiterable . emit (" Hello ", Ġ" World ") ĊĊĠĠĠ Ġiterable . expect (" Hello ", Ġ" World ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` should Ġprovide Ġexpected Ġvalue Ġexception `() Ġ{ ĊĠĠĠ Ġval Ġexception : ĠAssertionError Ġ= ĠassertThrows Ġ{ ĊĠĠĠĠĠ Ġiterable . expect (" Hello ") ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠassertThat ( exception . message ). isEqualTo ( ĊĠĠĠĠĠĠĠ Ġ""" Ċ missing Ġ( 1 ): ĠHello Ċ --- Ċ expected ĠĠ Ġ: Ġ[ Hello ] Ċ but Ġwas ĠĠĠ Ġ: Ġ[] ĊĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` should Ġexpect Ġlast Ġvalue `() Ġ{ ĊĠĠĠ Ġiterable . emit (" Hello ", Ġ" World ") ĊĊĠĠĠ Ġiterable . last (" World ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` should Ġprovide Ġlast Ġvalue Ġexception `() Ġ{ ĊĠĠĠ Ġiterable . emit (" Hello ", Ġ" World ") ĊĊĠĠĠ Ġval Ġexception : ĠAssertionError Ġ= ĠassertThrows Ġ{ ĊĠĠĠĠĠ Ġiterable . last (" Hello ") ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠassertThat ( exception . message ). isEqualTo ( ĊĠĠĠĠĠĠĠ Ġ""" Ċ value Ġof : Ġiterable . only Element () Ċ expected : ĠHello Ċ but Ġwas Ġ: ĠWorld ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` should Ġnever Ġexpect Ġvalue `() Ġ{ ĊĠĠĠ Ġiterable . emit (" Hello ") ĊĊĠĠĠ Ġiterable . never (" World ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` should Ġprovide Ġnever Ġvalue Ġexception `() Ġ{ ĊĠĠĠ Ġiterable . emit (" Hello ", Ġ" World ") ĊĊĠĠĠ Ġval Ġexception : ĠAssertionError Ġ= ĠassertThrows Ġ{ ĊĠĠĠĠĠ Ġiterable . never (" Hello ") ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠassertThat ( exception . message ). isEqualTo ( ĊĠĠĠĠĠĠĠ Ġ""" Ċ expected Ġnot Ġto Ġcontain Ġany Ġof : Ġ[ Hello ] Ċ but Ġcontained ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ: Ġ[ Hello ] Ċ full Ġcontents ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ: Ġ[ Hello , ĠWorld ] ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` should Ġexpect Ġvalue Ġonce `() Ġ{ ĊĠĠĠ Ġiterable . emit (" Hello ", Ġ" World ") ĊĊĠĠĠ Ġiterable . once (" Hello ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` should Ġprovide Ġonce Ġvalue Ġexception `() Ġ{ ĊĠĠĠ Ġiterable . emit (" Hello ") ĊĊĠĠĠ Ġval Ġexception : ĠAssertionError Ġ= ĠassertThrows Ġ{ ĊĠĠĠĠĠ Ġiterable . once (" World ") ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠassertThat ( exception . message ). isEqualTo ( ĊĠĠĠĠĠĠĠ Ġ""" Ċ expected Ġto Ġcontain : ĠWorld Ċ but Ġwas ĠĠĠĠĠĠĠĠĠĠĠ Ġ: Ġ[ Hello ] ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } Ċ