HMock-0.3.0.0: A flexible mock framework for testing effectful code.
Safe HaskellNone
LanguageHaskell2010

Test.HMock.Internal.Step

Description

This module defines the desugaring from multi-response Rules into multiple steps.

Synopsis

Documentation

data SingleRule (cls :: (Type -> Type) -> Constraint) (name :: Symbol) (m :: Type -> Type) (r :: Type) where Source #

A Rule that contains only a single response. This is the target for desugaring the multi-response rule format.

Constructors

(:->) :: WholeMethodMatcher cls name m r -> Maybe (Action cls name m r -> MockT m r) -> SingleRule cls name m r 

data Step m where Source #

A single step of an expectation.

Constructors

Step :: MockableMethod cls name m r => Located (SingleRule cls name m r) -> Step m 

Instances

Instances details
Show (Step m) Source # 
Instance details

Defined in Test.HMock.Internal.Step

Methods

showsPrec :: Int -> Step m -> ShowS #

show :: Step m -> String #

showList :: [Step m] -> ShowS #

expandRule :: MockableMethod cls name m r => CallStack -> Rule cls name m r -> ExpectSet (Step m) Source #

Expands a Rule into an expectation. The expected multiplicity will be one if there are no responses; otherwise one call is expected per response.

expandRepeatRule :: MockableMethod cls name m r => Multiplicity -> CallStack -> Rule cls name m r -> ExpectSet (Step m) Source #

Expands a Rule into an expectation, given a target multiplicity. It is an error if there are too many responses for the multiplicity. If there are too few responses, the last response will be repeated.

newtype Expected m a Source #

Newtype wrapper to make the type of ExpectSet conform to the ExpectContext class. The "return type" a is a phantom.

Constructors

Expected 

Instances

Instances details
ExpectContext Expected Source # 
Instance details

Defined in Test.HMock.Internal.Step

Methods

expect :: forall (m :: Type -> Type) (cls :: (Type -> Type) -> Constraint) (name :: Symbol) r expectable. (HasCallStack, MonadIO m, MockableMethod cls name m r, Expectable cls name m r expectable) => expectable -> Expected m () Source #

expectN :: forall (m :: Type -> Type) (cls :: (Type -> Type) -> Constraint) (name :: Symbol) r expectable. (HasCallStack, MonadIO m, MockableMethod cls name m r, Expectable cls name m r expectable) => Multiplicity -> expectable -> Expected m () Source #

expectAny :: forall (m :: Type -> Type) (cls :: (Type -> Type) -> Constraint) (name :: Symbol) r expectable. (HasCallStack, MonadIO m, MockableMethod cls name m r, Expectable cls name m r expectable) => expectable -> Expected m () Source #

inSequence :: forall (m :: Type -> Type). MonadIO m => (forall (ctx' :: (Type -> Type) -> Type -> Type). ExpectContext ctx' => [ctx' m ()]) -> Expected m () Source #

inAnyOrder :: forall (m :: Type -> Type). MonadIO m => (forall (ctx' :: (Type -> Type) -> Type -> Type). ExpectContext ctx' => [ctx' m ()]) -> Expected m () Source #

anyOf :: forall (m :: Type -> Type). MonadIO m => (forall (ctx' :: (Type -> Type) -> Type -> Type). ExpectContext ctx' => [ctx' m ()]) -> Expected m () Source #

times :: forall (m :: Type -> Type). MonadIO m => Multiplicity -> (forall (ctx' :: (Type -> Type) -> Type -> Type). ExpectContext ctx' => ctx' m ()) -> Expected m () Source #

consecutiveTimes :: forall (m :: Type -> Type). MonadIO m => Multiplicity -> (forall (ctx' :: (Type -> Type) -> Type -> Type). ExpectContext ctx' => ctx' m ()) -> Expected m () Source #