{-# 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 :: Gen UniversalTime genValid = Rational -> UniversalTime ModJulianDate forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. GenValid a => Gen a genValid shrinkValid :: UniversalTime -> [UniversalTime] shrinkValid = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Rational -> UniversalTime ModJulianDate forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. GenValid a => a -> [a] shrinkValid forall b c a. (b -> c) -> (a -> b) -> a -> c . UniversalTime -> Rational getModJulianDate instance GenValid DiffTime where genValid :: Gen DiffTime genValid = Integer -> DiffTime picosecondsToDiffTime forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. GenValid a => Gen a genValid shrinkValid :: DiffTime -> [DiffTime] shrinkValid = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Integer -> DiffTime picosecondsToDiffTime forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. GenValid a => a -> [a] shrinkValid forall b c a. (b -> c) -> (a -> b) -> a -> c . DiffTime -> Integer diffTimeToPicoseconds instance GenValid UTCTime where genValid :: Gen UTCTime genValid = Day -> DiffTime -> UTCTime UTCTime forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. GenValid a => Gen a genValid forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (forall a b. (Integral a, Num b) => a -> b fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. Random a => (a, a) -> Gen a choose (Int 0 :: Int, Int 86400)) shrinkValid :: UTCTime -> [UTCTime] shrinkValid (UTCTime Day d DiffTime dt) = [Day -> DiffTime -> UTCTime UTCTime Day d' DiffTime dt' | (Day d', DiffTime dt') <- forall a. GenValid a => a -> [a] shrinkValid (Day d, DiffTime dt)] instance GenValid NominalDiffTime where genValid :: Gen NominalDiffTime genValid = Pico -> NominalDiffTime secondsToNominalDiffTime forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. GenValid a => Gen a genValid shrinkValid :: NominalDiffTime -> [NominalDiffTime] shrinkValid = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Pico -> NominalDiffTime secondsToNominalDiffTime forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. GenValid a => a -> [a] shrinkValid forall b c a. (b -> c) -> (a -> b) -> a -> c . NominalDiffTime -> Pico nominalDiffTimeToSeconds