package Ġcom . xm art labs . fo unt ain . test utils Ċ Ċ import Ġandroid . support . annotation . Worker Thread Ċ import Ġcom . xm art labs . fo unt ain . adapter . Base Network DataSource Adapter Ċ import Ġcom . xm art labs . fo unt ain . adapter . Base Page Fetcher Ċ import Ġcom . xm art labs . fo unt ain . adapter . Network Result Listener Ċ Ċ class ĠMock ed Network DataSource Page Fetcher < T > Ġ: ĠBase Page Fetcher < T > Ġ{ ĊĠ Ġ@ Suppress (" Member Visibility Can Be Private ") ĊĠ Ġinternal Ġvar Ġnetwork Result Listener : ĠNetwork Result Listener < T >? Ġ= Ġnull ĊĠ Ġ@ Suppress (" Member Visibility Can Be Private ") ĊĠ Ġinternal Ġvar Ġpending Response : ĠT ? Ġ= Ġnull ĊĠ Ġ@ Suppress (" Member Visibility Can Be Private ") ĊĠ Ġinternal Ġvar Ġpending Error : ĠThrowable ? Ġ= Ġnull ĊĊĠ Ġ@ Worker Thread ĊĠ Ġoverride Ġfun Ġfetch Page ( page : ĠInt , ĠpageSize : ĠInt , Ġnetwork Result Listener : ĠNetwork Result Listener < T >) Ġ{ ĊĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠ Ġpending Response ĊĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Result Listener . on Success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpending Response Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ. or Do Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpending Error ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Result Listener . onError ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Error Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. or Do Ġ{ Ġthis . network Result Listener Ġ= Ġnetwork Result Listener Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun ĠonSuccess ( response : ĠT ) Ġ{ ĊĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠ Ġnetwork Result Listener ĊĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Success ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Result Listener Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ. or Do Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpending Error Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpending Response Ġ= Ġresponse ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun ĠonError ( t : ĠThrowable ) Ġ{ ĊĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠ Ġnetwork Result Listener ĊĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . onError ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Result Listener Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ. or Do Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpending Error Ġ= Ġt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpending Response Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ class ĠMock ed Network DataSource Adapter < T > Ġ: ĠBase Network DataSource Adapter < T > Ġ{ ĊĠ Ġoverride Ġval Ġpage Fetcher Ġ= ĠMock ed Network DataSource Page Fetcher < T >() ĊĊĠ Ġoverride Ġfun Ġcan Fetch ( page : ĠInt , ĠpageSize : ĠInt ): ĠBoolean Ġ= Ġtrue Ċ } Ċ Ċ internal Ġfun Ġ< T > ĠT ?. or Do ( action : Ġ() Ġ-> ĠT ) Ġ= Ġthis Ġ?: Ġaction () Ċ