packages feed

radian-0.1: test/hunit_tests.hs

module Main (main) where

import Test.HUnit (Assertion, Test (TestCase, TestList), (@?=), runTestTT, failures, errors)

import Prelude
import Control.Lens ((#))
import Control.Monad (when)
import System.Exit (exitFailure)

import Data.Radian

(@??=) :: Show a => a -> a -> Assertion
x @??= y = show x @?= show y
infix 1 @??=

t180 :: Assertion
t180 = toRadians # (180 :: Double) @??= pi

t90 :: Assertion
t90 = toRadians # (90 :: Double) @??= 1.5707963267948966

t359 :: Assertion
t359 = toRadians # (359 :: Double) @??= 6.265732014659643

t360 :: Assertion
t360 = toRadians # (360 :: Double) @??= 6.283185307179586

t3600 :: Assertion
t3600 = toRadians # (3600 :: Double) @??= 62.83185307179586

t1 :: Assertion
t1 = toRadians # (1 :: Double) @??= 1.7453292519943295e-2

tneg180 :: Assertion
tneg180 = toRadians # ((-180) :: Double) @??= -pi

f0 :: Assertion
f0 = fromRadians # (0 :: Double) @??= 0.0

f1 :: Assertion
f1 = fromRadians # (1 :: Double) @??= 57.29577951308232

fneg1 :: Assertion
fneg1 = fromRadians # ((-1) :: Double) @??= -57.29577951308232

f3 :: Assertion
f3 = fromRadians # (3 :: Double) @??= 171.88733853924697

tests :: Test
tests =
  TestList $ fmap TestCase [
    t180
  , t90
  , t359
  , t360
  , t3600
  , t1
  , tneg180
  , f0
  , f1
  , fneg1
  , f3
  ]

main :: IO ()
main = do
  c <- runTestTT tests
  when (errors c > 0 || failures c > 0) exitFailure