package Ġcom . m ire go . tri kot . streams . reactive Ċ Ċ import Ġcom . m ire go . tri kot . streams . c ancellable . C ancellable Manager Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠC old Publisher Tests Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġblock Is Executed On Subscription () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġexecuted Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġcold Publisher Ġ= ĠC old Publisher < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecuted Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublish ers . behavior Subject () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcold Publisher . subscribe ( C ancellable Manager ()) Ġ{} ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġexecuted Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcancelled On Un subscription () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġexecuted Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġcancelled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġcold Publisher Ġ= ĠC old Publisher < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecuted Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Ġ{ Ġcancelled Ġ= Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublish ers . behavior Subject () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsubscription Ġ= ĠC ancellable Manager () ĊĠĠĠĠĠĠĠ Ġcold Publisher . subscribe ( subscription ) Ġ{} ĊĠĠĠĠĠĠĠ Ġsubscription . cancel () ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġexecuted Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġcancelled Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalue Is Forwarded () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpublisher Ġ= ĠPublish ers . behavior Subject < String >() ĊĠĠĠĠĠĠĠ Ġval Ġcold Publisher Ġ= ĠC old Publisher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublisher ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġvalue : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġcold Publisher . subscribe ( C ancellable Manager ()) Ġ{ Ġvalue Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġpublisher . value Ġ= Ġ" a " ĊĠĠĠĠĠĠĠ ĠassertEquals (" a ", Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġblock Is Re executed If Res ub scribed () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġexecution Count Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġcold Publisher Ġ= ĠC old Publisher < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Count Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublish ers . behavior Subject () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcancell able Manager Ġ= ĠC ancellable Manager () ĊĠĠĠĠĠĠĠ Ġcold Publisher . subscribe ( c ancellable Manager ) Ġ{} ĊĠĠĠĠĠĠĠ Ġcancell able Manager . cancel () ĊĠĠĠĠĠĠĠ Ġcold Publisher . subscribe ( C ancellable Manager ()) Ġ{} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġexecution Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġblock IsNot Re executed If Res ub scribed When Completed () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġexecution Count Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġcold Publisher Ġ= ĠC old Publisher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Count Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublish ers . behavior Subject (" value "). also Ġ{ Ġit . complete () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcancell able Manager Ġ= ĠC ancellable Manager () ĊĠĠĠĠĠĠĠ Ġcold Publisher . subscribe ( c ancellable Manager ) Ġ{} ĊĠĠĠĠĠĠĠ Ġcancell able Manager . cancel () ĊĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ" none " ĊĠĠĠĠĠĠĠ Ġcold Publisher . subscribe ( C ancellable Manager ()) Ġ{ Ġvalue Ġ= Ġit Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġexecution Count ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" value ", Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġerror Is Forwarded () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Error Ġ= ĠException (" Expected ") ĊĊĠĠĠĠĠĠĠ Ġval Ġcold Publisher Ġ= ĠC old Publisher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublish ers . behavior Subject < String >(). also Ġ{ Ġit . error Ġ= Ġexpected Error Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcancell able Manager Ġ= ĠC ancellable Manager () ĊĠĠĠĠĠĠĠ Ġvar Ġreceived Error : ĠThrowable ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġcold Publisher . subscribe ( c ancellable Manager , Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreceived Error Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Error , Ġreceived Error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalues Are Clean ed Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Publisher Ġ= ĠPublish ers . behavior Subject (" a "). also Ġ{ Ġit . error Ġ= ĠThrowable () Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsecond Publisher Ġ= ĠPublish ers . behavior Subject (" expected Value ") ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġcold Publisher Ġ= ĠC old Publisher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpublisher Ġ= Ġif Ġ( count Ġ== Ġ 1 ) Ġfirst Publisher Ġelse Ġsecond Publisher ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublisher ĊĠĠĠĠĠĠĠ Ġ}. shared () ĊĊĠĠĠĠĠĠĠ Ġcold Publisher . first (). subscribe ( C ancellable Manager ()) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġvar Ġreceived Value Ġ= Ġ" old " ĊĠĠĠĠĠĠĠ Ġcold Publisher . first (). subscribe ( C ancellable Manager ()) Ġ{ Ġreceived Value Ġ= Ġit Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" expected Value ", Ġreceived Value ) ĊĠĠĠ Ġ} Ċ } Ċ