Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGert Driesen <drieseng@users.sourceforge.net>2009-05-22 15:02:36 +0400
committerGert Driesen <drieseng@users.sourceforge.net>2009-05-22 15:02:36 +0400
commit0e09bcbf3c8b784f616294a19af25b29289eb542 (patch)
tree2e729e26a7930d15247a12f4fe500655be23506b /mcs/class/System.XML/Test
parent6489cc1e3bdfe3d5c7c9f188d3fdbd3fd09c0cc4 (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')
-rw-r--r--mcs/class/System.XML/Test/System.Xml.Schema/ChangeLog4
-rw-r--r--mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaTests.cs132
-rw-r--r--mcs/class/System.XML/Test/XmlFiles/xsd/ChangeLog4
-rw-r--r--mcs/class/System.XML/Test/XmlFiles/xsd/extension-attr-redefine-1.xsd14
-rw-r--r--mcs/class/System.XML/Test/XmlFiles/xsd/extension-attr-redefine-2.xsd14
-rw-r--r--mcs/class/System.XML/Test/XmlFiles/xsd/extension-attr-redefine-3.xsd14
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>