{-# options_haddock prune #-}

-- |Hedgehog Effect, Internal
module Polysemy.Test.Data.Hedgehog where

import Hedgehog (TestT)

-- |Convenience effect for embedding Hedgehog assertions.
data Hedgehog m :: Effect where
  LiftH :: TestT m a -> Hedgehog m n a

-- |Lift a @'TestT' m@ into Sem.
--
-- >>> liftH (Hedgehog.evalEither (Left 0))
-- liftH (Hedgehog.evalEither (Left 0))
-- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-- │ 0
liftH ::
   m a r .
  Member (Hedgehog m) r =>
  TestT m a ->
  Sem r a
liftH :: forall (m :: * -> *) a (r :: EffectRow).
Member (Hedgehog m) r =>
TestT m a -> Sem r a
liftH =
  forall (e :: Effect) (r :: EffectRow) a.
Member e r =>
e (Sem r) a -> Sem r a
send forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a (n :: * -> *). TestT m a -> Hedgehog m n a
LiftH