2 // XmlTextReaderTests.cs
5 // Atsushi Enomoto (ginga@kit.hi-ho.ne.jp)
7 // (C) 2003 Atsushi Enomoto, originally written by Jason Diamond
8 // (Moved from XmlTextReaderTests.cs)
13 using NUnit.Framework;
15 // The following is #if'ed out because it's specific to the Mono
16 // implementation and won't compile when testing Microsoft's code.
17 // Feel free to turn it on if you want to test Mono's name tables.
19 // But note that anyway it is impossible to test XmlChar class
20 // because it is marked as internal.
22 namespace MonoTests.System.Xml
26 public class XmlCharTests
31 public void IsFirstNameCharTest ()
33 for (int ch = 0; ch <= 0xFFFF; ++ch) {
34 Assert.IsTrue (XmlChar.IsFirstNameChar (ch) ==
35 IsFirstNameChar (ch));
40 public void IsNameCharTest ()
42 for (int ch = 0; ch <= 0xFFFF; ++ch) {
43 Assert.IsTrue (XmlChar.IsNameChar (ch) ==
48 private static bool IsFirstNameChar (int ch)
56 private static bool IsNameChar (int ch)
65 IsCombiningChar (ch) ||
69 private static bool IsLetter (int ch)
76 private static bool IsBaseChar (int ch)
79 (ch >= 0x0041 && ch <= 0x005A) ||
80 (ch >= 0x0061 && ch <= 0x007A) ||
81 (ch >= 0x00C0 && ch <= 0x00D6) ||
82 (ch >= 0x00D8 && ch <= 0x00F6) ||
83 (ch >= 0x00F8 && ch <= 0x00FF) ||
84 (ch >= 0x0100 && ch <= 0x0131) ||
85 (ch >= 0x0134 && ch <= 0x013E) ||
86 (ch >= 0x0141 && ch <= 0x0148) ||
87 (ch >= 0x014A && ch <= 0x017E) ||
88 (ch >= 0x0180 && ch <= 0x01C3) ||
89 (ch >= 0x01CD && ch <= 0x01F0) ||
90 (ch >= 0x01F4 && ch <= 0x01F5) ||
91 (ch >= 0x01FA && ch <= 0x0217) ||
92 (ch >= 0x0250 && ch <= 0x02A8) ||
93 (ch >= 0x02BB && ch <= 0x02C1) ||
95 (ch >= 0x0388 && ch <= 0x038A) ||
97 (ch >= 0x038E && ch <= 0x03A1) ||
98 (ch >= 0x03A3 && ch <= 0x03CE) ||
99 (ch >= 0x03D0 && ch <= 0x03D6) ||
104 (ch >= 0x03E2 && ch <= 0x03F3) ||
105 (ch >= 0x0401 && ch <= 0x040C) ||
106 (ch >= 0x040E && ch <= 0x044F) ||
107 (ch >= 0x0451 && ch <= 0x045C) ||
108 (ch >= 0x045E && ch <= 0x0481) ||
109 (ch >= 0x0490 && ch <= 0x04C4) ||
110 (ch >= 0x04C7 && ch <= 0x04C8) ||
111 (ch >= 0x04CB && ch <= 0x04CC) ||
112 (ch >= 0x04D0 && ch <= 0x04EB) ||
113 (ch >= 0x04EE && ch <= 0x04F5) ||
114 (ch >= 0x04F8 && ch <= 0x04F9) ||
115 (ch >= 0x0531 && ch <= 0x0556) ||
117 (ch >= 0x0561 && ch <= 0x0586) ||
118 (ch >= 0x05D0 && ch <= 0x05EA) ||
119 (ch >= 0x05F0 && ch <= 0x05F2) ||
120 (ch >= 0x0621 && ch <= 0x063A) ||
121 (ch >= 0x0641 && ch <= 0x064A) ||
122 (ch >= 0x0671 && ch <= 0x06B7) ||
123 (ch >= 0x06BA && ch <= 0x06BE) ||
124 (ch >= 0x06C0 && ch <= 0x06CE) ||
125 (ch >= 0x06D0 && ch <= 0x06D3) ||
127 (ch >= 0x06E5 && ch <= 0x06E6) ||
128 (ch >= 0x0905 && ch <= 0x0939) ||
130 (ch >= 0x0958 && ch <= 0x0961) ||
131 (ch >= 0x0985 && ch <= 0x098C) ||
132 (ch >= 0x098F && ch <= 0x0990) ||
133 (ch >= 0x0993 && ch <= 0x09A8) ||
134 (ch >= 0x09AA && ch <= 0x09B0) ||
136 (ch >= 0x09B6 && ch <= 0x09B9) ||
137 (ch >= 0x09DC && ch <= 0x09DD) ||
138 (ch >= 0x09DF && ch <= 0x09E1) ||
139 (ch >= 0x09F0 && ch <= 0x09F1) ||
140 (ch >= 0x0A05 && ch <= 0x0A0A) ||
141 (ch >= 0x0A0F && ch <= 0x0A10) ||
142 (ch >= 0x0A13 && ch <= 0x0A28) ||
143 (ch >= 0x0A2A && ch <= 0x0A30) ||
144 (ch >= 0x0A32 && ch <= 0x0A33) ||
145 (ch >= 0x0A35 && ch <= 0x0A36) ||
146 (ch >= 0x0A38 && ch <= 0x0A39) ||
147 (ch >= 0x0A59 && ch <= 0x0A5C) ||
149 (ch >= 0x0A72 && ch <= 0x0A74) ||
150 (ch >= 0x0A85 && ch <= 0x0A8B) ||
152 (ch >= 0x0A8F && ch <= 0x0A91) ||
153 (ch >= 0x0A93 && ch <= 0x0AA8) ||
154 (ch >= 0x0AAA && ch <= 0x0AB0) ||
155 (ch >= 0x0AB2 && ch <= 0x0AB3) ||
156 (ch >= 0x0AB5 && ch <= 0x0AB9) ||
159 (ch >= 0x0B05 && ch <= 0x0B0C) ||
160 (ch >= 0x0B0F && ch <= 0x0B10) ||
161 (ch >= 0x0B13 && ch <= 0x0B28) ||
162 (ch >= 0x0B2A && ch <= 0x0B30) ||
163 (ch >= 0x0B32 && ch <= 0x0B33) ||
164 (ch >= 0x0B36 && ch <= 0x0B39) ||
166 (ch >= 0x0B5C && ch <= 0x0B5D) ||
167 (ch >= 0x0B5F && ch <= 0x0B61) ||
168 (ch >= 0x0B85 && ch <= 0x0B8A) ||
169 (ch >= 0x0B8E && ch <= 0x0B90) ||
170 (ch >= 0x0B92 && ch <= 0x0B95) ||
171 (ch >= 0x0B99 && ch <= 0x0B9A) ||
173 (ch >= 0x0B9E && ch <= 0x0B9F) ||
174 (ch >= 0x0BA3 && ch <= 0x0BA4) ||
175 (ch >= 0x0BA8 && ch <= 0x0BAA) ||
176 (ch >= 0x0BAE && ch <= 0x0BB5) ||
177 (ch >= 0x0BB7 && ch <= 0x0BB9) ||
178 (ch >= 0x0C05 && ch <= 0x0C0C) ||
179 (ch >= 0x0C0E && ch <= 0x0C10) ||
180 (ch >= 0x0C12 && ch <= 0x0C28) ||
181 (ch >= 0x0C2A && ch <= 0x0C33) ||
182 (ch >= 0x0C35 && ch <= 0x0C39) ||
183 (ch >= 0x0C60 && ch <= 0x0C61) ||
184 (ch >= 0x0C85 && ch <= 0x0C8C) ||
185 (ch >= 0x0C8E && ch <= 0x0C90) ||
186 (ch >= 0x0C92 && ch <= 0x0CA8) ||
187 (ch >= 0x0CAA && ch <= 0x0CB3) ||
188 (ch >= 0x0CB5 && ch <= 0x0CB9) ||
190 (ch >= 0x0CE0 && ch <= 0x0CE1) ||
191 (ch >= 0x0D05 && ch <= 0x0D0C) ||
192 (ch >= 0x0D0E && ch <= 0x0D10) ||
193 (ch >= 0x0D12 && ch <= 0x0D28) ||
194 (ch >= 0x0D2A && ch <= 0x0D39) ||
195 (ch >= 0x0D60 && ch <= 0x0D61) ||
196 (ch >= 0x0E01 && ch <= 0x0E2E) ||
198 (ch >= 0x0E32 && ch <= 0x0E33) ||
199 (ch >= 0x0E40 && ch <= 0x0E45) ||
200 (ch >= 0x0E81 && ch <= 0x0E82) ||
202 (ch >= 0x0E87 && ch <= 0x0E88) ||
205 (ch >= 0x0E94 && ch <= 0x0E97) ||
206 (ch >= 0x0E99 && ch <= 0x0E9F) ||
207 (ch >= 0x0EA1 && ch <= 0x0EA3) ||
210 (ch >= 0x0EAA && ch <= 0x0EAB) ||
211 (ch >= 0x0EAD && ch <= 0x0EAE) ||
213 (ch >= 0x0EB2 && ch <= 0x0EB3) ||
215 (ch >= 0x0EC0 && ch <= 0x0EC4) ||
216 (ch >= 0x0F40 && ch <= 0x0F47) ||
217 (ch >= 0x0F49 && ch <= 0x0F69) ||
218 (ch >= 0x10A0 && ch <= 0x10C5) ||
219 (ch >= 0x10D0 && ch <= 0x10F6) ||
221 (ch >= 0x1102 && ch <= 0x1103) ||
222 (ch >= 0x1105 && ch <= 0x1107) ||
224 (ch >= 0x110B && ch <= 0x110C) ||
225 (ch >= 0x110E && ch <= 0x1112) ||
232 (ch >= 0x1154 && ch <= 0x1155) ||
234 (ch >= 0x115F && ch <= 0x1161) ||
239 (ch >= 0x116D && ch <= 0x116E) ||
240 (ch >= 0x1172 && ch <= 0x1173) ||
245 (ch >= 0x11AE && ch <= 0x11AF) ||
246 (ch >= 0x11B7 && ch <= 0x11B8) ||
248 (ch >= 0x11BC && ch <= 0x11C2) ||
252 (ch >= 0x1E00 && ch <= 0x1E9B) ||
253 (ch >= 0x1EA0 && ch <= 0x1EF9) ||
254 (ch >= 0x1F00 && ch <= 0x1F15) ||
255 (ch >= 0x1F18 && ch <= 0x1F1D) ||
256 (ch >= 0x1F20 && ch <= 0x1F45) ||
257 (ch >= 0x1F48 && ch <= 0x1F4D) ||
258 (ch >= 0x1F50 && ch <= 0x1F57) ||
262 (ch >= 0x1F5F && ch <= 0x1F7D) ||
263 (ch >= 0x1F80 && ch <= 0x1FB4) ||
264 (ch >= 0x1FB6 && ch <= 0x1FBC) ||
266 (ch >= 0x1FC2 && ch <= 0x1FC4) ||
267 (ch >= 0x1FC6 && ch <= 0x1FCC) ||
268 (ch >= 0x1FD0 && ch <= 0x1FD3) ||
269 (ch >= 0x1FD6 && ch <= 0x1FDB) ||
270 (ch >= 0x1FE0 && ch <= 0x1FEC) ||
271 (ch >= 0x1FF2 && ch <= 0x1FF4) ||
272 (ch >= 0x1FF6 && ch <= 0x1FFC) ||
274 (ch >= 0x212A && ch <= 0x212B) ||
276 (ch >= 0x2180 && ch <= 0x2182) ||
277 (ch >= 0x3041 && ch <= 0x3094) ||
278 (ch >= 0x30A1 && ch <= 0x30FA) ||
279 (ch >= 0x3105 && ch <= 0x312C) ||
280 (ch >= 0xAC00 && ch <= 0xD7A3);
283 private static bool IsIdeographic (int ch)
286 (ch >= 0x4E00 && ch <= 0x9FA5) ||
288 (ch >= 0x3021 && ch <= 0x3029);
291 private static bool IsDigit (int ch)
294 (ch >= 0x0030 && ch <= 0x0039) ||
295 (ch >= 0x0660 && ch <= 0x0669) ||
296 (ch >= 0x06F0 && ch <= 0x06F9) ||
297 (ch >= 0x0966 && ch <= 0x096F) ||
298 (ch >= 0x09E6 && ch <= 0x09EF) ||
299 (ch >= 0x0A66 && ch <= 0x0A6F) ||
300 (ch >= 0x0AE6 && ch <= 0x0AEF) ||
301 (ch >= 0x0B66 && ch <= 0x0B6F) ||
302 (ch >= 0x0BE7 && ch <= 0x0BEF) ||
303 (ch >= 0x0C66 && ch <= 0x0C6F) ||
304 (ch >= 0x0CE6 && ch <= 0x0CEF) ||
305 (ch >= 0x0D66 && ch <= 0x0D6F) ||
306 (ch >= 0x0E50 && ch <= 0x0E59) ||
307 (ch >= 0x0ED0 && ch <= 0x0ED9) ||
308 (ch >= 0x0F20 && ch <= 0x0F29);
311 private static bool IsCombiningChar (int ch)
314 (ch >= 0x0300 && ch <= 0x0345) ||
315 (ch >= 0x0360 && ch <= 0x0361) ||
316 (ch >= 0x0483 && ch <= 0x0486) ||
317 (ch >= 0x0591 && ch <= 0x05A1) ||
318 (ch >= 0x05A3 && ch <= 0x05B9) ||
319 (ch >= 0x05BB && ch <= 0x05BD) ||
321 (ch >= 0x05C1 && ch <= 0x05C2) ||
323 (ch >= 0x064B && ch <= 0x0652) ||
325 (ch >= 0x06D6 && ch <= 0x06DC) ||
326 (ch >= 0x06DD && ch <= 0x06DF) ||
327 (ch >= 0x06E0 && ch <= 0x06E4) ||
328 (ch >= 0x06E7 && ch <= 0x06E8) ||
329 (ch >= 0x06EA && ch <= 0x06ED) ||
330 (ch >= 0x0901 && ch <= 0x0903) ||
332 (ch >= 0x093E && ch <= 0x094C) ||
334 (ch >= 0x0951 && ch <= 0x0954) ||
335 (ch >= 0x0962 && ch <= 0x0963) ||
336 (ch >= 0x0981 && ch <= 0x0983) ||
340 (ch >= 0x09C0 && ch <= 0x09C4) ||
341 (ch >= 0x09C7 && ch <= 0x09C8) ||
342 (ch >= 0x09CB && ch <= 0x09CD) ||
344 (ch >= 0x09E2 && ch <= 0x09E3) ||
349 (ch >= 0x0A40 && ch <= 0x0A42) ||
350 (ch >= 0x0A47 && ch <= 0x0A48) ||
351 (ch >= 0x0A4B && ch <= 0x0A4D) ||
352 (ch >= 0x0A70 && ch <= 0x0A71) ||
353 (ch >= 0x0A81 && ch <= 0x0A83) ||
355 (ch >= 0x0ABE && ch <= 0x0AC5) ||
356 (ch >= 0x0AC7 && ch <= 0x0AC9) ||
357 (ch >= 0x0ACB && ch <= 0x0ACD) ||
358 (ch >= 0x0B01 && ch <= 0x0B03) ||
360 (ch >= 0x0B3E && ch <= 0x0B43) ||
361 (ch >= 0x0B47 && ch <= 0x0B48) ||
362 (ch >= 0x0B4B && ch <= 0x0B4D) ||
363 (ch >= 0x0B56 && ch <= 0x0B57) ||
364 (ch >= 0x0B82 && ch <= 0x0B83) ||
365 (ch >= 0x0BBE && ch <= 0x0BC2) ||
366 (ch >= 0x0BC6 && ch <= 0x0BC8) ||
367 (ch >= 0x0BCA && ch <= 0x0BCD) ||
369 (ch >= 0x0C01 && ch <= 0x0C03) ||
370 (ch >= 0x0C3E && ch <= 0x0C44) ||
371 (ch >= 0x0C46 && ch <= 0x0C48) ||
372 (ch >= 0x0C4A && ch <= 0x0C4D) ||
373 (ch >= 0x0C55 && ch <= 0x0C56) ||
374 (ch >= 0x0C82 && ch <= 0x0C83) ||
375 (ch >= 0x0CBE && ch <= 0x0CC4) ||
376 (ch >= 0x0CC6 && ch <= 0x0CC8) ||
377 (ch >= 0x0CCA && ch <= 0x0CCD) ||
378 (ch >= 0x0CD5 && ch <= 0x0CD6) ||
379 (ch >= 0x0D02 && ch <= 0x0D03) ||
380 (ch >= 0x0D3E && ch <= 0x0D43) ||
381 (ch >= 0x0D46 && ch <= 0x0D48) ||
382 (ch >= 0x0D4A && ch <= 0x0D4D) ||
385 (ch >= 0x0E34 && ch <= 0x0E3A) ||
386 (ch >= 0x0E47 && ch <= 0x0E4E) ||
388 (ch >= 0x0EB4 && ch <= 0x0EB9) ||
389 (ch >= 0x0EBB && ch <= 0x0EBC) ||
390 (ch >= 0x0EC8 && ch <= 0x0ECD) ||
391 (ch >= 0x0F18 && ch <= 0x0F19) ||
397 (ch >= 0x0F71 && ch <= 0x0F84) ||
398 (ch >= 0x0F86 && ch <= 0x0F8B) ||
399 (ch >= 0x0F90 && ch <= 0x0F95) ||
401 (ch >= 0x0F99 && ch <= 0x0FAD) ||
402 (ch >= 0x0FB1 && ch <= 0x0FB7) ||
404 (ch >= 0x20D0 && ch <= 0x20DC) ||
406 (ch >= 0x302A && ch <= 0x302F) ||
411 private static bool IsExtender (int ch)
422 (ch >= 0x3031 && ch <= 0x3035) ||
423 (ch >= 0x309D && ch <= 0x309E) ||
424 (ch >= 0x30FC && ch <= 0x30FE);