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 +1/−1
- src/Cloud/AWS/Lib/Parser/Unordered.hs +5/−0
- test/test.hs +31/−0
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>"+ ]