conformance-gen-0.0.0.0: src/Conformance/TestUtils.hs
module Conformance.TestUtils where
import Conformance
import Control.Monad.IO.Class
import Test.Syd
shouldConformStrict :: (Show ue, Show fe, Show w) => Conform ue fe w a -> IO a
shouldConformStrict = assertStrictResultSucceeded . runConformStrict
shouldConformTStrict :: (Show ue, Show fe, Show w, MonadIO m) => ConformT ue fe w m a -> m a
shouldConformTStrict func = do
errOrErrOrResult <- runConformTStrict func
liftIO $ assertStrictResultSucceeded errOrErrOrResult
assertStrictResultSucceeded :: (Show ue, Show fe, Show w) => Either (Either ue (Notes fe w)) a -> IO a
assertStrictResultSucceeded errOrErrOrResult =
case errOrErrOrResult of
Left e -> expectationFailure $ show e
Right a -> pure a
shouldConform :: (Show ue, Show fe) => Conform ue fe w a -> IO a
shouldConform func =
case runConform func of
Left hr ->
expectationFailure $
unwords
[ "runConform failed",
ppShow hr
]
Right (a, _) -> pure a
shouldConformT :: (Show ue, Show fe, MonadIO m) => ConformT ue fe w m a -> m a
shouldConformT func = do
errOrErrOrResult <- runConformT func
case errOrErrOrResult of
Left hr ->
liftIO $
expectationFailure $
unwords
[ "runConformT failed",
ppShow hr
]
Right (a, _) -> pure a
shouldConformLenient :: Show ue => Conform ue fe w a -> IO a
shouldConformLenient = assertLenientResultSucceeded . runConformLenient
shouldConformTLenient :: (Show ue, MonadIO m) => ConformT ue fe w m a -> m a
shouldConformTLenient func = do
errOrErrOrResult <- runConformTLenient func
liftIO $ assertLenientResultSucceeded errOrErrOrResult
assertLenientResultSucceeded :: Show ue => Either ue (a, Notes fe w) -> IO a
assertLenientResultSucceeded errOrErrOrResult =
case errOrErrOrResult of
Left e -> expectationFailure $ show e
Right (a, _) -> pure a