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 +27/−0
- genvalidity-time.cabal +18/−2
- src/Data/GenValidity/Time/Clock.hs +25/−20
- src/Data/GenValidity/Time/LocalTime.hs +34/−19
+ 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