package Ġco . zs mb . rain bow cake . internal Ċ Ċ import Ġco . zs mb . rain bow cake . internal . li ved ata . Cl air voy ant LiveData Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġkotlinx . coroutines . yield Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Test Ċ Ċ @ Suppress (" Use Property Access Syntax ") Ċ internal Ġclass ĠCl air voy ant LiveData Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġplace Value Is Instant () Ġ= Ġrun Blocking ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlive Data Ġ= ĠCl air voy ant LiveData < Int >() ĊĊĠĠĠĠĠĠĠ Ġlive Data . setValue ( 1 ) ĊĠĠĠĠĠĠĠ Ġlive Data . place Value ( 2 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġlive Data . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpost Value IsNot Instant () Ġ= Ġrun Blocking ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlive Data Ġ= ĠCl air voy ant LiveData < Int >() ĊĊĠĠĠĠĠĠĠ Ġlive Data . setValue ( 1 ) ĊĠĠĠĠĠĠĠ Ġlive Data . post Value ( 2 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġlive Data . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġplace Value Work sWith Multiple Calls () Ġ= Ġrun Blocking ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlive Data Ġ= ĠCl air voy ant LiveData < Int >() ĊĊĠĠĠĠĠĠĠ Ġlive Data . setValue ( 1 ) ĊĠĠĠĠĠĠĠ Ġlive Data . place Value ( 2 ) ĊĠĠĠĠĠĠĠ Ġlive Data . place Value ( 3 ) ĊĠĠĠĠĠĠĠ Ġlive Data . place Value ( 2 ) ĊĠĠĠĠĠĠĠ Ġlive Data . place Value ( 4 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġlive Data . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġplace Value Is Over written By SetValue () Ġ= Ġrun Blocking ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlive Data Ġ= ĠCl air voy ant LiveData < Int >() ĊĊĠĠĠĠĠĠĠ Ġlive Data . place Value ( 1 ) ĊĠĠĠĠĠĠĠ Ġlive Data . setValue ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġlive Data . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġplace Value With SetValue () Ġ= Ġrun Blocking ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlive Data Ġ= ĠCl air voy ant LiveData < Int >() ĊĊĠĠĠĠĠĠĠ Ġlive Data . place Value ( 1 ) Ġ// Ġimmediately Ġtakes Ġeffect Ġfor ĠgetValue Ġcalls ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġlive Data . value ) ĊĊĠĠĠĠĠĠĠ Ġlive Data . setValue ( 2 ) Ġ// Ġn atur ally , Ġtakes Ġeffect Ġfor ĠgetValue Ġcalls ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġlive Data . value ) ĊĊĠĠĠĠĠĠĠ Ġyield () Ġ// Ġplace Value Ġwill Ġcomplete , Ġactually Ġsetting Ġthe Ġparent ĠLive Data ! ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġlive Data . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġplace Value With Post Value () Ġ= Ġrun Blocking ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlive Data Ġ= ĠCl air voy ant LiveData < Int >() ĊĊĠĠĠĠĠĠĠ Ġlive Data . place Value ( 1 ) Ġ// Ġimmediately Ġtakes Ġeffect Ġfor ĠgetValue Ġcalls ĊĠĠĠĠĠĠĠ Ġlive Data . post Value ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġlive Data . value ) ĊĊĠĠĠĠĠĠĠ Ġyield () Ġ// Ġboth Ġasync Ġsets Ġcomplete , Ġpost Value Ġwas Ġthe Ġlatter ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġlive Data . value ) ĊĊĠĠĠĠĠĠĠ Ġlive Data . post Value ( 3 ) ĊĠĠĠĠĠĠĠ Ġlive Data . place Value ( 4 ) Ġ// Ġimmediately Ġtakes Ġeffect Ġfor ĠgetValue Ġcalls ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġlive Data . value ) ĊĊĠĠĠĠĠĠĠ Ġyield () Ġ// Ġboth Ġasync Ġsets Ġcomplete , Ġplace Value Ġwas Ġthe Ġlatter ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġlive Data . value ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ