package Ġc ac 7 er Ċ Ċ import Ġorg . junit .* Ċ import Ġorg . junit . runner .* Ċ import Ġorg . junit . runners .* Ċ Ċ import Ġjava . io .* Ċ import Ġc ac 7 er . serializer .* Ċ Ċ import Ġkotlin . contracts .* Ċ Ċ @ RunWith ( JUnit 4 :: class ) Ċ class ĠObserver Test Ġ{ ĊĠĠ Ġprivate Ġval Ġtest Dir Ġ= ĠFile (". Observer Test ") ĊĠĠ Ġprivate Ġval Ġint Repo : ĠWrit able Repository < String , ĠInt > ĊĊĠĠ Ġinit Ġ{ ĊĠĠĠĠĠ Ġ@ Use Experimental ( Experimental Contracts :: class ) ĊĠĠĠĠĠ Ġbuild C ac 7 er (" Observer Test ", Ġtest Dir ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġint Repo Ġ= Ġcreate Repository (" a ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCache Output :: writeInt , ĠCache Input :: readInt ) ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} ĊĊĠĠ Ġ@ Test Ġfun Ġobserver Test () Ġ{ ĊĠĠĠĠĠ Ġval Ġcache Ġ= Ġint Repo . save (" observer Test ", Ġ 1 ) ĊĊĠĠĠĠĠ Ġval Ġreceived Values Ġ= Ġmutable ListOf < Int >() ĊĊĠĠĠĠĠ Ġcache . add Observer Ġ{ Ġ_, Ġcontent Ġ-> Ġreceived Values Ġ+= Ġcontent Ġ} ĊĊĠĠĠĠĠ Ġcache . save ( 2 ) ĊĠĠĠĠĠ Ġcache . save ( 5 ) ĊĊĠĠĠĠĠ Ġassert ( received Values Ġ== ĠlistOf ( 2 , Ġ 5 )) ĊĠĠ Ġ} ĊĊĠĠ Ġ@ Test Ġfun Ġremove Test () Ġ{ ĊĠĠĠĠĠ Ġval Ġcache Ġ= Ġint Repo . save (" remove Test ", Ġ 1 ) ĊĊĠĠĠĠĠ Ġval Ġreceived Values Ġ= Ġmutable ListOf < Int >() ĊĊĠĠĠĠĠ Ġval Ġobserver : Ġ( Cache < Int >, ĠInt ) Ġ-> ĠUnit Ġ= Ġ{ Ġ_, Ġcontent Ġ-> Ġreceived Values Ġ+= Ġcontent Ġ} ĊĊĠĠĠĠĠ Ġcache . add Observer ( observer ) ĊĠĠĠĠĠ Ġcache . save ( 2 ) ĊĠĠĠĠĠ Ġcache . remove Observer ( observer ) ĊĠĠĠĠĠ Ġcache . save ( 5 ) ĊĊĠĠĠĠĠ Ġassert ( received Values Ġ== ĠlistOf ( 2 )) ĊĠĠ Ġ} ĊĊĠĠ Ġ@ Test Ġfun Ġobserver Via Repo () Ġ{ ĊĠĠĠĠĠ Ġval Ġcache Ġ= Ġint Repo . save (" observer Via Repo ", Ġ 1 ) ĊĊĠĠĠĠĠ Ġval Ġreceived Values Ġ= Ġmutable ListOf < Int >() ĊĊĠĠĠĠĠ Ġcache . add Observer Ġ{ Ġ_, Ġcontent Ġ-> Ġreceived Values Ġ+= Ġcontent Ġ} ĊĊĠĠĠĠĠ Ġint Repo . save (" observer Via Repo ", Ġ 2 ) ĊĠĠĠĠĠ Ġint Repo . save (" another Cache ", Ġ 5 ) ĊĠĠĠĠĠ Ġint Repo . save (" observer Via Repo ", Ġ 7 ) ĊĊĠĠĠĠĠ Ġassert ( received Values Ġ== ĠlistOf ( 2 , Ġ 7 )) ĊĠĠ Ġ} ĊĊĠĠ Ġ@ Test Ġfun Ġweak Cache Observer Test () Ġ{ ĊĠĠĠĠĠ Ġval Ġcache Ġ= Ġint Repo . save (" weak Cache Observer Test ", Ġ 1 ). to Weak Cache () ĊĊĠĠĠĠĠ Ġval Ġreceived Values Ġ= Ġmutable ListOf < Int >() ĊĊĠĠĠĠĠ Ġcache . add Observer Ġ{ Ġ_, Ġcache Ġ-> Ġreceived Values Ġ+= Ġcache Ġ} ĊĊĠĠĠĠĠ Ġcache . save ( 2 ) ĊĠĠĠĠĠ Ġcache . save ( 5 ) ĊĊĠĠĠĠĠ Ġassert ( received Values Ġ== ĠlistOf ( 2 , Ġ 5 )) ĊĠĠ Ġ} Ċ } Ċ