{- Tests for the HUnit-approx package
Copyright (c) 2014 Richard Eisenberg
eir@cis.upenn.edu
-}
{-# LANGUAGE ImplicitParams, ScopedTypeVariables #-}
{-# OPTIONS_GHC -fno-warn-type-defaults #-}
module Tests.Main where
import Test.HUnit
import Test.HUnit.Approx
import Control.Monad
import Control.Exception
main :: IO ()
main = void $ runTestTT tests
assertNot :: Assertion -> Assertion
assertNot asrt = do
result <- try asrt
case result of
Left (_ :: SomeException) -> return () -- success!
Right _ -> assertFailure "Inverted assertion succeeded"
tests :: Test
tests =
let ?epsilon = 0.0001 in
TestList [ "refl" ~: 4.0 ~?~ 4.0
, "manual" ~: 4.0 ~~? 4.000000001
, "calc" ~: (0.1 + 0.1 + 0.1 @?~ 0.3)
, "not" ~: assertNot (4.005 @~? 4) ]