packages feed

genvalidity-time 0.2.1.2 → 0.3.0.0

raw patch · 4 files changed

+104/−41 lines, 4 filesdep +criteriondep +genvalidity-criterionPVP ok

version bump matches the API change (PVP)

Dependencies added: criterion, genvalidity-criterion

API changes (from Hackage documentation)

+ Data.GenValidity.Time.LocalTime: genTimeZoneName :: Gen String

Files

+ bench/Main.hs view
@@ -0,0 +1,27 @@+{-# LANGUAGE AllowAmbiguousTypes #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE ScopedTypeVariables #-}++module Main where++import Data.Time++import Criterion.Main as Criterion++import Data.GenValidity.Criterion+import Data.GenValidity.Time ()++main :: IO ()+main =+  Criterion.defaultMain+    [ genValidBench @Day+    , genValidBench @UniversalTime+    , genValidBench @DiffTime+    , genValidBench @UTCTime+    , genValidBench @NominalDiffTime+    -- , genValidBench @TimeLocale -- No NFData instance+    , genValidBench @TimeZone+    , genValidBench @TimeOfDay+    , genValidBench @LocalTime+    , genValidBench @ZonedTime+    ]
genvalidity-time.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 8825c813c87f8d5631c4ffba6dee7400ac940078993ed71f67f0c86aa14a9ba7+-- hash: d555d09c0ebb33d8de9eea283249aaf0bcb427c0af14d4c8e6b5051ebc0e85f0  name:           genvalidity-time-version:        0.2.1.2+version:        0.3.0.0 synopsis:       GenValidity support for time description:    Please see README.md category:       Testing@@ -57,5 +57,21 @@     , genvalidity-hspec     , genvalidity-time     , hspec+    , time+  default-language: Haskell2010++benchmark genvalidity-time-bench+  type: exitcode-stdio-1.0+  main-is: Main.hs+  other-modules:+      Paths_genvalidity_time+  hs-source-dirs:+      bench+  ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall+  build-depends:+      base >=4.7 && <5+    , criterion+    , genvalidity-criterion+    , genvalidity-time     , time   default-language: Haskell2010
src/Data/GenValidity/Time/Clock.hs view
@@ -14,41 +14,46 @@ import Test.QuickCheck  instance GenUnchecked UniversalTime where-    genUnchecked = ModJulianDate <$> genUnchecked-    shrinkUnchecked = fmap ModJulianDate . shrinkUnchecked . getModJulianDate+  genUnchecked = ModJulianDate <$> genUnchecked+  shrinkUnchecked = fmap ModJulianDate . shrinkUnchecked . getModJulianDate  instance GenValid UniversalTime where-    genValid = ModJulianDate <$> genValid+  genValid = ModJulianDate <$> genValid  instance GenUnchecked DiffTime where-    genUnchecked = picosecondsToDiffTime <$> genUnchecked+  genUnchecked = picosecondsToDiffTime <$> genUnchecked #if MIN_VERSION_time(1,6,0)-    shrinkUnchecked =-        fmap picosecondsToDiffTime . shrinkUnchecked . diffTimeToPicoseconds+  shrinkUnchecked =+    fmap picosecondsToDiffTime . shrinkUnchecked . diffTimeToPicoseconds #else-    shrinkUnchecked = const []+  shrinkUnchecked = const [] #endif instance GenValid DiffTime where-    genValid = picosecondsToDiffTime <$> genValid+  genValid = picosecondsToDiffTime <$> genValid  instance GenUnchecked UTCTime where-    genUnchecked = UTCTime <$> genUnchecked <*> genUnchecked-    shrinkUnchecked (UTCTime d dt) =-        [UTCTime d' dt' | (d', dt') <- shrinkUnchecked (d, dt)]+  genUnchecked = UTCTime <$> genUnchecked <*> genUnchecked+  shrinkUnchecked (UTCTime d dt) =+    [UTCTime d' dt' | (d', dt') <- shrinkUnchecked (d, dt)]  instance GenValid UTCTime where-    genValid =-        UTCTime <$> genValid <*>-        (genValid `suchThat` (>= 0) `suchThat` (<= 86400))+  genValid =+    UTCTime <$> genValid <*> (fromIntegral <$> choose (0 :: Int, 86400))  instance GenInvalid UTCTime-+#if MIN_VERSION_time(1,9,1) instance GenUnchecked NominalDiffTime where-    genUnchecked = diffUTCTime <$> genUnchecked <*> genUnchecked+  genUnchecked = secondsToNominalDiffTime <$> genUnchecked+#else+instance GenUnchecked NominalDiffTime where+  genUnchecked = diffUTCTime <$> genUnchecked <*> genUnchecked+#endif #if MIN_VERSION_time(1,9,0)-    shrinkUnchecked =-        fmap secondsToNominalDiffTime . shrinkUnchecked . nominalDiffTimeToSeconds+  shrinkUnchecked =+    fmap secondsToNominalDiffTime . shrinkUnchecked . nominalDiffTimeToSeconds #else-    shrinkUnchecked = const []+  shrinkUnchecked = const [] #endif-instance GenValid NominalDiffTime+instance GenValid NominalDiffTime where+  genValid = genUnchecked+  shrinkValid = shrinkUnchecked
src/Data/GenValidity/Time/LocalTime.hs view
@@ -6,50 +6,65 @@ import Control.Applicative ((<*>)) import Data.Functor ((<$>)) #endif+import Data.Fixed import Data.GenValidity import Data.GenValidity.Time.Calendar ()+import Data.Time.Format import Data.Time.LocalTime import Data.Validity.Time.LocalTime ()  import Test.QuickCheck  instance GenUnchecked TimeZone where-    genUnchecked = TimeZone <$> genUnchecked <*> genUnchecked <*> genUnchecked-    shrinkUnchecked (TimeZone m so n) =-        [TimeZone m' so' n' | (m', so', n') <- shrinkUnchecked (m, so, n)]+  genUnchecked = TimeZone <$> genUnchecked <*> genUnchecked <*> genUnchecked+  shrinkUnchecked (TimeZone m so n) =+    [TimeZone m' so' n' | (m', so', n') <- shrinkUnchecked (m, so, n)]  instance GenValid TimeZone where-    genValid = TimeZone <$> genValid <*> genValid <*> genValid+  genValid = TimeZone <$> genValid <*> genValid <*> genTimeZoneName +genTimeZoneName :: Gen String+genTimeZoneName =+  frequency+    [ (1, pure "")+    , ( 4 -- Any three characters+      , (:) <$> genValid <*>+        ((:) <$> genValid <*> ((:) <$> genValid <*> pure [])))+    , ( 4 -- A +HHMM string+      , (:) <$> elements ['-', '+'] <*>+        (formatTime defaultTimeLocale "%H%M" <$>+         (TimeOfDay <$> choose (0, 23) <*> choose (0, 59) <*> pure 0)))+    , (1, genValid)+    ]+ instance GenUnchecked TimeOfDay where-    genUnchecked = TimeOfDay <$> genUnchecked <*> genUnchecked <*> genUnchecked-    shrinkUnchecked (TimeOfDay h m s) =-        [TimeOfDay h' m' s' | (h', m', s') <- shrinkUnchecked (h, m, s)]+  genUnchecked = TimeOfDay <$> genUnchecked <*> genUnchecked <*> genUnchecked+  shrinkUnchecked (TimeOfDay h m s) =+    [TimeOfDay h' m' s' | (h', m', s') <- shrinkUnchecked (h, m, s)]  instance GenValid TimeOfDay where-    genValid =-        TimeOfDay <$> (genValid `suchThat` (>= 0) `suchThat` (<= 23)) <*>-        (genValid `suchThat` (>= 0) `suchThat` (<= 59)) <*>-        (genValid `suchThat` (>= 0) `suchThat` (<= 60))+  genValid =+    TimeOfDay <$> (choose (0, 23)) <*> (choose (0, 59)) <*>+    (MkFixed <$> choose (0, 60999999999999))  instance GenInvalid TimeOfDay  instance GenUnchecked LocalTime where-    genUnchecked = LocalTime <$> genUnchecked <*> genUnchecked-    shrinkUnchecked (LocalTime d tod) =-        [LocalTime d' tod' | (d', tod') <- shrinkUnchecked (d, tod)]+  genUnchecked = LocalTime <$> genUnchecked <*> genUnchecked+  shrinkUnchecked (LocalTime d tod) =+    [LocalTime d' tod' | (d', tod') <- shrinkUnchecked (d, tod)]  instance GenValid LocalTime where-    genValid = LocalTime <$> genValid <*> genValid+  genValid = LocalTime <$> genValid <*> genValid  instance GenInvalid LocalTime  instance GenUnchecked ZonedTime where-    genUnchecked = ZonedTime <$> genUnchecked <*> genUnchecked-    shrinkUnchecked (ZonedTime lt tz) =-        [ZonedTime lt' tz' | (lt', tz') <- shrinkUnchecked (lt, tz)]+  genUnchecked = ZonedTime <$> genUnchecked <*> genUnchecked+  shrinkUnchecked (ZonedTime lt tz) =+    [ZonedTime lt' tz' | (lt', tz') <- shrinkUnchecked (lt, tz)]  instance GenValid ZonedTime where-    genValid = ZonedTime <$> genValid <*> genValid+  genValid = ZonedTime <$> genValid <*> genValid  instance GenInvalid ZonedTime