{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE TemplateHaskell #-} {-# OPTIONS_GHC -fno-warn-missing-signatures #-} module Test.IO.Entwine.Snooze where import Data.Time import Test.Disorder import Entwine.P import System.IO import Test.QuickCheck import Entwine.Snooze prop_snooze = forAll (choose (1, 3)) $ \n -> testIO $ do s <- getCurrentTime snooze . seconds $ n e <- getCurrentTime let elapsed = diffUTCTime e s let expected = (fromInteger . toInteger) n pure . counterexample ("Elapsed: " <> show elapsed <> " , Snooze: " <> show expected) $ elapsed >= expected && elapsed < expected + 1 return [] tests :: IO Bool tests = $forAllProperties $ quickCheckWithResult (stdArgs { maxSuccess = 3 })