gev-lib-0.1.0.0: src/Tests/tests.hs
-- | tests for the library
module Main where
import Gev
import Gev.Gumbel
import Gev.Frechet
import Gev.Weibull
import Gev.GevDist
import Test.HUnit
import qualified System.Exit as Exit
------------------------------------ Gumbel ------------------------------------
-- | Gumbel dist instance.
gumbel :: GumbelDistribution
gumbel = gumbelDist 0.5 2.0
-- | individual test
testGumbelCDF :: Test
testGumbelCDF = TestCase (assertEqual "Gumbel CDF test" 0.6235249162568004 (cdf gumbel 2.0))
testGumbelPDF :: Test
testGumbelPDF = TestCase (assertEqual "Gumbel PDF test" 0.14726615762017733 (pdf gumbel 2.0))
testGumbelQuant :: Test
testGumbelQuant = TestCase (assertEqual "Gumbel Qauntile test" 2.5618608663174456 (quantile gumbel 0.7))
------------------------------------ Frechet -----------------------------------
-- | Frechet dist instance.
frechet :: FrechetDistribution
frechet = frechetDist 1.0 0.1 1.0
-- | individual test
testFrechetCDF :: Test
testFrechetCDF = TestCase (assertEqual "Frechet CDF test" 0.951229424500714 (cdf frechet 3.0))
testFrechetPDF :: Test
testFrechetPDF = TestCase (assertEqual "Frechet PDF test" 0.023780735612517853 (pdf frechet 3.0))
testFrechetQuant :: Test
testFrechetQuant = TestCase (assertEqual "Frechet Qauntile test" 1.2803673252057128 (quantile frechet 0.7))
------------------------------------ Weibull -----------------------------------
-- | Weibull dist instance.
weibull :: WeibullDistribution
weibull = weibullDist 2.0 2.0 2.0
-- | individual test
testWeibullCDF :: Test
testWeibullCDF = TestCase (assertEqual "Weibull CDF test" 0.7788007830714049 (cdf weibull 1.0))
testWeibullPDF :: Test
testWeibullPDF = TestCase (assertEqual "Weibull PDF test" 0.38940039153570244 (pdf weibull 1.0))
testWeibullQuant :: Test
testWeibullQuant = TestCase (assertEqual "Weibull Qauntile test" 0.8055546158342233 (quantile weibull 0.7))
------------------------------------ GEV -----------------------------------
--------- GEV with shape not equal to 0
-- | GEV dist instance.
gev :: GevDistribution
gev = gevDist 2.0 2.0 2.0
-- | individual test
testGEVCDF :: Test
testGEVCDF = TestCase (assertEqual "GEV CDF test" 0.4930686913952398 (cdf gev 3.0))
testGEVPDF :: Test
testGEVPDF = TestCase (assertEqual "GEV PDF test" 0.0871630538190878 (pdf gev 3.0))
testGEVQuant :: Test
testGEVQuant = TestCase (assertEqual "GEV Qauntile test" 8.860583704300595 (quantile gev 0.7))
--------- GEV with shape equal to 0
-- | GEV dist instance with shape equal to 0.
gevAlt :: GevDistribution
gevAlt = gevDist 2.0 2.0 0.0
-- | individual test
testGEVCDFAlt :: Test
testGEVCDFAlt = TestCase (assertEqual "GEV CDF test" 0.545239211892605 (cdf gevAlt 3.0))
testGEVPDFAlt :: Test
testGEVPDFAlt = TestCase (assertEqual "GEV PDF test" 0.16535214944520904 (pdf gevAlt 3.0))
testGEVQuantAlt :: Test
testGEVQuantAlt = TestCase (assertEqual "GEV Qauntile test" 4.061860866317446 (quantile gevAlt 0.7))
-- | list of tests
testList :: Test
testList = TestList [ TestLabel "testGumbelCDF" testGumbelCDF
, TestLabel "testGumbelPDF" testGumbelPDF
, TestLabel "testGumbelQuant" testGumbelQuant
, TestLabel "testFrechetCDF" testFrechetCDF
, TestLabel "testFrechetPDF" testFrechetPDF
, TestLabel "testFrechetQuant" testFrechetQuant
, TestLabel "testWeibullCDF" testWeibullCDF
, TestLabel "testWeibullPDF" testWeibullPDF
, TestLabel "testWeibullQuant" testWeibullQuant
, TestLabel "testGEVCDF" testGEVCDF
, TestLabel "testGEVPDF" testGEVPDF
, TestLabel "testGEVQuant" testGEVQuant
, TestLabel "testGEVCDFAlt" testGEVCDFAlt
, TestLabel "testGEVPDFAlt" testGEVPDFAlt
, TestLabel "testGEVQuantAlt" testGEVQuantAlt]
main :: IO ()
main = do
result <- runTestTT testList
if failures result > 0 then Exit.exitFailure else Exit.exitSuccess