effectful-zoo-0.0.1.0: components/hedgehog/Effectful/Zoo/Hedgehog/Api/Assert.hs
module Effectful.Zoo.Hedgehog.Api.Assert
( assert,
(===),
(/==),
onNothingFail,
onNothingFailM,
onLeftFail,
onLeftFailM,
) where
import Effectful
import Effectful.Dispatch.Dynamic
import Effectful.Zoo.Core
import Effectful.Zoo.Hedgehog.Api.Failure
import Effectful.Zoo.Hedgehog.Dynamic
import HaskellWorks.Prelude
import Hedgehog qualified as H
infix 4 ===, /==
assert :: forall r. ()
=> HasCallStack
=> r <: Hedgehog
=> Bool
-> Eff r ()
assert condition =
withFrozenCallStack $
H.assert condition
(===) :: forall a r. ()
=> HasCallStack
=> Eq a
=> Show a
=> r <: Hedgehog
=> a
-> a
-> Eff r ()
(===) a b =
withFrozenCallStack $
a H.=== b
(/==) :: forall a r. ()
=> HasCallStack
=> Eq a
=> Show a
=> r <: Hedgehog
=> a
-> a
-> Eff r ()
(/==) a b =
withFrozenCallStack $
a H./== b
onNothingFail :: forall a r. ()
=> HasCallStack
=> r <: Hedgehog
=> Maybe a
-> Eff r a
onNothingFail mv =
withFrozenCallStack $
case mv of
Just a -> pure a
Nothing -> failWith Nothing "Expected Just, but got Nothing"
onNothingFailM :: forall a r. ()
=> HasCallStack
=> r <: Hedgehog
=> Eff r (Maybe a)
-> Eff r a
onNothingFailM f =
withFrozenCallStack $
f >>= onNothingFail
onLeftFail :: forall e a r. ()
=> HasCallStack
=> Show e
=> r <: Hedgehog
=> Either e a
-> Eff r a
onLeftFail ea =
withFrozenCallStack $
case ea of
Right a -> pure a
Left e -> failWith Nothing $ "Expected Just, but got Left: " <> show e
onLeftFailM :: forall e a r. ()
=> HasCallStack
=> Show e
=> r <: Hedgehog
=> Eff r (Either e a)
-> Eff r a
onLeftFailM f =
withFrozenCallStack $
f >>= onLeftFail