diff options
author | Gert Driesen <drieseng@users.sourceforge.net> | 2009-05-22 15:02:36 +0400 |
---|---|---|
committer | Gert Driesen <drieseng@users.sourceforge.net> | 2009-05-22 15:02:36 +0400 |
commit | 0e09bcbf3c8b784f616294a19af25b29289eb542 (patch) | |
tree | 2e729e26a7930d15247a12f4fe500655be23506b /mcs/class/System.XML/Test | |
parent | 6489cc1e3bdfe3d5c7c9f188d3fdbd3fd09c0cc4 (diff) |
* XmlSchemaTests.cs: added tests for bug #502115.
* extension-attr-redefine-*.xsd: new test files.
svn path=/trunk/mcs/; revision=134592
Diffstat (limited to 'mcs/class/System.XML/Test')
6 files changed, 181 insertions, 1 deletions
diff --git a/mcs/class/System.XML/Test/System.Xml.Schema/ChangeLog b/mcs/class/System.XML/Test/System.Xml.Schema/ChangeLog index d585d347cf0..bbab16234d6 100644 --- a/mcs/class/System.XML/Test/System.Xml.Schema/ChangeLog +++ b/mcs/class/System.XML/Test/System.Xml.Schema/ChangeLog @@ -1,3 +1,7 @@ +2009-05-21 Gert Driesen <drieseng@users.sourceforge.net> + + * XmlSchemaTests.cs: added tests for bug #502115. + 2009-05-07 Jonas Larsson <jonas.larsson@manodo.se> * XmlSchemaValidatorTests.cs : added test for bug #501666. diff --git a/mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaTests.cs b/mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaTests.cs index 59abd6b8253..d719a6a876d 100644 --- a/mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaTests.cs +++ b/mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaTests.cs @@ -20,6 +20,8 @@ namespace MonoTests.System.Xml [TestFixture] public class XmlSchemaTests : XmlSchemaAssertion { + static readonly bool StrictMsCompliant = Environment.GetEnvironmentVariable ("MONO_STRICT_MS_COMPLIANT") == "yes"; + [Test] public void TestRead () { @@ -419,7 +421,135 @@ namespace MonoTests.System.Xml r.Close (); } } - + + [Test] // bug #502115 + public void ExtensionRedefineAttribute1 () + { + const string xml = "<Bar xmlns='foo'/>"; + + XmlSchema schema = GetSchema ("Test/XmlFiles/xsd/extension-attr-redefine-1.xsd"); + +#if NET_2_0 + XmlSchemaSet xss = new XmlSchemaSet (); + xss.Add (schema); + if (StrictMsCompliant) { + xss.Compile (); + } else { + try { + xss.Compile (); + Fail (); + } catch (XmlSchemaException) { + } + return; + } + + StringReader sr = new StringReader (xml); + + XmlReaderSettings settings = new XmlReaderSettings (); + settings.ValidationType = ValidationType.Schema; + settings.Schemas = xss; + XmlReader vr = XmlReader.Create (sr, settings); +#else + if (StrictMsCompliant) { + schema.Compile (null); + } else { + try { + schema.Compile (null); + Fail (); + } catch (XmlSchemaException) { + } + } + + XmlValidatingReader vr = new XmlValidatingReader (xml, + XmlNodeType.Document, null); + vr.Schemas.Add (schema); + vr.ValidationType = ValidationType.Schema; +#endif + + try { + vr.Read (); + Fail (); + } catch (XmlSchemaException) { + } + } + + [Test] // bug #502115 + public void ExtensionRedefineAttribute2 () + { + const string xml = "<Bar xmlns='foo'/>"; + + XmlSchema schema = GetSchema ("Test/XmlFiles/xsd/extension-attr-redefine-2.xsd"); + +#if NET_2_0 + XmlSchemaSet xss = new XmlSchemaSet (); + xss.Add (schema); + xss.Compile (); + + StringReader sr = new StringReader (xml); + + XmlReaderSettings settings = new XmlReaderSettings (); + settings.ValidationType = ValidationType.Schema; + settings.Schemas = xss; + XmlReader vr = XmlReader.Create (sr, settings); +#else + schema.Compile (null); + + XmlValidatingReader vr = new XmlValidatingReader (xml, + XmlNodeType.Document, null); + vr.Schemas.Add (schema); + vr.ValidationType = ValidationType.Schema; +#endif + + while (vr.Read ()) ; + } + + [Test] // bug #502115 + public void ExtensionRedefineAttribute3 () + { + const string xml = "<Bar xmlns='foo'/>"; + + XmlSchema schema = GetSchema ("Test/XmlFiles/xsd/extension-attr-redefine-3.xsd"); + +#if NET_2_0 + XmlSchemaSet xss = new XmlSchemaSet (); + xss.Add (schema); + if (StrictMsCompliant) { + xss.Compile (); + } else { + try { + xss.Compile (); + Fail (); + } catch (XmlSchemaException) { + } + return; + } + + StringReader sr = new StringReader ("<Bar xmlns='foo'/>"); + + XmlReaderSettings settings = new XmlReaderSettings (); + settings.ValidationType = ValidationType.Schema; + settings.Schemas = xss; + XmlReader vr = XmlReader.Create (sr, settings); +#else + if (StrictMsCompliant) { + schema.Compile (null); + } else { + try { + schema.Compile (null); + Fail (); + } catch (XmlSchemaException) { + } + } + + XmlValidatingReader vr = new XmlValidatingReader (xml, + XmlNodeType.Document, null); + vr.Schemas.Add (schema); + vr.ValidationType = ValidationType.Schema; +#endif + + while (vr.Read ()) ; + } + #if NET_2_0 internal class XmlTestResolver : XmlResolver diff --git a/mcs/class/System.XML/Test/XmlFiles/xsd/ChangeLog b/mcs/class/System.XML/Test/XmlFiles/xsd/ChangeLog index d62c4f78d43..64bdb6c1fa6 100644 --- a/mcs/class/System.XML/Test/XmlFiles/xsd/ChangeLog +++ b/mcs/class/System.XML/Test/XmlFiles/xsd/ChangeLog @@ -1,3 +1,7 @@ +2009-05-21 Gert Driesen <drieseng@users.sourceforge.net> + + * extension-attr-redefine-*.xsd: new test files. + 2008-12-15 Atsushi Enomoto <atsushi@ximian.com> * import-subst-dbr-base.xsd, import-subst-dbr-ext.xsd : diff --git a/mcs/class/System.XML/Test/XmlFiles/xsd/extension-attr-redefine-1.xsd b/mcs/class/System.XML/Test/XmlFiles/xsd/extension-attr-redefine-1.xsd new file mode 100644 index 00000000000..8c76f0c97f4 --- /dev/null +++ b/mcs/class/System.XML/Test/XmlFiles/xsd/extension-attr-redefine-1.xsd @@ -0,0 +1,14 @@ +<xs:schema xmlns="foo" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="foo" id="foo"> + <xs:element name="Foo" type="FooType" /> + <xs:element name="Bar" type="BarType" /> + <xs:complexType name="FooType"> + <xs:attribute name="name" type="xs:string" use="optional"/> + </xs:complexType> + <xs:complexType name="BarType"> + <xs:complexContent> + <xs:extension base="FooType"> + <xs:attribute name="name" type="xs:string" use="required"/> + </xs:extension> + </xs:complexContent> + </xs:complexType> +</xs:schema> diff --git a/mcs/class/System.XML/Test/XmlFiles/xsd/extension-attr-redefine-2.xsd b/mcs/class/System.XML/Test/XmlFiles/xsd/extension-attr-redefine-2.xsd new file mode 100644 index 00000000000..aefd30fe61a --- /dev/null +++ b/mcs/class/System.XML/Test/XmlFiles/xsd/extension-attr-redefine-2.xsd @@ -0,0 +1,14 @@ +<xs:schema xmlns="foo" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="foo" id="foo"> + <xs:element name="Foo" type="FooType" /> + <xs:element name="Bar" type="BarType" /> + <xs:complexType name="FooType"> + <xs:attribute name="name" type="xs:string" use="optional"/> + </xs:complexType> + <xs:complexType name="BarType"> + <xs:complexContent> + <xs:extension base="FooType"> + <xs:attribute name="name" type="xs:string" use="optional"/> + </xs:extension> + </xs:complexContent> + </xs:complexType> +</xs:schema> diff --git a/mcs/class/System.XML/Test/XmlFiles/xsd/extension-attr-redefine-3.xsd b/mcs/class/System.XML/Test/XmlFiles/xsd/extension-attr-redefine-3.xsd new file mode 100644 index 00000000000..f249df1165a --- /dev/null +++ b/mcs/class/System.XML/Test/XmlFiles/xsd/extension-attr-redefine-3.xsd @@ -0,0 +1,14 @@ +<xs:schema xmlns="foo" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="foo" id="foo"> + <xs:element name="Foo" type="FooType" /> + <xs:element name="Bar" type="BarType" /> + <xs:complexType name="FooType"> + <xs:attribute name="name" type="xs:string" use="required"/> + </xs:complexType> + <xs:complexType name="BarType"> + <xs:complexContent> + <xs:extension base="FooType"> + <xs:attribute name="name" type="xs:string" use="optional"/> + </xs:extension> + </xs:complexContent> + </xs:complexType> +</xs:schema> |