{-# 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