packages feed

HUnit-approx-1.0: Tests/Main.hs

{- 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) ]