Skip to content
Snippets Groups Projects
Commit d6863ffe authored by Ashley Yakeley's avatar Ashley Yakeley
Browse files

Better leap-second handling

parent 171ee88f
No related branches found
No related tags found
No related merge requests found
{-# OPTIONS -fno-warn-unused-imports #-} {-# OPTIONS -fno-warn-unused-imports #-}
#include "HsConfigure.h" #include "HsConfigure.h"
-- | TAI and leap-second tables for converting to UTC: most people won't need this module. -- | TAI and leap-second maps for converting to UTC: most people won't need this module.
module Data.Time.Clock.TAI module Data.Time.Clock.TAI
( (
-- TAI arithmetic -- TAI arithmetic
AbsoluteTime,taiEpoch,addAbsoluteTime,diffAbsoluteTime, AbsoluteTime,taiEpoch,addAbsoluteTime,diffAbsoluteTime,
-- leap-second table type -- leap-second map type
LeapSecondTable, LeapSecondMap,
-- conversion between UTC and TAI with table -- conversion between UTC and TAI with map
utcDayLength,utcToTAITime,taiToUTCTime, utcDayLength,utcToTAITime,taiToUTCTime,
parseTAIUTCDATFile
) where ) where
import Data.Time.LocalTime import Data.Time.LocalTime
import Data.Time.Calendar.Days import Data.Time.Calendar.Days
import Data.Time.Clock import Data.Time.Clock
import Control.DeepSeq import Control.DeepSeq
import Data.Maybe
import Data.Typeable import Data.Typeable
import Data.Fixed import Data.Fixed
#if LANGUAGE_Rank2Types #if LANGUAGE_Rank2Types
...@@ -26,7 +25,7 @@ import Data.Data ...@@ -26,7 +25,7 @@ import Data.Data
#endif #endif
-- | AbsoluteTime is TAI, time as measured by a clock. -- | AbsoluteTime is TAI, time as measured by a clock.
newtype AbsoluteTime = MkAbsoluteTime {unAbsoluteTime :: DiffTime} deriving (Eq,Ord newtype AbsoluteTime = MkAbsoluteTime DiffTime deriving (Eq,Ord
#if LANGUAGE_DeriveDataTypeable #if LANGUAGE_DeriveDataTypeable
#if LANGUAGE_Rank2Types #if LANGUAGE_Rank2Types
#if HAS_DataPico #if HAS_DataPico
...@@ -40,7 +39,7 @@ instance NFData AbsoluteTime where ...@@ -40,7 +39,7 @@ instance NFData AbsoluteTime where
rnf (MkAbsoluteTime a) = rnf a rnf (MkAbsoluteTime a) = rnf a
instance Show AbsoluteTime where instance Show AbsoluteTime where
show t = show (utcToLocalTime utc (taiToUTCTime (const 0) t)) ++ " TAI" -- ugly, but standard apparently show t = show (utcToLocalTime utc (fromJust (taiToUTCTime (const (Just 0)) t))) ++ " TAI" -- ugly, but standard apparently
-- | The epoch of TAI, which is 1858-11-17 00:00:00 TAI. -- | The epoch of TAI, which is 1858-11-17 00:00:00 TAI.
taiEpoch :: AbsoluteTime taiEpoch :: AbsoluteTime
...@@ -57,87 +56,31 @@ diffAbsoluteTime (MkAbsoluteTime a) (MkAbsoluteTime b) = a - b ...@@ -57,87 +56,31 @@ diffAbsoluteTime (MkAbsoluteTime a) (MkAbsoluteTime b) = a - b
-- | TAI - UTC during this day. -- | TAI - UTC during this day.
-- No table is provided, as any program compiled with it would become -- No table is provided, as any program compiled with it would become
-- out of date in six months. -- out of date in six months.
type LeapSecondTable = Day -> Integer type LeapSecondMap m = Day -> m Int
utcDayLength :: LeapSecondTable -> Day -> DiffTime utcDayLength :: Monad m => LeapSecondMap m -> Day -> m DiffTime
utcDayLength table day = realToFrac (86400 + (table (addDays 1 day)) - (table day)) utcDayLength lsmap day = do
i0 <- lsmap day
dayStart :: LeapSecondTable -> Day -> AbsoluteTime i1 <- lsmap $ addDays 1 day
dayStart table day = MkAbsoluteTime (realToFrac ((toModifiedJulianDay day) * 86400 + (table day))) return $ realToFrac (86400 + i1 - i0)
utcToTAITime :: LeapSecondTable -> UTCTime -> AbsoluteTime dayStart :: Monad m => LeapSecondMap m -> Day -> m AbsoluteTime
utcToTAITime table (UTCTime day dtime) = MkAbsoluteTime (t + dtime) where dayStart lsmap day = do
MkAbsoluteTime t = dayStart table day i <- lsmap day
return $ addAbsoluteTime (realToFrac $ (toModifiedJulianDay day) * 86400 + toInteger i) taiEpoch
taiToUTCTime :: LeapSecondTable -> AbsoluteTime -> UTCTime
taiToUTCTime table abstime = stable (ModifiedJulianDay (div' (unAbsoluteTime abstime) 86400)) where utcToTAITime :: Monad m => LeapSecondMap m -> UTCTime -> m AbsoluteTime
stable day = if (day == day') then UTCTime day dtime else stable day' where utcToTAITime lsmap (UTCTime day dtime) = do
dayt = dayStart table day t <- dayStart lsmap day
dtime = diffAbsoluteTime abstime dayt return $ addAbsoluteTime dtime t
day' = addDays (div' dtime (utcDayLength table day)) day
taiToUTCTime :: Monad m => LeapSecondMap m -> AbsoluteTime -> m UTCTime
-- | Parse the contents of a tai-utc.dat file. taiToUTCTime lsmap abstime = let
-- This does not do any kind of validation and will return a bad table for input stable day = do
-- not in the correct format. dayt <- dayStart lsmap day
parseTAIUTCDATFile :: String -> LeapSecondTable len <- utcDayLength lsmap day
parseTAIUTCDATFile ss = offsetlist 0 (parse (lines ss)) where let
offsetlist :: Integer -> [(Day,Integer)] -> LeapSecondTable dtime = diffAbsoluteTime abstime dayt
offsetlist i [] _ = i day' = addDays (div' dtime len) day
offsetlist i ((d0,_):_) d | d < d0 = i if day == day' then return (UTCTime day dtime) else stable day'
offsetlist _ ((_,i0):xx) d = offsetlist i0 xx d in stable $ ModifiedJulianDay $ div' (diffAbsoluteTime abstime taiEpoch) 86400
parse :: [String] -> [(Day,Integer)]
parse [] = []
parse (a:as) = let
ps = parse as
in case matchLine a of
Just di -> di:ps
Nothing -> ps
matchLine :: String -> Maybe (Day,Integer)
matchLine s = do
check0S s
(d,s') <- findJD s
i <- findOffset s'
return (d,i)
-- a bit fragile
check0S :: String -> Maybe ()
check0S "X 0.0 S" = Just ()
check0S [] = Nothing
check0S (_:cs) = check0S cs
findJD :: String -> Maybe (Day,String)
findJD ('=':'J':'D':s) = do
d <- getInteger '5' s
return (ModifiedJulianDay (d - 2400000),s)
findJD [] = Nothing
findJD (_:cs) = findJD cs
findOffset :: String -> Maybe Integer
findOffset ('T':'A':'I':'-':'U':'T':'C':'=':s) = getInteger '0' s
findOffset [] = Nothing
findOffset (_:cs) = findOffset cs
getInteger :: Char -> String -> Maybe Integer
getInteger p s = do
digits <- getDigits p s
fromDigits 0 digits
getDigits :: Char -> String -> Maybe String
getDigits p (' ':s) = getDigits p s
getDigits p (c:cs) | c >= '0' && c <= '9' = do
s <- getDigits p cs
return (c:s)
getDigits p ('.':p1:_) = if p == p1 then Just [] else Nothing
getDigits _ _ = Nothing
fromDigits :: Integer -> String -> Maybe Integer
fromDigits i [] = Just i
fromDigits i (c:cs) | c >= '0' && c <= '9' = fromDigits ((i * 10) + (fromIntegral ((fromEnum c) - (fromEnum '0')))) cs
fromDigits _ _ = Nothing
-- typical line format:
-- 1972 JAN 1 =JD 2441317.5 TAI-UTC= 10.0 S + (MJD - 41317.) X 0.0 S
-- 1972 JUL 1 =JD 2441499.5 TAI-UTC= 11.0 S + (MJD - 41317.) X 0.0 S
module Test.TAI_UTC_DAT where
taiUTC_DAT :: String
taiUTC_DAT =
unlines
[ "1961 JAN 1 =JD 2437300.5 TAI-UTC= 1.4228180 S + (MJD - 37300.) X 0.001296 S"
, "1961 AUG 1 =JD 2437512.5 TAI-UTC= 1.3728180 S + (MJD - 37300.) X 0.001296 S"
, "1962 JAN 1 =JD 2437665.5 TAI-UTC= 1.8458580 S + (MJD - 37665.) X 0.0011232S"
, "1963 NOV 1 =JD 2438334.5 TAI-UTC= 1.9458580 S + (MJD - 37665.) X 0.0011232S"
, "1964 JAN 1 =JD 2438395.5 TAI-UTC= 3.2401300 S + (MJD - 38761.) X 0.001296 S"
, "1964 APR 1 =JD 2438486.5 TAI-UTC= 3.3401300 S + (MJD - 38761.) X 0.001296 S"
, "1964 SEP 1 =JD 2438639.5 TAI-UTC= 3.4401300 S + (MJD - 38761.) X 0.001296 S"
, "1965 JAN 1 =JD 2438761.5 TAI-UTC= 3.5401300 S + (MJD - 38761.) X 0.001296 S"
, "1965 MAR 1 =JD 2438820.5 TAI-UTC= 3.6401300 S + (MJD - 38761.) X 0.001296 S"
, "1965 JUL 1 =JD 2438942.5 TAI-UTC= 3.7401300 S + (MJD - 38761.) X 0.001296 S"
, "1965 SEP 1 =JD 2439004.5 TAI-UTC= 3.8401300 S + (MJD - 38761.) X 0.001296 S"
, "1966 JAN 1 =JD 2439126.5 TAI-UTC= 4.3131700 S + (MJD - 39126.) X 0.002592 S"
, "1968 FEB 1 =JD 2439887.5 TAI-UTC= 4.2131700 S + (MJD - 39126.) X 0.002592 S"
, "1972 JAN 1 =JD 2441317.5 TAI-UTC= 10.0 S + (MJD - 41317.) X 0.0 S"
, "1972 JUL 1 =JD 2441499.5 TAI-UTC= 11.0 S + (MJD - 41317.) X 0.0 S"
, "1973 JAN 1 =JD 2441683.5 TAI-UTC= 12.0 S + (MJD - 41317.) X 0.0 S"
, "1974 JAN 1 =JD 2442048.5 TAI-UTC= 13.0 S + (MJD - 41317.) X 0.0 S"
, "1975 JAN 1 =JD 2442413.5 TAI-UTC= 14.0 S + (MJD - 41317.) X 0.0 S"
, "1976 JAN 1 =JD 2442778.5 TAI-UTC= 15.0 S + (MJD - 41317.) X 0.0 S"
, "1977 JAN 1 =JD 2443144.5 TAI-UTC= 16.0 S + (MJD - 41317.) X 0.0 S"
, "1978 JAN 1 =JD 2443509.5 TAI-UTC= 17.0 S + (MJD - 41317.) X 0.0 S"
, "1979 JAN 1 =JD 2443874.5 TAI-UTC= 18.0 S + (MJD - 41317.) X 0.0 S"
, "1980 JAN 1 =JD 2444239.5 TAI-UTC= 19.0 S + (MJD - 41317.) X 0.0 S"
, "1981 JUL 1 =JD 2444786.5 TAI-UTC= 20.0 S + (MJD - 41317.) X 0.0 S"
, "1982 JUL 1 =JD 2445151.5 TAI-UTC= 21.0 S + (MJD - 41317.) X 0.0 S"
, "1983 JUL 1 =JD 2445516.5 TAI-UTC= 22.0 S + (MJD - 41317.) X 0.0 S"
, "1985 JUL 1 =JD 2446247.5 TAI-UTC= 23.0 S + (MJD - 41317.) X 0.0 S"
, "1988 JAN 1 =JD 2447161.5 TAI-UTC= 24.0 S + (MJD - 41317.) X 0.0 S"
, "1990 JAN 1 =JD 2447892.5 TAI-UTC= 25.0 S + (MJD - 41317.) X 0.0 S"
, "1991 JAN 1 =JD 2448257.5 TAI-UTC= 26.0 S + (MJD - 41317.) X 0.0 S"
, "1992 JUL 1 =JD 2448804.5 TAI-UTC= 27.0 S + (MJD - 41317.) X 0.0 S"
, "1993 JUL 1 =JD 2449169.5 TAI-UTC= 28.0 S + (MJD - 41317.) X 0.0 S"
, "1994 JUL 1 =JD 2449534.5 TAI-UTC= 29.0 S + (MJD - 41317.) X 0.0 S"
, "1996 JAN 1 =JD 2450083.5 TAI-UTC= 30.0 S + (MJD - 41317.) X 0.0 S"
, "1997 JUL 1 =JD 2450630.5 TAI-UTC= 31.0 S + (MJD - 41317.) X 0.0 S"
, "1999 JAN 1 =JD 2451179.5 TAI-UTC= 32.0 S + (MJD - 41317.) X 0.0 S"
, "2006 JAN 1 =JD 2453736.5 TAI-UTC= 33.0 S + (MJD - 41317.) X 0.0 S" ]
module Test.TestParseDAT where
import Data.Time
import Data.Time.Clock.TAI
import Test.TestUtil
import Test.TestParseDAT_Ref
import Test.TAI_UTC_DAT
tods :: [TimeOfDay]
tods = [
TimeOfDay 0 0 0,
TimeOfDay 0 0 0.5,
TimeOfDay 0 0 1,
TimeOfDay 0 0 1.5,
TimeOfDay 0 0 2,
TimeOfDay 23 59 28,
TimeOfDay 23 59 28.5,
TimeOfDay 23 59 29,
TimeOfDay 23 59 29.5,
TimeOfDay 23 59 30,
TimeOfDay 23 59 30.5,
TimeOfDay 23 59 31,
TimeOfDay 23 59 31.5,
TimeOfDay 23 59 32,
TimeOfDay 23 59 59,
TimeOfDay 23 59 59.5,
TimeOfDay 23 59 60,
TimeOfDay 23 59 60.5
]
times :: [LocalTime]
times =
fmap (LocalTime (fromGregorian 1998 04 02)) tods ++
fmap (LocalTime (fromGregorian 1998 12 30)) tods ++
fmap (LocalTime (fromGregorian 1998 12 31)) tods ++
fmap (LocalTime (fromGregorian 1999 01 01)) tods ++
fmap (LocalTime (fromGregorian 1999 01 02)) tods
testParseDAT :: Test
testParseDAT = pureTest "testParseDAT" $ diff testParseDAT_Ref parseDAT where
parseDAT =
let lst = parseTAIUTCDATFile taiUTC_DAT in
unlines $ map
(\lt ->
let
utcTime = localTimeToUTC utc lt
taiTime = utcToTAITime lst utcTime
utcTime' = taiToUTCTime lst taiTime
in if utcTime == utcTime'
then unwords [show utcTime, "==", show taiTime]
else unwords [ "correction:", show utcTime, "->", show taiTime, "->", show utcTime']
)
times
module Test.TestParseDAT_Ref where
testParseDAT_Ref :: String
testParseDAT_Ref =
unlines
[ "1998-04-02 00:00:00 UTC == 1998-04-02 00:00:31 TAI"
, "1998-04-02 00:00:00.5 UTC == 1998-04-02 00:00:31.5 TAI"
, "1998-04-02 00:00:01 UTC == 1998-04-02 00:00:32 TAI"
, "1998-04-02 00:00:01.5 UTC == 1998-04-02 00:00:32.5 TAI"
, "1998-04-02 00:00:02 UTC == 1998-04-02 00:00:33 TAI"
, "1998-04-02 23:59:28 UTC == 1998-04-02 23:59:59 TAI"
, "1998-04-02 23:59:28.5 UTC == 1998-04-02 23:59:59.5 TAI"
, "1998-04-02 23:59:29 UTC == 1998-04-03 00:00:00 TAI"
, "1998-04-02 23:59:29.5 UTC == 1998-04-03 00:00:00.5 TAI"
, "1998-04-02 23:59:30 UTC == 1998-04-03 00:00:01 TAI"
, "1998-04-02 23:59:30.5 UTC == 1998-04-03 00:00:01.5 TAI"
, "1998-04-02 23:59:31 UTC == 1998-04-03 00:00:02 TAI"
, "1998-04-02 23:59:31.5 UTC == 1998-04-03 00:00:02.5 TAI"
, "1998-04-02 23:59:32 UTC == 1998-04-03 00:00:03 TAI"
, "1998-04-02 23:59:59 UTC == 1998-04-03 00:00:30 TAI"
, "1998-04-02 23:59:59.5 UTC == 1998-04-03 00:00:30.5 TAI"
, "correction: 1998-04-02 23:59:60 UTC -> 1998-04-03 00:00:31 TAI -> 1998-04-03 00:00:00 UTC"
, "correction: 1998-04-02 23:59:60.5 UTC -> 1998-04-03 00:00:31.5 TAI -> 1998-04-03 00:00:00.5 UTC"
, "1998-12-30 00:00:00 UTC == 1998-12-30 00:00:31 TAI"
, "1998-12-30 00:00:00.5 UTC == 1998-12-30 00:00:31.5 TAI"
, "1998-12-30 00:00:01 UTC == 1998-12-30 00:00:32 TAI"
, "1998-12-30 00:00:01.5 UTC == 1998-12-30 00:00:32.5 TAI"
, "1998-12-30 00:00:02 UTC == 1998-12-30 00:00:33 TAI"
, "1998-12-30 23:59:28 UTC == 1998-12-30 23:59:59 TAI"
, "1998-12-30 23:59:28.5 UTC == 1998-12-30 23:59:59.5 TAI"
, "1998-12-30 23:59:29 UTC == 1998-12-31 00:00:00 TAI"
, "1998-12-30 23:59:29.5 UTC == 1998-12-31 00:00:00.5 TAI"
, "1998-12-30 23:59:30 UTC == 1998-12-31 00:00:01 TAI"
, "1998-12-30 23:59:30.5 UTC == 1998-12-31 00:00:01.5 TAI"
, "1998-12-30 23:59:31 UTC == 1998-12-31 00:00:02 TAI"
, "1998-12-30 23:59:31.5 UTC == 1998-12-31 00:00:02.5 TAI"
, "1998-12-30 23:59:32 UTC == 1998-12-31 00:00:03 TAI"
, "1998-12-30 23:59:59 UTC == 1998-12-31 00:00:30 TAI"
, "1998-12-30 23:59:59.5 UTC == 1998-12-31 00:00:30.5 TAI"
, "correction: 1998-12-30 23:59:60 UTC -> 1998-12-31 00:00:31 TAI -> 1998-12-31 00:00:00 UTC"
, "correction: 1998-12-30 23:59:60.5 UTC -> 1998-12-31 00:00:31.5 TAI -> 1998-12-31 00:00:00.5 UTC"
, "1998-12-31 00:00:00 UTC == 1998-12-31 00:00:31 TAI"
, "1998-12-31 00:00:00.5 UTC == 1998-12-31 00:00:31.5 TAI"
, "1998-12-31 00:00:01 UTC == 1998-12-31 00:00:32 TAI"
, "1998-12-31 00:00:01.5 UTC == 1998-12-31 00:00:32.5 TAI"
, "1998-12-31 00:00:02 UTC == 1998-12-31 00:00:33 TAI"
, "1998-12-31 23:59:28 UTC == 1998-12-31 23:59:59 TAI"
, "1998-12-31 23:59:28.5 UTC == 1998-12-31 23:59:59.5 TAI"
, "1998-12-31 23:59:29 UTC == 1999-01-01 00:00:00 TAI"
, "1998-12-31 23:59:29.5 UTC == 1999-01-01 00:00:00.5 TAI"
, "1998-12-31 23:59:30 UTC == 1999-01-01 00:00:01 TAI"
, "1998-12-31 23:59:30.5 UTC == 1999-01-01 00:00:01.5 TAI"
, "1998-12-31 23:59:31 UTC == 1999-01-01 00:00:02 TAI"
, "1998-12-31 23:59:31.5 UTC == 1999-01-01 00:00:02.5 TAI"
, "1998-12-31 23:59:32 UTC == 1999-01-01 00:00:03 TAI"
, "1998-12-31 23:59:59 UTC == 1999-01-01 00:00:30 TAI"
, "1998-12-31 23:59:59.5 UTC == 1999-01-01 00:00:30.5 TAI"
, "1998-12-31 23:59:60 UTC == 1999-01-01 00:00:31 TAI"
, "1998-12-31 23:59:60.5 UTC == 1999-01-01 00:00:31.5 TAI"
, "1999-01-01 00:00:00 UTC == 1999-01-01 00:00:32 TAI"
, "1999-01-01 00:00:00.5 UTC == 1999-01-01 00:00:32.5 TAI"
, "1999-01-01 00:00:01 UTC == 1999-01-01 00:00:33 TAI"
, "1999-01-01 00:00:01.5 UTC == 1999-01-01 00:00:33.5 TAI"
, "1999-01-01 00:00:02 UTC == 1999-01-01 00:00:34 TAI"
, "1999-01-01 23:59:28 UTC == 1999-01-02 00:00:00 TAI"
, "1999-01-01 23:59:28.5 UTC == 1999-01-02 00:00:00.5 TAI"
, "1999-01-01 23:59:29 UTC == 1999-01-02 00:00:01 TAI"
, "1999-01-01 23:59:29.5 UTC == 1999-01-02 00:00:01.5 TAI"
, "1999-01-01 23:59:30 UTC == 1999-01-02 00:00:02 TAI"
, "1999-01-01 23:59:30.5 UTC == 1999-01-02 00:00:02.5 TAI"
, "1999-01-01 23:59:31 UTC == 1999-01-02 00:00:03 TAI"
, "1999-01-01 23:59:31.5 UTC == 1999-01-02 00:00:03.5 TAI"
, "1999-01-01 23:59:32 UTC == 1999-01-02 00:00:04 TAI"
, "1999-01-01 23:59:59 UTC == 1999-01-02 00:00:31 TAI"
, "1999-01-01 23:59:59.5 UTC == 1999-01-02 00:00:31.5 TAI"
, "correction: 1999-01-01 23:59:60 UTC -> 1999-01-02 00:00:32 TAI -> 1999-01-02 00:00:00 UTC"
, "correction: 1999-01-01 23:59:60.5 UTC -> 1999-01-02 00:00:32.5 TAI -> 1999-01-02 00:00:00.5 UTC"
, "1999-01-02 00:00:00 UTC == 1999-01-02 00:00:32 TAI"
, "1999-01-02 00:00:00.5 UTC == 1999-01-02 00:00:32.5 TAI"
, "1999-01-02 00:00:01 UTC == 1999-01-02 00:00:33 TAI"
, "1999-01-02 00:00:01.5 UTC == 1999-01-02 00:00:33.5 TAI"
, "1999-01-02 00:00:02 UTC == 1999-01-02 00:00:34 TAI"
, "1999-01-02 23:59:28 UTC == 1999-01-03 00:00:00 TAI"
, "1999-01-02 23:59:28.5 UTC == 1999-01-03 00:00:00.5 TAI"
, "1999-01-02 23:59:29 UTC == 1999-01-03 00:00:01 TAI"
, "1999-01-02 23:59:29.5 UTC == 1999-01-03 00:00:01.5 TAI"
, "1999-01-02 23:59:30 UTC == 1999-01-03 00:00:02 TAI"
, "1999-01-02 23:59:30.5 UTC == 1999-01-03 00:00:02.5 TAI"
, "1999-01-02 23:59:31 UTC == 1999-01-03 00:00:03 TAI"
, "1999-01-02 23:59:31.5 UTC == 1999-01-03 00:00:03.5 TAI"
, "1999-01-02 23:59:32 UTC == 1999-01-03 00:00:04 TAI"
, "1999-01-02 23:59:59 UTC == 1999-01-03 00:00:31 TAI"
, "1999-01-02 23:59:59.5 UTC == 1999-01-03 00:00:31.5 TAI"
, "correction: 1999-01-02 23:59:60 UTC -> 1999-01-03 00:00:32 TAI -> 1999-01-03 00:00:00 UTC"
, "correction: 1999-01-02 23:59:60.5 UTC -> 1999-01-03 00:00:32.5 TAI -> 1999-01-03 00:00:00.5 UTC" ]
...@@ -10,7 +10,6 @@ import Test.TestCalendars ...@@ -10,7 +10,6 @@ import Test.TestCalendars
import Test.TestEaster import Test.TestEaster
import Test.TestFormat import Test.TestFormat
import Test.TestMonthDay import Test.TestMonthDay
import Test.TestParseDAT
import Test.TestParseTime import Test.TestParseTime
import Test.TestTime import Test.TestTime
import Test.TestTimeZone import Test.TestTimeZone
...@@ -25,7 +24,6 @@ tests = [ addDaysTest ...@@ -25,7 +24,6 @@ tests = [ addDaysTest
, testEaster , testEaster
, testFormat , testFormat
, testMonthDay , testMonthDay
, testParseDAT
, testParseTime , testParseTime
, testTime , testTime
, testTimeZone , testTimeZone
......
...@@ -132,9 +132,6 @@ test-suite tests ...@@ -132,9 +132,6 @@ test-suite tests
Test.Tests Test.Tests
Test.TestTime Test.TestTime
Test.TestTimeRef Test.TestTimeRef
Test.TestParseDAT
Test.TAI_UTC_DAT
Test.TestParseDAT_Ref
Test.TestParseTime Test.TestParseTime
Test.TestMonthDay Test.TestMonthDay
Test.TestMonthDayRef Test.TestMonthDayRef
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment