@@ -93,6 +93,32 @@ spec = do
93 Xsd.restrictionBase restriction `shouldBe`
93 Xsd.restrictionBase restriction `shouldBe`
94 Xsd.Ref (Xsd.QName (Just (Xsd.Namespace "something")) "string")
94 Xsd.Ref (Xsd.QName (Just (Xsd.Namespace "something")) "string")
96+ context "when restriction contains enumerations" $ do
97+ it "parses them" $ do
101+ (Map.fromList [("xmlns:xs","something")])
102+ [NodeElement $ mkElem "simpleType"
103+ (Map.fromList [("name", "str")])
104+ [NodeElement $ mkElem "restriction"
105+ (Map.fromList [("base", "xs:string")])
106+ [ NodeElement $ mkElem "enumeration"
107+ (Map.fromList [("value", "value1")]) []
108+ , NodeElement $ mkElem "enumeration"
109+ (Map.fromList [("value", "value2")]) []
111+ res = Xsd.parse Xsd.defaultConfig doc
112+ Right [Xsd.ChildType tpName (Xsd.TypeSimple t)] =
113+ fmap Xsd.children res
114+ Xsd.AtomicType restriction _ = t
115+ res `shouldSatisfy` isRight
116+ tpName `shouldBe` (Xsd.QName Nothing "str")
117+ Xsd.restrictionConstraints restriction `shouldBe`
118+ [ Xsd.Enumeration "value1"
119+ , Xsd.Enumeration "value2"
96 context "when restrication base is inlined" $ do
122 context "when restrication base is inlined" $ do
97 it "parses it" $ do
123 it "parses it" $ do
@@ -117,7 +143,7 @@ spec = do
117 Xsd.restrictionBase restriction `shouldBe`
143 Xsd.restrictionBase restriction `shouldBe`
118 Xsd.Ref (Xsd.QName (Just (Xsd.Namespace "something")) "string")
144 Xsd.Ref (Xsd.QName (Just (Xsd.Namespace "something")) "string")
120− context "when base is refers to an unbound prefix" $ do
146+ context "when base refers to an unbound prefix" $ do
121 it "fails" $ do
147 it "fails" $ do
123 doc = mkDoc $
149 doc = mkDoc $