package Ġcom . k mp d roid con . tod ok mp . mock Ċ Ċ import Ġcom . care em . mock ing bird . test . Spy Ċ import Ġcom . care em . mock ing bird . test . spy Ċ import Ġcom . k mp d roid con . core . model . Todo Item Ċ import Ġcom . k mp d roid con . tod ok mp . data . dependency . InMemory Todo DataSource Ċ Ċ class ĠIn Memory Todo DataSource Spy ( ĊĠĠĠ Ġprivate Ġval Ġdelegate : ĠIn Memory Todo DataSource Ċ ) Ġ: ĠIn Memory Todo DataSource , ĠS py Ġ{ ĊĊĠĠĠ Ġobject ĠMethod Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġadd Todo Ġ= Ġ" add Todo " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠgetAll Ġ= Ġ" getAll " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġinit Ġ= Ġ" init " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject ĠArg Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġtodo Item Ġ= Ġ" todo Item " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġtodos Ġ= Ġ" todos " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Todo ( todo Item : ĠTodo Item ) Ġ= Ġspy ( ĊĠĠĠĠĠĠĠ ĠmethodName Ġ= ĠMethod . add Todo , ĊĠĠĠĠĠĠĠ Ġarguments Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArg . todo Item Ġto Ġtodo Item ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġdelegate Ġ= Ġ{ Ġdelegate . add Todo ( todo Item ) Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll (): ĠList < Todo Item > Ġ= Ġspy ( ĊĠĠĠĠĠĠĠ ĠmethodName Ġ= ĠMethod . getAll , ĊĠĠĠĠĠĠĠ Ġdelegate Ġ= Ġ{ Ġdelegate . getAll () Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġinit ( todos : ĠList < Todo Item >) Ġ= Ġspy ( ĊĠĠĠĠĠĠĠ ĠmethodName Ġ= ĠMethod . init , ĊĠĠĠĠĠĠĠ Ġarguments Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArg . todos Ġto Ġtodos ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġdelegate Ġ= Ġ{ Ġdelegate . init ( todos ) Ġ} ĊĠĠĠ Ġ) Ċ }