XsdParticleValidationTests.cs 5.9 KB

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