package Ġcom . ant onio le iva . band hook kotlin . data . mock Ċ Ċ import Ġokhttp 3 . Request Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġjava . io . IOException Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠM ah m oud ĠA bd ur ra h man Ġ( ma . ab dur ra h man @ gmail . com ) Ġon Ġ 2 / 1 7 / 1 7 . Ċ Ġ* Ċ Ġ* ĠP ul led Ġfrom : Ġhttps :// github . com / square / ret rofit / blob / master / ret rofit - mock / src / main / java / ret rofit 2 / mock / Calls . java Ċ Ġ*/ Ċ class ĠFake Call < T >( val Ġresponse : ĠResponse < T > ?, Ġval Ġerror : ĠIOException ?) Ġ: ĠCall < T > Ġ{ ĊĠĠĠ Ġval Ġcanceled Ġ= ĠAtomic Boolean () ĊĠĠĠ Ġval Ġexecuted Ġ= ĠAtomic Boolean () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(( response Ġ== Ġnull ) Ġ== Ġ( error Ġ== Ġnull )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠAssertionError (" Only Ġone Ġof Ġresponse Ġor Ġerror Ġcan Ġbe Ġset .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġexecute (): ĠResponse < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! executed . compare AndSet ( false , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Already Ġexecuted ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( c anceled . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException (" c anceled ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( response Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġerror ?. let { Ġthrow Ġerror Ġ} Ġ?: Ġthrow ĠIOException (" Should Ġeither Ġhave Ġa Ġresponse Ġor Ġthrow Ġexception ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġenqueue ( callback : ĠCallback < T > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! executed . compare AndSet ( false , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Already Ġexecuted ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcallback ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanceled . get () Ġ-> Ġcallback . on Failure ( this , ĠIOException (" c anceled ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ!= Ġnull Ġ-> Ġcallback . on Response ( this , Ġresponse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcallback . on Failure ( this , Ġerror ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġthrow ĠNullPointerException (" callback Ġ== Ġnull ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Executed (): ĠBoolean Ġ= Ġexecuted . get () ĊĊĠĠĠ Ġoverride Ġfun Ġcancel () Ġ= Ġcanceled . set ( true ) ĊĊĠĠĠ Ġoverride Ġfun Ġis Canceled (): ĠBoolean Ġ= Ġcanceled . get () ĊĊĠĠĠ Ġoverride Ġfun Ġclone (): ĠCall < T > Ġ= ĠFake Call ( response , Ġerror ) ĊĊĠĠĠ Ġoverride Ġfun Ġrequest (): ĠRequest Ġ= Ġresponse ?. raw ()?. request () Ġ?: ĠRequest . Builder (). url (" http :// localhost "). build () Ċ } Ċ