package Ġpl . m are k lang iew ic z . rx mock Ċ Ċ import Ġio . reactivex . rx java 3 . core . Maybe Ċ import Ġio . reactivex . rx java 3 . core . Maybe Observer Ċ import Ġio . reactivex . rx java 3 . dis pos ables . Disposable Ċ import Ġio . reactivex . rx java 3 . functions . Consumer Ċ import Ġio . reactivex . rx java 3 . subjects . Maybe Subject Ċ Ċ class ĠRx Mock Maybe 3 < A 1 , ĠA 2 , ĠA 3 , ĠT >( var Ġinvocation Check : Ġ( A 1 , ĠA 2 , ĠA 3 ) Ġ-> ĠBoolean Ġ= Ġ{ Ġ_, Ġ_, Ġ_ Ġ-> Ġtrue Ġ}) ĊĠĠĠ Ġ: ĠMaybe Observer < T >, ĠConsumer < T >, Ġ( A 1 , ĠA 2 , ĠA 3 ) Ġ-> ĠMaybe < T > Ġ{ ĊĊĠĠĠ Ġconstructor ( var arg Ġallowed Args : ĠTrip le < A 1 , ĠA 2 , ĠA 3 >) Ġ: Ġthis ({ Ġa 1 , Ġa 2 , Ġa 3 Ġ-> ĠTrip le ( a 1 , Ġa 2 , Ġa 3 ) Ġin Ġallowed Args Ġ}) ĊĊĠĠĠ Ġval Ġinv ocations Ġ= Ġmutable ListOf < Triple < A 1 , ĠA 2 , ĠA 3 >>() ĊĊĠĠĠ Ġvar Ġsubject : ĠMaybe Subject < T >? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke ( arg 1 : ĠA 1 , Ġarg 2 : ĠA 2 , Ġarg 3 : ĠA 3 ): ĠMaybe < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! invocation Check ( arg 1 , Ġarg 2 , Ġarg 3 )) Ġthrow ĠRx Mock Exception (" Rx Mock Maybe 3 Ġfail Ġfor Ġargs : Ġ$ arg 1 , Ġ$ arg 2 , Ġ$ arg 3 ") ĊĠĠĠĠĠĠĠ Ġinv ocations Ġ+= ĠTrip le ( arg 1 , Ġarg 2 , Ġarg 3 ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMaybe Subject . create < T >(). also Ġ{ Ġsubject Ġ= Ġit Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġaccept ( t : ĠT ) Ġ= ĠonSuccess ( t ) ĊĠĠĠ Ġoverride Ġfun ĠonSuccess ( t : ĠT ) Ġ= Ġsubject ?. on Success ( t ) Ġ?: Ġthrow ĠRx Mock Exception () ĊĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ= Ġsubject ?. onComplete () Ġ?: Ġthrow ĠRx Mock Exception () ĊĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ= Ġsubject ?. on Subscribe ( d ) Ġ?: Ġthrow ĠRx Mock Exception () ĊĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ= Ġsubject ?. onError ( e ) Ġ?: Ġthrow ĠRx Mock Exception () Ċ } Ċ