clash-prelude-1.8.0: tests/Test/Tasty/HUnit/Extra.hs
{-# LANGUAGE LambdaCase #-}
module Test.Tasty.HUnit.Extra
( expectException
, expectXException
, expectExceptionNoX
) where
import Control.Exception (SomeException, try, evaluate)
import Test.Tasty.HUnit
import Clash.XException (XException)
-- | Succeed if evaluating leads to an XException
expectXException :: (Show a) => a -> Assertion
expectXException a0 =
try @XException (evaluate a0) >>= \case
Left _ -> pure ()
Right a -> assertFailure ("Expected Exception, got: " <> show a)
-- | Succeed if evaluating leads to an Exception
expectException :: Show a => a -> Assertion
expectException a0 =
try @SomeException (evaluate a0) >>= \case
Left _ -> pure ()
Right a -> assertFailure ("Expected Exception, got: " <> show a)
-- | Succeed if evaluating leads to a non-XException Exception
expectExceptionNoX :: Show a => a -> Assertion
expectExceptionNoX a0 =
try @SomeException (try @XException (evaluate a0)) >>= \case
Left _ -> pure ()
Right a -> assertFailure ("Expected Exception, got: " <> show a)