{-# 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 = genValidStructurallyWithoutExtraChecking shrinkValid = shrinkValidStructurallyWithoutExtraFiltering instance GenValid FuzzyLocalTime where genValid = genValidStructurallyWithoutExtraChecking shrinkValid = shrinkValidStructurallyWithoutExtraFiltering instance GenValid FuzzyTimeOfDay where genValid = oneof [ pure SameTime, pure Midnight, pure Morning, pure Evening, AtHour <$> choose (0, 23), AtMinute <$> choose (0, 23) <*> choose (0, 59), AtExact <$> genValid, HoursDiff <$> choose (-23, 23), MinutesDiff <$> choose (-(24 * 60 - 1), 24 * 60 - 1), SecondsDiff <$> genValid ] `suchThat` isValid shrinkValid = shrinkValidStructurally instance GenValid FuzzyDay where genValid = oneof [ pure Yesterday, pure Now, pure Today, pure Tomorrow, OnlyDay <$> choose (1, 31), DayInMonth <$> choose (1, 31) <*> choose (1, 12), DiffDays <$> genValid, DiffWeeks <$> genValid, DayOfTheWeek <$> genValid <*> genValid, ExactDay <$> genValid ] `suchThat` isValid shrinkValid = shrinkValidStructurally