Decimal-0.1.0: tests/Main.hs
module Main where
import Data.Decimal
import Data.Ratio
import Test.HUnit
import Test.QuickCheck
conf :: Config
conf = defaultConfig { configMaxTest = 1000, configMaxFail = 10000 }
main :: IO ()
main = do
putStrLn "QuickCheck Data.Decimal:"
putStr " * prop_readShow "
check conf $ prop_readShow
putStr " * prop_readShowPrecision "
check conf $ prop_readShowPrecision
putStr " * prop_fromIntegerZero "
check conf $ prop_fromIntegerZero
putStr " * prop_increaseDecimals "
check conf $ prop_increaseDecimals
putStr " * prop_decreaseDecimals "
check conf $ prop_decreaseDecimals
putStr " * prop_inverseAdd "
check conf $ prop_inverseAdd
putStr " * prop_repeatedAdd "
check conf $ prop_repeatedAdd
putStr " * prop_divisionParts "
check conf $ prop_divisionParts
putStr " * prop_divisionUnits "
check conf $ prop_divisionUnits
putStr " * prop_allocateParts "
check conf $ prop_allocateParts
putStr " * prop_allocateUnits "
check conf $ prop_allocateUnits
putStr " * prop_abs "
check conf $ prop_abs
putStr " * prop_signum "
check conf $ prop_signum
putStrLn "Point tests:"
runTestTT $ TestList
[ TestCase $ assertEqual "pi to 3dp"
(Decimal 3 3142 :: Decimal)
(realFracToDecimal 3 (pi :: Double)),
TestCase $ assertEqual "pi to 2dp"
(Decimal 2 314 :: Decimal)
(realFracToDecimal 2 (pi :: Double)),
TestCase $ assertEqual "100*pi to 2dp"
(Decimal 2 31416 :: Decimal)
(realFracToDecimal 2 (100 * pi :: Double)),
TestCase $ assertEqual "1.0 * pi"
(Decimal 1 31 :: Decimal)
(Decimal 1 10 *. (pi :: Double)),
TestCase $ assertEqual "1.23 * pi"
(Decimal 2 386 :: Decimal)
(Decimal 2 123 *. (pi :: Double)),
TestCase $ assertEqual "Decimal to DecimalRaw Int"
(Decimal 2 123 :: DecimalRaw Int)
(decimalConvert (Decimal 2 123 :: Decimal)),
TestCase $ assertEqual "1.234 to rational"
(toRational (Decimal 3 1234 :: Decimal)) (1234 % 1000)
]
putStrLn "Tests completed."