XmlCharTests.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429
  1. //
  2. // XmlTextReaderTests.cs
  3. //
  4. // Authors:
  5. // Atsushi Enomoto ([email protected])
  6. //
  7. // (C) 2003 Atsushi Enomoto, originally written by Jason Diamond
  8. // (Moved from XmlTextReaderTests.cs)
  9. //
  10. using System;
  11. using System.Xml;
  12. using NUnit.Framework;
  13. // The following is #if'ed out because it's specific to the Mono
  14. // implementation and won't compile when testing Microsoft's code.
  15. // Feel free to turn it on if you want to test Mono's name tables.
  16. // But note that anyway it is impossible to test XmlChar class
  17. // because it is marked as internal.
  18. namespace MonoTests.System.Xml
  19. {
  20. public class XmlCharTests : Assertion
  21. {
  22. #if false
  23. [Test]
  24. public void IsFirstNameCharTest ()
  25. {
  26. for (int ch = 0; ch <= 0xFFFF; ++ch) {
  27. Assert (
  28. XmlChar.IsFirstNameChar (ch) ==
  29. IsFirstNameChar (ch));
  30. }
  31. }
  32. [Test]
  33. public void IsNameCharTest ()
  34. {
  35. for (int ch = 0; ch <= 0xFFFF; ++ch) {
  36. Assert (
  37. XmlChar.IsNameChar (ch) ==
  38. IsNameChar (ch));
  39. }
  40. }
  41. private static bool IsFirstNameChar (int ch)
  42. {
  43. return
  44. IsLetter (ch) ||
  45. (ch == '_') ||
  46. (ch == ':');
  47. }
  48. private static bool IsNameChar (int ch)
  49. {
  50. return
  51. IsLetter (ch) ||
  52. IsDigit (ch) ||
  53. (ch == '.') ||
  54. (ch == '-') ||
  55. (ch == '_') ||
  56. (ch == ':') ||
  57. IsCombiningChar (ch) ||
  58. IsExtender (ch);
  59. }
  60. private static bool IsLetter (int ch)
  61. {
  62. return
  63. IsBaseChar (ch) ||
  64. IsIdeographic (ch);
  65. }
  66. private static bool IsBaseChar (int ch)
  67. {
  68. return
  69. (ch >= 0x0041 && ch <= 0x005A) ||
  70. (ch >= 0x0061 && ch <= 0x007A) ||
  71. (ch >= 0x00C0 && ch <= 0x00D6) ||
  72. (ch >= 0x00D8 && ch <= 0x00F6) ||
  73. (ch >= 0x00F8 && ch <= 0x00FF) ||
  74. (ch >= 0x0100 && ch <= 0x0131) ||
  75. (ch >= 0x0134 && ch <= 0x013E) ||
  76. (ch >= 0x0141 && ch <= 0x0148) ||
  77. (ch >= 0x014A && ch <= 0x017E) ||
  78. (ch >= 0x0180 && ch <= 0x01C3) ||
  79. (ch >= 0x01CD && ch <= 0x01F0) ||
  80. (ch >= 0x01F4 && ch <= 0x01F5) ||
  81. (ch >= 0x01FA && ch <= 0x0217) ||
  82. (ch >= 0x0250 && ch <= 0x02A8) ||
  83. (ch >= 0x02BB && ch <= 0x02C1) ||
  84. (ch == 0x0386) ||
  85. (ch >= 0x0388 && ch <= 0x038A) ||
  86. (ch == 0x038C) ||
  87. (ch >= 0x038E && ch <= 0x03A1) ||
  88. (ch >= 0x03A3 && ch <= 0x03CE) ||
  89. (ch >= 0x03D0 && ch <= 0x03D6) ||
  90. (ch == 0x03DA) ||
  91. (ch == 0x03DC) ||
  92. (ch == 0x03DE) ||
  93. (ch == 0x03E0) ||
  94. (ch >= 0x03E2 && ch <= 0x03F3) ||
  95. (ch >= 0x0401 && ch <= 0x040C) ||
  96. (ch >= 0x040E && ch <= 0x044F) ||
  97. (ch >= 0x0451 && ch <= 0x045C) ||
  98. (ch >= 0x045E && ch <= 0x0481) ||
  99. (ch >= 0x0490 && ch <= 0x04C4) ||
  100. (ch >= 0x04C7 && ch <= 0x04C8) ||
  101. (ch >= 0x04CB && ch <= 0x04CC) ||
  102. (ch >= 0x04D0 && ch <= 0x04EB) ||
  103. (ch >= 0x04EE && ch <= 0x04F5) ||
  104. (ch >= 0x04F8 && ch <= 0x04F9) ||
  105. (ch >= 0x0531 && ch <= 0x0556) ||
  106. (ch == 0x0559) ||
  107. (ch >= 0x0561 && ch <= 0x0586) ||
  108. (ch >= 0x05D0 && ch <= 0x05EA) ||
  109. (ch >= 0x05F0 && ch <= 0x05F2) ||
  110. (ch >= 0x0621 && ch <= 0x063A) ||
  111. (ch >= 0x0641 && ch <= 0x064A) ||
  112. (ch >= 0x0671 && ch <= 0x06B7) ||
  113. (ch >= 0x06BA && ch <= 0x06BE) ||
  114. (ch >= 0x06C0 && ch <= 0x06CE) ||
  115. (ch >= 0x06D0 && ch <= 0x06D3) ||
  116. (ch == 0x06D5) ||
  117. (ch >= 0x06E5 && ch <= 0x06E6) ||
  118. (ch >= 0x0905 && ch <= 0x0939) ||
  119. (ch == 0x093D) ||
  120. (ch >= 0x0958 && ch <= 0x0961) ||
  121. (ch >= 0x0985 && ch <= 0x098C) ||
  122. (ch >= 0x098F && ch <= 0x0990) ||
  123. (ch >= 0x0993 && ch <= 0x09A8) ||
  124. (ch >= 0x09AA && ch <= 0x09B0) ||
  125. (ch == 0x09B2) ||
  126. (ch >= 0x09B6 && ch <= 0x09B9) ||
  127. (ch >= 0x09DC && ch <= 0x09DD) ||
  128. (ch >= 0x09DF && ch <= 0x09E1) ||
  129. (ch >= 0x09F0 && ch <= 0x09F1) ||
  130. (ch >= 0x0A05 && ch <= 0x0A0A) ||
  131. (ch >= 0x0A0F && ch <= 0x0A10) ||
  132. (ch >= 0x0A13 && ch <= 0x0A28) ||
  133. (ch >= 0x0A2A && ch <= 0x0A30) ||
  134. (ch >= 0x0A32 && ch <= 0x0A33) ||
  135. (ch >= 0x0A35 && ch <= 0x0A36) ||
  136. (ch >= 0x0A38 && ch <= 0x0A39) ||
  137. (ch >= 0x0A59 && ch <= 0x0A5C) ||
  138. (ch == 0x0A5E) ||
  139. (ch >= 0x0A72 && ch <= 0x0A74) ||
  140. (ch >= 0x0A85 && ch <= 0x0A8B) ||
  141. (ch == 0x0A8D) ||
  142. (ch >= 0x0A8F && ch <= 0x0A91) ||
  143. (ch >= 0x0A93 && ch <= 0x0AA8) ||
  144. (ch >= 0x0AAA && ch <= 0x0AB0) ||
  145. (ch >= 0x0AB2 && ch <= 0x0AB3) ||
  146. (ch >= 0x0AB5 && ch <= 0x0AB9) ||
  147. (ch == 0x0ABD) ||
  148. (ch == 0x0AE0) ||
  149. (ch >= 0x0B05 && ch <= 0x0B0C) ||
  150. (ch >= 0x0B0F && ch <= 0x0B10) ||
  151. (ch >= 0x0B13 && ch <= 0x0B28) ||
  152. (ch >= 0x0B2A && ch <= 0x0B30) ||
  153. (ch >= 0x0B32 && ch <= 0x0B33) ||
  154. (ch >= 0x0B36 && ch <= 0x0B39) ||
  155. (ch == 0x0B3D) ||
  156. (ch >= 0x0B5C && ch <= 0x0B5D) ||
  157. (ch >= 0x0B5F && ch <= 0x0B61) ||
  158. (ch >= 0x0B85 && ch <= 0x0B8A) ||
  159. (ch >= 0x0B8E && ch <= 0x0B90) ||
  160. (ch >= 0x0B92 && ch <= 0x0B95) ||
  161. (ch >= 0x0B99 && ch <= 0x0B9A) ||
  162. (ch == 0x0B9C) ||
  163. (ch >= 0x0B9E && ch <= 0x0B9F) ||
  164. (ch >= 0x0BA3 && ch <= 0x0BA4) ||
  165. (ch >= 0x0BA8 && ch <= 0x0BAA) ||
  166. (ch >= 0x0BAE && ch <= 0x0BB5) ||
  167. (ch >= 0x0BB7 && ch <= 0x0BB9) ||
  168. (ch >= 0x0C05 && ch <= 0x0C0C) ||
  169. (ch >= 0x0C0E && ch <= 0x0C10) ||
  170. (ch >= 0x0C12 && ch <= 0x0C28) ||
  171. (ch >= 0x0C2A && ch <= 0x0C33) ||
  172. (ch >= 0x0C35 && ch <= 0x0C39) ||
  173. (ch >= 0x0C60 && ch <= 0x0C61) ||
  174. (ch >= 0x0C85 && ch <= 0x0C8C) ||
  175. (ch >= 0x0C8E && ch <= 0x0C90) ||
  176. (ch >= 0x0C92 && ch <= 0x0CA8) ||
  177. (ch >= 0x0CAA && ch <= 0x0CB3) ||
  178. (ch >= 0x0CB5 && ch <= 0x0CB9) ||
  179. (ch == 0x0CDE) ||
  180. (ch >= 0x0CE0 && ch <= 0x0CE1) ||
  181. (ch >= 0x0D05 && ch <= 0x0D0C) ||
  182. (ch >= 0x0D0E && ch <= 0x0D10) ||
  183. (ch >= 0x0D12 && ch <= 0x0D28) ||
  184. (ch >= 0x0D2A && ch <= 0x0D39) ||
  185. (ch >= 0x0D60 && ch <= 0x0D61) ||
  186. (ch >= 0x0E01 && ch <= 0x0E2E) ||
  187. (ch == 0x0E30) ||
  188. (ch >= 0x0E32 && ch <= 0x0E33) ||
  189. (ch >= 0x0E40 && ch <= 0x0E45) ||
  190. (ch >= 0x0E81 && ch <= 0x0E82) ||
  191. (ch == 0x0E84) ||
  192. (ch >= 0x0E87 && ch <= 0x0E88) ||
  193. (ch == 0x0E8A) ||
  194. (ch == 0x0E8D) ||
  195. (ch >= 0x0E94 && ch <= 0x0E97) ||
  196. (ch >= 0x0E99 && ch <= 0x0E9F) ||
  197. (ch >= 0x0EA1 && ch <= 0x0EA3) ||
  198. (ch == 0x0EA5) ||
  199. (ch == 0x0EA7) ||
  200. (ch >= 0x0EAA && ch <= 0x0EAB) ||
  201. (ch >= 0x0EAD && ch <= 0x0EAE) ||
  202. (ch == 0x0EB0) ||
  203. (ch >= 0x0EB2 && ch <= 0x0EB3) ||
  204. (ch == 0x0EBD) ||
  205. (ch >= 0x0EC0 && ch <= 0x0EC4) ||
  206. (ch >= 0x0F40 && ch <= 0x0F47) ||
  207. (ch >= 0x0F49 && ch <= 0x0F69) ||
  208. (ch >= 0x10A0 && ch <= 0x10C5) ||
  209. (ch >= 0x10D0 && ch <= 0x10F6) ||
  210. (ch == 0x1100) ||
  211. (ch >= 0x1102 && ch <= 0x1103) ||
  212. (ch >= 0x1105 && ch <= 0x1107) ||
  213. (ch == 0x1109) ||
  214. (ch >= 0x110B && ch <= 0x110C) ||
  215. (ch >= 0x110E && ch <= 0x1112) ||
  216. (ch == 0x113C) ||
  217. (ch == 0x113E) ||
  218. (ch == 0x1140) ||
  219. (ch == 0x114C) ||
  220. (ch == 0x114E) ||
  221. (ch == 0x1150) ||
  222. (ch >= 0x1154 && ch <= 0x1155) ||
  223. (ch == 0x1159) ||
  224. (ch >= 0x115F && ch <= 0x1161) ||
  225. (ch == 0x1163) ||
  226. (ch == 0x1165) ||
  227. (ch == 0x1167) ||
  228. (ch == 0x1169) ||
  229. (ch >= 0x116D && ch <= 0x116E) ||
  230. (ch >= 0x1172 && ch <= 0x1173) ||
  231. (ch == 0x1175) ||
  232. (ch == 0x119E) ||
  233. (ch == 0x11A8) ||
  234. (ch == 0x11AB) ||
  235. (ch >= 0x11AE && ch <= 0x11AF) ||
  236. (ch >= 0x11B7 && ch <= 0x11B8) ||
  237. (ch == 0x11BA) ||
  238. (ch >= 0x11BC && ch <= 0x11C2) ||
  239. (ch == 0x11EB) ||
  240. (ch == 0x11F0) ||
  241. (ch == 0x11F9) ||
  242. (ch >= 0x1E00 && ch <= 0x1E9B) ||
  243. (ch >= 0x1EA0 && ch <= 0x1EF9) ||
  244. (ch >= 0x1F00 && ch <= 0x1F15) ||
  245. (ch >= 0x1F18 && ch <= 0x1F1D) ||
  246. (ch >= 0x1F20 && ch <= 0x1F45) ||
  247. (ch >= 0x1F48 && ch <= 0x1F4D) ||
  248. (ch >= 0x1F50 && ch <= 0x1F57) ||
  249. (ch == 0x1F59) ||
  250. (ch == 0x1F5B) ||
  251. (ch == 0x1F5D) ||
  252. (ch >= 0x1F5F && ch <= 0x1F7D) ||
  253. (ch >= 0x1F80 && ch <= 0x1FB4) ||
  254. (ch >= 0x1FB6 && ch <= 0x1FBC) ||
  255. (ch == 0x1FBE) ||
  256. (ch >= 0x1FC2 && ch <= 0x1FC4) ||
  257. (ch >= 0x1FC6 && ch <= 0x1FCC) ||
  258. (ch >= 0x1FD0 && ch <= 0x1FD3) ||
  259. (ch >= 0x1FD6 && ch <= 0x1FDB) ||
  260. (ch >= 0x1FE0 && ch <= 0x1FEC) ||
  261. (ch >= 0x1FF2 && ch <= 0x1FF4) ||
  262. (ch >= 0x1FF6 && ch <= 0x1FFC) ||
  263. (ch == 0x2126) ||
  264. (ch >= 0x212A && ch <= 0x212B) ||
  265. (ch == 0x212E) ||
  266. (ch >= 0x2180 && ch <= 0x2182) ||
  267. (ch >= 0x3041 && ch <= 0x3094) ||
  268. (ch >= 0x30A1 && ch <= 0x30FA) ||
  269. (ch >= 0x3105 && ch <= 0x312C) ||
  270. (ch >= 0xAC00 && ch <= 0xD7A3);
  271. }
  272. private static bool IsIdeographic (int ch)
  273. {
  274. return
  275. (ch >= 0x4E00 && ch <= 0x9FA5) ||
  276. (ch == 0x3007) ||
  277. (ch >= 0x3021 && ch <= 0x3029);
  278. }
  279. private static bool IsDigit (int ch)
  280. {
  281. return
  282. (ch >= 0x0030 && ch <= 0x0039) ||
  283. (ch >= 0x0660 && ch <= 0x0669) ||
  284. (ch >= 0x06F0 && ch <= 0x06F9) ||
  285. (ch >= 0x0966 && ch <= 0x096F) ||
  286. (ch >= 0x09E6 && ch <= 0x09EF) ||
  287. (ch >= 0x0A66 && ch <= 0x0A6F) ||
  288. (ch >= 0x0AE6 && ch <= 0x0AEF) ||
  289. (ch >= 0x0B66 && ch <= 0x0B6F) ||
  290. (ch >= 0x0BE7 && ch <= 0x0BEF) ||
  291. (ch >= 0x0C66 && ch <= 0x0C6F) ||
  292. (ch >= 0x0CE6 && ch <= 0x0CEF) ||
  293. (ch >= 0x0D66 && ch <= 0x0D6F) ||
  294. (ch >= 0x0E50 && ch <= 0x0E59) ||
  295. (ch >= 0x0ED0 && ch <= 0x0ED9) ||
  296. (ch >= 0x0F20 && ch <= 0x0F29);
  297. }
  298. private static bool IsCombiningChar (int ch)
  299. {
  300. return
  301. (ch >= 0x0300 && ch <= 0x0345) ||
  302. (ch >= 0x0360 && ch <= 0x0361) ||
  303. (ch >= 0x0483 && ch <= 0x0486) ||
  304. (ch >= 0x0591 && ch <= 0x05A1) ||
  305. (ch >= 0x05A3 && ch <= 0x05B9) ||
  306. (ch >= 0x05BB && ch <= 0x05BD) ||
  307. (ch == 0x05BF) ||
  308. (ch >= 0x05C1 && ch <= 0x05C2) ||
  309. (ch == 0x05C4) ||
  310. (ch >= 0x064B && ch <= 0x0652) ||
  311. (ch == 0x0670) ||
  312. (ch >= 0x06D6 && ch <= 0x06DC) ||
  313. (ch >= 0x06DD && ch <= 0x06DF) ||
  314. (ch >= 0x06E0 && ch <= 0x06E4) ||
  315. (ch >= 0x06E7 && ch <= 0x06E8) ||
  316. (ch >= 0x06EA && ch <= 0x06ED) ||
  317. (ch >= 0x0901 && ch <= 0x0903) ||
  318. (ch == 0x093C) ||
  319. (ch >= 0x093E && ch <= 0x094C) ||
  320. (ch == 0x094D) ||
  321. (ch >= 0x0951 && ch <= 0x0954) ||
  322. (ch >= 0x0962 && ch <= 0x0963) ||
  323. (ch >= 0x0981 && ch <= 0x0983) ||
  324. (ch == 0x09BC) ||
  325. (ch == 0x09BE) ||
  326. (ch == 0x09BF) ||
  327. (ch >= 0x09C0 && ch <= 0x09C4) ||
  328. (ch >= 0x09C7 && ch <= 0x09C8) ||
  329. (ch >= 0x09CB && ch <= 0x09CD) ||
  330. (ch == 0x09D7) ||
  331. (ch >= 0x09E2 && ch <= 0x09E3) ||
  332. (ch == 0x0A02) ||
  333. (ch == 0x0A3C) ||
  334. (ch == 0x0A3E) ||
  335. (ch == 0x0A3F) ||
  336. (ch >= 0x0A40 && ch <= 0x0A42) ||
  337. (ch >= 0x0A47 && ch <= 0x0A48) ||
  338. (ch >= 0x0A4B && ch <= 0x0A4D) ||
  339. (ch >= 0x0A70 && ch <= 0x0A71) ||
  340. (ch >= 0x0A81 && ch <= 0x0A83) ||
  341. (ch == 0x0ABC) ||
  342. (ch >= 0x0ABE && ch <= 0x0AC5) ||
  343. (ch >= 0x0AC7 && ch <= 0x0AC9) ||
  344. (ch >= 0x0ACB && ch <= 0x0ACD) ||
  345. (ch >= 0x0B01 && ch <= 0x0B03) ||
  346. (ch == 0x0B3C) ||
  347. (ch >= 0x0B3E && ch <= 0x0B43) ||
  348. (ch >= 0x0B47 && ch <= 0x0B48) ||
  349. (ch >= 0x0B4B && ch <= 0x0B4D) ||
  350. (ch >= 0x0B56 && ch <= 0x0B57) ||
  351. (ch >= 0x0B82 && ch <= 0x0B83) ||
  352. (ch >= 0x0BBE && ch <= 0x0BC2) ||
  353. (ch >= 0x0BC6 && ch <= 0x0BC8) ||
  354. (ch >= 0x0BCA && ch <= 0x0BCD) ||
  355. (ch == 0x0BD7) ||
  356. (ch >= 0x0C01 && ch <= 0x0C03) ||
  357. (ch >= 0x0C3E && ch <= 0x0C44) ||
  358. (ch >= 0x0C46 && ch <= 0x0C48) ||
  359. (ch >= 0x0C4A && ch <= 0x0C4D) ||
  360. (ch >= 0x0C55 && ch <= 0x0C56) ||
  361. (ch >= 0x0C82 && ch <= 0x0C83) ||
  362. (ch >= 0x0CBE && ch <= 0x0CC4) ||
  363. (ch >= 0x0CC6 && ch <= 0x0CC8) ||
  364. (ch >= 0x0CCA && ch <= 0x0CCD) ||
  365. (ch >= 0x0CD5 && ch <= 0x0CD6) ||
  366. (ch >= 0x0D02 && ch <= 0x0D03) ||
  367. (ch >= 0x0D3E && ch <= 0x0D43) ||
  368. (ch >= 0x0D46 && ch <= 0x0D48) ||
  369. (ch >= 0x0D4A && ch <= 0x0D4D) ||
  370. (ch == 0x0D57) ||
  371. (ch == 0x0E31) ||
  372. (ch >= 0x0E34 && ch <= 0x0E3A) ||
  373. (ch >= 0x0E47 && ch <= 0x0E4E) ||
  374. (ch == 0x0EB1) ||
  375. (ch >= 0x0EB4 && ch <= 0x0EB9) ||
  376. (ch >= 0x0EBB && ch <= 0x0EBC) ||
  377. (ch >= 0x0EC8 && ch <= 0x0ECD) ||
  378. (ch >= 0x0F18 && ch <= 0x0F19) ||
  379. (ch == 0x0F35) ||
  380. (ch == 0x0F37) ||
  381. (ch == 0x0F39) ||
  382. (ch == 0x0F3E) ||
  383. (ch == 0x0F3F) ||
  384. (ch >= 0x0F71 && ch <= 0x0F84) ||
  385. (ch >= 0x0F86 && ch <= 0x0F8B) ||
  386. (ch >= 0x0F90 && ch <= 0x0F95) ||
  387. (ch == 0x0F97) ||
  388. (ch >= 0x0F99 && ch <= 0x0FAD) ||
  389. (ch >= 0x0FB1 && ch <= 0x0FB7) ||
  390. (ch == 0x0FB9) ||
  391. (ch >= 0x20D0 && ch <= 0x20DC) ||
  392. (ch == 0x20E1) ||
  393. (ch >= 0x302A && ch <= 0x302F) ||
  394. (ch == 0x3099) ||
  395. (ch == 0x309A);
  396. }
  397. private static bool IsExtender (int ch)
  398. {
  399. return
  400. (ch == 0x00B7) ||
  401. (ch == 0x02D0) ||
  402. (ch == 0x02D1) ||
  403. (ch == 0x0387) ||
  404. (ch == 0x0640) ||
  405. (ch == 0x0E46) ||
  406. (ch == 0x0EC6) ||
  407. (ch == 0x3005) ||
  408. (ch >= 0x3031 && ch <= 0x3035) ||
  409. (ch >= 0x309D && ch <= 0x309E) ||
  410. (ch >= 0x30FC && ch <= 0x30FE);
  411. }
  412. #endif
  413. }
  414. }