packages feed

hourglass-orphans-0.1.0.0: test/Spec.hs

{-# 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)
                   ]