module Main (main) where import Grisette.Backend.CEGISTests (cegisTests) import Grisette.Backend.LoweringTests ( loweringTests, ) import Grisette.Backend.TermRewritingTests ( termRewritingTests, ) import Grisette.Core.Control.ExceptionTests (exceptionTests) import Grisette.Core.Control.Monad.UnionTests (unionTests) import Grisette.Core.Data.Class.BitCastTests (bitCastTests) import qualified Grisette.Core.Data.Class.BoolTests import Grisette.Core.Data.Class.EvalSymTests (evalSymTests) import Grisette.Core.Data.Class.ExtractSymTests (extractSymTests) import Grisette.Core.Data.Class.GenSymTests (genSymTests) import Grisette.Core.Data.Class.MergeableTests (mergeableTests) import Grisette.Core.Data.Class.PPrintTests (pprintTests) import Grisette.Core.Data.Class.SafeDivTests (safeDivTests) import Grisette.Core.Data.Class.SafeLinearArithTests (safeLinearArithTests) import Grisette.Core.Data.Class.SafeSymRotateTests (safeSymRotateTests) import Grisette.Core.Data.Class.SafeSymShiftTests (safeSymShiftTests) import Grisette.Core.Data.Class.SimpleMergeableTests (simpleMergeableTests) import Grisette.Core.Data.Class.SubstSymTests (substSymTests) import Grisette.Core.Data.Class.SymEqTests (seqTests) import Grisette.Core.Data.Class.SymFiniteBitsTests (symFiniteBitsTests) import Grisette.Core.Data.Class.SymOrdTests (sordTests) import Grisette.Core.Data.Class.SymRotateTests (symRotateTests) import Grisette.Core.Data.Class.SymShiftTests (symShiftTests) import Grisette.Core.Data.Class.ToConTests (toConTests) import Grisette.Core.Data.Class.ToSymTests (toSymTests) import Grisette.Core.Data.Class.TryMergeTests (tryMergeTests) import Grisette.Core.Data.Class.UnionViewTests (unionViewTests) import Grisette.Core.Data.UnionBaseTests (unionBaseTests) import Grisette.Core.TH.DerivationTest (derivationTest) import Grisette.Lib.Control.ApplicativeTest (applicativeFunctionTests) import Grisette.Lib.Control.Monad.ExceptTests ( monadExceptFunctionTests, ) import Grisette.Lib.Control.Monad.State.ClassTests ( monadStateClassTests, ) import Grisette.Lib.Control.Monad.Trans.ClassTests ( monadTransClassTests, ) import Grisette.Lib.Control.Monad.Trans.ExceptTests (exceptTests) import Grisette.Lib.Control.Monad.Trans.State.LazyTests ( monadTransStateLazyTests, ) import Grisette.Lib.Control.Monad.Trans.State.StrictTests ( monadTransStateStrictTests, ) import Grisette.Lib.Control.MonadTests (monadFunctionTests) import Grisette.Lib.Data.FoldableTests (foldableFunctionTests) import Grisette.Lib.Data.FunctorTests (functorFunctionTests) import Grisette.Lib.Data.ListTests (listTests) import Grisette.Lib.Data.TraversableTests (traversableFunctionTests) import Grisette.SymPrim.AlgRealTests (algRealTests) import qualified Grisette.SymPrim.BVTests import Grisette.SymPrim.FPTests (fpTests) import Grisette.SymPrim.GeneralFunTests (generalFunTests) import qualified Grisette.SymPrim.Prim.BVTests import Grisette.SymPrim.Prim.BitsTests (bitsTests) import qualified Grisette.SymPrim.Prim.BoolTests import Grisette.SymPrim.Prim.ConcurrentTests (concurrentTests) import Grisette.SymPrim.Prim.IntegralTests (integralTests) import Grisette.SymPrim.Prim.ModelTests (modelTests) import Grisette.SymPrim.Prim.NumTests (numTests) import qualified Grisette.SymPrim.Prim.SerializationTests import qualified Grisette.SymPrim.Prim.TabularFunTests import Grisette.SymPrim.QuantifierTests (quantifierTests) import Grisette.SymPrim.SomeBVTests (someBVTests) import Grisette.SymPrim.SymGeneralFunTests (symGeneralFunTests) import Grisette.SymPrim.SymPrimTests (symPrimTests) import qualified Grisette.SymPrim.TabularFunTests import Grisette.Unified.EvalModeTest (evalModeTest) import Grisette.Unified.GetDataTest (getDataTest) import Grisette.Unified.UnifiedClassesTest (unifiedClassesTest) import Grisette.Unified.UnifiedConstructorTest (unifiedConstructorTest) import Test.Framework (Test, defaultMain, testGroup) main :: IO () main = defaultMain [ coreTests, irTests, sbvTests, libTests, unifiedTests ] coreTests :: Test coreTests = testGroup "Grisette.Core" [ testGroup "Control" [ testGroup "Monad" [ unionTests ], exceptionTests ], testGroup "Data" [ testGroup "Class" [ bitCastTests, Grisette.Core.Data.Class.BoolTests.boolTests, evalSymTests, extractSymTests, genSymTests, pprintTests, mergeableTests, unionViewTests, safeDivTests, safeLinearArithTests, safeSymShiftTests, safeSymRotateTests, seqTests, sordTests, simpleMergeableTests, substSymTests, symFiniteBitsTests, symRotateTests, symShiftTests, toConTests, toSymTests, tryMergeTests ], unionBaseTests ], testGroup "TH" [derivationTest] ] libTests :: Test libTests = testGroup "Grisette.Lib" [ testGroup "Control" [ testGroup "Monad" [ monadExceptFunctionTests, testGroup "State" [ monadStateClassTests ], testGroup "Trans" [ exceptTests, monadTransClassTests, testGroup "State" [ monadTransStateLazyTests, monadTransStateStrictTests ] ] ], monadFunctionTests, applicativeFunctionTests ], testGroup "Data" [ foldableFunctionTests, traversableFunctionTests, functorFunctionTests, listTests ] ] irTests :: Test irTests = testGroup "Grisette.SymPrim" [ testGroup "Prim" [ concurrentTests, bitsTests, Grisette.SymPrim.Prim.BoolTests.boolTests, Grisette.SymPrim.Prim.BVTests.bvTests, integralTests, modelTests, numTests, Grisette.SymPrim.Prim.TabularFunTests.tabularFunTests, Grisette.SymPrim.Prim.SerializationTests.serializationTests ], symPrimTests, Grisette.SymPrim.TabularFunTests.tabularFunTests, Grisette.SymPrim.BVTests.bvTests, algRealTests, generalFunTests, symGeneralFunTests, someBVTests, fpTests, quantifierTests ] sbvTests :: Test sbvTests = testGroup "Grisette.Backend" [ cegisTests, loweringTests, termRewritingTests ] unifiedTests :: Test unifiedTests = testGroup "Grisette.Unified" [ evalModeTest, getDataTest, unifiedConstructorTest, unifiedClassesTest ]