package Ġio . sab ag . coroutines UseCase Ċ Ċ import Ġjunit . framework . TestCase . assertEquals Ċ import Ġkotlinx . coroutines . channels . Broadcast Channel Ċ import Ġkotlinx . coroutines . channels . Channel Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ class ĠData Stream Tests Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdata Stream : ĠData Stream < String > ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġchannel : ĠBroadcast Channel < String > ĊĠĠĠ Ġvar Ġresponse : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġnotify Counter Ġ= Ġ 0 ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrunner Ġ= ĠLaunch Task Runner () ĊĠĠĠĠĠĠĠ Ġchannel Ġ= ĠBroadcast Channel ( Channel . CON FL ATED ) ĊĠĠĠĠĠĠĠ Ġnotify Counter Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġdata Stream Ġ= ĠData Stream ( runner , Ġchannel ) ĊĠĠĠĠĠĠĠ Ġdata Stream . notify OnChange Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Counter ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen Send NewValue Should Notify This Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġact ĊĠĠĠĠĠĠĠ Ġsend NewValue (" test ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify ĊĠĠĠĠĠĠĠ ĠassertEquals (" test ", Ġresponse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen Send Se veral Value Should Notify Last Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġact ĊĠĠĠĠĠĠĠ Ġsend NewValue (" tests ") ĊĠĠĠĠĠĠĠ Ġsend NewValue (" are ") ĊĠĠĠĠĠĠĠ Ġsend NewValue (" fun ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify ĊĠĠĠĠĠĠĠ ĠassertEquals (" fun ", Ġresponse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen Pause Should Notify Last Value Before Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġprepare ĊĠĠĠĠĠĠĠ Ġsend NewValue (" tests ") ĊĠĠĠĠĠĠĠ Ġsend NewValue (" are ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġact ĊĠĠĠĠĠĠĠ Ġdata Stream . pause () ĊĠĠĠĠĠĠĠ Ġsend NewValue (" fun ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify ĊĠĠĠĠĠĠĠ ĠassertEquals (" are ", Ġresponse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen Pause And Resume Should Notify Value After Resume And Not Notify Value During Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġact ĊĠĠĠĠĠĠĠ Ġsend NewValue (" tests ") ĊĠĠĠĠĠĠĠ Ġdata Stream . pause () ĊĠĠĠĠĠĠĠ Ġsend NewValue (" are ") ĊĠĠĠĠĠĠĠ Ġsend NewValue (" fun ") ĊĠĠĠĠĠĠĠ Ġdata Stream . resume () ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ Ġdelay ( 1 0 ) Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ// Ġverify ĊĠĠĠĠĠĠĠ ĠassertEquals (" fun ", Ġresponse ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġnotify Counter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend NewValue ( value : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . send ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }