@@ -43,7 +43,7 @@ import Data.Scientific (Scientific)
43import Data.Sequence (Seq)
43import Data.Sequence (Seq)
44import Data.Tagged (Tagged(..))
44import Data.Tagged (Tagged(..))
45import Data.Text (Text)
45import Data.Text (Text)
46−import Data.Time (UTCTime)
46+import Data.Time (UTCTime, Day, fromGregorian)
47import Data.Time.Format (parseTime)
47import Data.Time.Format (parseTime)
48import Data.Time.Locale.Compat (defaultTimeLocale)
48import Data.Time.Locale.Compat (defaultTimeLocale)
49import Data.Word (Word8)
49import Data.Word (Word8)
@@ -99,6 +99,10 @@ tests = testGroup "unit" [
99 testCase "good" $ utcTimeGood
99 testCase "good" $ utcTimeGood
100 , testCase "bad" $ utcTimeBad
100 , testCase "bad" $ utcTimeBad
103+ testCase "encode normal" $ dayEncodeCE
104+ , testCase "encode BCE" $ dayEncodeBCE
102 , testGroup "formatError" [
106 , testGroup "formatError" [
103 testCase "example 1" $ formatErrorExample
107 testCase "example 1" $ formatErrorExample
@@ -242,6 +246,20 @@ utcTimeBad = do
242 let (dec :: Maybe UTCTime) = decode . LT.encodeUtf8 $ (LT.concat ["\"", s, "\""]) in
246 let (dec :: Maybe UTCTime) = decode . LT.encodeUtf8 $ (LT.concat ["\"", s, "\""]) in
243 assertEqual "verify failure" Nothing dec
247 assertEqual "verify failure" Nothing dec
249+dayEncodeCE :: Assertion
251+ let ceDay = fromGregorian 1234 12 5
252+ assertEqual "Encode a CE day works appropriately" (encode ceDay) "\"1234-12-05\""
254+dayEncodeBCE :: Assertion
256+ let zeroDay = fromGregorian 0 6 11
257+ bceDay = fromGregorian (-100) 5 13
258+ wayEarly = fromGregorian (-10000) 3 3
259+ assertEqual "Encode a zero year day works appropriately" (encode zeroDay) "\"0000-06-11\""
260+ assertEqual "Encode a BCE day works appropriately" (encode bceDay) "\"-0100-05-13\""
261+ assertEqual "Encode a really early day works appropriately" (encode wayEarly) "\"-10000-03-03\""
245-- Non identifier keys should be escaped & enclosed in brackets
263-- Non identifier keys should be escaped & enclosed in brackets
246formatErrorExample :: Assertion
264formatErrorExample :: Assertion
247formatErrorExample =
265formatErrorExample =