packages feed

lvish-1.1.2: tests/MaxPosIntTests.hs

{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE DataKinds #-}

-- | Tests for the Data.LVar.MaxPosInt module.

module MaxPosIntTests(tests, runTests) where

import Test.Framework.Providers.HUnit 
import Test.Framework (Test, defaultMain, testGroup)
import Test.HUnit (Assertion, assertEqual, assertBool, Counts(..))
import Test.Framework.TH (testGroupGenerator)
import qualified Test.HUnit as HU
import           TestHelpers as T

import Control.Concurrent (killThread, myThreadId)

import Data.LVar.MaxPosInt
import           Control.LVish hiding (put)
import           Control.LVish.DeepFrz (DeepFrz(..), Frzn, Trvrsbl, runParThenFreeze, runParThenFreezeIO)
import qualified Control.LVish.Internal as I

--------------------------------------------------------------------------------

tests :: Test
tests = $(testGroupGenerator)

runTests :: IO ()
runTests = defaultMainSeqTests [tests]

--------------------------------------------------------------------------------

case_mc1 :: Assertion
-- Spuriously failing currently:
-- case_mc1 = assertEqual "mc1" (Just ()) $ timeOutPure 0.3 $ runPar $ do
case_mc1 = assertEqual "mc1" () $ runPar $ do
  num <- newMaxPosInt 0
  fork $ put num 3
  fork $ put num 4
  waitThresh num 4

case_mc2 :: Assertion
case_mc2 = assertEqual "mc2" () $ runPar $ do
  num <- newMaxPosInt 0
  fork $ put num 3
  fork $ put num 4