6 module Main (main) where
7 import Control.Applicative
8 import Control.Applicative.Unicode
10 import qualified Data.Time.Asctime as Asctime
12 import Prelude.Unicode
13 import Test.QuickCheck
16 main = mapM_ runTest tests
18 runTest ∷ Property → IO ()
20 = do r ← quickCheckResult prop
22 Success {} → return ()
23 GaveUp {} → exitFailure
24 Failure {} → exitFailure
25 NoExpectedFailure {} → exitFailure
27 instance Arbitrary Day where
28 arbitrary = ModifiedJulianDay <$> arbitrary
30 instance Arbitrary TimeOfDay where
32 = do h ← choose (0, 23)
35 return $ TimeOfDay h m (fromIntegral (s ∷ Int))
37 instance Arbitrary LocalTime where
38 arbitrary = LocalTime <$> arbitrary ⊛ arbitrary
42 property ( Asctime.fromAscii "Sun Nov 6 08:49:37 1994"
43 ≡ Right (LocalTime (ModifiedJulianDay 49662) (TimeOfDay 8 49 37)) )
44 , property ( Asctime.toAscii (LocalTime (ModifiedJulianDay 49662) (TimeOfDay 8 49 37))
45 ≡ "Sun Nov 6 08:49:37 1994" )
46 , property $ \lt → Right lt ≡ Asctime.fromAscii (Asctime.toAscii lt)