{-# OPTIONS_GHC -fno-warn-orphans #-} module Data.FuzzyTime.Types.Gen where import Data.FuzzyTime.Types import Data.GenValidity import Data.GenValidity.Time () import Test.QuickCheck instance GenValid AmbiguousLocalTime where genValid :: Gen AmbiguousLocalTime genValid = Gen AmbiguousLocalTime forall a. (Generic a, GGenValid (Rep a)) => Gen a genValidStructurallyWithoutExtraChecking shrinkValid :: AmbiguousLocalTime -> [AmbiguousLocalTime] shrinkValid = AmbiguousLocalTime -> [AmbiguousLocalTime] forall a. (Generic a, GValidRecursivelyShrink (Rep a), GValidSubterms (Rep a) a) => a -> [a] shrinkValidStructurallyWithoutExtraFiltering instance GenValid FuzzyLocalTime where genValid :: Gen FuzzyLocalTime genValid = Gen FuzzyLocalTime forall a. (Generic a, GGenValid (Rep a)) => Gen a genValidStructurallyWithoutExtraChecking shrinkValid :: FuzzyLocalTime -> [FuzzyLocalTime] shrinkValid = FuzzyLocalTime -> [FuzzyLocalTime] forall a. (Generic a, GValidRecursivelyShrink (Rep a), GValidSubterms (Rep a) a) => a -> [a] shrinkValidStructurallyWithoutExtraFiltering instance GenValid FuzzyTimeOfDay where genValid :: Gen FuzzyTimeOfDay genValid = [Gen FuzzyTimeOfDay] -> Gen FuzzyTimeOfDay forall a. [Gen a] -> Gen a oneof [ FuzzyTimeOfDay -> Gen FuzzyTimeOfDay forall a. a -> Gen a forall (f :: * -> *) a. Applicative f => a -> f a pure FuzzyTimeOfDay SameTime, FuzzyTimeOfDay -> Gen FuzzyTimeOfDay forall a. a -> Gen a forall (f :: * -> *) a. Applicative f => a -> f a pure FuzzyTimeOfDay Midnight, FuzzyTimeOfDay -> Gen FuzzyTimeOfDay forall a. a -> Gen a forall (f :: * -> *) a. Applicative f => a -> f a pure FuzzyTimeOfDay Morning, FuzzyTimeOfDay -> Gen FuzzyTimeOfDay forall a. a -> Gen a forall (f :: * -> *) a. Applicative f => a -> f a pure FuzzyTimeOfDay Evening, Int -> FuzzyTimeOfDay AtHour (Int -> FuzzyTimeOfDay) -> Gen Int -> Gen FuzzyTimeOfDay forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Int, Int) -> Gen Int forall a. Random a => (a, a) -> Gen a choose (Int 0, Int 23), Int -> Int -> FuzzyTimeOfDay AtMinute (Int -> Int -> FuzzyTimeOfDay) -> Gen Int -> Gen (Int -> FuzzyTimeOfDay) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Int, Int) -> Gen Int forall a. Random a => (a, a) -> Gen a choose (Int 0, Int 23) Gen (Int -> FuzzyTimeOfDay) -> Gen Int -> Gen FuzzyTimeOfDay forall a b. Gen (a -> b) -> Gen a -> Gen b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (Int, Int) -> Gen Int forall a. Random a => (a, a) -> Gen a choose (Int 0, Int 59), TimeOfDay -> FuzzyTimeOfDay AtExact (TimeOfDay -> FuzzyTimeOfDay) -> Gen TimeOfDay -> Gen FuzzyTimeOfDay forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen TimeOfDay forall a. GenValid a => Gen a genValid, Int -> FuzzyTimeOfDay HoursDiff (Int -> FuzzyTimeOfDay) -> Gen Int -> Gen FuzzyTimeOfDay forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Int, Int) -> Gen Int forall a. Random a => (a, a) -> Gen a choose (-Int 23, Int 23), Int -> FuzzyTimeOfDay MinutesDiff (Int -> FuzzyTimeOfDay) -> Gen Int -> Gen FuzzyTimeOfDay forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Int, Int) -> Gen Int forall a. Random a => (a, a) -> Gen a choose (-(Int 24 Int -> Int -> Int forall a. Num a => a -> a -> a * Int 60 Int -> Int -> Int forall a. Num a => a -> a -> a - Int 1), Int 24 Int -> Int -> Int forall a. Num a => a -> a -> a * Int 60 Int -> Int -> Int forall a. Num a => a -> a -> a - Int 1), Pico -> FuzzyTimeOfDay SecondsDiff (Pico -> FuzzyTimeOfDay) -> Gen Pico -> Gen FuzzyTimeOfDay forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Pico forall a. GenValid a => Gen a genValid ] Gen FuzzyTimeOfDay -> (FuzzyTimeOfDay -> Bool) -> Gen FuzzyTimeOfDay forall a. Gen a -> (a -> Bool) -> Gen a `suchThat` FuzzyTimeOfDay -> Bool forall a. Validity a => a -> Bool isValid shrinkValid :: FuzzyTimeOfDay -> [FuzzyTimeOfDay] shrinkValid = FuzzyTimeOfDay -> [FuzzyTimeOfDay] forall a. (Validity a, Generic a, GValidRecursivelyShrink (Rep a), GValidSubterms (Rep a) a) => a -> [a] shrinkValidStructurally instance GenValid FuzzyDay where genValid :: Gen FuzzyDay genValid = [Gen FuzzyDay] -> Gen FuzzyDay forall a. [Gen a] -> Gen a oneof [ FuzzyDay -> Gen FuzzyDay forall a. a -> Gen a forall (f :: * -> *) a. Applicative f => a -> f a pure FuzzyDay Yesterday, FuzzyDay -> Gen FuzzyDay forall a. a -> Gen a forall (f :: * -> *) a. Applicative f => a -> f a pure FuzzyDay Now, FuzzyDay -> Gen FuzzyDay forall a. a -> Gen a forall (f :: * -> *) a. Applicative f => a -> f a pure FuzzyDay Today, FuzzyDay -> Gen FuzzyDay forall a. a -> Gen a forall (f :: * -> *) a. Applicative f => a -> f a pure FuzzyDay Tomorrow, Word8 -> FuzzyDay OnlyDay (Word8 -> FuzzyDay) -> Gen Word8 -> Gen FuzzyDay forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Word8, Word8) -> Gen Word8 forall a. Random a => (a, a) -> Gen a choose (Word8 1, Word8 31), Word8 -> Word8 -> FuzzyDay DayInMonth (Word8 -> Word8 -> FuzzyDay) -> Gen Word8 -> Gen (Word8 -> FuzzyDay) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Word8, Word8) -> Gen Word8 forall a. Random a => (a, a) -> Gen a choose (Word8 1, Word8 31) Gen (Word8 -> FuzzyDay) -> Gen Word8 -> Gen FuzzyDay forall a b. Gen (a -> b) -> Gen a -> Gen b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (Word8, Word8) -> Gen Word8 forall a. Random a => (a, a) -> Gen a choose (Word8 1, Word8 12), Int16 -> FuzzyDay DiffDays (Int16 -> FuzzyDay) -> Gen Int16 -> Gen FuzzyDay forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Int16 forall a. GenValid a => Gen a genValid, Int16 -> FuzzyDay DiffWeeks (Int16 -> FuzzyDay) -> Gen Int16 -> Gen FuzzyDay forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Int16 forall a. GenValid a => Gen a genValid, DayOfWeek -> Int16 -> FuzzyDay DayOfTheWeek (DayOfWeek -> Int16 -> FuzzyDay) -> Gen DayOfWeek -> Gen (Int16 -> FuzzyDay) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen DayOfWeek forall a. GenValid a => Gen a genValid Gen (Int16 -> FuzzyDay) -> Gen Int16 -> Gen FuzzyDay forall a b. Gen (a -> b) -> Gen a -> Gen b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Gen Int16 forall a. GenValid a => Gen a genValid, Day -> FuzzyDay ExactDay (Day -> FuzzyDay) -> Gen Day -> Gen FuzzyDay forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Day forall a. GenValid a => Gen a genValid ] Gen FuzzyDay -> (FuzzyDay -> Bool) -> Gen FuzzyDay forall a. Gen a -> (a -> Bool) -> Gen a `suchThat` FuzzyDay -> Bool forall a. Validity a => a -> Bool isValid shrinkValid :: FuzzyDay -> [FuzzyDay] shrinkValid = FuzzyDay -> [FuzzyDay] forall a. (Validity a, Generic a, GValidRecursivelyShrink (Rep a), GValidSubterms (Rep a) a) => a -> [a] shrinkValidStructurally