packages feed

polysemy-test-0.3.0.0: lib/Polysemy/Test/Data/Hedgehog.hs

{-# OPTIONS_HADDOCK hide #-}

module Polysemy.Test.Data.Hedgehog where

import Polysemy.Internal (send)

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 =
  send . LiftH