Add the first steps the clustering
[gargantext.git] / src-test / Parsers / Types.hs
index 9f9078b93a80c19563346ad7e3c76a8b0402b8b7..7aee900973ff643c5bbf11de6a42814ceeaa4f20 100644 (file)
@@ -1,13 +1,51 @@
-{-# LANGUAGE NoImplicitPrelude #-}
+{-|
+Module      : Parsers.Types
+Description : 
+Copyright   : (c) CNRS, 2017-Present
+License     : AGPL + CECILL v3
+Maintainer  : team@gargantext.org
+Stability   : experimental
+Portability : POSIX
+
+Here is a longer description of this module, containing some
+commentary with @some markup@.
+-}
+
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
+{-# LANGUAGE NoImplicitPrelude    #-}
+{-# LANGUAGE StandaloneDeriving   #-}
 
 module Parsers.Types where
 
 import Gargantext.Prelude
 
 import Test.QuickCheck
+import Test.QuickCheck.Instances ()
 
 import Text.Parsec.Pos
-import Text.Parsec.Error (ParseError(..), Message(..), newErrorMessage)
+import Text.Parsec.Error (ParseError, Message(..), newErrorMessage)
+import Data.Time.LocalTime (ZonedTime (..), TimeZone (..), TimeOfDay(..), LocalTime(..))
+import Data.Eq (Eq(..))
+import Data.Either (Either(..))
+
+deriving instance Eq ZonedTime
+
+looseTimeOfDayPrecision :: TimeOfDay -> TimeOfDay
+looseTimeOfDayPrecision (TimeOfDay h m _) = TimeOfDay h m 0
+
+looseLocalTimePrecision :: LocalTime -> LocalTime
+looseLocalTimePrecision (LocalTime ld ltd) = LocalTime ld $ looseTimeOfDayPrecision ltd
+
+looseTimeZonePrecision :: TimeZone -> TimeZone
+looseTimeZonePrecision (TimeZone zm _ _) = TimeZone zm False "CET"
+
+looseZonedTimePrecision :: ZonedTime -> ZonedTime
+looseZonedTimePrecision (ZonedTime lt tz) = ZonedTime (looseLocalTimePrecision lt) $ looseTimeZonePrecision tz
+
+loosePrecisionEitherPEZT :: Either ParseError ZonedTime -> Either ParseError ZonedTime
+loosePrecisionEitherPEZT (Right zt) = Right $ looseZonedTimePrecision zt
+loosePrecisionEitherPEZT pe = pe
 
 instance Arbitrary Message where
   arbitrary = do