package Ġcom . ay on . repository Ċ Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Test Ċ Ċ const Ġval ĠDATA Ġ= Ġ" Data " Ċ const Ġval ĠDATA 2 Ġ= Ġ" Data 2 " ĊĊ Ċ class ĠMemory Cache DataSource Test Ġ{ ĊĊĠĠĠ Ġval ĠdataSource Ġ= ĠMemory Cache DataSource < Int , ĠString >(" ") ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġdefault Ġdata Ġwhen Ġthere Ġis Ġno Ġcorresponding Ġvalue Ġin Ġcache `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Result . Data (""), ĠdataSource . fetch Data ( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġstore Ġand Ġreturn Ġdata Ġfrom Ġcache `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ ĠdataSource . update Data ( 1 , ĠDATA ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Result . Data ( DATA ), ĠdataSource . fetch Data ( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġupdate Ġand Ġreturn Ġdata Ġfrom Ġcache `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ ĠdataSource . update Data ( 1 , ĠDATA ) ĊĠĠĠĠĠĠĠ ĠdataSource . update Data ( 1 , ĠDATA 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Result . Data ( DATA 2 ), ĠdataSource . fetch Data ( 1 )) ĊĠĠĠ Ġ} Ċ }