packages feed

dataframe-learn-2.0.0.0: tests-internal/Main.hs

{-# LANGUAGE ScopedTypeVariables #-}

module Main where

import qualified System.Exit as Exit

import Test.HUnit
import Test.QuickCheck

import qualified Cart
import qualified DecisionTree
import qualified Learn.EdgeCases
import qualified Learn.NumericalRigor
import qualified Learn.Numerics
import qualified Learn.Symbolic
import qualified LinearSolver
import qualified Properties.Simplify
import qualified TreePruning
import qualified Worklist

tests :: Test
tests =
    TestList $
        Cart.tests
            ++ DecisionTree.tests
            ++ LinearSolver.tests
            ++ TreePruning.tests
            ++ Worklist.tests
            ++ Learn.Numerics.tests
            ++ Learn.Symbolic.tests
            ++ Learn.EdgeCases.tests
            ++ Learn.NumericalRigor.tests

isSuccessful :: Result -> Bool
isSuccessful (Success{}) = True
isSuccessful _ = False

main :: IO ()
main = do
    result <- runTestTT tests
    if failures result > 0 || errors result > 0
        then Exit.exitFailure
        else do
            simpRes <- mapM (quickCheckWithResult stdArgs) Properties.Simplify.tests
            wlRes <- mapM (quickCheckWithResult stdArgs) Worklist.props
            if not (all isSuccessful simpRes) || not (all isSuccessful wlRes)
                then Exit.exitFailure
                else Exit.exitSuccess