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