packages feed

singletons-base-3.4: tests/SingletonsBaseTestSuite.hs

module Main (
    main
 ) where

import Test.Tasty                   ( DependencyType(..), TestTree
                                    , after, defaultMain, testGroup )
import SingletonsBaseTestSuiteUtils ( compileAndDumpStdTest, compileAndDumpTest
                                    , testCompileAndDumpGroup, ghcOpts )

main :: IO ()
main = defaultMain tests

tests :: TestTree
tests =
    testGroup "Testsuite" $ [
    testCompileAndDumpGroup "Singletons"
    [ compileAndDumpStdTest "Nat"
    , compileAndDumpStdTest "Empty"
    , compileAndDumpStdTest "Maybe"
    , compileAndDumpStdTest "BoxUnBox"
    , afterSingletonsNat .
      compileAndDumpStdTest "Operators"
    , afterSingletonsNat .
      compileAndDumpStdTest "HigherOrder"
    , compileAndDumpStdTest "Contains"
    , afterSingletonsNat .
      compileAndDumpStdTest "AsPattern"
    , afterSingletonsNat .
      compileAndDumpStdTest "DataValues"
    , after AllSucceed "$3 == \"Empty\"" .
      after AllSucceed "$3 == \"Operators\"" .
      compileAndDumpStdTest "EqInstances"
    , compileAndDumpStdTest "CaseExpressions"
    , afterSingletonsNat .
      compileAndDumpStdTest "Star"
    , afterSingletonsNat .
      compileAndDumpStdTest "ReturnFunc"
    , compileAndDumpStdTest "Lambdas"
    , afterSingletonsNat .
      compileAndDumpStdTest "LambdasComprehensive"
    , compileAndDumpStdTest "Error"
    , compileAndDumpStdTest "TopLevelPatterns"
    , afterSingletonsNat .
      compileAndDumpStdTest "LetStatements"
    , compileAndDumpStdTest "LambdaCase"
    , afterSingletonsNat .
      compileAndDumpStdTest "Sections"
    , afterSingletonsNat .
      compileAndDumpStdTest "PatternMatching"
    , compileAndDumpStdTest "Records"
    , compileAndDumpStdTest "T29"
    , compileAndDumpStdTest "T33"
    , compileAndDumpStdTest "T54"
    , afterSingletonsNat .
      compileAndDumpStdTest "Classes"
    , afterSingletonsNat .
      after AllSucceed "$3 == \"Classes\"" .
      compileAndDumpStdTest "Classes2"
    , compileAndDumpStdTest "FunDeps"
    , compileAndDumpStdTest "T78"
    , compileAndDumpStdTest "T89"
    , compileAndDumpStdTest "OrdDeriving"
    , compileAndDumpStdTest "BoundedDeriving"
    , compileAndDumpStdTest "BadBoundedDeriving"
    , compileAndDumpStdTest "EnumDeriving"
    , compileAndDumpStdTest "BadEnumDeriving"
    , compileAndDumpStdTest "Fixity"
    , compileAndDumpStdTest "Undef"
    , compileAndDumpStdTest "T124"
    , compileAndDumpStdTest "T136"
    , compileAndDumpStdTest "T136b"
    , compileAndDumpStdTest "T153"
    , compileAndDumpStdTest "T157"
    , compileAndDumpStdTest "T159"
    , compileAndDumpStdTest "T167"
    , compileAndDumpStdTest "T145"
    , compileAndDumpStdTest "PolyKinds"
    , compileAndDumpStdTest "PolyKindsApp"
    , afterSingletonsNat .
      compileAndDumpStdTest "T150"
    , compileAndDumpStdTest "T160"
    , compileAndDumpStdTest "T163"
    , compileAndDumpStdTest "T166"
    , compileAndDumpStdTest "T172"
    , compileAndDumpStdTest "T175"
    , compileAndDumpStdTest "T176"
    , compileAndDumpStdTest "T178"
    , compileAndDumpStdTest "T183"
    , compileAndDumpStdTest "T184"
    , compileAndDumpStdTest "T187"
    , compileAndDumpStdTest "T190"
    , compileAndDumpStdTest "ShowDeriving"
    , compileAndDumpStdTest "EmptyShowDeriving"
    , compileAndDumpStdTest "StandaloneDeriving"
    , compileAndDumpStdTest "T197"
    , compileAndDumpStdTest "T197b"
    , compileAndDumpStdTest "T200"
    , compileAndDumpStdTest "T204"
    , compileAndDumpStdTest "T206"
    , compileAndDumpStdTest "T209"
    , compileAndDumpStdTest "T216"
    , compileAndDumpStdTest "T226"
    , compileAndDumpStdTest "T229"
    , compileAndDumpStdTest "T249"
    , compileAndDumpStdTest "OverloadedStrings"
    , compileAndDumpStdTest "T271"
    , compileAndDumpStdTest "T287"
    , compileAndDumpStdTest "TypeRepTYPE"
    , compileAndDumpStdTest "T296"
    , compileAndDumpStdTest "T297"
    , compileAndDumpStdTest "T312"
    , compileAndDumpStdTest "T313"
    , compileAndDumpStdTest "T316"
    , compileAndDumpStdTest "T322"
    , compileAndDumpStdTest "T326"
    , compileAndDumpStdTest "NatSymbolReflexive"
    , compileAndDumpStdTest "T323"
    , compileAndDumpStdTest "T332"
    , compileAndDumpStdTest "T342"
    , compileAndDumpStdTest "FunctorLikeDeriving"
    , compileAndDumpStdTest "T353"
    , compileAndDumpStdTest "T358"
    , compileAndDumpStdTest "T367"
    , compileAndDumpStdTest "T371"
    , compileAndDumpStdTest "T376"
    , compileAndDumpStdTest "T378a"
    , afterSingletonsNat .
      compileAndDumpStdTest "T378b"
    , compileAndDumpStdTest "T401"
    , compileAndDumpStdTest "T401b"
    , compileAndDumpStdTest "T402"
    , compileAndDumpStdTest "T410"
    , compileAndDumpStdTest "T412"
    , compileAndDumpStdTest "T414"
    , compileAndDumpStdTest "T433"
    , compileAndDumpStdTest "T443"
    , afterSingletonsNat .
      compileAndDumpStdTest "T445"
    , compileAndDumpStdTest "T450"
    , compileAndDumpStdTest "T453"
    , compileAndDumpStdTest "NegativeLiterals"
    , compileAndDumpStdTest "T470"
    , compileAndDumpStdTest "T480"
    , compileAndDumpStdTest "T487"
    , compileAndDumpStdTest "T489"
    , compileAndDumpStdTest "T492"
    , compileAndDumpStdTest "Natural"
    , compileAndDumpStdTest "T511"
    , compileAndDumpStdTest "T536"
    , compileAndDumpStdTest "T555"
    , compileAndDumpStdTest "T559"
    , compileAndDumpStdTest "T563"
    , compileAndDumpStdTest "T567"
    , compileAndDumpStdTest "T571"
    , compileAndDumpStdTest "T585"
    , compileAndDumpStdTest "TypeAbstractions"
    ],
    testCompileAndDumpGroup "Promote"
    [ compileAndDumpStdTest "Constructors"
    , compileAndDumpStdTest "GenDefunSymbols"
    , afterSingletonsNat .
      compileAndDumpStdTest "Newtypes"
    , compileAndDumpStdTest "Pragmas"
    , compileAndDumpStdTest "Prelude"
    , compileAndDumpStdTest "T180"
    , compileAndDumpStdTest "T361"
    ],
    testGroup "Database client"
    [ compileAndDumpTest "GradingClient/Database" ghcOpts
    , after AllSucceed "$3 == \"Database\"" $
      compileAndDumpTest "GradingClient/Main"     ghcOpts
    ],
    testCompileAndDumpGroup "InsertionSort"
    [ compileAndDumpStdTest "InsertionSortImp"
    ]
  ]

afterSingletonsNat :: TestTree -> TestTree
afterSingletonsNat = after AllSucceed "$3 == \"Nat\""