main.hs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. {-# LANGUAGE OverloadedStrings #-}
  2. import Test.Hspec
  3. import Data.Time (TimeOfDay (TimeOfDay))
  4. import Data.Text (pack)
  5. import Yesod.Form.Fields (parseTime)
  6. import Yesod.Form.Types
  7. main :: IO ()
  8. main = hspec $
  9. describe "parseTime" $ mapM_ (\(s, e) -> it s $ parseTime (pack s) `shouldBe` e)
  10. [ ("01:00:00", Right $ TimeOfDay 1 0 0)
  11. , ("1:00", Right $ TimeOfDay 1 0 0)
  12. , ("1:00 AM", Right $ TimeOfDay 1 0 0)
  13. , ("1:00 am", Right $ TimeOfDay 1 0 0)
  14. , ("1:00AM", Right $ TimeOfDay 1 0 0)
  15. , ("1:00am", Right $ TimeOfDay 1 0 0)
  16. , ("01:00:00am", Right $ TimeOfDay 1 0 0)
  17. , ("01:00:00 am", Right $ TimeOfDay 1 0 0)
  18. , ("01:00:00AM", Right $ TimeOfDay 1 0 0)
  19. , ("01:00:00 AM", Right $ TimeOfDay 1 0 0)
  20. , ("1:00:01", Right $ TimeOfDay 1 0 1)
  21. , ("1:00:02 AM", Right $ TimeOfDay 1 0 2)
  22. , ("1:00:04 am", Right $ TimeOfDay 1 0 4)
  23. , ("1:00:05 am", Right $ read "01:00:05")
  24. , ("1:00:64 am", Left $ MsgInvalidSecond "64")
  25. , ("1:00:4 am", Left $ MsgInvalidSecond "4")
  26. , ("0:00", Right $ TimeOfDay 0 0 0)
  27. , ("12:00am", Right $ TimeOfDay 0 0 0)
  28. , ("12:59:59am", Right $ TimeOfDay 0 59 59)
  29. , ("12:59:60am", Left $ MsgInvalidSecond "60")
  30. , ("12:60:59am", Left $ MsgInvalidMinute "60")
  31. , ("12:00pm", Right $ TimeOfDay 12 0 0)
  32. , ("12:59:59pm", Right $ TimeOfDay 12 59 59)
  33. , ("12:59:60pm", Left $ MsgInvalidSecond "60")
  34. , ("12:60:59pm", Left $ MsgInvalidMinute "60")
  35. , ("12:7pm", Left $ MsgInvalidMinute "7")
  36. , ("23:47", Right $ TimeOfDay 23 47 0)
  37. ]