packages feed

aws-sdk-xml-unordered 0.1.0.1 → 0.1.1

raw patch · 3 files changed

+37/−1 lines, 3 files

Files

aws-sdk-xml-unordered.cabal view
@@ -1,5 +1,5 @@ name:                aws-sdk-xml-unordered-version:             0.1.0.1+version:             0.1.1 synopsis:            The xml parser for aws-sdk description:         This package provides the unordered xml parser for aws-sdk. license:             BSD3
src/Cloud/AWS/Lib/Parser/Unordered.hs view
@@ -10,6 +10,7 @@     , getElementM     , getElement     , getElements+    , content     ) where  import Cloud.AWS.Lib.FromText (FromText (..))@@ -163,3 +164,7 @@ getElements xml set item parse = case getSubXMLM xml set of     Just xml' -> mapM parse $ getSubXMLs xml' item     Nothing -> return []++content :: MonadThrow m => SimpleXML -> m Text+content (Content t) = return t+content _           = fail "This is not a content."
test/test.hs view
@@ -20,6 +20,8 @@         it "cannot parse unexpected xml structure" notParseUnexpectedDataStructure         it "ignore unexpected tag" ignoreUnexpectedTag         it "parse top data set" parseTopDataSet+        it "parse list of text" parseList+        it "cannot parse list of text" parseListFailure     describe "xml parser of maybe version" $         it "parse empty xml" parseEmpty     describe "xml parser of conduit version" $ do@@ -345,3 +347,32 @@         , "</dataSet>"         ]     input' = []++parseList :: Expectation+parseList = do+    d <- runResourceT $ parseLBS def input $$+        xmlParser (\xml -> getElements xml "dataSet" "data" content)+    d `shouldBe` input'+  where+    input = L.concat+        [ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"+        , "<dataSet>"+        , "<data>item</data>"+        , "<data>item</data>"+        , "<data>item</data>"+        , "</dataSet>"+        ]+    input' = ["item", "item", "item"]++parseListFailure :: Expectation+parseListFailure = do+    runResourceT $ parseLBS def input $$+        xmlParser (\xml -> getElements xml "dataSet" "data" content)+    `shouldThrow` errorCall "This is not a content."+  where+    input = L.concat+        [ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"+        , "<dataSet>"+        , "<data><dummy/></data>"+        , "</dataSet>"+        ]