package Ġcom . example . android . architecture . blueprint s . todo app . data . source Ċ Ċ import Ġcom . example . android . architecture . blueprint s . todo app . data . Result . Success Ċ import Ġcom . example . android . architecture . blueprint s . todo app . data . Task Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . hamcrest . core . Is Equal Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ @ Experimental Cor outines Api Ċ class ĠDefault Tasks Repository Test Ġ{ ĊĊĠĠĠ Ġ// ĠVariables Ġto Ġrepresent Ġthe Ġdata Ġin Ġthe Ġfake Ġdata Ġsource ĊĠĠĠ Ġprivate Ġval Ġtask 1 Ġ= ĠTask (" Title 1 ", Ġ" Description ") ĊĠĠĠ Ġprivate Ġval Ġtask 2 Ġ= ĠTask (" Title 2 ", Ġ" Description ") ĊĠĠĠ Ġprivate Ġval Ġtask 3 Ġ= ĠTask (" Title 3 ", Ġ" Description ") ĊĠĠĠ Ġprivate Ġval Ġremote Tasks Ġ= ĠlistOf ( task 1 , task 2 , task 3 ). sorted By Ġ{ Ġit . id Ġ} ĊĠĠĠ Ġprivate Ġval Ġlocal Tasks Ġ= ĠlistOf ( task 3 ). sorted By Ġ{ Ġit . id Ġ} ĊĠĠĠ Ġprivate Ġval Ġnew Tasks Ġ= ĠlistOf ( task 3 ). sorted By Ġ{ Ġit . id Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtasks Remote DataSource : Fake DataSource ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtasks Local DataSource : Fake DataSource ĊĊĠĠĠ Ġ// ĠClass Ġunder Ġtest ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtasks Repository : Default Tasks Repository ĊĊĠĠĠ Ġ/** Ġinitialization Ġfor Ġtest Ġusing Ġthe Ġtest Ġdouble Ġ[ Fake DataSource ] */ ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġcreate Repository (){ ĊĠĠĠĠĠĠĠ Ġtasks Remote DataSource = ĠFake DataSource ( remote Tasks . to Mutable List ()) ĊĠĠĠĠĠĠĠ Ġtasks Local DataSource = ĠFake DataSource ( local Tasks . to Mutable List ()) ĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġa Ġreference Ġto Ġthe Ġclass Ġunder Ġtest ĊĠĠĠĠĠĠĠ Ġtasks Repository = Default Tasks Repository ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ĠDispatch ers . Un conf ined Ġshould Ġbe Ġreplaced Ġwith ĠDispatch ers . Main ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtasks Remote DataSource Ġ= Ġtasks Remote DataSource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtasks Local DataSource Ġ= Ġtasks Local DataSource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġio Dispatcher Ġ= ĠDispatch ers . Un conf ined ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Tasks _ requests All Tasks From Remote Data S ourse () = Ġrun Blocking Test { ĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġtasks Ġare Ġloaded Ġfrom Ġthe Ġtasks Ġrepository ĊĠĠĠĠĠĠĠ Ġval Ġtasks = tasks Repository . get Tasks ( true ) Ġas ĠSuccess ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen Ġtasks Ġare Ġloaded Ġfrom Ġthe Ġremote Ġdata Ġsource ĊĠĠĠĠĠĠĠ ĠassertThat ( tasks . data , ĠIs Equal ( remote Tasks )) ĊĠĠĠ Ġ} Ċ }