packages feed

horde-ad-0.3.0.0: test/FullTest.hs

module Main (main) where

import Prelude

import Data.Proxy
import System.IO qualified as SIO
import Test.Tasty
import Test.Tasty.Options
import Test.Tasty.Runners

import EqEpsilon
import TestAdaptorSimplified qualified
import TestConvQuickCheck qualified
import TestConvSimplified qualified
import TestGatherSimplified qualified
import TestHighRankSimplified qualified
import TestMnistCNNR qualified
import TestMnistCNNS qualified
import TestMnistFCNNR qualified
import TestMnistPP qualified
import TestMnistRNNR qualified
import TestMnistRNNS qualified
import TestRevFwdFold qualified

main :: IO ()
main = do
  -- Limit interleaving of characters in parallel tests.
  SIO.hSetBuffering SIO.stdout SIO.LineBuffering
  SIO.hSetBuffering SIO.stderr SIO.LineBuffering
  opts <- parseOptions (ingredients : defaultIngredients) tests
  setEpsilonEq (lookupOption opts :: EqEpsilon)
  defaultMainWithIngredients (ingredients : defaultIngredients) tests
 where
  ingredients = includingOptions [Option (Proxy :: Proxy EqEpsilon)]

tests :: TestTree
tests =
  testGroup "Full set of tests for simplified horde-ad"
    [ testGroup "Short_tests"  -- TODO: inOrderTestGroup needed here?
        (TestAdaptorSimplified.testTrees
         ++ TestConvSimplified.testTrees
         ++ TestGatherSimplified.testTrees
         ++ TestHighRankSimplified.testTrees
         ++ TestRevFwdFold.testTrees
         ++ TestMnistPP.testTrees)
    , testGroup "Long_tests"
        (TestMnistCNNR.testTrees
         ++ TestMnistCNNS.testTrees
         ++ TestMnistFCNNR.testTrees
         ++ TestMnistRNNR.testTrees
         ++ TestMnistRNNS.testTrees
         ++ TestConvQuickCheck.testTrees)
    ]