Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Internal module to define Rule
, so that its constructor can be visible
to other implementation code.
Synopsis
- data WholeMethodMatcher cls name m r where
- JustMatcher :: Matcher cls name m r -> WholeMethodMatcher cls name m r
- SuchThat :: Matcher cls name m r -> (Action cls name m r -> Bool) -> WholeMethodMatcher cls name m r
- showWholeMatcher :: MockableBase cls => Maybe (Action cls name m a) -> WholeMethodMatcher cls name m b -> String
- data Rule (cls :: (Type -> Type) -> Constraint) (name :: Symbol) (m :: Type -> Type) (r :: Type) where
- (:=>) :: WholeMethodMatcher cls name m r -> [Action cls name m r -> MockT m r] -> Rule cls name m r
Documentation
data WholeMethodMatcher cls name m r where Source #
A way to match an entire action, using conditions that might depend on the relationship between arguments.
JustMatcher :: Matcher cls name m r -> WholeMethodMatcher cls name m r | |
SuchThat :: Matcher cls name m r -> (Action cls name m r -> Bool) -> WholeMethodMatcher cls name m r |
Instances
Expectable cls name m r (WholeMethodMatcher cls name m r) Source # | |
Defined in Test.HMock.Rule toRule :: WholeMethodMatcher cls name m r -> Rule cls name m r Source # |
showWholeMatcher :: MockableBase cls => Maybe (Action cls name m a) -> WholeMethodMatcher cls name m b -> String Source #
Displays a WholeMethodMatcher. The predicate isn't showable, but we can at least indicate whether there is one present.
data Rule (cls :: (Type -> Type) -> Constraint) (name :: Symbol) (m :: Type -> Type) (r :: Type) where Source #
A rule for matching a method and responding to it when it matches.
The method may be matched by providing either an Action
to match exactly,
or a Matcher
. Exact matching is only available when all method arguments
A Rule
may have zero or more responses, which are attached using
|->
and |=>
. If there are no responses
for a Rule
, then there must be a default response for that action, and it
is used. If more than one response is added, the rule will perform the
responses in order, repeating the last response if there are additional
matches.
Example:
expect
$ GetLine_anything
|->
"hello"|=>
(GetLine prompt) -> "The prompt was " ++ prompt|->
"quit"
(:=>) :: WholeMethodMatcher cls name m r -> [Action cls name m r -> MockT m r] -> Rule cls name m r |
Instances
Expectable cls name m r (Rule cls name m r) Source # | |