heck-0.2025.5.22: source/library/Heck.hs
{-# LANGUAGE RankNTypes #-}
module Heck where
import qualified Control.Monad as Monad
import qualified GHC.Stack as Stack
data Test m n = MkTest
{ assertFailure :: forall x. (Stack.HasCallStack) => String -> m x,
describe :: String -> n () -> n (),
it :: String -> m () -> n ()
}
assertEq ::
(Stack.HasCallStack, Applicative m, Eq a, Show a) =>
Test m n ->
-- | expected
a ->
-- | actual
a ->
m ()
assertEq test expected actual =
Monad.when (expected /= actual)
. assertFailure test
$ "expected " <> show expected <> " but got " <> show actual