/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 . ĠJetBrains Ġs . r . o . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġjet brains . datal ore . base . observable . collections . list Ċ Ċ import Ġjet brains . datal ore . base . function . Predicate Ċ import Ġjet brains . datal ore . base . function . Supplier Ċ import Ġjet brains . datal ore . base . function . Value Ċ import Ġjet brains . datal ore . base . observable . collections . Collection Item Event Ċ import Ġjet brains . datal ore . base . observable . collections . list . Observable Collections . to Observable Ċ import Ġjet brains . datal ore . base . observable . event . EventHandler Ċ import Ġjet brains . datal ore . base . observable . property . Property ChangeEvent Ċ import Ġjet brains . datal ore . base . observable . property . Value Property Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠObservable Collections Test Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠSTART S _ WITH _ A : ĠPredicate < String ?> Ġ= Ġ{ Ġvalue Ġ-> Ġvalue ?. startsWith (" a ") Ġ?: Ġfalse Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Reading Handler On Select List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproperty Ġ= ĠValue Property < List < String >? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠObservable Collections . select List < List < String > ?, ĠString >( property ) Ġ{ Ġvalue Ġ-> Ġto Observable ( value !! ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġempty EventHandler Ġ= Ġobject Ġ: ĠEventHandler < Collection Item Event < out ĠString ? >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Event ( event : ĠCollection Item Event < out ĠString ?> ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġregistration Ġ= Ġcollection . add Handler ( empty EventHandler ) ĊĠĠĠĠĠĠĠ Ġproperty . set ( listOf (" 1 ", Ġ" 2 ")) ĊĠĠĠĠĠĠĠ Ġregistration . dispose () ĊĊĠĠĠĠĠĠĠ Ġcollection . add Handler ( empty EventHandler ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠList < String ?> Ġ= Ġproperty . get () !! ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġcollection Ġas ĠList < String ?> ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcount () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠObservable ArrayList < String >() ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= ĠObservable Collections . count ( collection , ĠSTART S _ WITH _ A ) ĊĊĠĠĠĠĠĠĠ Ġrun Changes ( collection , Ġcount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcount Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠObservable ArrayList < String >() ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= ĠObservable Collections . count ( collection , ĠSTART S _ WITH _ A ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlast Update : ĠValue < Int > Ġ= ĠValue ( 0 ) ĊĠĠĠĠĠĠĠ Ġcount . add Handler ( object Ġ: ĠEventHandler < Property ChangeEvent < out ĠInt >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Event ( event : ĠProperty ChangeEvent < out ĠInt >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Update . set ( event . newValue !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġrun Changes ( collection , Ġlast Update ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġall Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠObservable ArrayList < String >() ĊĠĠĠĠĠĠĠ Ġval Ġall Ġ= ĠObservable Collections . all ( collection , ĠSTART S _ WITH _ A ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( all . get () !! ) ĊĊĠĠĠĠĠĠĠ Ġcollection . add (" a ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( all . get () !! ) ĊĠĠĠĠĠĠĠ Ġcollection . add (" b ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( all . get () !! ) ĊĊĠĠĠĠĠĠĠ Ġcollection . clear () ĊĠĠĠĠĠĠĠ ĠassertTrue ( all . get () !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġany Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠObservable ArrayList < String >() ĊĠĠĠĠĠĠĠ Ġval Ġany Ġ= ĠObservable Collections . any ( collection , ĠSTART S _ WITH _ A ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( any . get () !! ) ĊĊĠĠĠĠĠĠĠ Ġcollection . add (" b ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( any . get () !! ) ĊĠĠĠĠĠĠĠ Ġcollection . add (" a ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( any . get () !! ) ĊĊĠĠĠĠĠĠĠ Ġcollection . clear () ĊĠĠĠĠĠĠĠ ĠassertFalse ( any . get () !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun Changes ( collection : ĠObservable List < String >, Ġcount : ĠSupplier < out ĠInt >) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġcount . get ()) ĊĊĠĠĠĠĠĠĠ Ġcollection . add (" a ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcount . get ()) ĊĠĠĠĠĠĠĠ Ġcollection . add (" b ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcount . get ()) ĊĠĠĠĠĠĠĠ Ġcollection . add (" a ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcount . get ()) ĊĠĠĠĠĠĠĠ Ġcollection . add (" b ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcount . get ()) ĊĊĠĠĠĠĠĠĠ Ġcollection . remove At ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcount . get ()) ĊĠĠĠĠĠĠĠ Ġcollection . remove At ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcount . get ()) ĊĊĠĠĠĠĠĠĠ Ġcollection . clear () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġcount . get ()) ĊĠĠĠ Ġ} Ċ }