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