{-# LANGUAGE OverloadedStrings #-}
import Data.Hourglass.Types.Orphans
import Data.Aeson.Types
import Test.Hspec
import Data.Hourglass.Types
import Data.Text
main :: IO ()
main =
hspec $
do describe "Month instance" $
do it "January" $
do let x = January :: Month
toJSON x `shouldBe` (String "January")
it "December" $
do let x = December :: Month
toJSON x `shouldBe` (String "December")
describe "Weekday instance" $
do it "Sunday" $
do let x = Sunday :: WeekDay
toJSON x `shouldBe` (String "Sunday")
it "Friday" $
do let x = Friday :: WeekDay
toJSON x `shouldBe` (String "Friday")
describe "NanoSeconds" $
do it "90000" $
do let x = NanoSeconds 90000
toJSON x `shouldBe` (Number 90000.0)
describe "Elapsed" $
do it "sample 1" $
do let x = Elapsed 500
toJSON x `shouldBe` (Number 500.0)
describe "Date" $
do it "sample 1" $
do let x =
Date
{ dateYear = 2000
, dateMonth = January
, dateDay = 3
}
toJSON x `shouldBe`
object
[ ("dateMonth", String "January")
, ("dateDay", Number 3.0)
, ("dateYear", Number 2000.0)
]