genvalidity-time-1.0.0.0: src/Data/GenValidity/Time/Clock.hs
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Data.GenValidity.Time.Clock where
import Data.GenValidity
import Data.GenValidity.Time.Calendar ()
import Data.Time.Clock
import Data.Validity.Time.Clock ()
import Test.QuickCheck
instance GenValid UniversalTime where
genValid = ModJulianDate <$> genValid
shrinkValid = fmap ModJulianDate . shrinkValid . getModJulianDate
instance GenValid DiffTime where
genValid = picosecondsToDiffTime <$> genValid
shrinkValid = fmap picosecondsToDiffTime . shrinkValid . diffTimeToPicoseconds
instance GenValid UTCTime where
genValid =
UTCTime <$> genValid <*> (fromIntegral <$> choose (0 :: Int, 86400))
shrinkValid (UTCTime d dt) =
[UTCTime d' dt' | (d', dt') <- shrinkValid (d, dt)]
instance GenValid NominalDiffTime where
genValid = secondsToNominalDiffTime <$> genValid
shrinkValid = fmap secondsToNominalDiffTime . shrinkValid . nominalDiffTimeToSeconds