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

Test.HMock.Internal.State

Description

This module contains MockT and SetupMockT state functions.

Synopsis

Documentation

initMockState :: MonadIO m => Maybe (MockState m) -> m (MockState m) Source #

Initializes a new MockState with the given parent. If the parent is Nothing, then a new root state is made.

allStates :: MockState m -> [MockState m] Source #

Gets a list of all states, starting with the innermost.

rootState :: MockState m -> MockState m Source #

Gets the root state.

newtype MockSetup m a where Source #

Monad for setting up a mockable class. Note that even though the type looks that way, this is *not* a monad transformer. It's a very restricted environment that can only be used to set up defaults for a class.

Constructors

MockSetup 

Fields

Instances

Instances details
MockContext MockSetup Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

fromMockSetup :: forall (m :: Type -> Type) a. MonadIO m => MockSetup m a -> MockSetup m a Source #

Monad (MockSetup m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

(>>=) :: MockSetup m a -> (a -> MockSetup m b) -> MockSetup m b #

(>>) :: MockSetup m a -> MockSetup m b -> MockSetup m b #

return :: a -> MockSetup m a #

Functor (MockSetup m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

fmap :: (a -> b) -> MockSetup m a -> MockSetup m b #

(<$) :: a -> MockSetup m b -> MockSetup m a #

Applicative (MockSetup m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

pure :: a -> MockSetup m a #

(<*>) :: MockSetup m (a -> b) -> MockSetup m a -> MockSetup m b #

liftA2 :: (a -> b -> c) -> MockSetup m a -> MockSetup m b -> MockSetup m c #

(*>) :: MockSetup m a -> MockSetup m b -> MockSetup m b #

(<*) :: MockSetup m a -> MockSetup m b -> MockSetup m a #

runInRootState :: MockSetup m a -> MockSetup m a Source #

Runs a setup action with the root state, rather than the current one.

mockSetupSTM :: STM a -> MockSetup m a Source #

Run an STM action in MockSetup

initClassIfNeeded :: forall cls m proxy. (Mockable cls, Typeable m, MonadIO m) => proxy cls -> MockSetup m () Source #

Runs class initialization for a Mockable class, if it hasn't been run yet.

initClassesAsNeeded :: MonadIO m => ExpectSet (Step m) -> MockSetup m () Source #

Runs class initialization for all uninitialized Mockable classes in the given ExpectSet.

newtype MockT m a where Source #

Monad transformer for running mocks.

Constructors

MockT 

Fields

Instances

Instances details
MonadTrans MockT Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

lift :: Monad m => m a -> MockT m a #

ExpectContext MockT Source # 
Instance details

Defined in Test.HMock.Internal.State

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 -> MockT 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 -> MockT 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 -> MockT m () Source #

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

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

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

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

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

MockContext MockT Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

fromMockSetup :: forall (m :: Type -> Type) a. MonadIO m => MockSetup m a -> MockT m a Source #

(MonadReader r m, MonadWriter w m, MonadState s m) => MonadRWS r w s (MockT m) Source # 
Instance details

Defined in Test.HMock.Internal.State

MonadBase b m => MonadBase b (MockT m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

liftBase :: b α -> MockT m α #

MonadWriter w m => MonadWriter w (MockT m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

writer :: (a, w) -> MockT m a #

tell :: w -> MockT m () #

listen :: MockT m a -> MockT m (a, w) #

pass :: MockT m (a, w -> w) -> MockT m a #

MonadState s m => MonadState s (MockT m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

get :: MockT m s #

put :: s -> MockT m () #

state :: (s -> (a, s)) -> MockT m a #

MonadReader r m => MonadReader r (MockT m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

ask :: MockT m r #

local :: (r -> r) -> MockT m a -> MockT m a #

reader :: (r -> a) -> MockT m a #

MonadError e m => MonadError e (MockT m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

throwError :: e -> MockT m a #

catchError :: MockT m a -> (e -> MockT m a) -> MockT m a #

Monad m => Monad (MockT m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

(>>=) :: MockT m a -> (a -> MockT m b) -> MockT m b #

(>>) :: MockT m a -> MockT m b -> MockT m b #

return :: a -> MockT m a #

Functor m => Functor (MockT m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

fmap :: (a -> b) -> MockT m a -> MockT m b #

(<$) :: a -> MockT m b -> MockT m a #

MonadFail m => MonadFail (MockT m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

fail :: String -> MockT m a #

Applicative m => Applicative (MockT m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

pure :: a -> MockT m a #

(<*>) :: MockT m (a -> b) -> MockT m a -> MockT m b #

liftA2 :: (a -> b -> c) -> MockT m a -> MockT m b -> MockT m c #

(*>) :: MockT m a -> MockT m b -> MockT m b #

(<*) :: MockT m a -> MockT m b -> MockT m a #

MonadIO m => MonadIO (MockT m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

liftIO :: IO a -> MockT m a #

MonadThrow m => MonadThrow (MockT m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

throwM :: Exception e => e -> MockT m a #

MonadCatch m => MonadCatch (MockT m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

catch :: Exception e => MockT m a -> (e -> MockT m a) -> MockT m a #

MonadMask m => MonadMask (MockT m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

mask :: ((forall a. MockT m a -> MockT m a) -> MockT m b) -> MockT m b #

uninterruptibleMask :: ((forall a. MockT m a -> MockT m a) -> MockT m b) -> MockT m b #

generalBracket :: MockT m a -> (a -> ExitCase b -> MockT m c) -> (a -> MockT m b) -> MockT m (b, c) #

MonadCont m => MonadCont (MockT m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

callCC :: ((a -> MockT m b) -> MockT m a) -> MockT m a #

MonadUnliftIO m => MonadUnliftIO (MockT m) Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

withRunInIO :: ((forall a. MockT m a -> IO a) -> IO b) -> MockT m b #

mapMockT :: (m a -> m b) -> MockT m a -> MockT m b Source #

Applies a function to the base monad of MockT.

class MockContext ctx where Source #

This type class defines a shared API between the MockT and MockSetup monads.

Methods

fromMockSetup :: MonadIO m => MockSetup m a -> ctx m a Source #

Runs a MockSetup action in this monad.

Instances

Instances details
MockContext MockSetup Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

fromMockSetup :: forall (m :: Type -> Type) a. MonadIO m => MockSetup m a -> MockSetup m a Source #

MockContext MockT Source # 
Instance details

Defined in Test.HMock.Internal.State

Methods

fromMockSetup :: forall (m :: Type -> Type) a. MonadIO m => MockSetup m a -> MockT m a Source #

expectThisSet :: MonadIO m => ExpectSet (Step m) -> MockT m () Source #

Adds an expectation to the MockState for the given ExpectSet, interleaved with any existing expectations.