@@ -6,15 +6,16 @@ module Instances where
66import Types
77import Data.Function (on)
88import Control.Monad
9−import Test.QuickCheck (Arbitrary(..), Gen, choose, oneof, elements)
9+import Test.QuickCheck (Arbitrary(..), Gen, choose, oneof, elements, Positive(..))
1010import Data.Time.Clock (DiffTime, UTCTime(..), picosecondsToDiffTime)
1111import Data.Fixed (Pico)
1212import Data.Time (ZonedTime(..), LocalTime(..), TimeZone(..),
1313 hoursToTimeZone, Day(..), TimeOfDay(..),
14− NominalDiffTime)
14+ NominalDiffTime, makeTimeOfDayValid)
1515import qualified Data.Text as T
1616import qualified Data.Map as Map
1717import Data.Text (Text)
18+import Data.Maybe
1819import Data.Aeson.Types
1920import Control.Applicative
2021import Functions
@@ -27,8 +28,15 @@ instance Arbitrary Text where
2728instance (Ord k, Arbitrary k, Arbitrary v) => Arbitrary (Map.Map k v) where
2829 arbitrary = Map.fromList <$> arbitrary
2930
31+instance Arbitrary TimeOfDay where
32+ arbitrary = do
33+ Positive h <- arbitrary
34+ Positive m <- arbitrary
35+ Positive s <- arbitrary
36+ return $ fromMaybe (TimeOfDay 0 0 0 ) (makeTimeOfDayValid h m s)
37+
3038instance Arbitrary LocalTime where
31− arbitrary = return $ LocalTime (ModifiedJulianDay 1) (TimeOfDay 1 2 3)
39+ arbitrary = LocalTime <$> arbitrary <*> arbitrary
3240
3341instance Arbitrary TimeZone where
3442 arbitrary = do