module Asserts ( assertException ) where import Control.Exception import Control.Monad import Test.Tasty.HUnit -- https://stackoverflow.com/questions/6147435/is-there-an-assertexception-in-any-of-the-haskell-test-frameworks assertException :: (Exception e, Eq e, Show a) => e -> IO a -> IO () assertException ex action = handleJust isWanted (const $ return ()) $ do a <- action assertFailure $ "Expected exception: " ++ show ex ++ ", but got execution success: " ++ show a where isWanted = guard . (== ex)