package Ġcom . ny times . android . external . store 4 . impl Ċ Ċ import Ġcom . ny times . android . external . store 4 . Response Origin Ċ import Ġcom . ny times . android . external . store 4 . Store Builder Ċ import Ġcom . ny times . android . external . store 4 . Store Request Ċ import Ġcom . ny times . android . external . store 4 . Store Response Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . async Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . flow . take Ċ import Ġkotlinx . coroutines . flow . toList Ċ import Ġkotlinx . coroutines . test . Test Coroutine Scope Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . Parameterized Ċ Ċ @ Experimental Cor outines Api Ċ @ RunWith ( Parameterized :: class ) Ċ class ĠStream Without Source Of Truth Test ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġenable Cache : ĠBoolean Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtest Scope Ġ= ĠTest Coroutine Scope () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġstream Without Pers ister () Ġ= Ġtest Scope . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfetch er Ġ= ĠFake Fetcher ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġto Ġ" three - 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġto Ġ" three - 2 " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġpipeline Ġ= ĠStore Builder . from Non Flow ( fetcher :: fetch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. scope ( test Scope ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( enable Cache ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . disable Cache () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠĠĠĠĠ Ġval Ġtwo Items No Refresh Ġ= Ġasync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline . stream ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Request . cached ( 3 , Ġrefresh Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). take ( 3 ). toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdelay ( 1 _ 0 0 0 ) Ġ// Ġmake Ġsure Ġthe Ġasync Ġblock Ġstarts Ġfirst ĊĠĠĠĠĠĠĠ Ġpipeline . stream ( Store Request . fresh ( 3 )). assert Items ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Response . Loading ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorigin Ġ= ĠResponse Origin . Fetcher ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Response . Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" three - 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorigin Ġ= ĠResponse Origin . Fetcher ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġprintln (" !") ĊĠĠĠĠĠĠĠ ĠassertThat ( two Items No Refresh . await ()). contains Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Response . Loading ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorigin Ġ= ĠResponse Origin . Fetcher ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Response . Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" three - 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorigin Ġ= ĠResponse Origin . Fetcher ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Response . Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" three - 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorigin Ġ= ĠResponse Origin . Fetcher ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Parameterized . Parameters ( name Ġ= Ġ" enable Cache ={ 0 }") ĊĠĠĠĠĠĠĠ Ġfun Ġparams () Ġ= ĠarrayOf ( true , Ġfalse ) ĊĠĠĠ Ġ} Ċ }