entwine-0.0.2: test/Test/IO/Entwine/Loop.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
module Test.IO.Entwine.Loop where
import Control.Concurrent.Async (async)
import Control.Monad.Trans.Either (runEitherT)
import Test.Disorder
import Entwine.P
import Test.QuickCheck
import Entwine.Async (waitWithTimeout)
import Entwine.Data.Gate
import Entwine.Data.Duration (milliseconds, seconds)
import Entwine.Loop
prop_loop = testIO $ do
g <- newGate
x <- async $ loop (milliseconds 1) g (pure ()) >> pure True
close g
r <- runEitherT $ waitWithTimeout x (seconds 1)
pure $ r === Right True
return []
tests = $quickCheckAll