Răsfoiți Sursa

[System.XML] Switch tests to use embedded test resources

Alexander Köplinger 7 ani în urmă
părinte
comite
3d910b7477
20 a modificat fișierele cu 756 adăugiri și 717 ștergeri
  1. 19 17
      mcs/class/System.XML/Makefile
  2. 1 0
      mcs/class/System.XML/System.Xml_test.dll.sources
  3. 4 2
      mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaAssertion.cs
  4. 4 2
      mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaCollectionTests.cs
  5. 4 2
      mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaDatatypeTests.cs
  6. 4 2
      mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaSetTests.cs
  7. 12 10
      mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaTests.cs
  8. 11 9
      mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaValidatorTests.cs
  9. 4 2
      mcs/class/System.XML/Test/System.Xml.Serialization/ComplexDataStructure.cs
  10. 3 1
      mcs/class/System.XML/Test/System.Xml.Serialization/XmlCodeExporterTests.cs
  11. 4 2
      mcs/class/System.XML/Test/System.Xml.Serialization/XmlSchemaImporterTests.cs
  12. 19 17
      mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs
  13. 3 1
      mcs/class/System.XML/Test/System.Xml/XmlNodeTests.cs
  14. 4 2
      mcs/class/System.XML/Test/System.Xml/XmlReaderCommonTests.cs
  15. 7 5
      mcs/class/System.XML/Test/System.Xml/XmlReaderSettingsTests.cs
  16. 5 3
      mcs/class/System.XML/Test/System.Xml/XmlTextReaderTests.cs
  17. 3 1
      mcs/class/System.XML/Test/System.Xml/XmlUrlResolverTests.cs
  18. 3 1
      mcs/class/System.XML/Test/System.Xml/XsdParticleValidationTests.cs
  19. 634 632
      mcs/class/System.XML/Test/System.Xml/XsdValidatingReaderTests.cs
  20. 8 6
      mcs/class/System.XML/Test/System.Xml/nist_dom/util.cs

+ 19 - 17
mcs/class/System.XML/Makefile

@@ -30,28 +30,30 @@ LIB_MCS_FLAGS += -d:CONFIGURATION_DEP
 endif
 
 nist_dom_files = \
-	ITest.cs readme.txt util.cs \
-	files/noDTDXMLfile.xml files/otherDoc.xml files/staff.dtd files/staff.html files/staff.xml
+	ITest.cs readme.txt util.cs
+
+TEST_RESOURCE_FILES = \
+	Test/System.Xml/nist_dom/files/noDTDXMLfile.xml \
+	Test/System.Xml/nist_dom/files/otherDoc.xml \
+	Test/System.Xml/nist_dom/files/staff.dtd \
+	Test/System.Xml/nist_dom/files/staff.html \
+	Test/System.Xml/nist_dom/files/staff.xml \
+	Test/XmlFiles/xsl/current-in-select.ref \
+	$(wildcard Test/XmlFiles/*.xsd) \
+	$(wildcard Test/XmlFiles/*.xml) \
+	$(wildcard Test/XmlFiles/*.dtd) \
+	$(wildcard Test/XmlFiles/xsd/*.xml) \
+	$(wildcard Test/XmlFiles/xsd/*.xsd) \
+	$(wildcard Test/XmlFiles/xsl/*.xml) \
+	$(wildcard Test/XmlFiles/xsl/*.xsl) \
+	$(wildcard Test/XmlFiles/XsdValidation/*.xsd)
 
-xmlfiles_files = \
-	nested-included.dtd literal-data.xml nested-dtd-test.dtd nested-dtd-test.xml simple.xml \
-	xsl/empty.xsl \
-	XsdValidation/1.xsd XsdValidation/2.xsd	XsdValidation/3.xsd XsdValidation/4.xsd \
-	xsd/1.xsd xsd/2.xsd xsd/3.xsd xsd/4.xsd xsd/5.xsd xsd/6.xsd xsd/xml.xsd xsd/81360.xsd xsd/81360inc1.xsd xsd/81360inc2.xsd
+TEST_MCS_FLAGS += $(foreach r, $(TEST_RESOURCE_FILES), -resource:$(r),$(r))
 
 EXTRA_DISTFILES = \
 	$(wildcard System.Xml.Serialization/standalone_tests/*.cs) \
 	$(wildcard System.Xml.Serialization/standalone_tests/*.output) \
-	Test/XmlFiles/76102.xml		\
-	Test/XmlFiles/79683.dtd		\
-	Test/XmlFiles/496192.xml	\
-	Test/XmlFiles/*.xsd	\
-	$(wildcard Test/XmlFiles/xsd/*.xml) \
-	$(wildcard Test/XmlFiles/xsd/*.xsd) \
-	$(wildcard Test/XmlFiles/xsl/*.xml) \
-	$(wildcard Test/XmlFiles/xsl/*.xsl) \
-	Test/XmlFiles/xsl/current-in-select.ref \
-	$(xmlfiles_files:%=Test/XmlFiles/%) \
+	$(TEST_RESOURCE_FILES) \
 	$(nist_dom_files:%=Test/System.Xml/nist_dom/%)
 
 include ../../build/library.make

+ 1 - 0
mcs/class/System.XML/System.Xml_test.dll.sources

@@ -1,3 +1,4 @@
+../../test-helpers/TestResourceHelper.cs
 System.Xml/NameTableTests.cs
 System.Xml/XmlAssert.cs
 System.Xml/XmlAttributeCollectionTests.cs

+ 4 - 2
mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaAssertion.cs

@@ -13,13 +13,15 @@ using System.Xml;
 using System.Xml.Schema;
 using NUnit.Framework;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.Xml
 {
 	public class XmlSchemaAssertion
 	{
-		public static XmlSchema GetSchema (string path)
+		public static XmlSchema GetSchema (string resourceName)
 		{
-			XmlTextReader reader = new XmlTextReader (path);
+			XmlTextReader reader = new XmlTextReader (TestResourceHelper.GetFullPathOfResource (resourceName));
 			XmlSchema schema = XmlSchema.Read (reader, null);
 			reader.Close ();
 			return schema;

+ 4 - 2
mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaCollectionTests.cs

@@ -14,14 +14,16 @@ using System.Xml;
 using System.Xml.Schema;
 using NUnit.Framework;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.Xml
 {
 	[TestFixture]
 	public class XmlSchemaCollectionTests
 	{
-		private XmlSchema GetSchema (string path)
+		private XmlSchema GetSchema (string resourceName)
 		{
-			return XmlSchema.Read (new XmlTextReader (path), null);
+			return XmlSchema.Read (new XmlTextReader (TestResourceHelper.GetFullPathOfResource (resourceName)), null);
 		}
 
 		private XmlQualifiedName QName (string name, string ns)

+ 4 - 2
mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaDatatypeTests.cs

@@ -22,14 +22,16 @@ using SimpleType = System.Xml.Schema.XmlSchemaSimpleType;
 using SimpleRest = System.Xml.Schema.XmlSchemaSimpleTypeRestriction;
 using AssertType = NUnit.Framework.Assert;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.Xml
 {
 	[TestFixture]
 	public class XmlSchemaDatatypeTests
 	{
-		private XmlSchema GetSchema (string path)
+		private XmlSchema GetSchema (string resourceName)
 		{
-			return XmlSchema.Read (new XmlTextReader (path), null);
+			return XmlSchema.Read (new XmlTextReader (TestResourceHelper.GetFullPathOfResource (resourceName)), null);
 		}
 
 		private XmlQualifiedName QName (string name, string ns)

+ 4 - 2
mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaSetTests.cs

@@ -15,6 +15,8 @@ using System.Xml;
 using System.Xml.Schema;
 using NUnit.Framework;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.Xml
 {
 	[TestFixture]
@@ -203,8 +205,8 @@ type=""xsd:string"" use=""required""/>
 			//    complexContent schema conformance check, and
 			// 3) the included schema is already added to XmlSchemaSet.
 			XmlSchemaSet xss = new XmlSchemaSet ();
-			xss.Add (null, "Test/XmlFiles/xsd/import-subst-dbr-base.xsd");
-			xss.Add (null, "Test/XmlFiles/xsd/import-subst-dbr-ext.xsd");
+			xss.Add (null, TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/import-subst-dbr-base.xsd"));
+			xss.Add (null, TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/import-subst-dbr-ext.xsd"));
 			// should not result in lack of substitutionGroup
 			// (and conformance error as its result)
 			xss.Compile ();

+ 12 - 10
mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaTests.cs

@@ -15,6 +15,8 @@ using System.Xml.Schema;
 using System.Xml.Serialization;
 using NUnit.Framework;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.Xml
 {	
 	[TestFixture]
@@ -159,7 +161,7 @@ namespace MonoTests.System.Xml
 		[Test]
 		public void TestSimpleImport ()
 		{
-			XmlSchema schema = XmlSchema.Read (new XmlTextReader ("Test/XmlFiles/xsd/3.xsd"), null);
+			XmlSchema schema = XmlSchema.Read (new XmlTextReader (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/3.xsd")), null);
 			Assert.AreEqual ("urn:foo", schema.TargetNamespace);
 			XmlSchemaImport import = schema.Includes [0] as XmlSchemaImport;
 			Assert.IsNotNull (import);
@@ -177,7 +179,7 @@ namespace MonoTests.System.Xml
 		[Category ("MobileNotWorking")]
 		public void TestSimpleMutualImport ()
 		{
-			XmlReader r = new XmlTextReader ("Test/XmlFiles/xsd/inter-inc-1.xsd");
+			XmlReader r = new XmlTextReader (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/inter-inc-1.xsd"));
 			try {
 				XmlSchema.Read (r, null).Compile (null);
 			} finally {
@@ -188,7 +190,7 @@ namespace MonoTests.System.Xml
 		[Test]
 		public void TestQualification ()
 		{
-			XmlSchema schema = XmlSchema.Read (new XmlTextReader ("Test/XmlFiles/xsd/5.xsd"), null);
+			XmlSchema schema = XmlSchema.Read (new XmlTextReader (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/5.xsd")), null);
 			schema.Compile (null);
 			XmlSchemaElement el = schema.Elements [QName ("Foo", "urn:bar")] as XmlSchemaElement;
 			Assert.IsNotNull (el);
@@ -197,7 +199,7 @@ namespace MonoTests.System.Xml
 			XmlSchemaElement elp = seq.Items [0] as XmlSchemaElement;
 			Assert.AreEqual (QName ("Bar", ""), elp.QualifiedName);
 
-			schema = XmlSchema.Read (new XmlTextReader ("Test/XmlFiles/xsd/6.xsd"), null);
+			schema = XmlSchema.Read (new XmlTextReader (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/6.xsd")), null);
 			schema.Compile (null);
 			el = schema.Elements [QName ("Foo", "urn:bar")] as XmlSchemaElement;
 			Assert.IsNotNull (el);
@@ -385,7 +387,7 @@ namespace MonoTests.System.Xml
 		// bug #77687
 		public void CompileFillsSchemaPropertyInExternal ()
 		{
-			string schemaFileName = "Test/XmlFiles/xsd/77687.xsd";
+			string schemaFileName = TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/77687.xsd");
 			XmlTextReader tr = new XmlTextReader (schemaFileName);
 
 			XmlSchema schema = XmlSchema.Read (tr, null);
@@ -401,8 +403,8 @@ namespace MonoTests.System.Xml
 		// two different keys where one is in scope within another)
 		public void DuplicateKeyFieldAttributePath ()
 		{
-			string schemaFileName = "Test/XmlFiles/xsd/78985.xsd";
-			string xmlFileName = "Test/XmlFiles/xsd/78985.xml";
+			string schemaFileName = TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/78985.xsd");
+			string xmlFileName = TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/78985.xml");
 			XmlTextReader tr = new XmlTextReader (schemaFileName);
 
 			XmlValidatingReader vr = new XmlValidatingReader (
@@ -415,7 +417,7 @@ namespace MonoTests.System.Xml
 		[Test]
 		public void ThreeLevelNestedInclusion ()
 		{
-			XmlTextReader r = new XmlTextReader ("Test/XmlFiles/xsd/361818.xsd");
+			XmlTextReader r = new XmlTextReader (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/361818.xsd"));
 			try {
 				XmlSchema xs = XmlSchema.Read (r, null);
 				xs.Compile (null);
@@ -542,7 +544,7 @@ namespace MonoTests.System.Xml
 		public void TestResolveUri ()
 		{
 			XmlSchemaSet schemaSet = new XmlSchemaSet ();
-			FileStream stream = new FileStream ("Test/XmlFiles/xsd/resolveUriSchema.xsd", FileMode.Open, FileAccess.Read);
+			FileStream stream = new FileStream (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/resolveUriSchema.xsd"), FileMode.Open, FileAccess.Read);
 			schemaSet.Add ("http://tempuri.org/resolveUriSchema.xsd", new XmlTextReader (stream));
 
 			XmlTestResolver resolver = new XmlTestResolver ();		
@@ -578,7 +580,7 @@ namespace MonoTests.System.Xml
 			settings.Schemas.Add (schemaSet);
 			settings.ValidationType = ValidationType.Schema;
 			
-			XmlReader reader = XmlReader.Create ("Test/XmlFiles/xsd/xsdimporttest.xml", settings);
+			XmlReader reader = XmlReader.Create (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/xsdimporttest.xml"), settings);
 			
 			// Parse the file. 
 			while (reader.Read()) {}

+ 11 - 9
mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaValidatorTests.cs

@@ -15,6 +15,8 @@ using System.Xml;
 using System.Xml.Schema;
 using NUnit.Framework;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.Xml
 {
 	[TestFixture]
@@ -36,7 +38,7 @@ namespace MonoTests.System.Xml
 		{
 			// bug #358408
 			XmlSchemaSet schemas = new XmlSchemaSet ();
-			schemas.Add (null, "Test/XmlFiles/xsd/358408.xsd");
+			schemas.Add (null, TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/358408.xsd"));
 			XmlSchemaValidator v = new XmlSchemaValidator (
 				new NameTable (),
 				schemas,
@@ -83,12 +85,12 @@ namespace MonoTests.System.Xml
 		[Test]
 		public void SkipInvolved () // bug #422581
 		{
-			XmlReader schemaReader = XmlReader.Create ("Test/XmlFiles/xsd/422581.xsd");
+			XmlReader schemaReader = XmlReader.Create (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/422581.xsd"));
 			XmlSchema schema = XmlSchema.Read (schemaReader, null);
 			XmlReaderSettings settings = new XmlReaderSettings ();
 			settings.ValidationType = ValidationType.Schema;
 			settings.Schemas.Add (schema);
-			XmlReader reader = XmlReader.Create ("Test/XmlFiles/xsd/422581.xml", settings);
+			XmlReader reader = XmlReader.Create (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/422581.xml"), settings);
 			while (reader.Read ());
 		}
 
@@ -149,8 +151,8 @@ namespace MonoTests.System.Xml
 		[Test]
 		public void Bug496192_496205 ()
 		{
-			using (var xmlr = new StreamReader ("Test/XmlFiles/496192.xml"))
-				using (var xsdr = new StreamReader ("Test/XmlFiles/496192.xsd"))
+			using (var xmlr = new StreamReader (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/496192.xml")))
+				using (var xsdr = new StreamReader (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/496192.xsd")))
 					Validate (xmlr.ReadToEnd (), xsdr.ReadToEnd ());
 		}
 		
@@ -293,8 +295,8 @@ namespace MonoTests.System.Xml
 		[Test]
 		public void Bug584664 ()
 		{
-			Validate (File.ReadAllText ("Test/XmlFiles/xsd/584664a.xml"), File.ReadAllText ("Test/XmlFiles/xsd/584664a.xsd"));
-			Validate (File.ReadAllText ("Test/XmlFiles/xsd/584664b.xml"), File.ReadAllText ("Test/XmlFiles/xsd/584664b.xsd"));
+			Validate (File.ReadAllText (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/584664a.xml")), File.ReadAllText (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/584664a.xsd")));
+			Validate (File.ReadAllText (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/584664b.xml")), File.ReadAllText (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/584664b.xsd")));
 		}
 
 		[Test]
@@ -332,7 +334,7 @@ namespace MonoTests.System.Xml
 		public void FacetsOnBaseSimpleContentRestriction ()
 		{
 			XmlReaderSettings settings = new XmlReaderSettings ();
-			settings.Schemas.Add (null, "Test/XmlFiles/595947.xsd");
+			settings.Schemas.Add (null, TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/595947.xsd"));
 			settings.ValidationType = ValidationType.Schema;
 			settings.Schemas.Compile ();
 
@@ -370,7 +372,7 @@ namespace MonoTests.System.Xml
 		[Test]
 		public void Bug676993 ()
 		{
-			Validate (File.ReadAllText ("Test/XmlFiles/676993.xml"), File.ReadAllText ("Test/XmlFiles/676993.xsd"));
+			Validate (File.ReadAllText (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/676993.xml")), File.ReadAllText (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/676993.xsd")));
 		}
 		
 		[Test]

+ 4 - 2
mcs/class/System.XML/Test/System.Xml.Serialization/ComplexDataStructure.cs

@@ -17,6 +17,8 @@ using System.ComponentModel;
 using NUnit.Framework;
 using System.Linq;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.XmlSerialization
 {
 	[TestFixture]
@@ -35,7 +37,7 @@ namespace MonoTests.System.XmlSerialization
 			string serialized = sw.ToString ();
 			serialized = XmlSerializerTests.Infoset (serialized);
 
-			StreamReader sr = new StreamReader ("Test/XmlFiles/literal-data.xml");
+			StreamReader sr = new StreamReader (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/literal-data.xml"));
 			string expected = sr.ReadToEnd ();
 			sr.Close ();
 			
@@ -51,7 +53,7 @@ namespace MonoTests.System.XmlSerialization
 			XmlSerializer ss = new XmlSerializer (GetLiteralTypeMapping ());
 			XmlSerializerNamespaces nams = new XmlSerializerNamespaces ();
 			
-			StreamReader sr = new StreamReader ("Test/XmlFiles/literal-data.xml");
+			StreamReader sr = new StreamReader (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/literal-data.xml"));
 			Test data = (Test) ss.Deserialize (sr);
 			sr.Close ();
 			

+ 3 - 1
mcs/class/System.XML/Test/System.Xml.Serialization/XmlCodeExporterTests.cs

@@ -27,6 +27,8 @@ using NUnit.Framework;
 
 using MonoTests.System.Xml.TestClasses;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.XmlSerialization
 {
 	[TestFixture]
@@ -931,7 +933,7 @@ namespace MonoTests.System.XmlSerialization
 		[Test]
 		public void DuplicateIdentifiers ()
 		{
-			XmlSchema xs = XmlSchema.Read (File.OpenText ("Test/XmlFiles/xsd/82078.xsd"), null);
+			XmlSchema xs = XmlSchema.Read (File.OpenText (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/82078.xsd")), null);
 
 			XmlSchemas xss = new XmlSchemas ();
 			xss.Add (xs);

+ 4 - 2
mcs/class/System.XML/Test/System.Xml.Serialization/XmlSchemaImporterTests.cs

@@ -46,6 +46,8 @@ using NUnit.Framework;
 
 using MonoTests.System.Xml.TestClasses;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.Xml.Serialization
 {
 	[TestFixture]
@@ -1159,8 +1161,8 @@ namespace MonoTests.System.Xml.Serialization
 		public void ImportWildcardElementAsClass ()
 		{
 			var xss = new XmlSchemas ();
-			xss.Add (XmlSchema.Read (XmlReader.Create ("Test/XmlFiles/xsd/670945-1.xsd"), null));
-			xss.Add (XmlSchema.Read (XmlReader.Create ("Test/XmlFiles/xsd/670945-2.xsd"), null));
+			xss.Add (XmlSchema.Read (XmlReader.Create (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/670945-1.xsd")), null));
+			xss.Add (XmlSchema.Read (XmlReader.Create (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/670945-2.xsd")), null));
 			var imp = new XmlSchemaImporter (xss);
 			var xtm = imp.ImportSchemaType (new XmlQualifiedName ("SystemDateTime", "http://www.onvif.org/ver10/schema"));
 			var cns = new CodeNamespace ();

+ 19 - 17
mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs

@@ -16,6 +16,8 @@ using System.Xml.XPath;
 using System.Xml.Xsl;
 using NUnit.Framework;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.Xml.Xsl
 {
 	[TestFixture]
@@ -40,8 +42,8 @@ namespace MonoTests.System.Xml.Xsl
 		{
 			string output = Path.Combine (Path.GetTempPath (), "result.xml");
 			doc.LoadXml ("<root/>");
-			xslt.Load ("Test/XmlFiles/xsl/empty.xsl");
-			xslt.Transform ("Test/XmlFiles/xsl/empty.xsl", output);
+			xslt.Load (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/empty.xsl"));
+			xslt.Transform (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/empty.xsl"), output);
 			result.Load (output);
 			Assert.AreEqual (2, result.ChildNodes.Count, "count");
 		}
@@ -380,10 +382,10 @@ xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl='urn:schemas-micros
     ";
 
 			XmlDocument d = new XmlDocument ();
-			d.Load ("Test/XmlFiles/xsl/91834.xml");
+			d.Load (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/91834.xml"));
 
 			XslTransform t = new XslTransform ();
-			t.Load ("Test/XmlFiles/xsl/91834.xsl");
+			t.Load (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/91834.xsl"));
 
 			StringWriter sw_raw = new StringWriter ();
 			t.Transform (d, null, sw_raw);
@@ -1912,9 +1914,9 @@ Services
 ";
 
 			XslTransform t = new XslTransform ();
-			t.Load ("Test/XmlFiles/xsl/stripspace.xsl");
+			t.Load (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/stripspace.xsl"));
 			XPathDocument d = new XPathDocument (
-				"Test/XmlFiles/xsl/stripspace.xml", XmlSpace.Preserve);
+				TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/stripspace.xml"), XmlSpace.Preserve);
 			StringWriter sw = new StringWriter ();
 			t.Transform (d, null, sw);
 			Assert.AreEqual (result, sw.ToString ());
@@ -1924,13 +1926,13 @@ Services
 		public void CurrentInSelect ()
 		{
 			XslTransform t = new XslTransform ();
-			t.Load ("Test/XmlFiles/xsl/current-in-select.xsl");
+			t.Load (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/current-in-select.xsl"));
 			XPathDocument d = new XPathDocument (
-				"Test/XmlFiles/xsl/current-in-select.xml", XmlSpace.Preserve);
+				TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/current-in-select.xml"), XmlSpace.Preserve);
 			StringWriter sw = new StringWriter ();
 			t.Transform (d, null, sw);
 			using (StreamReader sr = File.OpenText (
-			       "Test/XmlFiles/xsl/current-in-select.ref")) {
+			       TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/current-in-select.ref"))) {
 				string s = sr.ReadToEnd ();
 				Assert.AreEqual (s, sw.ToString ());
 			}
@@ -1959,9 +1961,9 @@ Services
 		public void Bug82493 ()
 		{
 			XslTransform transformationObj = new XslTransform ();
-			transformationObj.Load ("Test/XmlFiles/xsl/82493.xsl");
+			transformationObj.Load (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/82493.xsl"));
 			XmlDocument doc = new XmlDocument ();
-			doc.Load ("Test/XmlFiles/xsl/82493.xml");
+			doc.Load (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/82493.xml"));
 			XslExtensionClass GetCalculation = new XslExtensionClass ("a4");
 			XsltArgumentList xslExtensionArgList = new XsltArgumentList ();
 			xslExtensionArgList.AddExtensionObject ("urn:e", GetCalculation);
@@ -1974,9 +1976,9 @@ Services
 		public void BugNovell325482 ()
 		{
 			XmlDocument doc = new XmlDocument ();
-			doc.Load ("Test/XmlFiles/xsl/325482.xml");
+			doc.Load (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/325482.xml"));
 			XslTransform xt = new XslTransform ();
-			xt.Load ("Test/XmlFiles/xsl/325482.xsl");
+			xt.Load (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/325482.xsl"));
 			xt.Transform (doc, null, TextWriter.Null);
 		}
 
@@ -2167,8 +2169,8 @@ Services
 		[Test] // bug #316238
 		public void ResolveVariableInXsltArgumentList ()
 		{
-			ResolveVariableInXsltArgumentList ("Test/XmlFiles/xsl/316238-1.xsl");
-			ResolveVariableInXsltArgumentList ("Test/XmlFiles/xsl/316238-2.xsl");
+			ResolveVariableInXsltArgumentList (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/316238-1.xsl"));
+			ResolveVariableInXsltArgumentList (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/316238-2.xsl"));
 		}
 
 		void ResolveVariableInXsltArgumentList (string file)
@@ -2360,9 +2362,9 @@ NO
 			XslCompiledTransform xslTransform = new XslCompiledTransform ();
 			XsltSettings settings = new XsltSettings ();
 			settings.EnableDocumentFunction = true;
-			xslTransform.Load ("Test/XmlFiles/xsl/391424.xsl", settings, new XmlUrlResolver ());
+			xslTransform.Load (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/391424.xsl"), settings, new XmlUrlResolver ());
 			StringWriter sw = new StringWriter ();
-			xslTransform.Transform (new XPathDocument ("Test/XmlFiles/xsl/391424.xml", XmlSpace.Preserve), null, sw);
+			xslTransform.Transform (new XPathDocument (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsl/391424.xml"), XmlSpace.Preserve), null, sw);
 			Assert.AreEqual ("<?xml version=\"1.0\" encoding=\"utf-16\"?>Document found", sw.ToString ());
 		}
 

+ 3 - 1
mcs/class/System.XML/Test/System.Xml/XmlNodeTests.cs

@@ -16,6 +16,8 @@ using System.Xml;
 
 using NUnit.Framework;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.Xml
 {
 	[TestFixture]
@@ -448,7 +450,7 @@ namespace MonoTests.System.Xml
 		{
 			// See bug #64120.
 			XmlDocument doc = new XmlDocument ();
-			doc.Load ("Test/XmlFiles/simple.xml");
+			doc.Load (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/simple.xml"));
 			XmlElement el = doc.CreateElement ("foo");
 			Assert.AreEqual (String.Empty, el.BaseURI);
 			doc.DocumentElement.AppendChild (el);

+ 4 - 2
mcs/class/System.XML/Test/System.Xml/XmlReaderCommonTests.cs

@@ -20,6 +20,8 @@ using System.Threading.Tasks;
 
 using NUnit.Framework;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.Xml
 {
 	[TestFixture]
@@ -1515,7 +1517,7 @@ namespace MonoTests.System.Xml
 		{
 			XmlReaderSettings s = new XmlReaderSettings ();
 			s.ProhibitDtd = false;
-			XmlReader xr = XmlReader.Create ("Test/XmlFiles/nested-dtd-test.xml", s);
+			XmlReader xr = XmlReader.Create (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/nested-dtd-test.xml"), s);
 			xr.Read ();
 			Assert.AreEqual (XmlNodeType.DocumentType, xr.NodeType, "#1");
 			xr.Read ();
@@ -1528,7 +1530,7 @@ namespace MonoTests.System.Xml
 		[ExpectedException (typeof (XmlException))]
 		public void CreateSimpleProhibitDtd ()
 		{
-			XmlReader xr = XmlReader.Create ("Test/XmlFiles/nested-dtd-test.xml");
+			XmlReader xr = XmlReader.Create (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/nested-dtd-test.xml"));
 			xr.Read ();
 		}
 

+ 7 - 5
mcs/class/System.XML/Test/System.Xml/XmlReaderSettingsTests.cs

@@ -18,6 +18,8 @@ using System.Reflection;
 using ValidationFlags = System.Xml.Schema.XmlSchemaValidationFlags;
 using AssertType = NUnit.Framework.Assert;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.Xml
 {
 	[TestFixture]
@@ -150,7 +152,7 @@ namespace MonoTests.System.Xml
 		public void CreateAndSettings ()
 		{
 			Assert.IsNotNull (XmlReader.Create (CreateStream ("<xml/>")).Settings);
-			Assert.IsNotNull (XmlReader.Create ("Test/XmlFiles/simple.xml").Settings);
+			Assert.IsNotNull (XmlReader.Create (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/simple.xml")).Settings);
 		}
 
 		[Test]
@@ -297,7 +299,7 @@ namespace MonoTests.System.Xml
 		public void CreateValidatorFromNonIXmlNamespaceResolver ()
 		{
 			XmlReaderSettings settings = new XmlReaderSettings ();
-			settings.Schemas.Add (null, "Test/XmlFiles/xsd/xml.xsd");
+			settings.Schemas.Add (null, TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/xml.xsd"));
 			settings.ValidationType = ValidationType.Schema;
 			XmlReader xr = XmlReader.Create (new StringReader ("<root/>"));
 			XmlReader dr = new Commons.Xml.XmlDefaultReader (xr);
@@ -311,7 +313,7 @@ namespace MonoTests.System.Xml
 		{
 			XmlReaderSettings settings = new XmlReaderSettings ();
 			settings.XmlResolver = null;
-			using (XmlReader xr = XmlReader.Create ("Test/XmlFiles/simple.xml", settings)) {
+			using (XmlReader xr = XmlReader.Create (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/simple.xml"), settings)) {
 				while (!xr.EOF)
 					xr.Read ();
 			}
@@ -335,7 +337,7 @@ namespace MonoTests.System.Xml
 		{
 			XmlReaderSettings settings = new XmlReaderSettings ();
 			settings.XmlResolver = new ThrowExceptionResolver ();
-			using (XmlReader xr = XmlReader.Create ("Test/XmlFiles/simple.xml", settings)) {
+			using (XmlReader xr = XmlReader.Create (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/simple.xml"), settings)) {
 				while (!xr.EOF)
 					xr.Read ();
 			}
@@ -367,7 +369,7 @@ namespace MonoTests.System.Xml
 			XmlSchema xs = new XmlSchema ();
 			settings.Schemas.Add (xs);
 			settings.ValidationType = ValidationType.Schema;
-			using (XmlReader r = XmlReader.Create ("Test/XmlFiles/simple.xml", settings)) {
+			using (XmlReader r = XmlReader.Create (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/simple.xml"), settings)) {
 				r.Read ();
 			}
 		}

+ 5 - 3
mcs/class/System.XML/Test/System.Xml/XmlTextReaderTests.cs

@@ -15,6 +15,8 @@ using System.Text;
 
 using NUnit.Framework;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.Xml
 {
 	[TestFixture]
@@ -651,7 +653,7 @@ namespace MonoTests.System.Xml
 		public void ExternalDocument ()
 		{
 			XmlDocument doc = new XmlDocument ();
-			doc.Load ("Test/XmlFiles/nested-dtd-test.xml");
+			doc.Load (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/nested-dtd-test.xml"));
 		}
 
 		[Test]
@@ -868,7 +870,7 @@ namespace MonoTests.System.Xml
 		[Test]
 		public void CloseIsNotAlwaysEOF2 ()
 		{
-			XmlTextReader xtr = new XmlTextReader ("Test/XmlFiles/simple.xml");
+			XmlTextReader xtr = new XmlTextReader (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/simple.xml"));
 			xtr.Close ();
 			Assert.IsTrue (!xtr.EOF); // Close() != EOF
 		}
@@ -1119,7 +1121,7 @@ namespace MonoTests.System.Xml
 		{
 			XmlTextReader xtr = null;
 			try {
-				xtr = new XmlTextReader (File.OpenText ("Test/XmlFiles/76102.xml"));
+				xtr = new XmlTextReader (File.OpenText (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/76102.xml")));
 				while (!xtr.EOF)
 					xtr.Read ();
 			} finally {

+ 3 - 1
mcs/class/System.XML/Test/System.Xml/XmlUrlResolverTests.cs

@@ -12,6 +12,8 @@ using System.Xml;
 using NUnit.Framework;
 using System.Reflection;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.Xml
 {
 	[TestFixture]
@@ -28,7 +30,7 @@ namespace MonoTests.System.Xml
 		[Test]
 		public void FileUri ()
 		{
-			Uri resolved = resolver.ResolveUri (null, "Test/XmlFiles/xsd/xml.xsd");
+			Uri resolved = resolver.ResolveUri (null, TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/xml.xsd"));
 			Assert.AreEqual ("file", resolved.Scheme);
 			Stream s = resolver.GetEntity (resolved, null, typeof (Stream)) as Stream;
 		}

+ 3 - 1
mcs/class/System.XML/Test/System.Xml/XsdParticleValidationTests.cs

@@ -13,6 +13,8 @@ using NUnit.Framework;
 
 using ValidationException = System.Xml.Schema.XmlSchemaValidationException;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.Xml
 {
 //	using XmlValidatingReader = XmlTextReader;
@@ -26,7 +28,7 @@ namespace MonoTests.System.Xml
 
 		private void PrepareReader1 (string xsdUrl, string xml)
 		{
-			schema = XmlSchema.Read (new XmlTextReader ("Test/XmlFiles/XsdValidation/" + xsdUrl), null);
+			schema = XmlSchema.Read (new XmlTextReader (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/XsdValidation/" + xsdUrl)), null);
 			xr = new XmlTextReader (xml, XmlNodeType.Document, null);
 			xvr = new XmlValidatingReader (xr);
 			xvr.Schemas.Add (schema);

+ 634 - 632
mcs/class/System.XML/Test/System.Xml/XsdValidatingReaderTests.cs

@@ -1,633 +1,635 @@
-//
-// MonoTests.System.Xml.XsdValidatingReaderTests.cs
-//
-// Author:
-//	Atsushi Enomoto <[email protected]>
-//
-// (C)2003 Atsushi Enomoto
-// (C)2005-2007 Novell, Inc.
-//
-using System;
-using System.IO;
-using System.Net;
-using System.Xml;
-using System.Xml.Schema;
-using NUnit.Framework;
-
-namespace MonoTests.System.Xml
-{
-	[TestFixture]
-	public class XsdValidatingReaderTests
-	{
-		public XsdValidatingReaderTests ()
-		{
-		}
-
-		XmlReader xtr;
-		XmlValidatingReader xvr;
-
-		private XmlValidatingReader PrepareXmlReader (string xml)
-		{
-			XmlReader reader = new XmlTextReader (xml, XmlNodeType.Document, null);
-//			XmlDocument doc = new XmlDocument ();
-//			doc.LoadXml (xml);
-//			XmlReader reader = new XmlNodeReader (doc);
-
-			return new XmlValidatingReader (reader);
-		}
-
-		[Test]
-		public void TestEmptySchema ()
-		{
-			string xml = "<root/>";
-			xvr = PrepareXmlReader (xml);
-			xvr.ValidationType = ValidationType.Schema;
-			xvr.Read ();	// Is is missing schema component.
-		}
-
-		[Test]
-		public void TestSimpleValidation ()
-		{
-			string xml = "<root/>";
-			xvr = PrepareXmlReader (xml);
-			Assert.AreEqual (ValidationType.Auto, xvr.ValidationType);
-			XmlSchema schema = new XmlSchema ();
-			XmlSchemaElement elem = new XmlSchemaElement ();
-			elem.Name = "root";
-			schema.Items.Add (elem);
-			xvr.Schemas.Add (schema);
-			xvr.Read ();	// root
-			Assert.AreEqual (ValidationType.Auto, xvr.ValidationType);
-			xvr.Read ();	// EOF
-
-			xml = "<hoge/>";
-			xvr = PrepareXmlReader (xml);
-			xvr.Schemas.Add (schema);
-			try {
-				xvr.Read ();
-				Assert.Fail ("element mismatch is incorrectly allowed");
-			} catch (XmlSchemaException) {
-			}
-
-			xml = "<hoge xmlns='urn:foo' />";
-			xvr = PrepareXmlReader (xml);
-			xvr.Schemas.Add (schema);
-			try {
-				xvr.Read ();
-				Assert.Fail ("Element in different namespace is incorrectly allowed.");
-			} catch (XmlSchemaException) {
-			}
-		}
-
-		[Test]
-		public void TestReadTypedValueSimple ()
-		{
-			string xml = "<root>12</root>";
-			XmlSchema schema = new XmlSchema ();
-			XmlSchemaElement elem = new XmlSchemaElement ();
-			elem.Name = "root";
-			elem.SchemaTypeName = new XmlQualifiedName ("integer", XmlSchema.Namespace);
-			schema.Items.Add (elem);
-
-			// Lap 1:
-			
-			xvr = PrepareXmlReader (xml);
-			xvr.Schemas.Add (schema);
-			// Read directly from root.
-			object o = xvr.ReadTypedValue ();
-			Assert.AreEqual (ReadState.Initial, xvr.ReadState);
-			Assert.IsNull (o);
-
-			xvr.Read ();	// element root
-			Assert.AreEqual (XmlNodeType.Element, xvr.NodeType);
-			Assert.IsNotNull (xvr.SchemaType);
-			Assert.IsTrue (xvr.SchemaType is XmlSchemaDatatype);
-			o = xvr.ReadTypedValue ();	// read "12"
-			Assert.AreEqual (XmlNodeType.EndElement, xvr.NodeType);
-			Assert.IsNotNull (o);
-			Assert.AreEqual (typeof (decimal), o.GetType ());
-			decimal n = (decimal) o;
-			Assert.AreEqual (12, n);
-			Assert.IsTrue (!xvr.EOF);
-			Assert.AreEqual ("root", xvr.Name);
-			Assert.IsNull (xvr.SchemaType);	// EndElement's type
-
-			// Lap 2:
-
-			xvr = PrepareXmlReader (xml);
-			xvr.Schemas.Add (schema);
-			xvr.Read ();	// root
-			XmlSchemaDatatype dt = xvr.SchemaType as XmlSchemaDatatype;
-			Assert.IsNotNull (dt);
-			Assert.AreEqual (typeof (decimal), dt.ValueType);
-			Assert.AreEqual (XmlTokenizedType.None, dt.TokenizedType);
-			xvr.Read ();	// text "12"
-			Assert.IsNull (xvr.SchemaType);
-			o = xvr.ReadTypedValue ();
-			// ReadTypedValue is different from ReadString().
-			Assert.IsNull (o);
-		}
-
-		[Test]
-		[Ignore ("XML Schema validator should not be available for validating non namespace-aware XmlReader that handled colon as a name character")]
-		public void TestNamespacesFalse ()
-		{
-			// This tests if Namespaces=false is specified, then
-			// the reader's NamespaceURI should be always string.Empty and
-			// validation should be done against such schema that has target ns as "".
-			string xml = "<x:root xmlns:x='urn:foo' />";
-			xvr = PrepareXmlReader (xml);
-			xvr.Namespaces = false;
-			Assert.AreEqual (ValidationType.Auto, xvr.ValidationType);
-			XmlSchema schema = new XmlSchema ();
-			schema.TargetNamespace = "urn:foo";
-			XmlSchemaElement elem = new XmlSchemaElement ();
-			elem.Name = "root";
-			schema.Items.Add (elem);
-			xvr.Schemas.Add (schema);
-			xvr.Read ();	// root
-			Assert.IsTrue (!xvr.Namespaces);
-			Assert.AreEqual ("x:root", xvr.Name);
-			// LocalName may contain colons.
-			Assert.AreEqual ("x:root", xvr.LocalName);
-			// NamespaceURI is not supplied.
-			Assert.AreEqual ("", xvr.NamespaceURI);
-		}
-
-		[Test]
-		public void TestReadTypedAttributeValue ()
-		{
-			string xml = "<root attr='12'></root>";
-			XmlSchema schema = new XmlSchema ();
-			XmlSchemaElement elem = new XmlSchemaElement ();
-			elem.Name = "root";
-			XmlSchemaComplexType ct = new XmlSchemaComplexType ();
-			XmlSchemaAttribute attr = new XmlSchemaAttribute ();
-			attr.Name = "attr";
-			attr.SchemaTypeName = new XmlQualifiedName ("int", XmlSchema.Namespace);
-			ct.Attributes.Add (attr);
-			elem.SchemaType = ct;
-			schema.Items.Add (elem);
-
-			xvr = PrepareXmlReader (xml);
-			xvr.Schemas.Add (schema);
-			xvr.Read ();
-			Assert.AreEqual ("root", xvr.Name);
-			Assert.IsTrue (xvr.MoveToNextAttribute ());	// attr
-			Assert.AreEqual ("attr", xvr.Name);
-			XmlSchemaDatatype dt = xvr.SchemaType as XmlSchemaDatatype;
-			Assert.IsNotNull (dt);
-			Assert.AreEqual (typeof (int), dt.ValueType);
-			Assert.AreEqual (XmlTokenizedType.None, dt.TokenizedType);
-			object o = xvr.ReadTypedValue ();
-			Assert.AreEqual (XmlNodeType.Attribute, xvr.NodeType);
-			Assert.AreEqual (typeof (int), o.GetType ());
-			int n = (int) o;
-			Assert.AreEqual (12, n);
-			Assert.IsTrue (xvr.ReadAttributeValue ());	// can read = seems not proceed.
-		}
-
-		[Test]
-		public void DuplicateSchemaAssignment ()
-		{
-			string xml = @"<data
-			xmlns='http://www.test.com/schemas/'
-			xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
-			xsi:schemaLocation='http://www.test.com/schemas/ /home/user/schema.xsd' />";
-			string xsd = @"<xs:schema
-			targetNamespace='http://www.test.com/schemas/'
-			xmlns:xs='http://www.w3.org/2001/XMLSchema'
-			xmlns='http://www.test.com/schemas/' >
-		        <xs:element name='data' /></xs:schema>";
-
-			string xmlns = "http://www.test.com/schemas/";
-
-			XmlValidatingReader xvr = new XmlValidatingReader (
-				xml, XmlNodeType.Document, null);
-			XmlSchemaCollection schemas = new XmlSchemaCollection ();
-			schemas.Add (XmlSchema.Read (new XmlTextReader (
-				xsd, XmlNodeType.Document, null), null));
-			xvr.Schemas.Add (schemas);
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		[Test] // bug #76234
-		public void DTDValidatorNamespaceHandling ()
-		{
-			string xml = "<xml xmlns='urn:a'> <foo> <a:bar xmlns='urn:b' xmlns:a='urn:a' /> <bug /> </foo> </xml>";
-			XmlValidatingReader vr = new XmlValidatingReader (
-				xml, XmlNodeType.Document, null);
-			vr.Read ();
-			vr.Read (); // whitespace
-			Assert.AreEqual (String.Empty, vr.NamespaceURI, "#1");
-			vr.Read (); // foo
-			Assert.AreEqual ("urn:a", vr.NamespaceURI, "#2");
-			vr.Read (); // whitespace
-			vr.Read (); // a:bar
-			Assert.AreEqual ("urn:a", vr.NamespaceURI, "#3");
-			vr.Read (); // whitespace
-			vr.Read (); // bug
-			Assert.AreEqual ("urn:a", vr.NamespaceURI, "#4");
-		}
-
-		[Test]
-		public void MultipleSchemaInSchemaLocation ()
-		{
-			XmlTextReader xtr = new XmlTextReader ("Test/XmlFiles/xsd/multi-schemaLocation.xml");
-			XmlValidatingReader vr = new XmlValidatingReader (xtr);
-			while (!vr.EOF)
-				vr.Read ();
-		}
-
-		[Test]
-		public void ReadTypedValueSimpleTypeRestriction ()
-		{
-			string xml = "<root>xx</root><!-- after -->";
-			string xsd = @"
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-  <xs:element name='root'>
-    <xs:simpleType>
-      <xs:restriction base='xs:string'>
-        <xs:minLength value='2' />
-      </xs:restriction>
-    </xs:simpleType>
-  </xs:element>
-</xs:schema>";
-			XmlTextReader xir = 
-				new XmlTextReader (xml, XmlNodeType.Document, null);
-			XmlTextReader xsr =
-				new XmlTextReader (xsd, XmlNodeType.Document, null);
-			XmlValidatingReader vr = new XmlValidatingReader (xir);
-			vr.Schemas.Add (XmlSchema.Read (xsr, null));
-			vr.Read (); // root
-			Assert.AreEqual ("xx", vr.ReadTypedValue ());
-			Assert.AreEqual (XmlNodeType.EndElement, vr.NodeType);
-		}
-
-		// If we normalize string before validating with facets,
-		// this test will fail. It will also fail if ReadTypedValue()
-		// ignores whitespace nodes.
-		[Test]
-		public void ReadTypedValueWhitespaces ()
-		{
-			string xml = "<root>  </root><!-- after -->";
-			string xsd = @"
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-  <xs:element name='root'>
-    <xs:simpleType>
-      <xs:restriction base='xs:string'>
-        <xs:minLength value='2' />
-      </xs:restriction>
-    </xs:simpleType>
-  </xs:element>
-</xs:schema>";
-			XmlTextReader xir = 
-				new XmlTextReader (xml, XmlNodeType.Document, null);
-			XmlTextReader xsr =
-				new XmlTextReader (xsd, XmlNodeType.Document, null);
-			XmlValidatingReader vr = new XmlValidatingReader (xir);
-			vr.Schemas.Add (XmlSchema.Read (xsr, null));
-			vr.Read (); // root
-			Assert.AreEqual ("  ", vr.ReadTypedValue ());
-			Assert.AreEqual (XmlNodeType.EndElement, vr.NodeType);
-		}
-
-		[Test] // bug #77241
-		public void EmptyContentAllowWhitespace ()
-		{
-			string doc = @"
-<root>
-        <!-- some comment -->
-        <child/>
-</root>
-";
-			string schema = @"
-<xsd:schema xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
-    <xsd:element name=""root"">
-        <xsd:complexType>
-            <xsd:sequence>
-                <xsd:element name=""child"" type=""xsd:string"" />
-            </xsd:sequence>
-        </xsd:complexType>
-    </xsd:element>
-</xsd:schema>
-";
-			XmlValidatingReader reader = new XmlValidatingReader (
-				new XmlTextReader (new StringReader (doc)));
-			reader.Schemas.Add (null,
-				new XmlTextReader (new StringReader (schema)));
-			while (reader.Read ())
-				;
-		}
-
-		[Test] // bug #79650
+//
+// MonoTests.System.Xml.XsdValidatingReaderTests.cs
+//
+// Author:
+//	Atsushi Enomoto <[email protected]>
+//
+// (C)2003 Atsushi Enomoto
+// (C)2005-2007 Novell, Inc.
+//
+using System;
+using System.IO;
+using System.Net;
+using System.Xml;
+using System.Xml.Schema;
+using NUnit.Framework;
+
+using MonoTests.Helpers;
+
+namespace MonoTests.System.Xml
+{
+	[TestFixture]
+	public class XsdValidatingReaderTests
+	{
+		public XsdValidatingReaderTests ()
+		{
+		}
+
+		XmlReader xtr;
+		XmlValidatingReader xvr;
+
+		private XmlValidatingReader PrepareXmlReader (string xml)
+		{
+			XmlReader reader = new XmlTextReader (xml, XmlNodeType.Document, null);
+//			XmlDocument doc = new XmlDocument ();
+//			doc.LoadXml (xml);
+//			XmlReader reader = new XmlNodeReader (doc);
+
+			return new XmlValidatingReader (reader);
+		}
+
+		[Test]
+		public void TestEmptySchema ()
+		{
+			string xml = "<root/>";
+			xvr = PrepareXmlReader (xml);
+			xvr.ValidationType = ValidationType.Schema;
+			xvr.Read ();	// Is is missing schema component.
+		}
+
+		[Test]
+		public void TestSimpleValidation ()
+		{
+			string xml = "<root/>";
+			xvr = PrepareXmlReader (xml);
+			Assert.AreEqual (ValidationType.Auto, xvr.ValidationType);
+			XmlSchema schema = new XmlSchema ();
+			XmlSchemaElement elem = new XmlSchemaElement ();
+			elem.Name = "root";
+			schema.Items.Add (elem);
+			xvr.Schemas.Add (schema);
+			xvr.Read ();	// root
+			Assert.AreEqual (ValidationType.Auto, xvr.ValidationType);
+			xvr.Read ();	// EOF
+
+			xml = "<hoge/>";
+			xvr = PrepareXmlReader (xml);
+			xvr.Schemas.Add (schema);
+			try {
+				xvr.Read ();
+				Assert.Fail ("element mismatch is incorrectly allowed");
+			} catch (XmlSchemaException) {
+			}
+
+			xml = "<hoge xmlns='urn:foo' />";
+			xvr = PrepareXmlReader (xml);
+			xvr.Schemas.Add (schema);
+			try {
+				xvr.Read ();
+				Assert.Fail ("Element in different namespace is incorrectly allowed.");
+			} catch (XmlSchemaException) {
+			}
+		}
+
+		[Test]
+		public void TestReadTypedValueSimple ()
+		{
+			string xml = "<root>12</root>";
+			XmlSchema schema = new XmlSchema ();
+			XmlSchemaElement elem = new XmlSchemaElement ();
+			elem.Name = "root";
+			elem.SchemaTypeName = new XmlQualifiedName ("integer", XmlSchema.Namespace);
+			schema.Items.Add (elem);
+
+			// Lap 1:
+			
+			xvr = PrepareXmlReader (xml);
+			xvr.Schemas.Add (schema);
+			// Read directly from root.
+			object o = xvr.ReadTypedValue ();
+			Assert.AreEqual (ReadState.Initial, xvr.ReadState);
+			Assert.IsNull (o);
+
+			xvr.Read ();	// element root
+			Assert.AreEqual (XmlNodeType.Element, xvr.NodeType);
+			Assert.IsNotNull (xvr.SchemaType);
+			Assert.IsTrue (xvr.SchemaType is XmlSchemaDatatype);
+			o = xvr.ReadTypedValue ();	// read "12"
+			Assert.AreEqual (XmlNodeType.EndElement, xvr.NodeType);
+			Assert.IsNotNull (o);
+			Assert.AreEqual (typeof (decimal), o.GetType ());
+			decimal n = (decimal) o;
+			Assert.AreEqual (12, n);
+			Assert.IsTrue (!xvr.EOF);
+			Assert.AreEqual ("root", xvr.Name);
+			Assert.IsNull (xvr.SchemaType);	// EndElement's type
+
+			// Lap 2:
+
+			xvr = PrepareXmlReader (xml);
+			xvr.Schemas.Add (schema);
+			xvr.Read ();	// root
+			XmlSchemaDatatype dt = xvr.SchemaType as XmlSchemaDatatype;
+			Assert.IsNotNull (dt);
+			Assert.AreEqual (typeof (decimal), dt.ValueType);
+			Assert.AreEqual (XmlTokenizedType.None, dt.TokenizedType);
+			xvr.Read ();	// text "12"
+			Assert.IsNull (xvr.SchemaType);
+			o = xvr.ReadTypedValue ();
+			// ReadTypedValue is different from ReadString().
+			Assert.IsNull (o);
+		}
+
+		[Test]
+		[Ignore ("XML Schema validator should not be available for validating non namespace-aware XmlReader that handled colon as a name character")]
+		public void TestNamespacesFalse ()
+		{
+			// This tests if Namespaces=false is specified, then
+			// the reader's NamespaceURI should be always string.Empty and
+			// validation should be done against such schema that has target ns as "".
+			string xml = "<x:root xmlns:x='urn:foo' />";
+			xvr = PrepareXmlReader (xml);
+			xvr.Namespaces = false;
+			Assert.AreEqual (ValidationType.Auto, xvr.ValidationType);
+			XmlSchema schema = new XmlSchema ();
+			schema.TargetNamespace = "urn:foo";
+			XmlSchemaElement elem = new XmlSchemaElement ();
+			elem.Name = "root";
+			schema.Items.Add (elem);
+			xvr.Schemas.Add (schema);
+			xvr.Read ();	// root
+			Assert.IsTrue (!xvr.Namespaces);
+			Assert.AreEqual ("x:root", xvr.Name);
+			// LocalName may contain colons.
+			Assert.AreEqual ("x:root", xvr.LocalName);
+			// NamespaceURI is not supplied.
+			Assert.AreEqual ("", xvr.NamespaceURI);
+		}
+
+		[Test]
+		public void TestReadTypedAttributeValue ()
+		{
+			string xml = "<root attr='12'></root>";
+			XmlSchema schema = new XmlSchema ();
+			XmlSchemaElement elem = new XmlSchemaElement ();
+			elem.Name = "root";
+			XmlSchemaComplexType ct = new XmlSchemaComplexType ();
+			XmlSchemaAttribute attr = new XmlSchemaAttribute ();
+			attr.Name = "attr";
+			attr.SchemaTypeName = new XmlQualifiedName ("int", XmlSchema.Namespace);
+			ct.Attributes.Add (attr);
+			elem.SchemaType = ct;
+			schema.Items.Add (elem);
+
+			xvr = PrepareXmlReader (xml);
+			xvr.Schemas.Add (schema);
+			xvr.Read ();
+			Assert.AreEqual ("root", xvr.Name);
+			Assert.IsTrue (xvr.MoveToNextAttribute ());	// attr
+			Assert.AreEqual ("attr", xvr.Name);
+			XmlSchemaDatatype dt = xvr.SchemaType as XmlSchemaDatatype;
+			Assert.IsNotNull (dt);
+			Assert.AreEqual (typeof (int), dt.ValueType);
+			Assert.AreEqual (XmlTokenizedType.None, dt.TokenizedType);
+			object o = xvr.ReadTypedValue ();
+			Assert.AreEqual (XmlNodeType.Attribute, xvr.NodeType);
+			Assert.AreEqual (typeof (int), o.GetType ());
+			int n = (int) o;
+			Assert.AreEqual (12, n);
+			Assert.IsTrue (xvr.ReadAttributeValue ());	// can read = seems not proceed.
+		}
+
+		[Test]
+		public void DuplicateSchemaAssignment ()
+		{
+			string xml = @"<data
+			xmlns='http://www.test.com/schemas/'
+			xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
+			xsi:schemaLocation='http://www.test.com/schemas/ /home/user/schema.xsd' />";
+			string xsd = @"<xs:schema
+			targetNamespace='http://www.test.com/schemas/'
+			xmlns:xs='http://www.w3.org/2001/XMLSchema'
+			xmlns='http://www.test.com/schemas/' >
+		        <xs:element name='data' /></xs:schema>";
+
+			string xmlns = "http://www.test.com/schemas/";
+
+			XmlValidatingReader xvr = new XmlValidatingReader (
+				xml, XmlNodeType.Document, null);
+			XmlSchemaCollection schemas = new XmlSchemaCollection ();
+			schemas.Add (XmlSchema.Read (new XmlTextReader (
+				xsd, XmlNodeType.Document, null), null));
+			xvr.Schemas.Add (schemas);
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		[Test] // bug #76234
+		public void DTDValidatorNamespaceHandling ()
+		{
+			string xml = "<xml xmlns='urn:a'> <foo> <a:bar xmlns='urn:b' xmlns:a='urn:a' /> <bug /> </foo> </xml>";
+			XmlValidatingReader vr = new XmlValidatingReader (
+				xml, XmlNodeType.Document, null);
+			vr.Read ();
+			vr.Read (); // whitespace
+			Assert.AreEqual (String.Empty, vr.NamespaceURI, "#1");
+			vr.Read (); // foo
+			Assert.AreEqual ("urn:a", vr.NamespaceURI, "#2");
+			vr.Read (); // whitespace
+			vr.Read (); // a:bar
+			Assert.AreEqual ("urn:a", vr.NamespaceURI, "#3");
+			vr.Read (); // whitespace
+			vr.Read (); // bug
+			Assert.AreEqual ("urn:a", vr.NamespaceURI, "#4");
+		}
+
+		[Test]
+		public void MultipleSchemaInSchemaLocation ()
+		{
+			XmlTextReader xtr = new XmlTextReader (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/multi-schemaLocation.xml"));
+			XmlValidatingReader vr = new XmlValidatingReader (xtr);
+			while (!vr.EOF)
+				vr.Read ();
+		}
+
+		[Test]
+		public void ReadTypedValueSimpleTypeRestriction ()
+		{
+			string xml = "<root>xx</root><!-- after -->";
+			string xsd = @"
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+  <xs:element name='root'>
+    <xs:simpleType>
+      <xs:restriction base='xs:string'>
+        <xs:minLength value='2' />
+      </xs:restriction>
+    </xs:simpleType>
+  </xs:element>
+</xs:schema>";
+			XmlTextReader xir = 
+				new XmlTextReader (xml, XmlNodeType.Document, null);
+			XmlTextReader xsr =
+				new XmlTextReader (xsd, XmlNodeType.Document, null);
+			XmlValidatingReader vr = new XmlValidatingReader (xir);
+			vr.Schemas.Add (XmlSchema.Read (xsr, null));
+			vr.Read (); // root
+			Assert.AreEqual ("xx", vr.ReadTypedValue ());
+			Assert.AreEqual (XmlNodeType.EndElement, vr.NodeType);
+		}
+
+		// If we normalize string before validating with facets,
+		// this test will fail. It will also fail if ReadTypedValue()
+		// ignores whitespace nodes.
+		[Test]
+		public void ReadTypedValueWhitespaces ()
+		{
+			string xml = "<root>  </root><!-- after -->";
+			string xsd = @"
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+  <xs:element name='root'>
+    <xs:simpleType>
+      <xs:restriction base='xs:string'>
+        <xs:minLength value='2' />
+      </xs:restriction>
+    </xs:simpleType>
+  </xs:element>
+</xs:schema>";
+			XmlTextReader xir = 
+				new XmlTextReader (xml, XmlNodeType.Document, null);
+			XmlTextReader xsr =
+				new XmlTextReader (xsd, XmlNodeType.Document, null);
+			XmlValidatingReader vr = new XmlValidatingReader (xir);
+			vr.Schemas.Add (XmlSchema.Read (xsr, null));
+			vr.Read (); // root
+			Assert.AreEqual ("  ", vr.ReadTypedValue ());
+			Assert.AreEqual (XmlNodeType.EndElement, vr.NodeType);
+		}
+
+		[Test] // bug #77241
+		public void EmptyContentAllowWhitespace ()
+		{
+			string doc = @"
+<root>
+        <!-- some comment -->
+        <child/>
+</root>
+";
+			string schema = @"
+<xsd:schema xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
+    <xsd:element name=""root"">
+        <xsd:complexType>
+            <xsd:sequence>
+                <xsd:element name=""child"" type=""xsd:string"" />
+            </xsd:sequence>
+        </xsd:complexType>
+    </xsd:element>
+</xsd:schema>
+";
+			XmlValidatingReader reader = new XmlValidatingReader (
+				new XmlTextReader (new StringReader (doc)));
+			reader.Schemas.Add (null,
+				new XmlTextReader (new StringReader (schema)));
+			while (reader.Read ())
+				;
+		}
+
+		[Test] // bug #79650
 		// LAMESPEC: .NET does not throw XmlSchemaValidationException
-		[ExpectedException (typeof (XmlSchemaException))]
-		public void EnumerationFacetOnAttribute ()
-		{
-			string xml = "<test mode='NOT AN ENUMERATION VALUE' />";
-			XmlSchema schema = XmlSchema.Read (new XmlTextReader ("Test/XmlFiles/xsd/79650.xsd"), null);
-			XmlValidatingReader xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
-			xvr.ValidationType = ValidationType.Schema;
-			xvr.Schemas.Add (schema);
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		class XmlErrorResolver : XmlResolver
-		{
-			public override ICredentials Credentials {
-				set { }
-			}
-
-			public override object GetEntity (Uri uri, string role, Type type)
-			{
-				throw new Exception ();
-			}
-		}
-
-		[Test] // bug #79924
-		public void ValidationTypeNoneIgnoreSchemaLocations ()
-		{
-			string xml = "<project xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='nosuchschema.xsd'/>";
-			XmlValidatingReader vr = new XmlValidatingReader (
-				new XmlTextReader (new StringReader (xml)));
-			vr.ValidationType = ValidationType.None;
-			vr.XmlResolver = new XmlErrorResolver ();
-			while (!vr.EOF)
-				vr.Read ();
-		}
-
-		[Test] // bug #336625
-		public void ValidationTypeNoneIgnoreLocatedSchemaErrors ()
-		{
-			string xml = "<test xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='Test/XmlFiles/xsd/336625.xsd'/>";
-			XmlValidatingReader vr = new XmlValidatingReader (
-				new XmlTextReader (new StringReader (xml)));
-			vr.ValidationType = ValidationType.None;
-			while (!vr.EOF)
-				vr.Read ();
-		}
-
-		[Test]
-		public void Bug81360 ()
-		{
-			string schemaFile = "Test/XmlFiles/xsd/81360.xsd";
-			XmlTextReader treader = new XmlTextReader (schemaFile);
-			XmlSchema sc = XmlSchema.Read (treader, null);
-			sc.Compile (null);
-			string xml = @"<body xmlns='" + sc.TargetNamespace + "'><div></div></body>";
-			XmlTextReader reader = new XmlTextReader (new StringReader (xml));
-			XmlValidatingReader validator = new XmlValidatingReader (reader);
-			validator.Schemas.Add (sc);
-			validator.ValidationType = ValidationType.Schema;
-			while (!validator.EOF)
-				validator.Read ();
-		}
-
-		[Test]
-		public void Bug81460 ()
-		{
-			string xsd = "<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'><xs:element name='foo'><xs:complexType><xs:attribute name='a' default='x' /></xs:complexType></xs:element></xs:schema>";
-			string xml = "<foo/>";
-			XmlReaderSettings s = new XmlReaderSettings ();
-			s.ValidationType = ValidationType.Schema;
-			s.Schemas.Add (XmlSchema.Read (new StringReader (xsd), null));
-			XmlReader r = XmlReader.Create (new StringReader (xml), s);
-			r.Read ();
-			r.MoveToFirstAttribute (); // default attribute
-			Assert.AreEqual (String.Empty, r.Prefix);
-		}
-
-		[Test]
-		// annoyance
-		[ExpectedException (typeof (XmlSchemaValidationException))]
-		public void Bug82099 ()
-		{
-			string xsd = @"
-<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
-  <xsd:element name='Customer' type='CustomerType' />
-  <xsd:complexType name='CustomerType'>
-    <xsd:attribute name='name' type='xsd:string' />
-  </xsd:complexType>
-</xsd:schema>";
-			XmlSchema schema = XmlSchema.Read (new StringReader (xsd), null);
-
-			string xml = "<Customer name='Bob'> </Customer>";
-
-			XmlReaderSettings settings = new XmlReaderSettings ();
-			settings.Schemas.Add (schema);
-			settings.ValidationType = ValidationType.Schema;
-
-			XmlReader reader = XmlReader.Create (new StringReader (xml), settings);
-			
-			reader.Read ();
-			reader.Read ();
-			reader.Read ();
-		}
-
-		[Test]
-		public void Bug82010 ()
-		{
-			string xmlfile = "Test/XmlFiles/xsd/82010.xml";
-			string xsdfile = "Test/XmlFiles/xsd/82010.xsd";
-			XmlTextReader xr = null, xr2 = null;
-			try {
-				xr = new XmlTextReader (xsdfile);
-				xr2 = new XmlTextReader (xmlfile);
-				XmlValidatingReader xvr = new XmlValidatingReader (xr2);
-				xvr.Schemas.Add (XmlSchema.Read (xr, null));
-				while (!xvr.EOF)
-					xvr.Read ();
-			} finally {
-				if (xr2 != null)
-					xr2.Close ();
-				if (xr != null)
-					xr.Close ();
-			}
-		}
-
-		[Test]
-		public void Bug376395 ()
-		{
-			string xmlfile = "Test/XmlFiles/xsd/376395.xml";
-			string xsdfile = "Test/XmlFiles/xsd/376395.xsd";
-			XmlTextReader xr = null, xr2 = null;
-			try {
-				xr = new XmlTextReader (xsdfile);
-				xr2 = new XmlTextReader (xmlfile);
-				XmlValidatingReader xvr = new XmlValidatingReader (xr2);
-				xvr.Schemas.Add (XmlSchema.Read (xr, null));
-				while (!xvr.EOF)
-					xvr.Read ();
-			} finally {
-				if (xr2 != null)
-					xr2.Close ();
-				if (xr != null)
-					xr.Close ();
-			}
-		}
-
-		[Test]
-		public void ValidateMixedInsideXsdAny ()
-		{
-			string xml = @"<root xmlns='urn:foo'>
-  <X><Z>text</Z></X>
-  <Y><X><Z>text</Z></X></Y>
-</root>";
-			string xsd = @"
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
-  targetNamespace='urn:foo' xmlns='urn:foo'>
-    <xs:complexType name='root-type'>
-      <xs:sequence><xs:element ref='X' /><xs:element ref='Y' /></xs:sequence>
-    </xs:complexType>
-    <xs:complexType name='X-type'>
-      <xs:choice minOccurs='1' maxOccurs='unbounded'>
-        <xs:any processContents='skip'/>
-      </xs:choice>
-    </xs:complexType>
-    <xs:complexType name='Y-type'>
-      <xs:sequence><xs:element ref='X' /></xs:sequence>
-    </xs:complexType>
-  <xs:element name='root' type='root-type' />
-  <xs:element name='X' type='X-type' />
-  <xs:element name='Y' type='Y-type' />
-</xs:schema>";
-			XmlTextReader xtr = new XmlTextReader (new StringReader (xml));
-			XmlValidatingReader xvr = new XmlValidatingReader (xtr);
-			XmlReader xsr = new XmlTextReader (new StringReader (xsd));
-			xvr.Schemas.Add (XmlSchema.Read (xsr, null));
-			while (!xvr.EOF)
-				xvr.Read ();
-			xtr = new XmlTextReader (new StringReader (xml));
-			xsr = new XmlTextReader (new StringReader (xsd));
-			var s = new XmlReaderSettings ();
-			s.Schemas.Add (XmlSchema.Read (xsr, null));
-			s.ValidationType = ValidationType.Schema;
-			XmlReader xvr2 = XmlReader.Create (xtr, s);
-			while (!xvr2.EOF)
-				xvr2.Read ();
-		}
-
-		[Test]
-		public void WhitespaceAndElementOnly ()
-		{
-			string xsd = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-  <xs:element name='element_list'>
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element name='element' maxOccurs='unbounded' />
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-</xs:schema>";
-			string xml = @"<element_list>
-    <!-- blah blah blah -->
-    <element />
-
-    <!-- blah blah -->
-    <element />
-</element_list>";
-			RunValidation (xml, xsd);
-		}
-
-		[Test]
-		[ExpectedException (typeof (XmlSchemaValidationException))]
-		public void EnumerationFacet ()
-		{
-			// bug #339934
-			string xsd = @"<xs:schema id='schema' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-    <xs:simpleType name='ModeType'>
-        <xs:restriction base='xs:string'>
-            <xs:enumeration value='on' />
-            <xs:enumeration value='off' />
-        </xs:restriction>
-    </xs:simpleType>
-    <xs:element name='test'>
-        <xs:complexType>
-            <xs:sequence/>
-            <xs:attribute name='mode' type='ModeType' use='required' />
-        </xs:complexType>
-    </xs:element>
-</xs:schema>";
-			string xml = @"<test mode='out of scope'></test>";
-
-			RunValidation (xml, xsd);
-		}
-		
-		[Test]
-		public void Bug501763 ()
-		{
-			string xsd1 = @"
-			<xs:schema id='foo1'
-				targetNamespace='foo1'
-				elementFormDefault='qualified'
-				xmlns='foo1'			  
-				xmlns:xs='http://www.w3.org/2001/XMLSchema'
-				xmlns:f2='foo2'>
-
-				<xs:import namespace='foo2' />
-				<xs:element name='Foo1Element' type='f2:Foo2ExtendedType'/>	
-			</xs:schema>";
-
-			string xsd2 = @"
-			<xs:schema id='foo2'
-				targetNamespace='foo2'
-				elementFormDefault='qualified'
-				xmlns='foo2'    
-				xmlns:xs='http://www.w3.org/2001/XMLSchema' >
-
-				<xs:element name='Foo2Element' type='Foo2Type' />
-	
-				<xs:complexType name='Foo2Type'>
-					<xs:attribute name='foo2Attr' type='xs:string' use='required'/>
-				</xs:complexType>
-	
-				<xs:complexType name='Foo2ExtendedType'>
-					<xs:complexContent>
-						<xs:extension base='Foo2Type'>
-							<xs:attribute name='foo2ExtAttr' type='xs:string' use='required'/>
-						</xs:extension>
-					</xs:complexContent>
-				</xs:complexType>
-			</xs:schema>";
-
-			
-			XmlDocument doc = new XmlDocument ();
-			
-			XmlSchema schema1 = XmlSchema.Read (XmlReader.Create (new StringReader (xsd1)), null);
-			XmlSchema schema2 = XmlSchema.Read (XmlReader.Create (new StringReader (xsd2)), null);
-			
-			doc.LoadXml (@"
-				<Foo2Element
-					foo2Attr='dummyvalue1'
-					xmlns='foo2'
-				/>");
-			doc.Schemas.Add (schema2);
-			doc.Validate (null);
-			
-			doc = new XmlDocument();
-			doc.LoadXml(@"
-				<Foo1Element
-					foo2Attr='dummyvalue1'
-					foo2ExtAttr='dummyvalue2'
-					xmlns='foo1'
-				/>");
-			doc.Schemas.Add (schema2);
-			doc.Schemas.Add (schema1);
-			doc.Validate (null);
-		}
-		
-		void RunValidation (string xml, string xsd)
-		{
-			XmlReaderSettings s = new XmlReaderSettings ();
-			s.ValidationType = ValidationType.Schema;
-			s.Schemas.Add (XmlSchema.Read (XmlReader.Create (new StringReader (xsd)), null));
-
-			XmlReader r = XmlReader.Create (new StringReader (xml), s);
-			while (!r.EOF)
-				r.Read ();
-		}
-	}
-}
+		[ExpectedException (typeof (XmlSchemaException))]
+		public void EnumerationFacetOnAttribute ()
+		{
+			string xml = "<test mode='NOT AN ENUMERATION VALUE' />";
+			XmlSchema schema = XmlSchema.Read (new XmlTextReader (TestResourceHelper.GetFullPathOfResource ("Test/XmlFiles/xsd/79650.xsd")), null);
+			XmlValidatingReader xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+			xvr.ValidationType = ValidationType.Schema;
+			xvr.Schemas.Add (schema);
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		class XmlErrorResolver : XmlResolver
+		{
+			public override ICredentials Credentials {
+				set { }
+			}
+
+			public override object GetEntity (Uri uri, string role, Type type)
+			{
+				throw new Exception ();
+			}
+		}
+
+		[Test] // bug #79924
+		public void ValidationTypeNoneIgnoreSchemaLocations ()
+		{
+			string xml = "<project xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='nosuchschema.xsd'/>";
+			XmlValidatingReader vr = new XmlValidatingReader (
+				new XmlTextReader (new StringReader (xml)));
+			vr.ValidationType = ValidationType.None;
+			vr.XmlResolver = new XmlErrorResolver ();
+			while (!vr.EOF)
+				vr.Read ();
+		}
+
+		[Test] // bug #336625
+		public void ValidationTypeNoneIgnoreLocatedSchemaErrors ()
+		{
+			string xml = "<test xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='Test/XmlFiles/xsd/336625.xsd'/>";
+			XmlValidatingReader vr = new XmlValidatingReader (
+				new XmlTextReader (new StringReader (xml)));
+			vr.ValidationType = ValidationType.None;
+			while (!vr.EOF)
+				vr.Read ();
+		}
+
+		[Test]
+		public void Bug81360 ()
+		{
+			string schemaResource = "Test/XmlFiles/xsd/81360.xsd";
+			XmlTextReader treader = new XmlTextReader (TestResourceHelper.GetFullPathOfResource (schemaResource));
+			XmlSchema sc = XmlSchema.Read (treader, null);
+			sc.Compile (null);
+			string xml = @"<body xmlns='" + sc.TargetNamespace + "'><div></div></body>";
+			XmlTextReader reader = new XmlTextReader (new StringReader (xml));
+			XmlValidatingReader validator = new XmlValidatingReader (reader);
+			validator.Schemas.Add (sc);
+			validator.ValidationType = ValidationType.Schema;
+			while (!validator.EOF)
+				validator.Read ();
+		}
+
+		[Test]
+		public void Bug81460 ()
+		{
+			string xsd = "<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'><xs:element name='foo'><xs:complexType><xs:attribute name='a' default='x' /></xs:complexType></xs:element></xs:schema>";
+			string xml = "<foo/>";
+			XmlReaderSettings s = new XmlReaderSettings ();
+			s.ValidationType = ValidationType.Schema;
+			s.Schemas.Add (XmlSchema.Read (new StringReader (xsd), null));
+			XmlReader r = XmlReader.Create (new StringReader (xml), s);
+			r.Read ();
+			r.MoveToFirstAttribute (); // default attribute
+			Assert.AreEqual (String.Empty, r.Prefix);
+		}
+
+		[Test]
+		// annoyance
+		[ExpectedException (typeof (XmlSchemaValidationException))]
+		public void Bug82099 ()
+		{
+			string xsd = @"
+<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
+  <xsd:element name='Customer' type='CustomerType' />
+  <xsd:complexType name='CustomerType'>
+    <xsd:attribute name='name' type='xsd:string' />
+  </xsd:complexType>
+</xsd:schema>";
+			XmlSchema schema = XmlSchema.Read (new StringReader (xsd), null);
+
+			string xml = "<Customer name='Bob'> </Customer>";
+
+			XmlReaderSettings settings = new XmlReaderSettings ();
+			settings.Schemas.Add (schema);
+			settings.ValidationType = ValidationType.Schema;
+
+			XmlReader reader = XmlReader.Create (new StringReader (xml), settings);
+			
+			reader.Read ();
+			reader.Read ();
+			reader.Read ();
+		}
+
+		[Test]
+		public void Bug82010 ()
+		{
+			string xmlresource = "Test/XmlFiles/xsd/82010.xml";
+			string xsdresource = "Test/XmlFiles/xsd/82010.xsd";
+			XmlTextReader xr = null, xr2 = null;
+			try {
+				xr = new XmlTextReader (TestResourceHelper.GetFullPathOfResource (xsdresource));
+				xr2 = new XmlTextReader (TestResourceHelper.GetFullPathOfResource (xmlresource));
+				XmlValidatingReader xvr = new XmlValidatingReader (xr2);
+				xvr.Schemas.Add (XmlSchema.Read (xr, null));
+				while (!xvr.EOF)
+					xvr.Read ();
+			} finally {
+				if (xr2 != null)
+					xr2.Close ();
+				if (xr != null)
+					xr.Close ();
+			}
+		}
+
+		[Test]
+		public void Bug376395 ()
+		{
+			string xmlresource = "Test/XmlFiles/xsd/376395.xml";
+			string xsdresource = "Test/XmlFiles/xsd/376395.xsd";
+			XmlTextReader xr = null, xr2 = null;
+			try {
+				xr = new XmlTextReader (TestResourceHelper.GetFullPathOfResource (xsdresource));
+				xr2 = new XmlTextReader (TestResourceHelper.GetFullPathOfResource (xmlresource));
+				XmlValidatingReader xvr = new XmlValidatingReader (xr2);
+				xvr.Schemas.Add (XmlSchema.Read (xr, null));
+				while (!xvr.EOF)
+					xvr.Read ();
+			} finally {
+				if (xr2 != null)
+					xr2.Close ();
+				if (xr != null)
+					xr.Close ();
+			}
+		}
+
+		[Test]
+		public void ValidateMixedInsideXsdAny ()
+		{
+			string xml = @"<root xmlns='urn:foo'>
+  <X><Z>text</Z></X>
+  <Y><X><Z>text</Z></X></Y>
+</root>";
+			string xsd = @"
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
+  targetNamespace='urn:foo' xmlns='urn:foo'>
+    <xs:complexType name='root-type'>
+      <xs:sequence><xs:element ref='X' /><xs:element ref='Y' /></xs:sequence>
+    </xs:complexType>
+    <xs:complexType name='X-type'>
+      <xs:choice minOccurs='1' maxOccurs='unbounded'>
+        <xs:any processContents='skip'/>
+      </xs:choice>
+    </xs:complexType>
+    <xs:complexType name='Y-type'>
+      <xs:sequence><xs:element ref='X' /></xs:sequence>
+    </xs:complexType>
+  <xs:element name='root' type='root-type' />
+  <xs:element name='X' type='X-type' />
+  <xs:element name='Y' type='Y-type' />
+</xs:schema>";
+			XmlTextReader xtr = new XmlTextReader (new StringReader (xml));
+			XmlValidatingReader xvr = new XmlValidatingReader (xtr);
+			XmlReader xsr = new XmlTextReader (new StringReader (xsd));
+			xvr.Schemas.Add (XmlSchema.Read (xsr, null));
+			while (!xvr.EOF)
+				xvr.Read ();
+			xtr = new XmlTextReader (new StringReader (xml));
+			xsr = new XmlTextReader (new StringReader (xsd));
+			var s = new XmlReaderSettings ();
+			s.Schemas.Add (XmlSchema.Read (xsr, null));
+			s.ValidationType = ValidationType.Schema;
+			XmlReader xvr2 = XmlReader.Create (xtr, s);
+			while (!xvr2.EOF)
+				xvr2.Read ();
+		}
+
+		[Test]
+		public void WhitespaceAndElementOnly ()
+		{
+			string xsd = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+  <xs:element name='element_list'>
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name='element' maxOccurs='unbounded' />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>";
+			string xml = @"<element_list>
+    <!-- blah blah blah -->
+    <element />
+
+    <!-- blah blah -->
+    <element />
+</element_list>";
+			RunValidation (xml, xsd);
+		}
+
+		[Test]
+		[ExpectedException (typeof (XmlSchemaValidationException))]
+		public void EnumerationFacet ()
+		{
+			// bug #339934
+			string xsd = @"<xs:schema id='schema' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+    <xs:simpleType name='ModeType'>
+        <xs:restriction base='xs:string'>
+            <xs:enumeration value='on' />
+            <xs:enumeration value='off' />
+        </xs:restriction>
+    </xs:simpleType>
+    <xs:element name='test'>
+        <xs:complexType>
+            <xs:sequence/>
+            <xs:attribute name='mode' type='ModeType' use='required' />
+        </xs:complexType>
+    </xs:element>
+</xs:schema>";
+			string xml = @"<test mode='out of scope'></test>";
+
+			RunValidation (xml, xsd);
+		}
+		
+		[Test]
+		public void Bug501763 ()
+		{
+			string xsd1 = @"
+			<xs:schema id='foo1'
+				targetNamespace='foo1'
+				elementFormDefault='qualified'
+				xmlns='foo1'			  
+				xmlns:xs='http://www.w3.org/2001/XMLSchema'
+				xmlns:f2='foo2'>
+
+				<xs:import namespace='foo2' />
+				<xs:element name='Foo1Element' type='f2:Foo2ExtendedType'/>	
+			</xs:schema>";
+
+			string xsd2 = @"
+			<xs:schema id='foo2'
+				targetNamespace='foo2'
+				elementFormDefault='qualified'
+				xmlns='foo2'    
+				xmlns:xs='http://www.w3.org/2001/XMLSchema' >
+
+				<xs:element name='Foo2Element' type='Foo2Type' />
+	
+				<xs:complexType name='Foo2Type'>
+					<xs:attribute name='foo2Attr' type='xs:string' use='required'/>
+				</xs:complexType>
+	
+				<xs:complexType name='Foo2ExtendedType'>
+					<xs:complexContent>
+						<xs:extension base='Foo2Type'>
+							<xs:attribute name='foo2ExtAttr' type='xs:string' use='required'/>
+						</xs:extension>
+					</xs:complexContent>
+				</xs:complexType>
+			</xs:schema>";
+
+			
+			XmlDocument doc = new XmlDocument ();
+			
+			XmlSchema schema1 = XmlSchema.Read (XmlReader.Create (new StringReader (xsd1)), null);
+			XmlSchema schema2 = XmlSchema.Read (XmlReader.Create (new StringReader (xsd2)), null);
+			
+			doc.LoadXml (@"
+				<Foo2Element
+					foo2Attr='dummyvalue1'
+					xmlns='foo2'
+				/>");
+			doc.Schemas.Add (schema2);
+			doc.Validate (null);
+			
+			doc = new XmlDocument();
+			doc.LoadXml(@"
+				<Foo1Element
+					foo2Attr='dummyvalue1'
+					foo2ExtAttr='dummyvalue2'
+					xmlns='foo1'
+				/>");
+			doc.Schemas.Add (schema2);
+			doc.Schemas.Add (schema1);
+			doc.Validate (null);
+		}
+		
+		void RunValidation (string xml, string xsd)
+		{
+			XmlReaderSettings s = new XmlReaderSettings ();
+			s.ValidationType = ValidationType.Schema;
+			s.Schemas.Add (XmlSchema.Read (XmlReader.Create (new StringReader (xsd)), null));
+
+			XmlReader r = XmlReader.Create (new StringReader (xml), s);
+			while (!r.EOF)
+				r.Read ();
+		}
+	}
+}

+ 8 - 6
mcs/class/System.XML/Test/System.Xml/nist_dom/util.cs

@@ -14,6 +14,8 @@
 using System;
 using System.Xml;
 
+using MonoTests.Helpers;
+
 namespace nist_dom
 {
         public class XmlNodeArrayList : XmlNodeList
@@ -117,12 +119,12 @@ namespace nist_dom
 			try
 			{
 				//System.Console.WriteLine(System.IO.Directory.GetCurrentDirectory());
-				masterDoc.Load("Test/System.Xml/nist_dom/files/staff.xml");
-				originalDoc.Load("Test/System.Xml/nist_dom/files/staff.xml");
-				masterXML.Load("Test/System.Xml/nist_dom/files/staff.html");
-				otherDoc.Load("Test/System.Xml/nist_dom/files/otherDoc.xml");
-				HTMLDoc.Load("Test/System.Xml/nist_dom/files/staff.html");
-				noDTDXMLObject.Load("Test/System.Xml/nist_dom/files/noDTDXMLfile.xml");
+				masterDoc.Load(TestResourceHelper.GetFullPathOfResource ("Test/System.Xml/nist_dom/files/staff.xml"));
+				originalDoc.Load(TestResourceHelper.GetFullPathOfResource ("Test/System.Xml/nist_dom/files/staff.xml"));
+				masterXML.Load(TestResourceHelper.GetFullPathOfResource ("Test/System.Xml/nist_dom/files/staff.html"));
+				otherDoc.Load(TestResourceHelper.GetFullPathOfResource ("Test/System.Xml/nist_dom/files/otherDoc.xml"));
+				HTMLDoc.Load(TestResourceHelper.GetFullPathOfResource ("Test/System.Xml/nist_dom/files/staff.html"));
+				noDTDXMLObject.Load(TestResourceHelper.GetFullPathOfResource ("Test/System.Xml/nist_dom/files/noDTDXMLfile.xml"));
 			}
 			catch (System.Exception ex)
 			{