package Ġcom . air bnb . mv rx Ċ Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . assertTrue Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ data Ġclass ĠM v Rx State Store Test State ( val Ġcount : ĠInt Ġ= Ġ 1 , Ġval Ġlist : ĠList < Int > Ġ= Ġempty List ()) Ċ Ċ class ĠState Store Test Ġ: ĠBaseTest () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstore : ĠM v Rx State Store < Mv Rx State Store Test State > ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġstore Ġ= ĠReal Mv Rx State Store ( Mv Rx State Store Test State ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Runs S ynchronously For Tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcall Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġstore . get Ġ{ Ġcall Count ++ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcall Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Set State () Ġ{ ĊĠĠĠĠĠĠĠ Ġstore . set Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcopy ( count Ġ= Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġcalled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġstore . get Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġit . count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( called ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Subscribe Not Called For No op () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcall Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġstore . observable . subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Count ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcall Count ) ĊĠĠĠĠĠĠĠ Ġstore . set Ġ{ Ġthis Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcall Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Subscribe Not Called For Same Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcall Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġstore . observable . subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Count ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcall Count ) ĊĠĠĠĠĠĠĠ Ġstore . set Ġ{ Ġcopy () Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcall Count ) ĊĠĠĠ Ġ} Ċ }