packages feed

threads-supervisor-1.2.0.1: test/Main.hs

{-# LANGUAGE OverloadedStrings #-}
module Main where

import           Test.Tasty
import           Test.Tasty.HUnit
import           Test.Tasty.QuickCheck
import           Test.QuickCheck.Monadic
import           Tests
import qualified Tests.Bounded as B


--------------------------------------------------------------------------------
main :: IO ()
main = defaultMain allTests


--------------------------------------------------------------------------------
withQuickCheckDepth :: TestName -> Int -> [TestTree] -> TestTree
withQuickCheckDepth tn depth tests =
  localOption (QuickCheckTests depth) (testGroup tn tests)


--------------------------------------------------------------------------------
allTests :: TestTree
allTests = testGroup "All Tests" [
    withQuickCheckDepth "Control.Concurrent.Supervisor" 20 [
        testProperty "1 supervised thread, no exceptions" (monadicIO test1SupThreadNoEx)
      , testProperty "1 supervised thread, premature async exception" (monadicIO test1SupThreadPrematureAsyncDemise)
      , testProperty "1 supervised thread, premature exception" (monadicIO test1SupThreadPrematureDemise)
      , testProperty "1 supervised supervisor, premature exception" (monadicIO test1SupSpvrPrematureDemise)
      , testProperty "killing spree" (monadicIO testKillingSpree)
      , testProperty "cleanup" (monadicIO testSupCleanup)
      , testCase "too many restarts" testTooManyRestarts
    ]
    , withQuickCheckDepth "Control.Concurrent.Supervisor.Bounded" 20 [
        testProperty "1 supervised thread, no exceptions" (monadicIO B.test1SupThreadNoEx)
      , testProperty "1 supervised thread, premature exception" (monadicIO B.test1SupThreadPrematureDemise)
      , testProperty "killing spree" (monadicIO B.testKillingSpree)
      , testProperty "cleanup" (monadicIO B.testSupCleanup)
      , testCase "too many restarts" B.testTooManyRestarts
    ]
  ]