XsdParticleValidationTests.cs 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. //
  2. // MonoTests.System.Xml.XsdParticleValidationTests.cs
  3. //
  4. // Author:
  5. // Atsushi Enomoto <[email protected]>
  6. //
  7. // (C)2003 Atsushi Enomoto
  8. //
  9. using System;
  10. using System.Xml;
  11. using System.Xml.Schema;
  12. using NUnit.Framework;
  13. #if NET_2_0
  14. using ValidationException = System.Xml.Schema.XmlSchemaValidationException;
  15. #else
  16. using ValidationException = System.Xml.Schema.XmlSchemaException;
  17. #endif
  18. namespace MonoTests.System.Xml
  19. {
  20. // using XmlValidatingReader = XmlTextReader;
  21. [TestFixture]
  22. public class XsdParticleValidationTests : Assertion
  23. {
  24. XmlSchema schema;
  25. XmlReader xr;
  26. XmlValidatingReader xvr;
  27. private void PrepareReader1 (string xsdUrl, string xml)
  28. {
  29. schema = XmlSchema.Read (new XmlTextReader ("Test/XmlFiles/XsdValidation/" + xsdUrl), null);
  30. xr = new XmlTextReader (xml, XmlNodeType.Document, null);
  31. xvr = new XmlValidatingReader (xr);
  32. xvr.Schemas.Add (schema);
  33. // xvr = xr as XmlValidatingReader;
  34. }
  35. [Test]
  36. public void ValidateRootElementOnlyValid ()
  37. {
  38. PrepareReader1 ("1.xsd", "<root xmlns='urn:foo' />");
  39. xvr.Read ();
  40. PrepareReader1 ("1.xsd", "<root xmlns='urn:foo'></root>");
  41. xvr.Read ();
  42. xvr.Read ();
  43. }
  44. [Test]
  45. #if NET_2_0
  46. [Category ("NotDotNet")]
  47. // MS.NET throws XmlSchemaException, not -ValidationException.
  48. #endif
  49. [ExpectedException (typeof (ValidationException))]
  50. public void ValidateRootElementOnlyInvalid ()
  51. {
  52. PrepareReader1 ("1.xsd", "<invalid xmlns='urn:foo' />");
  53. xvr.Read ();
  54. }
  55. [Test]
  56. [ExpectedException (typeof (ValidationException))]
  57. public void ValidateRootElementOnlyInvalid2 ()
  58. {
  59. PrepareReader1 ("1.xsd", "<root xmlns='urn:foo'><invalid_child/></root>");
  60. xvr.Read ();
  61. xvr.Read ();
  62. }
  63. [Test]
  64. public void ValidateElementContainsElementValid1 ()
  65. {
  66. PrepareReader1 ("2.xsd", "<root xmlns='urn:foo'><child/></root>");
  67. while (!xvr.EOF)
  68. xvr.Read ();
  69. }
  70. [Test]
  71. public void ValidateElementContainsElementValid2 ()
  72. {
  73. PrepareReader1 ("2.xsd", "<root xmlns='urn:foo'><child/><child/></root>");
  74. while (!xvr.EOF)
  75. xvr.Read ();
  76. }
  77. [Test]
  78. [ExpectedException (typeof (ValidationException))]
  79. public void ValidateElementContainsElementInvalid1 ()
  80. {
  81. PrepareReader1 ("2.xsd", "<root xmlns='urn:foo'></root>");
  82. while (!xvr.EOF)
  83. xvr.Read ();
  84. }
  85. [Test]
  86. [ExpectedException (typeof (ValidationException))]
  87. public void ValidateElementContainsElementInvalid2 ()
  88. {
  89. PrepareReader1 ("2.xsd", "<root xmlns='urn:foo'><child/><child/><child/></root>");
  90. while (!xvr.EOF)
  91. xvr.Read ();
  92. }
  93. [Test]
  94. public void ValidateSequenceValid ()
  95. {
  96. PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/></root>");
  97. while (!xvr.EOF)
  98. xvr.Read ();
  99. PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/><child1/><child2/></root>");
  100. while (!xvr.EOF)
  101. xvr.Read ();
  102. }
  103. [Test]
  104. [ExpectedException (typeof (ValidationException))]
  105. public void ValidateSequenceInvalid1 ()
  106. {
  107. PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'></root>");
  108. while (!xvr.EOF)
  109. xvr.Read ();
  110. }
  111. [Test]
  112. [ExpectedException (typeof (ValidationException))]
  113. public void ValidateSequenceInvalid2 ()
  114. {
  115. PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/></root>");
  116. while (!xvr.EOF)
  117. xvr.Read ();
  118. }
  119. [Test]
  120. [ExpectedException (typeof (ValidationException))]
  121. public void ValidateSequenceInvalid3 ()
  122. {
  123. PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/><child1/></root>");
  124. while (!xvr.EOF)
  125. xvr.Read ();
  126. }
  127. [Test]
  128. [ExpectedException (typeof (ValidationException))]
  129. public void ValidateSequenceInvalid4 ()
  130. {
  131. PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/><child1/><child2/><child1/></root>");
  132. while (!xvr.EOF)
  133. xvr.Read ();
  134. }
  135. [Test]
  136. [ExpectedException (typeof (ValidationException))]
  137. public void ValidateSequenceInvalid5 ()
  138. {
  139. PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/><child1/><child2/><child1/><child2/></root>");
  140. while (!xvr.EOF)
  141. xvr.Read ();
  142. }
  143. [Test]
  144. public void ValidateChoiceValid ()
  145. {
  146. PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child1/></root>");
  147. while (!xvr.EOF)
  148. xvr.Read ();
  149. PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child2/></root>");
  150. while (!xvr.EOF)
  151. xvr.Read ();
  152. PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child1/><child2/></root>");
  153. while (!xvr.EOF)
  154. xvr.Read ();
  155. PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child2/><child2/></root>");
  156. while (!xvr.EOF)
  157. xvr.Read ();
  158. PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child2/><child2/><child2/><child2/></root>");
  159. while (!xvr.EOF)
  160. xvr.Read ();
  161. PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child2/><child2/><child1/></root>");
  162. while (!xvr.EOF)
  163. xvr.Read ();
  164. PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'></root>");
  165. while (!xvr.EOF)
  166. xvr.Read ();
  167. }
  168. [Test]
  169. [ExpectedException (typeof (ValidationException))]
  170. public void ValidateChoiceInvalid1 ()
  171. {
  172. PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child1/><child1/><child1/></root>");
  173. while (!xvr.EOF)
  174. xvr.Read ();
  175. }
  176. [Test]
  177. [ExpectedException (typeof (ValidationException))]
  178. public void ValidateChoiceInvalid2 ()
  179. {
  180. PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child2/><child2/><child2/><child2/><child2/></root>");
  181. while (!xvr.EOF)
  182. xvr.Read ();
  183. }
  184. [Test]
  185. [ExpectedException (typeof (ValidationException))]
  186. public void ValidateChoiceInvalid3 ()
  187. {
  188. PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child2/><child2/><child2/><child1/></root>");
  189. while (!xvr.EOF)
  190. xvr.Read ();
  191. }
  192. [Test]
  193. [ExpectedException (typeof (ValidationException))]
  194. public void ValidateChoiceInvalid4 ()
  195. {
  196. PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/><child2/><child2/></root>");
  197. while (!xvr.EOF)
  198. xvr.Read ();
  199. }
  200. }
  201. }