/* Ċ Ġ* ĠFX GL Ġ- ĠJava FX ĠGame ĠLibrary . ĠThe ĠMIT ĠLicense Ġ( MIT ). Ċ Ġ* ĠCopyright Ġ( c ) ĠAl mas B Ġ( al mas lvl @ gmail . com ). Ċ Ġ* ĠSee ĠLICENSE Ġfor Ġdetails . Ċ Ġ*/ Ċ Ċ package Ġcom . al mas b . fx gl . core . collection Ċ Ċ import Ġjavafx . beans . property . String Property Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . hamcrest . Matchers .` is ` Ċ import Ġorg . hamcrest . Matchers . contains In Any Order Ċ import Ġorg . junit . jupiter . api . Assertions . assertFalse Ċ import Ġorg . junit . jupiter . api . Assertions . assertTrue Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ@ author ĠAl mas ĠB aim ag amb et ov Ġ( al mas lvl @ gmail . com ) Ċ Ġ*/ Ċ class ĠProperty Map Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmap : ĠProperty Map ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġmap Ġ= ĠProperty Map () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Exists `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( map . exists (" key 1 ")) ĊĊĠĠĠĠĠĠĠ Ġmap . setValue (" key 1 ", Ġ" aaa ") ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( map . exists (" key 1 ")) ĊĊĠĠĠĠĠĠĠ Ġmap . remove (" key 1 ") ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( map . exists (" key 1 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Get Ġoptional Ġvalue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmap . setValue (" key 1 ", Ġ" aaa ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( map . getValue Optional < String >(" key 1 "). get (), Ġ` is ` (" aaa ")) ĊĊĠĠĠĠĠĠĠ Ġmap . remove (" key 1 ") ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( map . getValue Optional < Any >(" key 1 "). isPresent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Get Ġobservable Ġvalue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmap . setValue (" key 1 ", Ġ" aaa ") ĊĊĠĠĠĠĠĠĠ Ġval Ġobs Value Ġ= Ġmap . getValue Observable (" key 1 ") Ġas ĠString Property ĊĊĠĠĠĠĠĠĠ ĠassertThat ( obs Value . value , Ġ` is ` (" aaa ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Put Ġand Ġget `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmap . setValue (" key 1 ", Ġ" aaa ") ĊĠĠĠĠĠĠĠ Ġmap . setValue (" key 2 ", Ġ- 5 5 ) ĊĠĠĠĠĠĠĠ Ġmap . setValue (" key 3 ", Ġ 9 0 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġmap . setValue (" key 4 ", ĠMy Class ( 2 )) ĊĠĠĠĠĠĠĠ Ġmap . setValue (" key 5 ", Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( map . getString (" key 1 "), Ġ` is ` (" aaa ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( map . getInt (" key 2 "), Ġ` is ` (- 5 5 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( map . getDouble (" key 3 "), Ġ` is `( 9 0 0 . 0 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( map . getObject < My Class >(" key 4 "). i , Ġ` is `( 2 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( map . getBoolean (" key 5 "), Ġ` is `( true )) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( map . getValue (" key 1 "), Ġ` is ` (" aaa ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( map . getValue (" key 2 "), Ġ` is ` (- 5 5 )) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( map . keys (), Ġcontains In Any Order (" key 1 ", Ġ" key 2 ", Ġ" key 3 ", Ġ" key 4 ", Ġ" key 5 ")) ĊĊĠĠĠĠĠĠĠ Ġmap . setValue (" key 1 ", Ġ" a 2 ") ĊĠĠĠĠĠĠĠ Ġmap . setValue (" key 2 ", Ġ 3 3 ) ĊĠĠĠĠĠĠĠ Ġmap . setValue (" key 3 ", Ġ 4 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġmap . setValue (" key 4 ", ĠMy Class ( 4 )) ĊĠĠĠĠĠĠĠ Ġmap . setValue (" key 5 ", Ġfalse ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( map . getString (" key 1 "), Ġ` is ` (" a 2 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( map . getInt (" key 2 "), Ġ` is `( 3 3 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( map . getDouble (" key 3 "), Ġ` is `( 4 0 . 0 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( map . getObject < My Class >(" key 4 "). i , Ġ` is `( 4 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( map . getBoolean (" key 5 "), Ġ` is `( false )) ĊĊĠĠĠĠĠĠĠ Ġmap . clear () ĊĠĠĠĠĠĠĠ ĠassertTrue ( map . keys (). isEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Throws Ġif Ġno Ġsuch Ġkey `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThrows < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap . getValue (" hello ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Increment ĠDouble Ġand ĠInt `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmap . setValue (" key 2 ", Ġ- 5 5 ) ĊĠĠĠĠĠĠĠ Ġmap . setValue (" key 3 ", Ġ 9 0 0 . 0 ) ĊĊĠĠĠĠĠĠĠ Ġmap . increment (" key 2 ", Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( map . getInt (" key 2 "), Ġ` is ` (- 5 3 )) ĊĊĠĠĠĠĠĠĠ Ġmap . increment (" key 3 ", Ġ- 1 0 0 . 0 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( map . getDouble (" key 3 "), Ġ` is `( 8 0 0 . 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Listeners `() Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġmap . setValue (" key ", Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġmap . setValue (" key 2 ", Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġobject Ġ: ĠProperty ChangeListener < Int > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonChange ( prev : ĠInt , Ġnow : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( now , Ġ` is `( 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( prev , Ġ` is `( 1 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmap . addListener (" key ", Ġl ) ĊĠĠĠĠĠĠĠ Ġmap . addListener (" key 2 ", Ġobject Ġ: ĠProperty ChangeListener < Int > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonChange ( prev : ĠInt , Ġnow : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġshould Ġnot Ġfire ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġmap . setValue (" key ", Ġ 3 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( count , Ġ` is `( 1 )) ĊĊĠĠĠĠĠĠĠ Ġmap . remove Listener (" key ", Ġl ) ĊĊĠĠĠĠĠĠĠ Ġmap . setValue (" key ", Ġ 5 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( count , Ġ` is `( 1 )) ĊĊĠĠĠĠĠĠĠ Ġmap . addListener (" key ", Ġl ) ĊĊĠĠĠĠĠĠĠ Ġmap . clear () ĊĊĠĠĠĠĠĠĠ Ġmap . setValue (" key ", Ġ 7 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( count , Ġ` is `( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` To ĠString `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmap . setValue (" test Int ", Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġmap . setValue (" test Double ", Ġ 5 . 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġmap . toString () ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( s . contains (" test Double = Double Property Ġ[ value : Ġ 5 . 0 ] ")) ĊĠĠĠĠĠĠĠ ĠassertTrue ( s . contains (" test Int = Integer Property Ġ[ value : Ġ 3 ] ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠMy Class ( val Ġi : ĠInt ) Ċ }