entwine-0.0.2: test/Test/IO/Entwine/Snooze.hs
{-# 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 })