amazonka-core-2.0: test/Test/Amazonka/Data/Time.hs
-- |
-- Module : Test.Amazonka.Data.Time
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability : provisional
-- Portability : non-portable (GHC extensions)
module Test.Amazonka.Data.Time (tests) where
import Amazonka.Data
import Amazonka.Prelude
import qualified Data.Time as Time
import Test.Amazonka.Util
import Test.Tasty
tests :: TestTree
tests =
testGroup
"time"
[ testGroup
"text"
[ testGroup
"deserialise"
[ testFromText
"rfc822 - UTC"
"Fri, 07 Nov 2014 04:42:13 UTC"
(time :: RFC822),
testFromText
"rfc822 - GMT"
"Fri, 07 Nov 2014 04:42:13 GMT"
(time :: RFC822),
testFromText
"rfc822 - PST"
"Fri, 06 Nov 2014 20:42:13 PST"
(time :: RFC822),
testFromText
"iso8601"
"2014-11-07T04:42:13.000Z"
(time :: ISO8601),
testFromText
"aws"
"20141107T044213Z"
(time :: AWSTime)
],
testGroup
"serialise"
[ testToText
"rfc822"
"Fri, 07 Nov 2014 04:42:13 GMT"
(time :: RFC822),
testToText
"iso8601"
"2014-11-07T04:42:13Z"
(time :: ISO8601),
testToText
"aws"
"20141107T044213Z"
(time :: AWSTime)
]
],
testGroup
"query"
[ testGroup
"serialise"
[ testToQuery
"rfc822"
"x=Fri%2C%2007%20Nov%202014%2004%3A42%3A13%20GMT"
(time :: RFC822),
testToQuery
"iso8601"
"x=2014-11-07T04%3A42%3A13Z"
(time :: ISO8601),
testToQuery
"aws"
"x=20141107T044213Z"
(time :: AWSTime)
]
],
testGroup
"xml"
[ testGroup
"deserialise"
[ testFromXML
"rfc822"
"Fri, 07 Nov 2014 04:42:13 GMT"
(time :: RFC822),
testFromXML
"iso8601"
"2014-11-07T04:42:13.000Z"
(time :: ISO8601),
testFromXML
"aws"
"20141107T044213Z"
(time :: AWSTime)
],
testGroup
"serialise"
[ testToXML
"rfc822"
"Fri, 07 Nov 2014 04:42:13 GMT"
(time :: RFC822),
testToXML
"iso8601"
"2014-11-07T04:42:13Z"
(time :: ISO8601),
testToXML
"aws"
"20141107T044213Z"
(time :: AWSTime)
]
],
testGroup
"json"
[ testGroup
"deserialise"
[ testFromJSON
"rfc822"
(str "Fri, 07 Nov 2014 04:42:13 GMT")
(time :: RFC822),
testFromJSON
"iso8601"
(str "2014-11-07T04:42:13.000Z")
(time :: ISO8601),
testFromJSON
"aws"
(str "20141107T044213Z")
(time :: AWSTime),
testGroup
"posix"
[ testFromJSON
"integer"
"1415335333"
(time :: POSIX),
testFromJSON
"double"
"1415335333.000"
(time :: POSIX),
testFromJSON
"scientific"
"1.415335333E9"
(time :: POSIX)
]
],
testGroup
"serialise"
[ testToJSON
"rfc822"
(str "Fri, 07 Nov 2014 04:42:13 GMT")
(time :: RFC822),
testToJSON
"iso8601"
(str "2014-11-07T04:42:13Z")
(time :: ISO8601),
testToJSON
"aws"
(str "20141107T044213Z")
(time :: AWSTime),
testToJSON
"posix"
"1415335333"
(time :: POSIX)
]
]
]
time :: Time a
time =
Time . fromMaybe (error msg) $
Time.parseTimeM True Time.defaultTimeLocale fmt ts
where
msg = "Unable to parse time: " ++ ts
fmt = "%FT%H:%M:%S"
ts = "2014-11-07T04:42:13"