2009-07-11 Michael Barker <mike@middlesoft.co.uk>
[mono.git] / mcs / class / System.XML / Test / System.Xml.Schema / XmlSchemaAssertion.cs
1 //
2 // System.Xml.XmlSchemaAssertion.cs
3 //
4 // Author:
5 //   Atsushi Enomoto <atsushi@ximian.com>
6 //
7 // (C) 2004 Atsushi Enomoto
8 //
9
10 using System;
11 using System.IO;
12 using System.Xml;
13 using System.Xml.Schema;
14 using NUnit.Framework;
15
16 namespace MonoTests.System.Xml
17 {
18         public class XmlSchemaAssertion
19         {
20                 public static XmlSchema GetSchema (string path)
21                 {
22                         XmlTextReader reader = new XmlTextReader (path);
23                         XmlSchema schema = XmlSchema.Read (reader, null);
24                         reader.Close ();
25                         return schema;
26                 }
27
28                 public static XmlQualifiedName QName (string name, string ns)
29                 {
30                         return new XmlQualifiedName (name, ns);
31                 }
32
33                 public static void AssertElement (XmlSchemaElement element,
34                         string name, XmlQualifiedName refName, string id,
35                         XmlQualifiedName schemaTypeName, XmlSchemaType schemaType)
36                 {
37                         Assert.IsNotNull (element);
38                         Assert.AreEqual (name, element.Name);
39                         Assert.AreEqual (refName, element.RefName);
40                         Assert.AreEqual (id, element.Id);
41                         Assert.AreEqual (schemaTypeName, element.SchemaTypeName);
42                         Assert.AreEqual (schemaType, element.SchemaType);
43                 }
44
45                 public static void AssertElementEx (XmlSchemaElement element,
46                         XmlSchemaDerivationMethod block, XmlSchemaDerivationMethod final,
47                         string defaultValue, string fixedValue,
48                         XmlSchemaForm form, bool isAbstract, bool isNillable,
49                         XmlQualifiedName substGroup)
50                 {
51                         Assert.IsNotNull (element);
52                         Assert.AreEqual (block, element.Block);
53                         Assert.AreEqual (final, element.Final);
54                         Assert.AreEqual (defaultValue, element.DefaultValue);
55                         Assert.AreEqual (fixedValue, element.FixedValue);
56                         Assert.AreEqual (form, element.Form);
57                         Assert.AreEqual (isAbstract, element.IsAbstract);
58                         Assert.AreEqual (isNillable, element.IsNillable);
59                         Assert.AreEqual (substGroup, element.SubstitutionGroup);
60                 }
61
62                 public static void AssertCompiledComplexType (XmlSchemaComplexType cType,
63                         XmlQualifiedName name,
64                         int attributesCount, int attributeUsesCount,
65                         bool existsAny, Type contentModelType,
66                         bool hasContentTypeParticle,
67                         XmlSchemaContentType contentType)
68                 {
69                         Assert.IsNotNull (cType);
70                         Assert.AreEqual (name.Name, cType.Name);
71                         Assert.AreEqual (name, cType.QualifiedName);
72                         Assert.AreEqual (attributesCount, cType.Attributes.Count);
73                         Assert.AreEqual (attributeUsesCount, cType.AttributeUses.Count);
74                         Assert.IsTrue (existsAny == (cType.AttributeWildcard != null));
75                         if (contentModelType == null)
76                                 Assert.IsNull (cType.ContentModel);
77                         else
78                                 Assert.AreEqual (contentModelType, cType.ContentModel.GetType ());
79                         Assert.AreEqual (hasContentTypeParticle, cType.ContentTypeParticle != null);
80                         Assert.AreEqual (contentType, cType.ContentType);
81                 }
82
83                 public static void AssertCompiledComplexContentExtension (XmlSchemaComplexContentExtension xccx,
84                         int attributeCount, bool hasAnyAttribute, XmlQualifiedName baseTypeName)
85                 {
86                         Assert.IsNotNull (xccx);
87                         Assert.AreEqual (attributeCount, xccx.Attributes.Count);
88                         Assert.AreEqual (hasAnyAttribute, xccx.AnyAttribute != null);
89                         Assert.AreEqual (baseTypeName, xccx.BaseTypeName);
90                         Assert.IsNotNull (xccx.Particle);
91                 }
92
93                 public static void AssertCompiledElement (XmlSchemaElement element,
94                         XmlQualifiedName name, object elementType)
95                 {
96                         Assert.IsNotNull (element);
97                         Assert.AreEqual (name, element.QualifiedName);
98                         Assert.AreEqual (elementType, element.ElementType);
99                 }
100
101         }
102 }