// // XmlSchemaValidatorTests.cs // // Author: // Atsushi Enomoto // // (C) 2008 Novell Inc. // #if NET_2_0 using System; using System.Collections; using System.IO; using System.Xml; using System.Xml.Schema; using NUnit.Framework; namespace MonoTests.System.Xml { [TestFixture] public class XmlSchemaValidatorTests { void Validate (string xml, string xsd) { XmlSchema schema = XmlSchema.Read (new StringReader (xsd), null); XmlReaderSettings settings = new XmlReaderSettings (); settings.ValidationType = ValidationType.Schema; settings.Schemas.Add (schema); XmlReader reader = XmlReader.Create (new StringReader (xml), settings); while (reader.Read ()) ; } [Test] public void XsdAnyToSkipAttributeValidation () { // bug #358408 XmlSchemaSet schemas = new XmlSchemaSet (); schemas.Add (null, "Test/XmlFiles/xsd/358408.xsd"); XmlSchemaValidator v = new XmlSchemaValidator ( new NameTable (), schemas, new XmlNamespaceManager (new NameTable ()), XmlSchemaValidationFlags.ProcessIdentityConstraints); v.Initialize (); v.ValidateWhitespace (" "); XmlSchemaInfo info = new XmlSchemaInfo (); ArrayList list = new ArrayList (); v.ValidateElement ("configuration", "", info, null, null, null, null); v.GetUnspecifiedDefaultAttributes (list); v.ValidateEndOfAttributes (info); v.ValidateWhitespace (" "); v.ValidateElement ("host", "", info, null, null, null, null); v.ValidateAttribute ("auto-start", "", "true", info); list.Clear (); v.GetUnspecifiedDefaultAttributes (list); v.ValidateEndOfAttributes (info); v.ValidateEndElement (null);//info); v.ValidateWhitespace (" "); v.ValidateElement ("service-managers", "", info, null, null, null, null); list.Clear (); v.GetUnspecifiedDefaultAttributes (list); v.ValidateEndOfAttributes (info); v.ValidateWhitespace (" "); v.ValidateElement ("service-manager", "", info, null, null, null, null); list.Clear (); v.GetUnspecifiedDefaultAttributes (list); v.ValidateEndOfAttributes (info); v.ValidateWhitespace (" "); v.ValidateElement ("foo", "", info, null, null, null, null); v.ValidateAttribute ("bar", "", "", info); } [Test] public void SkipInvolved () // bug #422581 { XmlReader schemaReader = XmlReader.Create ("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); while (reader.Read ()); } [Test] public void Bug433774 () { string xsd = @" "; XmlDocument doc = new XmlDocument (); doc.LoadXml (""); XmlSchemaSet schemaSet = new XmlSchemaSet(); schemaSet.Add (XmlSchema.Read (XmlReader.Create (new StringReader (xsd)), null)); doc.Schemas = schemaSet; XmlNode root = doc.DocumentElement; doc.Validate (null, root); } [Test] [ExpectedException (typeof (XmlSchemaValidationException))] public void Bug435206 () { string xsd = @" "; string xml = @""; Validate (xml, xsd); } [Test] public void Bug469713 () { string xsd = @" "; string xml = @" "; Validate (xml, xsd); } [Test] public void Bug496192_496205 () { using (var xmlr = new StreamReader ("Test/XmlFiles/496192.xml")) using (var xsdr = new StreamReader ("Test/XmlFiles/496192.xsd")) Validate (xmlr.ReadToEnd (), xsdr.ReadToEnd ()); } [Test] public void Bug501666 () { string xsd = @" "; string xml = @""; XmlDocument doc = new XmlDocument (); doc.LoadXml (xml); doc.Schemas.Add (XmlSchema.Read (XmlReader.Create (new StringReader (xsd)), null)); doc.Validate (null); } public void Bug502251 () { string xsd = @" "; XmlDocument doc = new XmlDocument (); doc.LoadXml (@" "); XmlSchema schema = XmlSchema.Read (XmlReader.Create (new StringReader (xsd)), null); doc.Schemas.Add (schema); doc.Validate (null); } } } #endif