module ParsecParserTest ( testData ) where import Data.Time import Data.Time.W3C hiding (parse) import Data.Time.W3C.Parser.Parsec import Test.HUnit import Text.Parsec parseW3C :: String -> Either String W3CDateTime parseW3C src = case parse w3cDateTime "" src of Left err -> Left (show err) Right w3c -> Right w3c parseW3C' :: String -> Maybe W3CDateTime parseW3C' src = case parse w3cDateTime "" src of Left _ -> Nothing Right w3c -> Just w3c testData :: [Test] testData = [ parseW3C "2010" ~?= Right (W3CDateTime 2010 Nothing Nothing Nothing Nothing Nothing Nothing) , parseW3C "2010-12" ~?= Right (W3CDateTime 2010 (Just 12) Nothing Nothing Nothing Nothing Nothing) , parseW3C "2010-12-31" ~?= Right (W3CDateTime 2010 (Just 12) (Just 31) Nothing Nothing Nothing Nothing) , parseW3C "2010-12-31T01:23Z" ~?= Right (W3CDateTime 2010 (Just 12) (Just 31) (Just 1) (Just 23) Nothing (Just (hoursToTimeZone 0))) , parseW3C "2010-12-31T01:23:45+09:00" ~?= Right (W3CDateTime 2010 (Just 12) (Just 31) (Just 1) (Just 23) (Just 45) (Just (hoursToTimeZone 9))) , parseW3C "2010-12-31T01:23:45.666666+09:00" ~?= Right (W3CDateTime 2010 (Just 12) (Just 31) (Just 1) (Just 23) (Just 45.666666) (Just (hoursToTimeZone 9))) , parseW3C' "" ~?= Nothing , parseW3C' "99-01-01" ~?= Nothing , parseW3C' "2010-01-01T" ~?= Nothing , parseW3C' "2010-01-01T10Z" ~?= Nothing , parseW3C' "2010-01-01T11:22" ~?= Nothing , parseW3C' "2010-01-01T11:22:33" ~?= Nothing , parseW3C' "2010-01-01T11:22:33.Z" ~?= Nothing ]