package Ġcom . k mp d roid con . in memory . repository Ċ Ċ import Ġcom . k mp d roid con . core . model . Todo Item Ċ import Ġcom . k mp d roid con . tod ok mp . datasource . InMemory Todo DataSource Impl Ċ import Ġcom . k mp d roid con . util . threaded Test Ċ import Ġkotlinx . atomic fu . atomic Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠIn Memory Todo DataSource Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtodo List Memory Repository Ġ= ĠIn Memory Todo DataSource Impl () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Add Todo () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġval Ġtodo List Ġ= Ġbuild Test Todo ( count ) ĊĠĠĠĠĠĠĠ Ġtodo List . forEach Ġ{ Ġtodo List Memory Repository . add Todo ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġruns Ġ= Ġatomic ( 0 ) ĊĠĠĠĠĠĠĠ Ġth readed Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtodo Ġ= Ġbuild Test Todo ( 1 , Ġruns . value . toString ()). first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtodo List Memory Repository . add Todo ( todo ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġtodo List Memory Repository . getAll (). contains ( todo ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet All () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtodo List Ġ= Ġbuild Test Todo ( 5 ) ĊĠĠĠĠĠĠĠ Ġtodo List . forEach Ġ{ Ġtodo List Memory Repository . add Todo ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġth readed Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( todo List , Ġtodo List Memory Repository . getAll ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbuild Test Todo ( count : ĠInt , Ġprefix : ĠString Ġ= Ġ"") : ĠList < Todo Item > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( 0 Ġuntil Ġcount ). map Indexed Ġ{ Ġindex , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTodo Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= Ġ 1 2 3 4 5 L Ġ+ Ġindex , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtodo Ġ= Ġ"$ prefix ĠTODO $ index " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }