h$'#T      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                       BSD-3autotaker@gmail.com experimental Safe-Inferred8>#methodTuple constructormethod Nullary tuple  11BSD-3autotaker@gmail.com experimentalNone 9>? methodMethod a is a function of the form a1 -> a2 -> ... -> an -> m b where m is MonadTypical monads in transformers package are supported. If you want to support other monads (for example M#), add the following boilerplate. >instance Method (M a) where Base (M a) = M Ret (M a) = a Caution Function monad (-> r) cannot be an instance of methodUnderling monad !Base (a1 -> ... -> an -> m b) = mmethodArguments tuple of the method /Args (a1 -> ... -> an -> m b) = a1 :* ... :* anmethodReturn type of the method !Ret (a1 -> ... -> an -> m b) = bmethod Convert method to unary functionmethod&Reconstruct method from unary functionmethodGeneralization of join function method5Insert hooks before/after calling the argument method!method5Insert hooks before/after calling the argument method"methodInsert hooks only before calling the argument method. Because it's free from * constraint, any methods are supported.#method+invoke method taken from reader environment  !"# !"#None? :method4A type class whose behavior is specified by a method;methodType of the first argument of =9, representing the condition when the method is called<methodType of the second argument of =(, representing a method to be called.=method9Specify behavior from a pair of a condition and a method.>method8Specify behavior that return a constant value for a call?method3Specify behavior that executes an action for a call:;<=>?:;<=>?BSD-3autotaker@gmail.com experimental Safe-Inferred> R@method Matcher for  "args ((==2), (>3)) (2 :* 4 :* Nil)Trueargs even (1 :* Nil)False args () NilTrueBmethod2Convert a tuple of matchers to a matcher of tuplesDmethodMatcher that matches anythingEmethod synonym of 7 function. Use this function for improving readabilityFmethod0Convert a tuple matcher to a tuple-like matcher..args' (\(a, b) -> a * b == 10) (2 :* 5 :* Nil)True.args' (\(a, b) -> a * b == 10) (2 :* 4 :* Nil)False  @ABCDEF DEC @ABFBSD-3autotaker@gmail.com experimentalNone 9>?Omethod Generalizes  and UQmethod ToDyn a b% provides a function to convert type b to type a , where b is a type whose dynamic type occurences are replaced by concrete types. For example: =ToDyn (Int, Dynamic, Maybe Dynamic) (Int, Bool, Maybe String)Rmethod0convert value of specified type to dynamic valueSmethod FromDyn a b% provides a function to convert type a to type b , where b is a type whose dynamic type occurences are replaced by concrete types. For example: ?FromDyn (Int, Dynamic, Maybe Dynamic) (Int, Bool, Maybe String)Tmethodconvert dynamic value to specified type. It thows runtime exception if the dynamic value does not have specified type.UmethodDynamic value whose content is showable. Using this type instead of 7 is recommended because it gives better error messages.Vmethod;convert a dynamically-typed method to a polymorphic method.  fDyn :: String -> DynamicShow -> Dynamic -> IO [DynamicShow] fDyn = ... fPoly :: (Typeable a, Show a, Typeable b, Typeable c, Show c) => String -> a -> b -> IO [c] fPoly = castMethod fDyn WmethodConvert given matcher to dynamic matcher. The dynamic matcher matches a dynamic value only if the value has the type of given matcher. OPQRSTUVW UVWOPSTQRBSD-3autotaker@gmail.com experimentalNone 2>?methodgenerate a method from Mock DSL. Mock DSL consists of rules. On a call of generated method, the first rule matched the arguments is applied.method matcher means the method raises a runtime exception if the arguments matches matcher%. The argument tuple is converted to  by using  function.method fshow matcher means the method raises runtime exception if the arguments matches matcher%. The argument tuple is converted to  by using fshow function.=>?>?=BSD-3autotaker@gmail.com experimentalNonemethodMonitor arg ret: is an event monitor of methods, which logs method calls.methodnewtype to compare values via method8newtype to implement show instance which shows its type.method args ret is a function call eventmethod represents call identifiermethodGenerate new instance of method0Increment the clock and return the current tick.method logs an eventBSD-3autotaker@gmail.com experimentalNone?method!watchBy fArgs fRet monitor method decorates method so that monitor logs the method calls. This function is suited for monitoring multiple methods.fArgs and fRet: is converter for arguments/return values of given method. foo :: Int -> IO String foo = ... bar :: Int -> String -> IO () bar = ... data MonitorArgs = FooArgs Int | BarArgs (Int,String) deriving(Eq,Show) data MonitorRet = FooRet String | BarRet () deriving(Eq, Show) foo' :: Monitor MonitorArgs MonitorRet -> Int -> IO String foo' monitor = watch monitor (FooArgs . toTuple) FooRet foo bar' :: Monitor MonitorArgs MonitorRet -> Int -> String -> IO () bar' monitor = watch monitor (BarArgs . toTuple) BarRet bar methodSimplified version of *. It is suitable to monitor single method.method#Get current event logs from monitormethod countMatcher eventMatcher counts events that matches  eventMatcher , and then the count matches  countMatchermethod matcher- matches method call whose arguments matches matchermethod withMonitor f calls f with , and then returns monitored event logs during the function call in addition to the return value of the function callmethodwithMonitor_ f calls f with ), and returns event logs during the call.   BSD-3autotaker@gmail.com experimentalNone#$'(-2>?"Jmethod f provides mock methods, where f is a GADT functor that represents the set of dependent methods.methodBuild  from Protocol DSL.methodGet the mock method by method name. Return a unstubed method (which throws exception for every call) if the behavior of the method is unspecified by ProtocolEnvmethodGet the mock method by method name. Return a unstubed method (which throws exception for every call) if the behavior of the method is unspecified by ProtocolEnv. Use this function only if you want to customize show implementation for the argument of the method.methodDeclare a method call specification. It returns the call id of the method call.method/Specify the argument condition of a method callmethod/Specify on which method calls the call depends.methodVerify that all method calls specified by Protocol DSL are fired.methodname of methodmethod(show function for the argument of methodmethodname of method=>?=?> BSD-3autotaker@gmail.com experimentalNone"- =>?@BCDEFQRSTUVW->?=UVWSTQRCDE @BF   !"#$%&' ()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                          $method-0.3.0.0-6CkksrBc7g3m8UEuW7eQNTest.Method.DynamicControl.Method.InternalControl.MethodTest.Method.BehaviorTest.Method.MatcherTest.Method.MockTest.Method.Monitor.InternalTest.Method.MonitorTest.Method.ProtocolArgs Test.MethodbaseData.Typeable.InternalTypeable Data.DynamicDynamic:*Nil TupleLikeAsTuple fromTupletoTuple$fTupleLikeNil $fTupleLike:*$fTupleLike:*0$fTupleLike:*1$fTupleLike:*2$fTupleLike:*3$fTupleLike:*4$fTupleLike:*5$fEq:*$fOrd:*$fShow:* $fGeneric:*$fEqNil$fOrdNil $fShowNilMethodBaseRet uncurryMethod curryMethodliftJoindecorate decorate_decorateBefore_invoke $fMethod->$fMethodWriterT$fMethodWriterT0$fMethodWriterT1$fMethodStateT$fMethodStateT0$fMethodSelectT$fMethodReaderT $fMethodRWST $fMethodRWST0 $fMethodRWST1$fMethodMaybeT$fMethodExceptT $fMethodContT$fMethodAccumT $fMethodST$fMethodEither $fMethod[] $fMethodMaybe$fMethodIdentity $fMethodRIO $fMethodIOBehave ConditionMethodOf thenMethod thenReturn thenAction ArgsMatcher EachMatcherargsMatcheranythingwhenargs'$fArgsMatcher:*$fArgsMatcher:*0$fArgsMatcher:*1$fArgsMatcher:*2$fArgsMatcher:*3$fArgsMatcher:*4$fArgsMatcher:*5$fArgsMatcherNil DynamicLikeasDynToDyntoDynFromDynfromDyn DynamicShow castMethoddynArg$fShowDynamicShow$fFromDyn'M1M1$fFromDyn'U1U1$fFromDyn':*::*:$fFromDyn':+::+:$fFromDyn(,,,,,,)(,,,,,,)$fFromDyn(,,,,,)(,,,,,)$fFromDyn(,,,,)(,,,,)$fFromDyn(,,,)(,,,)$fFromDyn(,,)(,,)$fFromDyn(,)(,)$fFromDynEitherEither$fFromDynMaybeMaybe $fFromDyn[][] $fFromDyn:*:* $fFromDynaa$fFromDynDynamicShowa$fFromDynDynamica$fFromDyn'K1K1 $fToDyn'M1M1 $fToDyn'U1U1$fToDyn':*::*:$fToDyn':+::+:$fToDyn(,,,,,,)(,,,,,,)$fToDyn(,,,,,)(,,,,,)$fToDyn(,,,,)(,,,,)$fToDyn(,,,)(,,,)$fToDyn(,,)(,,) $fToDyn(,)(,)$fToDynEitherEither$fToDynMaybeMaybe $fToDyn[][] $fToDyn:*:* $fFromDyn->-> $fToDyn->-> $fToDynaa$fToDynDynamicShowa$fToDynDynamica $fToDyn'K1K1$fDynamicLikeDynamicShow$fDynamicLikeDynamicMockMMockmockup throwNoStubthrowNoStubWithShow$fMonoidMockSpec$fSemigroupMockSpec $fBehaveMockM$fMonadWriterMockSpecMockM $fMonadMockM$fApplicativeMockM$fFunctorMockMMonitor monitorTrace monitorClock EqUptoShowShowTypeClockEventEnterLeave eventTick eventArgseventEnterTickeventRetTickunTick newMonitorticklogEvent$fShowShowType$fOrdEqUptoShow$fEqEqUptoShow$fShowEqUptoShow $fEqEvent $fOrdEvent $fShowEvent $fEqShowType $fOrdShowType$fEqTick $fOrdTick $fShowTick $fEnumTickwatchBywatchlistenEventLogtimescall withMonitor withMonitor_ IsMethodName ProtocolM ProtocolEnvCallCallArgsCallIdprotocol lookupMocklookupMockWithShowdeclwhenArgs dependsOnverify $fBehaveCall$fShowSomeMethodName$fOrdSomeMethodName$fEqSomeMethodName $fEqCallId $fOrdCallId $fShowCallId$fMonadProtocolM$fApplicativeProtocolM$fFunctorProtocolM,unliftio-core-0.2.0.1-9GVcmaajsglG88oErAZOTVControl.Monad.IO.Unlift MonadUnliftIOGHC.BaseidStringGHC.Showshow