package Ġcom . github . sat osh un . reactivex . cache Ċ Ċ import Ġio . reactivex . Flow able Ċ import Ġio . reactivex . Single Ċ import Ġorg . hamcrest . Core Matchers .` is ` Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . junit . Test Ċ Ċ class ĠFlow ables Test Ġ{ ĊĠ Ġprivate Ġval Ġerror Ġ= ĠException (" error ") ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġcache 0 () Ġ{ ĊĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠ Ġval Ġoriginal Ġ= Ġobject Ġ: ĠFunction 0 < Flow able < String >> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġinvoke (): ĠFlow able < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġcounter Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġreturn ĠFlow able . just (" 1 ", Ġ" 2 ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġwrapped Ġ= Ġrx Cache ( original ) ĊĊĠĠĠ Ġwrapped (). test (). assert Values (" 1 ", Ġ" 2 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 1 )) ĊĊĠĠĠ Ġwrapped (). test (). assert Values (" 1 ", Ġ" 2 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 1 )) ĊĊĠĠĠ Ġwrapped . force Invalid ation (). test (). assert Values (" 1 ", Ġ" 2 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 2 )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġcache 0 _ exception () Ġ{ ĊĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠ Ġval Ġoriginal Ġ= Ġobject Ġ: ĠFunction 0 < Flow able < String >> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġinvoke (): ĠFlow able < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġcounter Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġreturn ĠFlow able . error ( error ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġwrapped Ġ= Ġrx Cache ( original ) ĊĊĠĠĠ Ġwrapped (). test (). assert Error ( error ) ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 1 )) ĊĠĠĠ Ġwrapped (). test (). assert Error ( error ) ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 2 )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġcache 1 () Ġ{ ĊĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠ Ġval Ġoriginal Ġ= Ġobject Ġ: ĠFunction 1 < Int , ĠFlow able < String >> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( p 1 : ĠInt ): ĠFlow able < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġcounter Ġ+= Ġp 1 ĊĠĠĠĠĠĠĠ Ġreturn ĠFlow able . just ( p 1 . toString (), Ġ( p 1 Ġ+ Ġ 1 ). toString ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġwrapped Ġ= Ġrx Cache ( original ) ĊĊĠĠĠ Ġwrapped ( 1 ). test (). assert Values (" 1 ", Ġ" 2 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 1 )) ĊĊĠĠĠ Ġwrapped ( 2 ). test (). assert Values (" 2 ", Ġ" 3 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 3 )) ĊĊĠĠĠ Ġwrapped ( 1 ). test (). assert Values (" 1 ", Ġ" 2 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 3 )) ĊĊĠĠĠ Ġwrapped . force Invalid ation ( 1 ). test (). assert Values (" 1 ", Ġ" 2 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 4 )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġcache 1 _ exception () Ġ{ ĊĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠ Ġval Ġoriginal Ġ= Ġobject Ġ: ĠFunction 1 < Int , ĠFlow able < String >> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( p 1 : ĠInt ): ĠFlow able < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġcounter Ġ+= Ġp 1 ĊĠĠĠĠĠĠĠ Ġreturn ĠFlow able . error ( error ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġwrapped Ġ= Ġrx Cache ( original ) ĊĊĠĠĠ Ġwrapped ( 1 ). test (). assert Error ( error ) ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 1 )) ĊĠĠĠ Ġwrapped ( 1 ). test (). assert Error ( error ) ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 2 )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġcache 1 _ null () Ġ{ ĊĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠ Ġval Ġoriginal Ġ= Ġobject Ġ: ĠFunction 1 < Int ?, ĠFlow able < String >> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( p 1 : ĠInt ?): ĠFlow able < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġcounter Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġreturn ĠFlow able . just (" 1 ", Ġ" 2 ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġwrapped Ġ= Ġrx Cache ( original ) ĊĊĠĠĠ Ġwrapped ( null ). test (). assert Values (" 1 ", Ġ" 2 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 1 )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġcache 2 () Ġ{ ĊĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠ Ġval Ġoriginal Ġ= Ġobject Ġ: ĠFunction 2 < Int , ĠInt , ĠFlow able < String >> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( p 1 : ĠInt , Ġp 2 : ĠInt ): ĠFlow able < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġcounter Ġ+= Ġp 1 Ġ+ Ġp 2 ĊĠĠĠĠĠĠĠ Ġreturn ĠFlow able . just ( p 1 . toString (), Ġ( p 1 Ġ+ Ġ 1 ). toString ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġwrapped Ġ= Ġrx Cache ( original ) ĊĊĠĠĠ Ġwrapped ( 1 , Ġ 2 ). test (). assert Values (" 1 ", Ġ" 2 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 3 )) ĊĊĠĠĠ Ġwrapped ( 2 , Ġ 4 ). test (). assert Values (" 2 ", Ġ" 3 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 9 )) ĊĊĠĠĠ Ġwrapped ( 1 , Ġ 2 ). test (). assert Values (" 1 ", Ġ" 2 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 9 )) ĊĊĠĠĠ Ġwrapped . force Invalid ation ( 1 , Ġ 2 ). test (). assert Values (" 1 ", Ġ" 2 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 1 2 )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġcache 2 _ exception () Ġ{ ĊĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠ Ġval Ġoriginal Ġ= Ġobject Ġ: ĠFunction 2 < Int , ĠInt , ĠFlow able < String >> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( p 1 : ĠInt , Ġp 2 : ĠInt ): ĠFlow able < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġcounter Ġ+= Ġp 1 Ġ+ Ġp 2 ĊĠĠĠĠĠĠĠ Ġreturn ĠFlow able . error ( error ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġwrapped Ġ= Ġrx Cache ( original ) ĊĊĠĠĠ Ġwrapped ( 1 , Ġ 2 ). test (). assert Error ( error ) ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 3 )) ĊĠĠĠ Ġwrapped ( 1 , Ġ 2 ). test (). assert Error ( error ) ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 6 )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġcache 3 () Ġ{ ĊĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠ Ġval Ġoriginal Ġ= Ġobject Ġ: ĠFunction 3 < Int , ĠInt , ĠInt , ĠFlow able < String >> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( p 1 : ĠInt , Ġp 2 : ĠInt , Ġp 3 : ĠInt ): ĠFlow able < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġcounter Ġ+= Ġp 1 Ġ+ Ġp 2 Ġ+ Ġp 3 ĊĠĠĠĠĠĠĠ Ġreturn ĠFlow able . just ( p 1 . toString (), Ġ( p 1 Ġ+ Ġ 1 ). toString ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġwrapped Ġ= Ġrx Cache ( original ) ĊĊĠĠĠ Ġwrapped ( 1 , Ġ 2 , Ġ 4 ). test (). assert Values (" 1 ", Ġ" 2 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 7 )) ĊĊĠĠĠ Ġwrapped ( 2 , Ġ 4 , Ġ 7 ). test (). assert Values (" 2 ", Ġ" 3 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 2 0 )) ĊĊĠĠĠ Ġwrapped ( 1 , Ġ 2 , Ġ 4 ). test (). assert Values (" 1 ", Ġ" 2 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 2 0 )) ĊĊĠĠĠ Ġwrapped . force Invalid ation ( 1 , Ġ 2 , Ġ 4 ). test (). assert Values (" 1 ", Ġ" 2 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 2 7 )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġcache 3 _ exception () Ġ{ ĊĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠ Ġval Ġoriginal Ġ= Ġobject Ġ: ĠFunction 3 < Int , ĠInt , ĠInt , ĠFlow able < String >> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( p 1 : ĠInt , Ġp 2 : ĠInt , Ġp 3 : ĠInt ): ĠFlow able < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġcounter Ġ+= Ġp 1 Ġ+ Ġp 2 Ġ+ Ġp 3 ĊĠĠĠĠĠĠĠ Ġreturn ĠFlow able . error ( error ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġwrapped Ġ= Ġrx Cache ( original ) ĊĊĠĠĠ Ġwrapped ( 1 , Ġ 2 , Ġ 4 ). test (). assert Error ( error ) ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 7 )) ĊĠĠĠ Ġwrapped ( 1 , Ġ 2 , Ġ 4 ). test (). assert Error ( error ) ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 1 4 )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġcache 4 () Ġ{ ĊĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠ Ġval Ġoriginal Ġ= Ġobject Ġ: ĠFunction 4 < Int , ĠInt , ĠInt , ĠInt , ĠFlow able < String >> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( p 1 : ĠInt , Ġp 2 : ĠInt , Ġp 3 : ĠInt , Ġp 4 : ĠInt ): ĠFlow able < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġcounter Ġ+= Ġp 1 Ġ+ Ġp 2 Ġ+ Ġp 3 Ġ+ Ġp 4 ĊĠĠĠĠĠĠĠ Ġreturn ĠFlow able . just ( p 1 . toString (), Ġ( p 1 Ġ+ Ġ 1 ). toString ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġwrapped Ġ= Ġrx Cache ( original ) ĊĊĠĠĠ Ġwrapped ( 1 , Ġ 2 , Ġ 4 , Ġ 7 ). test (). assert Values (" 1 ", Ġ" 2 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 1 4 )) ĊĊĠĠĠ Ġwrapped ( 2 , Ġ 4 , Ġ 7 , Ġ 1 1 ). test (). assert Values (" 2 ", Ġ" 3 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 3 8 )) ĊĊĠĠĠ Ġwrapped ( 1 , Ġ 2 , Ġ 4 , Ġ 7 ). test (). assert Values (" 1 ", Ġ" 2 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 3 8 )) ĊĊĠĠĠ Ġwrapped . force Invalid ation ( 1 , Ġ 2 , Ġ 4 , Ġ 7 ). test (). assert Values (" 1 ", Ġ" 2 ") ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 5 2 )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġcache 4 _ exception () Ġ{ ĊĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠ Ġval Ġoriginal Ġ= Ġobject Ġ: ĠFunction 4 < Int , ĠInt , ĠInt , ĠInt , ĠFlow able < String >> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( p 1 : ĠInt , Ġp 2 : ĠInt , Ġp 3 : ĠInt , Ġp 4 : ĠInt ): ĠFlow able < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġcounter Ġ+= Ġp 1 Ġ+ Ġp 2 Ġ+ Ġp 3 Ġ+ Ġp 4 ĊĠĠĠĠĠĠĠ Ġreturn ĠFlow able . error ( error ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġwrapped Ġ= Ġrx Cache ( original ) ĊĊĠĠĠ Ġwrapped ( 1 , Ġ 2 , Ġ 4 , Ġ 7 ). test (). assert Error ( error ) ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 1 4 )) ĊĠĠĠ Ġwrapped ( 1 , Ġ 2 , Ġ 4 , Ġ 7 ). test (). assert Error ( error ) ĊĠĠĠ ĠassertThat ( counter , Ġ` is `( 2 8 )) ĊĠ Ġ} Ċ } Ċ