-- | The Assertions module contains assertions for use in HUnit -- tests. They primarily fill the need for an equality test that -- works with floating point numbers. -- module Assertions ( assertAlmostEqual, assertTrue ) where import Control.Monad ( unless ) import Test.Tasty.HUnit ( Assertion, assertBool, assertFailure ) import Comparisons ( (~=) ) -- | An HUnit assertion that wraps the almost_equals function. Stolen -- from the definition of 'assertEqual' in Test\/Tasty\/HUnit\/Orig.hs. -- assertAlmostEqual :: String -- ^ The message prefix -> Double -- ^ The expected value -> Double -- ^ The actual value -> Assertion assertAlmostEqual preface expected actual = unless (actual ~= expected) (assertFailure msg) where msg = (if null preface then "" else preface ++ "\n") ++ "expected: " ++ show expected ++ "\n but got: " ++ show actual -- | It's asinine that this doesn't exist already. -- assertTrue :: String -> Bool -> Assertion assertTrue = assertBool