magic_xml 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. data/README +22 -0
  2. data/Rakefile +52 -0
  3. data/VERSION +1 -0
  4. data/doc/classes/Array.html +148 -0
  5. data/doc/classes/File.html +113 -0
  6. data/doc/classes/Hash.html +117 -0
  7. data/doc/classes/Patterns_all.html +145 -0
  8. data/doc/classes/Patterns_any.html +145 -0
  9. data/doc/classes/String.html +470 -0
  10. data/doc/classes/Symbol.html +145 -0
  11. data/doc/classes/XML.html +1881 -0
  12. data/doc/classes/XML_Comment.html +148 -0
  13. data/doc/classes/XML_PI.html +145 -0
  14. data/doc/classes/XML_Tests.html +1727 -0
  15. data/doc/files/magic_xml_rb.html +186 -0
  16. data/doc/files/simple_examples/xml_hello_f_rb.html +88 -0
  17. data/doc/files/simple_examples/xml_hello_m_rb.html +88 -0
  18. data/doc/files/simple_examples/xml_list_f_rb.html +88 -0
  19. data/doc/files/simple_examples/xml_list_m_rb.html +88 -0
  20. data/doc/files/tests_rb.html +94 -0
  21. data/doc/files/xquery_use_cases/parts/q1_rb.html +117 -0
  22. data/doc/files/xquery_use_cases/rdb/q10_rb.html +88 -0
  23. data/doc/files/xquery_use_cases/rdb/q11_rb.html +88 -0
  24. data/doc/files/xquery_use_cases/rdb/q12_rb.html +88 -0
  25. data/doc/files/xquery_use_cases/rdb/q13_rb.html +88 -0
  26. data/doc/files/xquery_use_cases/rdb/q14_rb.html +88 -0
  27. data/doc/files/xquery_use_cases/rdb/q15_rb.html +88 -0
  28. data/doc/files/xquery_use_cases/rdb/q16_rb.html +88 -0
  29. data/doc/files/xquery_use_cases/rdb/q17_rb.html +88 -0
  30. data/doc/files/xquery_use_cases/rdb/q18_rb.html +88 -0
  31. data/doc/files/xquery_use_cases/rdb/q1_rb.html +88 -0
  32. data/doc/files/xquery_use_cases/rdb/q2_rb.html +88 -0
  33. data/doc/files/xquery_use_cases/rdb/q3_rb.html +88 -0
  34. data/doc/files/xquery_use_cases/rdb/q4_rb.html +88 -0
  35. data/doc/files/xquery_use_cases/rdb/q5_rb.html +88 -0
  36. data/doc/files/xquery_use_cases/rdb/q6_rb.html +88 -0
  37. data/doc/files/xquery_use_cases/rdb/q7_rb.html +88 -0
  38. data/doc/files/xquery_use_cases/rdb/q8_rb.html +88 -0
  39. data/doc/files/xquery_use_cases/rdb/q9_rb.html +88 -0
  40. data/doc/files/xquery_use_cases/seq/q1_rb.html +88 -0
  41. data/doc/files/xquery_use_cases/seq/q2_rb.html +88 -0
  42. data/doc/files/xquery_use_cases/seq/q3_rb.html +88 -0
  43. data/doc/files/xquery_use_cases/seq/q4_rb.html +88 -0
  44. data/doc/files/xquery_use_cases/seq/q5_rb.html +88 -0
  45. data/doc/files/xquery_use_cases/sgml/q10_rb.html +88 -0
  46. data/doc/files/xquery_use_cases/sgml/q1_rb.html +88 -0
  47. data/doc/files/xquery_use_cases/sgml/q2_rb.html +88 -0
  48. data/doc/files/xquery_use_cases/sgml/q3_rb.html +88 -0
  49. data/doc/files/xquery_use_cases/sgml/q4_rb.html +88 -0
  50. data/doc/files/xquery_use_cases/sgml/q5_rb.html +88 -0
  51. data/doc/files/xquery_use_cases/sgml/q6_rb.html +88 -0
  52. data/doc/files/xquery_use_cases/sgml/q7_rb.html +88 -0
  53. data/doc/files/xquery_use_cases/sgml/q8a_rb.html +88 -0
  54. data/doc/files/xquery_use_cases/sgml/q8b_rb.html +88 -0
  55. data/doc/files/xquery_use_cases/sgml/q9_rb.html +88 -0
  56. data/doc/files/xquery_use_cases/solution_sizes_rb.html +88 -0
  57. data/doc/files/xquery_use_cases/string/q1_rb.html +88 -0
  58. data/doc/files/xquery_use_cases/string/q2_rb.html +93 -0
  59. data/doc/files/xquery_use_cases/string/q4_rb.html +88 -0
  60. data/doc/files/xquery_use_cases/string/q5_rb.html +88 -0
  61. data/doc/files/xquery_use_cases/test_driver_rb.html +92 -0
  62. data/doc/files/xquery_use_cases/tree/q1_rb.html +111 -0
  63. data/doc/files/xquery_use_cases/tree/q2_rb.html +88 -0
  64. data/doc/files/xquery_use_cases/tree/q3_rb.html +88 -0
  65. data/doc/files/xquery_use_cases/tree/q4_rb.html +88 -0
  66. data/doc/files/xquery_use_cases/tree/q5_rb.html +88 -0
  67. data/doc/files/xquery_use_cases/tree/q6_rb.html +113 -0
  68. data/doc/files/xquery_use_cases/xmp/q10_rb.html +88 -0
  69. data/doc/files/xquery_use_cases/xmp/q11_rb.html +88 -0
  70. data/doc/files/xquery_use_cases/xmp/q12_rb.html +88 -0
  71. data/doc/files/xquery_use_cases/xmp/q1_rb.html +88 -0
  72. data/doc/files/xquery_use_cases/xmp/q2_rb.html +88 -0
  73. data/doc/files/xquery_use_cases/xmp/q3_rb.html +88 -0
  74. data/doc/files/xquery_use_cases/xmp/q4_rb.html +88 -0
  75. data/doc/files/xquery_use_cases/xmp/q5_rb.html +92 -0
  76. data/doc/files/xquery_use_cases/xmp/q6_rb.html +88 -0
  77. data/doc/files/xquery_use_cases/xmp/q7_rb.html +88 -0
  78. data/doc/files/xquery_use_cases/xmp/q8_rb.html +88 -0
  79. data/doc/files/xquery_use_cases/xmp/q9_rb.html +88 -0
  80. data/doc/fr_class_index.html +56 -0
  81. data/doc/fr_file_index.html +110 -0
  82. data/doc/fr_method_index.html +159 -0
  83. data/doc/index.html +26 -0
  84. data/doc/rdoc-style.css +175 -0
  85. data/lib/magic_xml.rb +1400 -0
  86. data/simple_examples/README +14 -0
  87. data/simple_examples/xml_hello_f.rb +32 -0
  88. data/simple_examples/xml_hello_m.rb +32 -0
  89. data/simple_examples/xml_list_f.rb +36 -0
  90. data/simple_examples/xml_list_m.rb +36 -0
  91. data/test/helper.rb +9 -0
  92. data/test/test_magic_xml.rb +855 -0
  93. data/xquery_use_cases/README +17 -0
  94. data/xquery_use_cases/parts/README +12 -0
  95. data/xquery_use_cases/parts/partlist.xml +13 -0
  96. data/xquery_use_cases/parts/q1.out +16 -0
  97. data/xquery_use_cases/parts/q1.rb +38 -0
  98. data/xquery_use_cases/parts/q1.xquery +18 -0
  99. data/xquery_use_cases/rdb/README +50 -0
  100. data/xquery_use_cases/rdb/bids.xml +81 -0
  101. data/xquery_use_cases/rdb/items.xml +57 -0
  102. data/xquery_use_cases/rdb/q1.out +10 -0
  103. data/xquery_use_cases/rdb/q1.rb +31 -0
  104. data/xquery_use_cases/rdb/q1.xquery +14 -0
  105. data/xquery_use_cases/rdb/q10.out +27 -0
  106. data/xquery_use_cases/rdb/q10.rb +37 -0
  107. data/xquery_use_cases/rdb/q10.xquery +15 -0
  108. data/xquery_use_cases/rdb/q11.out +7 -0
  109. data/xquery_use_cases/rdb/q11.rb +38 -0
  110. data/xquery_use_cases/rdb/q11.xquery +15 -0
  111. data/xquery_use_cases/rdb/q12.out +12 -0
  112. data/xquery_use_cases/rdb/q12.rb +42 -0
  113. data/xquery_use_cases/rdb/q12.xquery +28 -0
  114. data/xquery_use_cases/rdb/q13.out +32 -0
  115. data/xquery_use_cases/rdb/q13.rb +45 -0
  116. data/xquery_use_cases/rdb/q13.xquery +15 -0
  117. data/xquery_use_cases/rdb/q14.out +14 -0
  118. data/xquery_use_cases/rdb/q14.rb +42 -0
  119. data/xquery_use_cases/rdb/q14.xquery +14 -0
  120. data/xquery_use_cases/rdb/q15.out +5 -0
  121. data/xquery_use_cases/rdb/q15.rb +31 -0
  122. data/xquery_use_cases/rdb/q15.xquery +9 -0
  123. data/xquery_use_cases/rdb/q16.out +35 -0
  124. data/xquery_use_cases/rdb/q16.rb +35 -0
  125. data/xquery_use_cases/rdb/q16.xquery +17 -0
  126. data/xquery_use_cases/rdb/q17.out +1 -0
  127. data/xquery_use_cases/rdb/q17.rb +35 -0
  128. data/xquery_use_cases/rdb/q17.xquery +11 -0
  129. data/xquery_use_cases/rdb/q18.out +32 -0
  130. data/xquery_use_cases/rdb/q18.rb +40 -0
  131. data/xquery_use_cases/rdb/q18.xquery +19 -0
  132. data/xquery_use_cases/rdb/q2.out +22 -0
  133. data/xquery_use_cases/rdb/q2.rb +36 -0
  134. data/xquery_use_cases/rdb/q2.xquery +14 -0
  135. data/xquery_use_cases/rdb/q3.out +8 -0
  136. data/xquery_use_cases/rdb/q3.rb +34 -0
  137. data/xquery_use_cases/rdb/q3.xquery +16 -0
  138. data/xquery_use_cases/rdb/q4.out +14 -0
  139. data/xquery_use_cases/rdb/q4.rb +31 -0
  140. data/xquery_use_cases/rdb/q4.xquery +11 -0
  141. data/xquery_use_cases/rdb/q5.out +12 -0
  142. data/xquery_use_cases/rdb/q5.rb +46 -0
  143. data/xquery_use_cases/rdb/q5.xquery +25 -0
  144. data/xquery_use_cases/rdb/q6.out +14 -0
  145. data/xquery_use_cases/rdb/q6.rb +38 -0
  146. data/xquery_use_cases/rdb/q6.xquery +15 -0
  147. data/xquery_use_cases/rdb/q7.out +1 -0
  148. data/xquery_use_cases/rdb/q7.rb +30 -0
  149. data/xquery_use_cases/rdb/q7.xquery +10 -0
  150. data/xquery_use_cases/rdb/q8.out +1 -0
  151. data/xquery_use_cases/rdb/q8.rb +23 -0
  152. data/xquery_use_cases/rdb/q8.xquery +8 -0
  153. data/xquery_use_cases/rdb/q9.out +22 -0
  154. data/xquery_use_cases/rdb/q9.rb +32 -0
  155. data/xquery_use_cases/rdb/q9.xquery +16 -0
  156. data/xquery_use_cases/rdb/users.xml +25 -0
  157. data/xquery_use_cases/seq/README +12 -0
  158. data/xquery_use_cases/seq/q1.out +1 -0
  159. data/xquery_use_cases/seq/q1.rb +25 -0
  160. data/xquery_use_cases/seq/q1.xquery +2 -0
  161. data/xquery_use_cases/seq/q2.out +2 -0
  162. data/xquery_use_cases/seq/q2.rb +25 -0
  163. data/xquery_use_cases/seq/q2.xquery +2 -0
  164. data/xquery_use_cases/seq/q3.out +2 -0
  165. data/xquery_use_cases/seq/q3.rb +26 -0
  166. data/xquery_use_cases/seq/q3.xquery +3 -0
  167. data/xquery_use_cases/seq/q4.out +0 -0
  168. data/xquery_use_cases/seq/q4.rb +27 -0
  169. data/xquery_use_cases/seq/q4.xquery +4 -0
  170. data/xquery_use_cases/seq/q5.out +5 -0
  171. data/xquery_use_cases/seq/q5.rb +29 -0
  172. data/xquery_use_cases/seq/q5.xquery +10 -0
  173. data/xquery_use_cases/seq/report1.xml +40 -0
  174. data/xquery_use_cases/sgml/README +53 -0
  175. data/xquery_use_cases/sgml/q1.out +44 -0
  176. data/xquery_use_cases/sgml/q1.rb +23 -0
  177. data/xquery_use_cases/sgml/q1.xquery +5 -0
  178. data/xquery_use_cases/sgml/q10.out +1 -0
  179. data/xquery_use_cases/sgml/q10.rb +28 -0
  180. data/xquery_use_cases/sgml/q10.xquery +7 -0
  181. data/xquery_use_cases/sgml/q2.out +26 -0
  182. data/xquery_use_cases/sgml/q2.rb +23 -0
  183. data/xquery_use_cases/sgml/q2.xquery +5 -0
  184. data/xquery_use_cases/sgml/q3.out +6 -0
  185. data/xquery_use_cases/sgml/q3.rb +28 -0
  186. data/xquery_use_cases/sgml/q3.xquery +7 -0
  187. data/xquery_use_cases/sgml/q4.out +4 -0
  188. data/xquery_use_cases/sgml/q4.rb +25 -0
  189. data/xquery_use_cases/sgml/q4.xquery +5 -0
  190. data/xquery_use_cases/sgml/q5.out +3 -0
  191. data/xquery_use_cases/sgml/q5.rb +23 -0
  192. data/xquery_use_cases/sgml/q5.xquery +5 -0
  193. data/xquery_use_cases/sgml/q6.out +1 -0
  194. data/xquery_use_cases/sgml/q6.rb +27 -0
  195. data/xquery_use_cases/sgml/q6.xquery +6 -0
  196. data/xquery_use_cases/sgml/q7.out +1 -0
  197. data/xquery_use_cases/sgml/q7.rb +27 -0
  198. data/xquery_use_cases/sgml/q7.xquery +7 -0
  199. data/xquery_use_cases/sgml/q8a.out +34 -0
  200. data/xquery_use_cases/sgml/q8a.rb +27 -0
  201. data/xquery_use_cases/sgml/q8a.xquery +5 -0
  202. data/xquery_use_cases/sgml/q8b.out +26 -0
  203. data/xquery_use_cases/sgml/q8b.rb +32 -0
  204. data/xquery_use_cases/sgml/q8b.xquery +5 -0
  205. data/xquery_use_cases/sgml/q9.out +9 -0
  206. data/xquery_use_cases/sgml/q9.rb +29 -0
  207. data/xquery_use_cases/sgml/q9.xquery +6 -0
  208. data/xquery_use_cases/sgml/sgml.xml +101 -0
  209. data/xquery_use_cases/solution_sizes.rb +48 -0
  210. data/xquery_use_cases/string/README +29 -0
  211. data/xquery_use_cases/string/company-data.xml +20 -0
  212. data/xquery_use_cases/string/q1.out +4 -0
  213. data/xquery_use_cases/string/q1.rb +25 -0
  214. data/xquery_use_cases/string/q1.xquery +1 -0
  215. data/xquery_use_cases/string/q2.out +13 -0
  216. data/xquery_use_cases/string/q2.rb +32 -0
  217. data/xquery_use_cases/string/q2.xquery +23 -0
  218. data/xquery_use_cases/string/q4.out +50 -0
  219. data/xquery_use_cases/string/q4.rb +34 -0
  220. data/xquery_use_cases/string/q4.xquery +14 -0
  221. data/xquery_use_cases/string/q5.out +12 -0
  222. data/xquery_use_cases/string/q5.rb +33 -0
  223. data/xquery_use_cases/string/q5.xquery +8 -0
  224. data/xquery_use_cases/string/string.xml +82 -0
  225. data/xquery_use_cases/test_driver.rb +60 -0
  226. data/xquery_use_cases/tree/README +23 -0
  227. data/xquery_use_cases/tree/book.xml +50 -0
  228. data/xquery_use_cases/tree/q1.out +23 -0
  229. data/xquery_use_cases/tree/q1.rb +31 -0
  230. data/xquery_use_cases/tree/q1.xquery +14 -0
  231. data/xquery_use_cases/tree/q2.out +11 -0
  232. data/xquery_use_cases/tree/q2.rb +27 -0
  233. data/xquery_use_cases/tree/q2.xquery +10 -0
  234. data/xquery_use_cases/tree/q3.out +2 -0
  235. data/xquery_use_cases/tree/q3.rb +26 -0
  236. data/xquery_use_cases/tree/q3.xquery +2 -0
  237. data/xquery_use_cases/tree/q4.out +1 -0
  238. data/xquery_use_cases/tree/q4.rb +23 -0
  239. data/xquery_use_cases/tree/q4.xquery +5 -0
  240. data/xquery_use_cases/tree/q5.out +9 -0
  241. data/xquery_use_cases/tree/q5.rb +30 -0
  242. data/xquery_use_cases/tree/q5.xquery +8 -0
  243. data/xquery_use_cases/tree/q6.out +30 -0
  244. data/xquery_use_cases/tree/q6.rb +35 -0
  245. data/xquery_use_cases/tree/q6.xquery +21 -0
  246. data/xquery_use_cases/xmp/README +41 -0
  247. data/xquery_use_cases/xmp/bib.xml +35 -0
  248. data/xquery_use_cases/xmp/books.xml +15 -0
  249. data/xquery_use_cases/xmp/prices.xml +32 -0
  250. data/xquery_use_cases/xmp/q1.out +8 -0
  251. data/xquery_use_cases/xmp/q1.rb +29 -0
  252. data/xquery_use_cases/xmp/q1.xquery +10 -0
  253. data/xquery_use_cases/xmp/q10.out +11 -0
  254. data/xquery_use_cases/xmp/q10.rb +36 -0
  255. data/xquery_use_cases/xmp/q10.xquery +11 -0
  256. data/xquery_use_cases/xmp/q11.out +35 -0
  257. data/xquery_use_cases/xmp/q11.rb +37 -0
  258. data/xquery_use_cases/xmp/q11.xquery +18 -0
  259. data/xquery_use_cases/xmp/q12.out +6 -0
  260. data/xquery_use_cases/xmp/q12.rb +35 -0
  261. data/xquery_use_cases/xmp/q12.xquery +20 -0
  262. data/xquery_use_cases/xmp/q2.out +37 -0
  263. data/xquery_use_cases/xmp/q2.rb +30 -0
  264. data/xquery_use_cases/xmp/q2.xquery +12 -0
  265. data/xquery_use_cases/xmp/q3.out +34 -0
  266. data/xquery_use_cases/xmp/q3.rb +27 -0
  267. data/xquery_use_cases/xmp/q3.xquery +10 -0
  268. data/xquery_use_cases/xmp/q4.out +31 -0
  269. data/xquery_use_cases/xmp/q4.rb +44 -0
  270. data/xquery_use_cases/xmp/q4.xquery +21 -0
  271. data/xquery_use_cases/xmp/q5.out +17 -0
  272. data/xquery_use_cases/xmp/q5.rb +38 -0
  273. data/xquery_use_cases/xmp/q5.xquery +13 -0
  274. data/xquery_use_cases/xmp/q6.out +28 -0
  275. data/xquery_use_cases/xmp/q6.rb +33 -0
  276. data/xquery_use_cases/xmp/q6.xquery +19 -0
  277. data/xquery_use_cases/xmp/q7.out +8 -0
  278. data/xquery_use_cases/xmp/q7.rb +30 -0
  279. data/xquery_use_cases/xmp/q7.xquery +12 -0
  280. data/xquery_use_cases/xmp/q8.out +7 -0
  281. data/xquery_use_cases/xmp/q8.rb +29 -0
  282. data/xquery_use_cases/xmp/q8.xquery +9 -0
  283. data/xquery_use_cases/xmp/q9.out +4 -0
  284. data/xquery_use_cases/xmp/q9.rb +29 -0
  285. data/xquery_use_cases/xmp/q9.xquery +7 -0
  286. data/xquery_use_cases/xmp/reviews.xml +24 -0
  287. metadata +342 -0
@@ -0,0 +1,1727 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html>
6
+ <head>
7
+ <title>Class: XML_Tests</title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
10
+
11
+ <script language="JavaScript" type="text/javascript">
12
+ // <![CDATA[
13
+
14
+ function toggleSource( id )
15
+ {
16
+ var elem
17
+ var link
18
+
19
+ if( document.getElementById )
20
+ {
21
+ elem = document.getElementById( id )
22
+ link = document.getElementById( "l_" + id )
23
+ }
24
+ else if ( document.all )
25
+ {
26
+ elem = eval( "document.all." + id )
27
+ link = eval( "document.all.l_" + id )
28
+ }
29
+ else
30
+ return false;
31
+
32
+ if( elem.style.display == "block" )
33
+ {
34
+ elem.style.display = "none"
35
+ link.innerHTML = "show source"
36
+ }
37
+ else
38
+ {
39
+ elem.style.display = "block"
40
+ link.innerHTML = "hide source"
41
+ }
42
+ }
43
+
44
+ function openCode( url )
45
+ {
46
+ window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
47
+ }
48
+ // ]]>
49
+ </script>
50
+ </head>
51
+
52
+ <body>
53
+ <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
54
+ <td class="file-title"><span class="file-title-prefix">Class</span><br />XML_Tests</td>
55
+ <td align="right">
56
+ <table cellspacing=0 cellpadding=2>
57
+ <tr valign="top">
58
+ <td>In:</td>
59
+ <td>
60
+ <a href="../files/tests_rb.html">tests.rb</a>
61
+ </td>
62
+ </tr>
63
+ <tr>
64
+ <td>Parent:</td>
65
+ <td>
66
+ Test::Unit::TestCase
67
+ </td>
68
+ </tr>
69
+ </table>
70
+ </td>
71
+ </tr>
72
+ </table>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+ <div id="content">
77
+
78
+
79
+
80
+
81
+ <div class="sectiontitle">Methods</div>
82
+ <ul>
83
+ <li><a href="#M000060">test_add</a></li>
84
+ <li><a href="#M000059">test_attr</a></li>
85
+ <li><a href="#M000077">test_child</a></li>
86
+ <li><a href="#M000074">test_chilrden</a></li>
87
+ <li><a href="#M000056">test_constructors</a></li>
88
+ <li><a href="#M000101">test_deep_map</a></li>
89
+ <li><a href="#M000078">test_descendant</a></li>
90
+ <li><a href="#M000075">test_descendants</a></li>
91
+ <li><a href="#M000064">test_dup</a></li>
92
+ <li><a href="#M000061">test_each</a></li>
93
+ <li><a href="#M000089">test_entities</a></li>
94
+ <li><a href="#M000063">test_eqeq</a></li>
95
+ <li><a href="#M000057">test_escapes</a></li>
96
+ <li><a href="#M000076">test_exec</a></li>
97
+ <li><a href="#M000086">test_inpsect</a></li>
98
+ <li><a href="#M000099">test_load</a></li>
99
+ <li><a href="#M000062">test_map</a></li>
100
+ <li><a href="#M000066">test_monadic</a></li>
101
+ <li><a href="#M000100">test_multielement_selectors</a></li>
102
+ <li><a href="#M000065">test_normalize</a></li>
103
+ <li><a href="#M000067">test_parse</a></li>
104
+ <li><a href="#M000085">test_parse_as_twigs</a></li>
105
+ <li><a href="#M000069">test_parse_extra_cdata</a></li>
106
+ <li><a href="#M000072">test_parse_extra_comment</a></li>
107
+ <li><a href="#M000071">test_parse_extra_dtd</a></li>
108
+ <li><a href="#M000068">test_parse_extra_escapes</a></li>
109
+ <li><a href="#M000070">test_parse_extra_qxml</a></li>
110
+ <li><a href="#M000073">test_parse_file</a></li>
111
+ <li><a href="#M000098">test_parsing_entities</a></li>
112
+ <li><a href="#M000096">test_parsing_extras</a></li>
113
+ <li><a href="#M000097">test_parsing_nopp</a></li>
114
+ <li><a href="#M000090">test_patterns</a></li>
115
+ <li><a href="#M000091">test_patterns_2</a></li>
116
+ <li><a href="#M000092">test_patterns_3</a></li>
117
+ <li><a href="#M000093">test_patterns_any_all</a></li>
118
+ <li><a href="#M000102">test_pretty_printer</a></li>
119
+ <li><a href="#M000087">test_pseudoattributes_read</a></li>
120
+ <li><a href="#M000088">test_pseudoattributes_write</a></li>
121
+ <li><a href="#M000081">test_range</a></li>
122
+ <li><a href="#M000084">test_real_method_missing</a></li>
123
+ <li><a href="#M000094">test_remove_pretty_printing</a></li>
124
+ <li><a href="#M000095">test_remove_pretty_printing_conditional</a></li>
125
+ <li><a href="#M000080">test_renormalize</a></li>
126
+ <li><a href="#M000058">test_sort_by</a></li>
127
+ <li><a href="#M000082">test_subsequence</a></li>
128
+ <li><a href="#M000079">test_text</a></li>
129
+ <li><a href="#M000083">test_xml_bang</a></li>
130
+ </ul>
131
+
132
+
133
+
134
+
135
+
136
+
137
+ <div class="sectiontitle">Public Instance methods</div>
138
+ <div class="method">
139
+ <div class="title">
140
+ <a name="M000060"></a><b>test_add</b>()
141
+ </div>
142
+ <div class="description">
143
+ <p>
144
+ Test <a href="XML.html">XML</a>#&lt;&lt; method for adding children
145
+ </p>
146
+ </div>
147
+ <div class="sourcecode">
148
+ <p class="source-link">[ <a href="javascript:toggleSource('M000060_source')" id="l_M000060_source">show source</a> ]</p>
149
+ <div id="M000060_source" class="dyn-source">
150
+ <pre>
151
+ <span class="ruby-comment cmt"># File tests.rb, line 53</span>
152
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_add</span>
153
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:p</span>, <span class="ruby-value str">&quot;Hello&quot;</span>)
154
+ <span class="ruby-identifier">a</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;, &quot;</span>
155
+ <span class="ruby-identifier">a</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;world!&quot;</span>
156
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;p&gt;Hello, world!&lt;/p&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#&lt;&lt; should work&quot;</span>)
157
+
158
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>)
159
+ <span class="ruby-identifier">b</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:bar</span>)
160
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar/&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">b</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#&lt;&lt; should work&quot;</span>)
161
+ <span class="ruby-keyword kw">end</span>
162
+ </pre>
163
+ </div>
164
+ </div>
165
+ </div>
166
+ <div class="method">
167
+ <div class="title">
168
+ <a name="M000059"></a><b>test_attr</b>()
169
+ </div>
170
+ <div class="description">
171
+ <p>
172
+ Test <a href="XML.html">XML</a>#[] and <a href="XML.html">XML</a>#[]= for
173
+ attribute access
174
+ </p>
175
+ </div>
176
+ <div class="sourcecode">
177
+ <p class="source-link">[ <a href="javascript:toggleSource('M000059_source')" id="l_M000059_source">show source</a> ]</p>
178
+ <div id="M000059_source" class="dyn-source">
179
+ <pre>
180
+ <span class="ruby-comment cmt"># File tests.rb, line 43</span>
181
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_attr</span>
182
+ <span class="ruby-identifier">foo</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, {<span class="ruby-identifier">:x</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;1&quot;</span>})
183
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;1&quot;</span>, <span class="ruby-identifier">foo</span>[<span class="ruby-identifier">:x</span>], <span class="ruby-value str">&quot;Attribute reading should work&quot;</span>)
184
+ <span class="ruby-identifier">foo</span>[<span class="ruby-identifier">:x</span>] = <span class="ruby-value str">&quot;2&quot;</span>
185
+ <span class="ruby-identifier">foo</span>[<span class="ruby-identifier">:y</span>] = <span class="ruby-value str">&quot;3&quot;</span>
186
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;2&quot;</span>, <span class="ruby-identifier">foo</span>[<span class="ruby-identifier">:x</span>], <span class="ruby-value str">&quot;Attribute writing should work&quot;</span>)
187
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;3&quot;</span>, <span class="ruby-identifier">foo</span>[<span class="ruby-identifier">:y</span>], <span class="ruby-value str">&quot;Attribute writing should work&quot;</span>)
188
+ <span class="ruby-keyword kw">end</span>
189
+ </pre>
190
+ </div>
191
+ </div>
192
+ </div>
193
+ <div class="method">
194
+ <div class="title">
195
+ <a name="M000077"></a><b>test_child</b>()
196
+ </div>
197
+ <div class="description">
198
+ <p>
199
+ Test <a href="XML.html#M000048">XML#child</a>
200
+ </p>
201
+ </div>
202
+ <div class="sourcecode">
203
+ <p class="source-link">[ <a href="javascript:toggleSource('M000077_source')" id="l_M000077_source">show source</a> ]</p>
204
+ <div id="M000077_source" class="dyn-source">
205
+ <pre>
206
+ <span class="ruby-comment cmt"># File tests.rb, line 294</span>
207
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_child</span>
208
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;/foo&gt;&quot;</span>)
209
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar a='1'/&gt;&lt;/foo&gt;&quot;</span>)
210
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar a='1'/&gt;&lt;bar a='2'/&gt;&lt;/foo&gt;&quot;</span>)
211
+
212
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">child</span>(<span class="ruby-identifier">:bar</span>), <span class="ruby-value str">&quot;XML#child should return nil if there are no matching children&quot;</span>)
213
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar a='1'/&gt;&quot;</span>, <span class="ruby-identifier">b</span>.<span class="ruby-identifier">child</span>(<span class="ruby-identifier">:bar</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#child should work&quot;</span>)
214
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar a='1'/&gt;&quot;</span>, <span class="ruby-identifier">c</span>.<span class="ruby-identifier">child</span>(<span class="ruby-identifier">:bar</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#child should return first child if there are many&quot;</span>)
215
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar a='2'/&gt;&quot;</span>, <span class="ruby-identifier">c</span>.<span class="ruby-identifier">child</span>({<span class="ruby-identifier">:a</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'2'</span>}).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#child should support patterns&quot;</span>)
216
+ <span class="ruby-keyword kw">end</span>
217
+ </pre>
218
+ </div>
219
+ </div>
220
+ </div>
221
+ <div class="method">
222
+ <div class="title">
223
+ <a name="M000074"></a><b>test_chilrden</b>()
224
+ </div>
225
+ <div class="description">
226
+ <p>
227
+ Test <a href="XML.html#M000050">XML#children</a> and <a
228
+ href="Array.html#M000103">Array#children</a>
229
+ </p>
230
+ </div>
231
+ <div class="sourcecode">
232
+ <p class="source-link">[ <a href="javascript:toggleSource('M000074_source')" id="l_M000074_source">show source</a> ]</p>
233
+ <div id="M000074_source" class="dyn-source">
234
+ <pre>
235
+ <span class="ruby-comment cmt"># File tests.rb, line 260</span>
236
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_chilrden</span>
237
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">bar</span>({<span class="ruby-identifier">:x=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;1&quot;</span>})
238
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">bar</span>({<span class="ruby-identifier">:x=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;3&quot;</span>})
239
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">bar</span>({<span class="ruby-identifier">:x=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;2&quot;</span>}, <span class="ruby-identifier">b</span>)
240
+ <span class="ruby-identifier">d</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">foo</span>(<span class="ruby-identifier">a</span>,<span class="ruby-identifier">c</span>)
241
+ <span class="ruby-identifier">e</span> = <span class="ruby-identifier">d</span>.<span class="ruby-identifier">children</span>(<span class="ruby-identifier">:bar</span>)
242
+ <span class="ruby-identifier">f</span> = <span class="ruby-identifier">e</span>.<span class="ruby-identifier">children</span>(<span class="ruby-identifier">:bar</span>)
243
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-identifier">a</span>,<span class="ruby-identifier">c</span>], <span class="ruby-identifier">e</span>, <span class="ruby-value str">&quot;XML#children(tag) should return tag-tagged children&quot;</span>)
244
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-identifier">b</span>], <span class="ruby-identifier">f</span>, <span class="ruby-value str">&quot;Array#children(tag) should return tag-tagged children of its elements&quot;</span>)
245
+ <span class="ruby-keyword kw">end</span>
246
+ </pre>
247
+ </div>
248
+ </div>
249
+ </div>
250
+ <div class="method">
251
+ <div class="title">
252
+ <a name="M000056"></a><b>test_constructors</b>()
253
+ </div>
254
+ <div class="description">
255
+ <p>
256
+ Test whether <a href="XML.html#M000026">XML.new</a> constructors work
257
+ (without monadic case)
258
+ </p>
259
+ </div>
260
+ <div class="sourcecode">
261
+ <p class="source-link">[ <a href="javascript:toggleSource('M000056_source')" id="l_M000056_source">show source</a> ]</p>
262
+ <div id="M000056_source" class="dyn-source">
263
+ <pre>
264
+ <span class="ruby-comment cmt"># File tests.rb, line 10</span>
265
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_constructors</span>
266
+ <span class="ruby-identifier">br</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:br</span>)
267
+ <span class="ruby-identifier">h3</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:h3</span>, <span class="ruby-value str">&quot;Hello&quot;</span>)
268
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:a</span>, {<span class="ruby-identifier">:href</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;http://www.google.com/&quot;</span>}, <span class="ruby-value str">&quot;Google&quot;</span>)
269
+ <span class="ruby-identifier">ul</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:ul</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:li</span>, <span class="ruby-value str">&quot;Hello&quot;</span>), <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:li</span>, <span class="ruby-value str">&quot;world&quot;</span>))
270
+
271
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;br/&gt;&quot;</span>, <span class="ruby-identifier">br</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Constructors should work&quot;</span>)
272
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;h3&gt;Hello&lt;/h3&gt;&quot;</span>, <span class="ruby-identifier">h3</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Constructors should work&quot;</span>)
273
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;a href='http://www.google.com/'&gt;Google&lt;/a&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Constructors should work&quot;</span>)
274
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;ul&gt;&lt;li&gt;Hello&lt;/li&gt;&lt;li&gt;world&lt;/li&gt;&lt;/ul&gt;&quot;</span>, <span class="ruby-identifier">ul</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Constructors should work&quot;</span>)
275
+ <span class="ruby-keyword kw">end</span>
276
+ </pre>
277
+ </div>
278
+ </div>
279
+ </div>
280
+ <div class="method">
281
+ <div class="title">
282
+ <a name="M000101"></a><b>test_deep_map</b>()
283
+ </div>
284
+ <div class="description">
285
+ <p>
286
+ Test deep_map
287
+ </p>
288
+ </div>
289
+ <div class="sourcecode">
290
+ <p class="source-link">[ <a href="javascript:toggleSource('M000101_source')" id="l_M000101_source">show source</a> ]</p>
291
+ <div id="M000101_source" class="dyn-source">
292
+ <pre>
293
+ <span class="ruby-comment cmt"># File tests.rb, line 801</span>
294
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_deep_map</span>
295
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar&gt;x&lt;/bar&gt; &lt;foo&gt;&lt;bar&gt;y&lt;/bar&gt;&lt;/foo&gt;&lt;/foo&gt;&quot;</span>)
296
+ <span class="ruby-identifier">b</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">deep_map</span>(<span class="ruby-identifier">:bar</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">c</span>.<span class="ruby-identifier">text</span>.<span class="ruby-identifier">to_sym</span>) }
297
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;x/&gt; &lt;foo&gt;&lt;y/&gt;&lt;/foo&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">b</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#deep_map should work&quot;</span>)
298
+
299
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar&gt;x&lt;/bar&gt; &lt;bar&gt;&lt;bar&gt;y&lt;/bar&gt;&lt;/bar&gt;&lt;/foo&gt;&quot;</span>)
300
+ <span class="ruby-identifier">d</span> = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">deep_map</span>(<span class="ruby-identifier">:bar</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:xyz</span>, <span class="ruby-identifier">c</span>.<span class="ruby-identifier">attrs</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">c</span>.<span class="ruby-identifier">children</span>) }
301
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;xyz&gt;x&lt;/xyz&gt; &lt;xyz&gt;&lt;bar&gt;y&lt;/bar&gt;&lt;/xyz&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">d</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#deep_map should work&quot;</span>)
302
+ <span class="ruby-keyword kw">end</span>
303
+ </pre>
304
+ </div>
305
+ </div>
306
+ </div>
307
+ <div class="method">
308
+ <div class="title">
309
+ <a name="M000078"></a><b>test_descendant</b>()
310
+ </div>
311
+ <div class="description">
312
+ <p>
313
+ Test <a href="XML.html#M000049">XML#descendant</a>
314
+ </p>
315
+ </div>
316
+ <div class="sourcecode">
317
+ <p class="source-link">[ <a href="javascript:toggleSource('M000078_source')" id="l_M000078_source">show source</a> ]</p>
318
+ <div id="M000078_source" class="dyn-source">
319
+ <pre>
320
+ <span class="ruby-comment cmt"># File tests.rb, line 306</span>
321
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_descendant</span>
322
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;/foo&gt;&quot;</span>)
323
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar a='1'/&gt;&lt;/foo&gt;&quot;</span>)
324
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar a='1'/&gt;&lt;bar a='2'/&gt;&lt;/foo&gt;&quot;</span>)
325
+ <span class="ruby-identifier">d</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar a='1'&gt;&lt;bar a='2'/&gt;&lt;/bar&gt;&lt;bar a='3'/&gt;&lt;/foo&gt;&quot;</span>)
326
+ <span class="ruby-identifier">e</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;foo&gt;&lt;bar a='1'/&gt;&lt;/foo&gt;&lt;bar a='2'/&gt;&lt;/foo&gt;&quot;</span>)
327
+
328
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">descendant</span>(<span class="ruby-identifier">:bar</span>), <span class="ruby-value str">&quot;XML#descendant should return nil if there are no matching descendants&quot;</span>)
329
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar a='1'/&gt;&quot;</span>, <span class="ruby-identifier">b</span>.<span class="ruby-identifier">descendant</span>(<span class="ruby-identifier">:bar</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#descendant should work&quot;</span>)
330
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar a='1'/&gt;&quot;</span>, <span class="ruby-identifier">c</span>.<span class="ruby-identifier">descendant</span>(<span class="ruby-identifier">:bar</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#descendant should return first descendant if there are many&quot;</span>)
331
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar a='1'&gt;&lt;bar a='2'/&gt;&lt;/bar&gt;&quot;</span>, <span class="ruby-identifier">d</span>.<span class="ruby-identifier">descendant</span>(<span class="ruby-identifier">:bar</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#descendant should return first descendant if there are many&quot;</span>)
332
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar a='1'/&gt;&quot;</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">descendant</span>(<span class="ruby-identifier">:bar</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#descendant should return first descendant if there are many&quot;</span>)
333
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar a='2'/&gt;&quot;</span>, <span class="ruby-identifier">c</span>.<span class="ruby-identifier">descendant</span>({<span class="ruby-identifier">:a</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'2'</span>}).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#descendant should support patterns&quot;</span>)
334
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar a='2'/&gt;&quot;</span>, <span class="ruby-identifier">d</span>.<span class="ruby-identifier">descendant</span>({<span class="ruby-identifier">:a</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'2'</span>}).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#descendant should support patterns&quot;</span>)
335
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar a='2'/&gt;&quot;</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">descendant</span>({<span class="ruby-identifier">:a</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'2'</span>}).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#descendant should support patterns&quot;</span>)
336
+ <span class="ruby-keyword kw">end</span>
337
+ </pre>
338
+ </div>
339
+ </div>
340
+ </div>
341
+ <div class="method">
342
+ <div class="title">
343
+ <a name="M000075"></a><b>test_descendants</b>()
344
+ </div>
345
+ <div class="description">
346
+ <p>
347
+ Test <a href="XML.html#M000051">XML#descendants</a> and <a
348
+ href="Array.html#M000104">Array#descendants</a>
349
+ </p>
350
+ </div>
351
+ <div class="sourcecode">
352
+ <p class="source-link">[ <a href="javascript:toggleSource('M000075_source')" id="l_M000075_source">show source</a> ]</p>
353
+ <div id="M000075_source" class="dyn-source">
354
+ <pre>
355
+ <span class="ruby-comment cmt"># File tests.rb, line 272</span>
356
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_descendants</span>
357
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">bar</span>({<span class="ruby-identifier">:x=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;1&quot;</span>})
358
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">bar</span>({<span class="ruby-identifier">:x=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;3&quot;</span>})
359
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">bar</span>({<span class="ruby-identifier">:x=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;2&quot;</span>}, <span class="ruby-identifier">b</span>)
360
+ <span class="ruby-identifier">d</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">foo</span>(<span class="ruby-identifier">a</span>,<span class="ruby-identifier">c</span>)
361
+ <span class="ruby-identifier">e</span> = <span class="ruby-identifier">d</span>.<span class="ruby-identifier">descendants</span>(<span class="ruby-identifier">:bar</span>)
362
+ <span class="ruby-identifier">f</span> = <span class="ruby-identifier">e</span>.<span class="ruby-identifier">descendants</span>(<span class="ruby-identifier">:bar</span>)
363
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-identifier">a</span>,<span class="ruby-identifier">c</span>,<span class="ruby-identifier">b</span>], <span class="ruby-identifier">e</span>, <span class="ruby-value str">&quot;XML#descendants(tag) should return tag-tagged descendants&quot;</span>)
364
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-identifier">b</span>], <span class="ruby-identifier">f</span>, <span class="ruby-value str">&quot;Array#descendants(tag) should return tag-tagged descendants of its elements&quot;</span>)
365
+ <span class="ruby-keyword kw">end</span>
366
+ </pre>
367
+ </div>
368
+ </div>
369
+ </div>
370
+ <div class="method">
371
+ <div class="title">
372
+ <a name="M000064"></a><b>test_dup</b>()
373
+ </div>
374
+ <div class="description">
375
+ <p>
376
+ Test dup-with-block method
377
+ </p>
378
+ </div>
379
+ <div class="sourcecode">
380
+ <p class="source-link">[ <a href="javascript:toggleSource('M000064_source')" id="l_M000064_source">show source</a> ]</p>
381
+ <div id="M000064_source" class="dyn-source">
382
+ <pre>
383
+ <span class="ruby-comment cmt"># File tests.rb, line 136</span>
384
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_dup</span>
385
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, {<span class="ruby-identifier">:a</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;1&quot;</span>}, <span class="ruby-value str">&quot;Hello&quot;</span>)
386
+ <span class="ruby-identifier">b</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">dup</span>{ <span class="ruby-ivar">@name</span> = <span class="ruby-identifier">:bar</span> }
387
+ <span class="ruby-identifier">c</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">dup</span>{ <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">:a</span>] = <span class="ruby-value str">&quot;2&quot;</span> }
388
+ <span class="ruby-identifier">d</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">dup</span>{ <span class="ruby-keyword kw">self</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;, world!&quot;</span> }
389
+
390
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo a='1'&gt;Hello&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#dup{} should not modify its argument&quot;</span>)
391
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar a='1'&gt;Hello&lt;/bar&gt;&quot;</span>, <span class="ruby-identifier">b</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#dup{} should work&quot;</span>)
392
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo a='2'&gt;Hello&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#dup{} should work&quot;</span>)
393
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo a='1'&gt;Hello, world!&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">d</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#dup{} should work&quot;</span>)
394
+
395
+ <span class="ruby-comment cmt"># Deep copy test</span>
396
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:h3</span>, <span class="ruby-value str">&quot;Hello&quot;</span>)
397
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:bar</span>, <span class="ruby-identifier">a</span>))
398
+ <span class="ruby-identifier">c</span> = <span class="ruby-identifier">b</span>.<span class="ruby-identifier">dup</span>
399
+ <span class="ruby-identifier">a</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;, world!&quot;</span>
400
+
401
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar&gt;&lt;h3&gt;Hello, world!&lt;/h3&gt;&lt;/bar&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">b</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#dup should make a deep copy&quot;</span>)
402
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar&gt;&lt;h3&gt;Hello&lt;/h3&gt;&lt;/bar&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#dup should make a deep copy&quot;</span>)
403
+ <span class="ruby-keyword kw">end</span>
404
+ </pre>
405
+ </div>
406
+ </div>
407
+ </div>
408
+ <div class="method">
409
+ <div class="title">
410
+ <a name="M000061"></a><b>test_each</b>()
411
+ </div>
412
+ <div class="description">
413
+ <p>
414
+ Test <a href="XML.html#M000012">XML#each</a> method for iterating over
415
+ children
416
+ </p>
417
+ </div>
418
+ <div class="sourcecode">
419
+ <p class="source-link">[ <a href="javascript:toggleSource('M000061_source')" id="l_M000061_source">show source</a> ]</p>
420
+ <div id="M000061_source" class="dyn-source">
421
+ <pre>
422
+ <span class="ruby-comment cmt"># File tests.rb, line 65</span>
423
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_each</span>
424
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:p</span>, <span class="ruby-value str">&quot;Hello&quot;</span>, <span class="ruby-value str">&quot;, &quot;</span>, <span class="ruby-value str">&quot;world&quot;</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:br</span>))
425
+ <span class="ruby-identifier">b</span> = <span class="ruby-value str">&quot;&quot;</span>
426
+ <span class="ruby-identifier">a</span>.<span class="ruby-identifier">each</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">b</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span>}
427
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;Hello, world&lt;br/&gt;&quot;</span>, <span class="ruby-identifier">b</span>, <span class="ruby-value str">&quot;XML#each should work&quot;</span>)
428
+ <span class="ruby-keyword kw">end</span>
429
+ </pre>
430
+ </div>
431
+ </div>
432
+ </div>
433
+ <div class="method">
434
+ <div class="title">
435
+ <a name="M000089"></a><b>test_entities</b>()
436
+ </div>
437
+ <div class="description">
438
+ <p>
439
+ Test entity unescaping
440
+ </p>
441
+ </div>
442
+ <div class="sourcecode">
443
+ <p class="source-link">[ <a href="javascript:toggleSource('M000089_source')" id="l_M000089_source">show source</a> ]</p>
444
+ <div id="M000089_source" class="dyn-source">
445
+ <pre>
446
+ <span class="ruby-comment cmt"># File tests.rb, line 534</span>
447
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_entities</span>
448
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&amp;#xA5;&amp;#xFC;&amp;#x2020;&lt;/foo&gt;&quot;</span>)
449
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&amp;#165;&amp;#252;&amp;#8224;&lt;/foo&gt;&quot;</span>)
450
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&amp;yen;&amp;uuml;&amp;dagger;&lt;/foo&gt;&quot;</span>)
451
+ <span class="ruby-identifier">d</span> = <span class="ruby-value str">&quot;&quot;</span>
452
+
453
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">b</span>.<span class="ruby-identifier">text</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">text</span>, <span class="ruby-value str">&quot;Entity unescaping on XML#Parse should work&quot;</span>)
454
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">c</span>.<span class="ruby-identifier">text</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">text</span>, <span class="ruby-value str">&quot;Entity unescaping on XML#Parse should work&quot;</span>)
455
+
456
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">b</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Entity escaping on XML#to_s should work&quot;</span>)
457
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Entity escaping on XML#to_s should work&quot;</span>)
458
+
459
+ <span class="ruby-comment cmt"># The escapes assume \XXX are byte escapes and the encoding is UTF-8</span>
460
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;\302\245\303\274\342\200\240&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">text</span>, <span class="ruby-value str">&quot;Entity unescaping on XML#Parse should work&quot;</span>)
461
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;\302\245\303\274\342\200\240&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Entity escaping on XML#to_s should work&quot;</span>)
462
+ <span class="ruby-keyword kw">end</span>
463
+ </pre>
464
+ </div>
465
+ </div>
466
+ </div>
467
+ <div class="method">
468
+ <div class="title">
469
+ <a name="M000063"></a><b>test_eqeq</b>()
470
+ </div>
471
+ <div class="description">
472
+ <p>
473
+ Test <a href="XML.html">XML</a>#==
474
+ </p>
475
+ </div>
476
+ <div class="sourcecode">
477
+ <p class="source-link">[ <a href="javascript:toggleSource('M000063_source')" id="l_M000063_source">show source</a> ]</p>
478
+ <div id="M000063_source" class="dyn-source">
479
+ <pre>
480
+ <span class="ruby-comment cmt"># File tests.rb, line 92</span>
481
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_eqeq</span>
482
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>)
483
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>)
484
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:bar</span>)
485
+ <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">a</span><span class="ruby-operator">==</span><span class="ruby-identifier">a</span>, <span class="ruby-value str">&quot;XML#== should work&quot;</span>)
486
+ <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">a</span><span class="ruby-operator">==</span><span class="ruby-identifier">b</span>, <span class="ruby-value str">&quot;XML#== should work&quot;</span>)
487
+ <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">a!</span>=<span class="ruby-identifier">c</span>, <span class="ruby-value str">&quot;XML#== should work&quot;</span>)
488
+
489
+ <span class="ruby-identifier">d</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, {<span class="ruby-identifier">:bar</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;1&quot;</span>})
490
+ <span class="ruby-identifier">e</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, {<span class="ruby-identifier">:bar</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;1&quot;</span>})
491
+ <span class="ruby-identifier">f</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, {<span class="ruby-identifier">:bar</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;2&quot;</span>})
492
+ <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">d</span><span class="ruby-operator">==</span><span class="ruby-identifier">d</span>, <span class="ruby-value str">&quot;XML#== should work&quot;</span>)
493
+ <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">d</span><span class="ruby-operator">==</span><span class="ruby-identifier">e</span>, <span class="ruby-value str">&quot;XML#== should work&quot;</span>)
494
+ <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">d!</span>=<span class="ruby-identifier">f</span>, <span class="ruby-value str">&quot;XML#== should work&quot;</span>)
495
+
496
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, <span class="ruby-value str">&quot;Hello, world!&quot;</span>)
497
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, <span class="ruby-value str">&quot;Hello, world!&quot;</span>)
498
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, <span class="ruby-value str">&quot;Hello&quot;</span>, <span class="ruby-value str">&quot;, world!&quot;</span>)
499
+ <span class="ruby-identifier">d</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, <span class="ruby-value str">&quot;Hello&quot;</span>)
500
+ <span class="ruby-identifier">e</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, <span class="ruby-value str">&quot;Hello&quot;</span>, <span class="ruby-value str">&quot;&quot;</span>)
501
+ <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">a</span><span class="ruby-operator">==</span><span class="ruby-identifier">a</span>, <span class="ruby-value str">&quot;XML#== should work&quot;</span>)
502
+ <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">a</span><span class="ruby-operator">==</span><span class="ruby-identifier">b</span>, <span class="ruby-value str">&quot;XML#== should work&quot;</span>)
503
+ <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">a</span><span class="ruby-operator">==</span><span class="ruby-identifier">c</span>, <span class="ruby-value str">&quot;XML#== should work&quot;</span>)
504
+ <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">a!</span>=<span class="ruby-identifier">d</span>, <span class="ruby-value str">&quot;XML#== should work&quot;</span>)
505
+ <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">d</span><span class="ruby-operator">==</span><span class="ruby-identifier">e</span>, <span class="ruby-value str">&quot;Empty children should not affect XML#==&quot;</span>)
506
+
507
+ <span class="ruby-comment cmt"># Highly pathological case</span>
508
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, <span class="ruby-value str">&quot;ab&quot;</span>, <span class="ruby-value str">&quot;cde&quot;</span>, <span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-value str">&quot;fg&quot;</span>, <span class="ruby-value str">&quot;hijk&quot;</span>, <span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-value str">&quot;&quot;</span>)
509
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, <span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-value str">&quot;abc&quot;</span>, <span class="ruby-value str">&quot;d&quot;</span>, <span class="ruby-value str">&quot;efg&quot;</span>, <span class="ruby-value str">&quot;h&quot;</span>, <span class="ruby-value str">&quot;ijk&quot;</span>)
510
+ <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">a</span><span class="ruby-operator">==</span><span class="ruby-identifier">b</span>, <span class="ruby-value str">&quot;XML#== should work with differently split Strings too&quot;</span>)
511
+
512
+ <span class="ruby-comment cmt"># String vs XML</span>
513
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, <span class="ruby-value str">&quot;Hello&quot;</span>)
514
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>) {<span class="ruby-identifier">foo!</span>}
515
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>) {<span class="ruby-identifier">bar!</span>}
516
+ <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">a!</span>=<span class="ruby-identifier">b</span>, <span class="ruby-value str">&quot;XML#== should work with children of different types&quot;</span>)
517
+ <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">b!</span>=<span class="ruby-identifier">c</span>, <span class="ruby-value str">&quot;XML#== should work recursively&quot;</span>)
518
+
519
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>) {<span class="ruby-identifier">foo!</span>; <span class="ruby-identifier">bar!</span>}
520
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>) {<span class="ruby-identifier">foo!</span>; <span class="ruby-identifier">foo!</span>}
521
+ <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">a!</span>=<span class="ruby-identifier">b</span>, <span class="ruby-value str">&quot;XML#== should work recursively&quot;</span>)
522
+ <span class="ruby-keyword kw">end</span>
523
+ </pre>
524
+ </div>
525
+ </div>
526
+ </div>
527
+ <div class="method">
528
+ <div class="title">
529
+ <a name="M000057"></a><b>test_escapes</b>()
530
+ </div>
531
+ <div class="description">
532
+ <p>
533
+ Test character escaping on output, in text and in attribute values
534
+ </p>
535
+ </div>
536
+ <div class="sourcecode">
537
+ <p class="source-link">[ <a href="javascript:toggleSource('M000057_source')" id="l_M000057_source">show source</a> ]</p>
538
+ <div id="M000057_source" class="dyn-source">
539
+ <pre>
540
+ <span class="ruby-comment cmt"># File tests.rb, line 23</span>
541
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_escapes</span>
542
+ <span class="ruby-identifier">p</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:p</span>, <span class="ruby-value str">&quot;&lt; &gt; &amp;&quot;</span>)
543
+ <span class="ruby-identifier">foo</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, {<span class="ruby-identifier">:bar=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;&lt; &gt; ' \&quot; &amp;&quot;</span>})
544
+
545
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;p&gt;&amp;lt; &amp;gt; &amp;amp;&lt;/p&gt;&quot;</span>, <span class="ruby-identifier">p</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Character escaping should work&quot;</span>)
546
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo bar='&amp;lt; &amp;gt; &amp;apos; &amp;quot; &amp;amp;'/&gt;&quot;</span>, <span class="ruby-identifier">foo</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Character escaping in attributes should work&quot;</span>)
547
+ <span class="ruby-keyword kw">end</span>
548
+ </pre>
549
+ </div>
550
+ </div>
551
+ </div>
552
+ <div class="method">
553
+ <div class="title">
554
+ <a name="M000076"></a><b>test_exec</b>()
555
+ </div>
556
+ <div class="description">
557
+ <p>
558
+ Test XML#exec! monadic interface
559
+ </p>
560
+ </div>
561
+ <div class="sourcecode">
562
+ <p class="source-link">[ <a href="javascript:toggleSource('M000076_source')" id="l_M000076_source">show source</a> ]</p>
563
+ <div id="M000076_source" class="dyn-source">
564
+ <pre>
565
+ <span class="ruby-comment cmt"># File tests.rb, line 284</span>
566
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_exec</span>
567
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">foo</span>
568
+ <span class="ruby-identifier">a</span>.<span class="ruby-identifier">exec!</span> {
569
+ <span class="ruby-identifier">bar!</span> { <span class="ruby-identifier">text!</span> <span class="ruby-value str">&quot;Hello&quot;</span> }
570
+ <span class="ruby-identifier">text!</span> <span class="ruby-value str">&quot;world&quot;</span>
571
+ }
572
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar&gt;Hello&lt;/bar&gt;world&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#exec! should work&quot;</span>)
573
+ <span class="ruby-keyword kw">end</span>
574
+ </pre>
575
+ </div>
576
+ </div>
577
+ </div>
578
+ <div class="method">
579
+ <div class="title">
580
+ <a name="M000086"></a><b>test_inpsect</b>()
581
+ </div>
582
+ <div class="description">
583
+ <p>
584
+ Test <a href="XML.html#M000028">XML#inspect</a>
585
+ </p>
586
+ </div>
587
+ <div class="sourcecode">
588
+ <p class="source-link">[ <a href="javascript:toggleSource('M000086_source')" id="l_M000086_source">show source</a> ]</p>
589
+ <div id="M000086_source" class="dyn-source">
590
+ <pre>
591
+ <span class="ruby-comment cmt"># File tests.rb, line 491</span>
592
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_inpsect</span>
593
+ <span class="ruby-identifier">a</span> = <span class="ruby-identifier">xml</span>(<span class="ruby-identifier">:a</span>, <span class="ruby-identifier">xml</span>(<span class="ruby-identifier">:b</span>, <span class="ruby-identifier">xml</span>(<span class="ruby-identifier">:c</span>)))
594
+ <span class="ruby-identifier">d</span> = <span class="ruby-identifier">xml</span>(<span class="ruby-identifier">:d</span>)
595
+
596
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;a&gt;...&lt;/a&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">inspect</span>, <span class="ruby-value str">&quot;XML#inspect should work&quot;</span>)
597
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;a&gt;...&lt;/a&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">inspect</span>(<span class="ruby-value">0</span>), <span class="ruby-value str">&quot;XML#inspect(levels) should work&quot;</span>)
598
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;a&gt;&lt;b&gt;...&lt;/b&gt;&lt;/a&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">inspect</span>(<span class="ruby-value">1</span>), <span class="ruby-value str">&quot;XML#inspect(levels) should work&quot;</span>)
599
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;a&gt;&lt;b&gt;&lt;c/&gt;&lt;/b&gt;&lt;/a&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">inspect</span>(<span class="ruby-value">2</span>), <span class="ruby-value str">&quot;XML#inspect(levels) should work&quot;</span>)
600
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;a&gt;&lt;b&gt;&lt;c/&gt;&lt;/b&gt;&lt;/a&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">inspect</span>(<span class="ruby-value">3</span>), <span class="ruby-value str">&quot;XML#inspect(levels) should work&quot;</span>)
601
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;d/&gt;&quot;</span>, <span class="ruby-identifier">d</span>.<span class="ruby-identifier">inspect</span>, <span class="ruby-value str">&quot;XML#inspect should work&quot;</span>)
602
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;d/&gt;&quot;</span>, <span class="ruby-identifier">d</span>.<span class="ruby-identifier">inspect</span>(<span class="ruby-value">0</span>), <span class="ruby-value str">&quot;XML#inspect should work&quot;</span>)
603
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;d/&gt;&quot;</span>, <span class="ruby-identifier">d</span>.<span class="ruby-identifier">inspect</span>(<span class="ruby-value">1</span>), <span class="ruby-value str">&quot;XML#inspect should work&quot;</span>)
604
+ <span class="ruby-keyword kw">end</span>
605
+ </pre>
606
+ </div>
607
+ </div>
608
+ </div>
609
+ <div class="method">
610
+ <div class="title">
611
+ <a name="M000099"></a><b>test_load</b>()
612
+ </div>
613
+ <div class="description">
614
+ <p>
615
+ Test <a href="XML.html#M000019">XML.load</a>
616
+ </p>
617
+ </div>
618
+ <div class="sourcecode">
619
+ <p class="source-link">[ <a href="javascript:toggleSource('M000099_source')" id="l_M000099_source">show source</a> ]</p>
620
+ <div id="M000099_source" class="dyn-source">
621
+ <pre>
622
+ <span class="ruby-comment cmt"># File tests.rb, line 778</span>
623
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_load</span>
624
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">load</span>(<span class="ruby-value str">&quot;test.xml&quot;</span>)
625
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">load</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-value str">&quot;test.xml&quot;</span>))
626
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">load</span>(<span class="ruby-value str">&quot;string:&lt;foo&gt;&lt;bar&gt;&lt;/bar&gt;&lt;/foo&gt;&quot;</span>)
627
+ <span class="ruby-identifier">d</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">load</span>(<span class="ruby-value str">&quot;file:test.xml&quot;</span>)
628
+
629
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar/&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#load should work&quot;</span>)
630
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar/&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">b</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#load should work&quot;</span>)
631
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar/&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#load should work&quot;</span>)
632
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar/&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">d</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#load should work&quot;</span>)
633
+ <span class="ruby-keyword kw">end</span>
634
+ </pre>
635
+ </div>
636
+ </div>
637
+ </div>
638
+ <div class="method">
639
+ <div class="title">
640
+ <a name="M000062"></a><b>test_map</b>()
641
+ </div>
642
+ <div class="description">
643
+ <p>
644
+ Test <a href="XML.html#M000053">XML#map</a> method
645
+ </p>
646
+ </div>
647
+ <div class="sourcecode">
648
+ <p class="source-link">[ <a href="javascript:toggleSource('M000062_source')" id="l_M000062_source">show source</a> ]</p>
649
+ <div id="M000062_source" class="dyn-source">
650
+ <pre>
651
+ <span class="ruby-comment cmt"># File tests.rb, line 73</span>
652
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_map</span>
653
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:body</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:h3</span>, <span class="ruby-value str">&quot;One&quot;</span>), <span class="ruby-value str">&quot;Hello&quot;</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:h3</span>, <span class="ruby-value str">&quot;Two&quot;</span>))
654
+ <span class="ruby-identifier">b</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
655
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">XML</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:h3</span>
656
+ <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:h2</span>, <span class="ruby-identifier">c</span>.<span class="ruby-identifier">attrs</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">c</span>.<span class="ruby-identifier">contents</span>)
657
+ <span class="ruby-keyword kw">else</span>
658
+ <span class="ruby-identifier">c</span>
659
+ <span class="ruby-keyword kw">end</span>
660
+ }
661
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;body&gt;&lt;h3&gt;One&lt;/h3&gt;Hello&lt;h3&gt;Two&lt;/h3&gt;&lt;/body&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#map should not modify the argument&quot;</span>)
662
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;body&gt;&lt;h2&gt;One&lt;/h2&gt;Hello&lt;h2&gt;Two&lt;/h2&gt;&lt;/body&gt;&quot;</span>, <span class="ruby-identifier">b</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#map should work&quot;</span>)
663
+
664
+ <span class="ruby-identifier">d</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">map</span>(<span class="ruby-identifier">:h3</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
665
+ <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:h2</span>, <span class="ruby-identifier">c</span>.<span class="ruby-identifier">attrs</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">c</span>.<span class="ruby-identifier">contents</span>)
666
+ }
667
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;body&gt;&lt;h2&gt;One&lt;/h2&gt;Hello&lt;h2&gt;Two&lt;/h2&gt;&lt;/body&gt;&quot;</span>, <span class="ruby-identifier">d</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#map should accept selectors&quot;</span>)
668
+ <span class="ruby-keyword kw">end</span>
669
+ </pre>
670
+ </div>
671
+ </div>
672
+ </div>
673
+ <div class="method">
674
+ <div class="title">
675
+ <a name="M000066"></a><b>test_monadic</b>()
676
+ </div>
677
+ <div class="description">
678
+ <p>
679
+ Test the &quot;monadic&quot; interface, that is constructors with
680
+ instance_eval&#8216;d blocks passed to them: <a
681
+ href="XML.html#M000026">XML.new</a>(:foo) { bar! } # -&gt;
682
+ &lt;foo&gt;&lt;bar/&gt;&lt;/foo&gt;
683
+ </p>
684
+ </div>
685
+ <div class="sourcecode">
686
+ <p class="source-link">[ <a href="javascript:toggleSource('M000066_source')" id="l_M000066_source">show source</a> ]</p>
687
+ <div id="M000066_source" class="dyn-source">
688
+ <pre>
689
+ <span class="ruby-comment cmt"># File tests.rb, line 175</span>
690
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_monadic</span>
691
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>) { <span class="ruby-identifier">bar!</span>; <span class="ruby-identifier">xml!</span>(<span class="ruby-identifier">:xxx</span>) }
692
+ <span class="ruby-identifier">b</span> = <span class="ruby-identifier">xml</span>(<span class="ruby-identifier">:div</span>) {
693
+ <span class="ruby-identifier">ul!</span> {
694
+ <span class="ruby-identifier">li!</span>(<span class="ruby-constant">XML</span>.<span class="ruby-identifier">a</span>(<span class="ruby-value str">&quot;Hello&quot;</span>))
695
+ }
696
+ }
697
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar/&gt;&lt;xxx/&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Monadic interface should work&quot;</span>)
698
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a&gt;Hello&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&quot;</span>, <span class="ruby-identifier">b</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Monadic interface should work&quot;</span>)
699
+ <span class="ruby-keyword kw">end</span>
700
+ </pre>
701
+ </div>
702
+ </div>
703
+ </div>
704
+ <div class="method">
705
+ <div class="title">
706
+ <a name="M000100"></a><b>test_multielement_selectors</b>()
707
+ </div>
708
+ <div class="description">
709
+ <p>
710
+ Test multielement selectors
711
+ </p>
712
+ </div>
713
+ <div class="sourcecode">
714
+ <p class="source-link">[ <a href="javascript:toggleSource('M000100_source')" id="l_M000100_source">show source</a> ]</p>
715
+ <div id="M000100_source" class="dyn-source">
716
+ <pre>
717
+ <span class="ruby-comment cmt"># File tests.rb, line 791</span>
718
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_multielement_selectors</span>
719
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar color='blue'&gt;&lt;x/&gt;&lt;/bar&gt;&lt;bar color='red'&gt;&lt;x&gt;&lt;y i='1'/&gt;&lt;/x&gt;&lt;y i='2'/&gt;&lt;/bar&gt;&lt;/foo&gt;&quot;</span>)
720
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;x/&gt;&lt;x&gt;&lt;y i='1'/&gt;&lt;/x&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">children</span>(<span class="ruby-identifier">:bar</span>, <span class="ruby-identifier">:x</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Multielement selectors should work&quot;</span>)
721
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;y i='2'/&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">children</span>(<span class="ruby-identifier">:bar</span>, <span class="ruby-identifier">:y</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Multielement selectors should work&quot;</span>)
722
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;y i='1'/&gt;&lt;y i='2'/&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">children</span>(<span class="ruby-identifier">:bar</span>, <span class="ruby-identifier">:*</span>, <span class="ruby-identifier">:y</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Multielement selectors should work&quot;</span>)
723
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;y i='1'/&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">descendants</span>(<span class="ruby-identifier">:x</span>, <span class="ruby-identifier">:y</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Multielement selectors should work&quot;</span>)
724
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;y i='1'/&gt;&lt;y i='2'/&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">children</span>(<span class="ruby-identifier">:bar</span>, <span class="ruby-identifier">:*</span>, <span class="ruby-identifier">:y</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Multielement selectors should work&quot;</span>)
725
+ <span class="ruby-keyword kw">end</span>
726
+ </pre>
727
+ </div>
728
+ </div>
729
+ </div>
730
+ <div class="method">
731
+ <div class="title">
732
+ <a name="M000065"></a><b>test_normalize</b>()
733
+ </div>
734
+ <div class="description">
735
+ <p>
736
+ Test XML#normalize! method
737
+ </p>
738
+ </div>
739
+ <div class="sourcecode">
740
+ <p class="source-link">[ <a href="javascript:toggleSource('M000065_source')" id="l_M000065_source">show source</a> ]</p>
741
+ <div id="M000065_source" class="dyn-source">
742
+ <pre>
743
+ <span class="ruby-comment cmt"># File tests.rb, line 158</span>
744
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_normalize</span>
745
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, <span class="ruby-value str">&quot;He&quot;</span>, <span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-value str">&quot;llo&quot;</span>)
746
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, <span class="ruby-value str">&quot;&quot;</span>)
747
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>, <span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:bar</span>, <span class="ruby-value str">&quot;1&quot;</span>), <span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:bar</span>, <span class="ruby-value str">&quot;2&quot;</span>, <span class="ruby-value str">&quot;&quot;</span>), <span class="ruby-value str">&quot;X&quot;</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:bar</span>, <span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-value str">&quot;3&quot;</span>), <span class="ruby-value str">&quot;&quot;</span>)
748
+
749
+ <span class="ruby-identifier">a</span>.<span class="ruby-identifier">normalize!</span>
750
+ <span class="ruby-identifier">b</span>.<span class="ruby-identifier">normalize!</span>
751
+ <span class="ruby-identifier">c</span>.<span class="ruby-identifier">normalize!</span>
752
+
753
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-value str">&quot;Hello&quot;</span>], <span class="ruby-identifier">a</span>.<span class="ruby-identifier">contents</span>, <span class="ruby-value str">&quot;XML#normalize! should work&quot;</span>)
754
+ <span class="ruby-identifier">assert_equal</span>([], <span class="ruby-identifier">b</span>.<span class="ruby-identifier">contents</span>, <span class="ruby-value str">&quot;XML#normalize! should work&quot;</span>)
755
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:bar</span>, <span class="ruby-value str">&quot;1&quot;</span>), <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:bar</span>, <span class="ruby-value str">&quot;2&quot;</span>), <span class="ruby-value str">&quot;X&quot;</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:bar</span>, <span class="ruby-value str">&quot;3&quot;</span>)], <span class="ruby-identifier">c</span>.<span class="ruby-identifier">contents</span>, <span class="ruby-value str">&quot;XML#normalize! should work&quot;</span>)
756
+ <span class="ruby-keyword kw">end</span>
757
+ </pre>
758
+ </div>
759
+ </div>
760
+ </div>
761
+ <div class="method">
762
+ <div class="title">
763
+ <a name="M000067"></a><b>test_parse</b>()
764
+ </div>
765
+ <div class="description">
766
+ <p>
767
+ Test if parsing and printing gives the right results We test mostly
768
+ round-trip
769
+ </p>
770
+ </div>
771
+ <div class="sourcecode">
772
+ <p class="source-link">[ <a href="javascript:toggleSource('M000067_source')" id="l_M000067_source">show source</a> ]</p>
773
+ <div id="M000067_source" class="dyn-source">
774
+ <pre>
775
+ <span class="ruby-comment cmt"># File tests.rb, line 188</span>
776
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_parse</span>
777
+ <span class="ruby-identifier">a</span> = <span class="ruby-value str">&quot;&lt;foo/&gt;&quot;</span>
778
+ <span class="ruby-identifier">b</span> = <span class="ruby-value str">&quot;&lt;foo a='1'/&gt;&quot;</span>
779
+ <span class="ruby-identifier">c</span> = <span class="ruby-value str">&quot;&lt;foo&gt;Hello&lt;/foo&gt;&quot;</span>
780
+ <span class="ruby-identifier">d</span> = <span class="ruby-value str">&quot;&lt;foo a='1'&gt;&lt;bar b='2'&gt;Hello&lt;/bar&gt;&lt;bar b='3'&gt;world&lt;/bar&gt;&lt;/foo&gt;&quot;</span>
781
+ <span class="ruby-identifier">e</span> = <span class="ruby-value str">&quot;&lt;foo&gt;&amp;gt; &amp;lt; &amp;amp;&lt;/foo&gt;&quot;</span>
782
+ <span class="ruby-identifier">f</span> = <span class="ruby-value str">&quot;&lt;foo a='b&amp;amp;c'/&gt;&quot;</span>
783
+
784
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">a</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">a</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse(x).to_s should equal x for normalized x&quot;</span>)
785
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">b</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">b</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse(x).to_s should equal x for normalized x&quot;</span>)
786
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">c</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">c</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse(x).to_s should equal x for normalized x&quot;</span>)
787
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">d</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">d</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse(x).to_s should equal x for normalized x&quot;</span>)
788
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">e</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">e</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse(x).to_s should equal x for normalized x&quot;</span>)
789
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">f</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">f</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse(x).to_s should equal x for normalized x&quot;</span>)
790
+ <span class="ruby-keyword kw">end</span>
791
+ </pre>
792
+ </div>
793
+ </div>
794
+ </div>
795
+ <div class="method">
796
+ <div class="title">
797
+ <a name="M000085"></a><b>test_parse_as_twigs</b>()
798
+ </div>
799
+ <div class="description">
800
+ <p>
801
+ Test <a href="XML.html#M000020">XML#parse_as_twigs</a> interface
802
+ </p>
803
+ </div>
804
+ <div class="sourcecode">
805
+ <p class="source-link">[ <a href="javascript:toggleSource('M000085_source')" id="l_M000085_source">show source</a> ]</p>
806
+ <div id="M000085_source" class="dyn-source">
807
+ <pre>
808
+ <span class="ruby-comment cmt"># File tests.rb, line 471</span>
809
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_parse_as_twigs</span>
810
+ <span class="ruby-identifier">stream</span> = <span class="ruby-value str">&quot;&lt;foo&gt;&lt;p&gt;&lt;ul&gt;&lt;li&gt;1&lt;/li&gt;&lt;li&gt;2&lt;/li&gt;&lt;li&gt;3&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;bar/&gt;&lt;/p&gt;&lt;/foo&gt;&quot;</span>
811
+ <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
812
+ <span class="ruby-identifier">results</span> = []
813
+ <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse_as_twigs</span>(<span class="ruby-identifier">stream</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span>
814
+ <span class="ruby-identifier">n</span>.<span class="ruby-identifier">complete!</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">==</span> <span class="ruby-value">3</span>
815
+ <span class="ruby-identifier">results</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">n</span>
816
+ <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
817
+ }
818
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo/&gt;&quot;</span>, <span class="ruby-identifier">results</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse_as_twigs should work&quot;</span>)
819
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;p&gt;&lt;ul&gt;&lt;li&gt;1&lt;/li&gt;&lt;li&gt;2&lt;/li&gt;&lt;li&gt;3&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&quot;</span>, <span class="ruby-identifier">results</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse_as_twigs should work&quot;</span>)
820
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;p/&gt;&quot;</span>, <span class="ruby-identifier">results</span>[<span class="ruby-value">2</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse_as_twigs should work&quot;</span>)
821
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;br/&gt;&quot;</span>, <span class="ruby-identifier">results</span>[<span class="ruby-value">3</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse_as_twigs should work&quot;</span>)
822
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;p/&gt;&quot;</span>, <span class="ruby-identifier">results</span>[<span class="ruby-value">4</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse_as_twigs should work&quot;</span>)
823
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;p/&gt;&quot;</span>, <span class="ruby-identifier">results</span>[<span class="ruby-value">5</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse_as_twigs should work&quot;</span>)
824
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar/&gt;&quot;</span>, <span class="ruby-identifier">results</span>[<span class="ruby-value">6</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse_as_twigs should work&quot;</span>)
825
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">7</span>, <span class="ruby-identifier">results</span>.<span class="ruby-identifier">size</span>, <span class="ruby-value str">&quot;XML.parse_as_twigs should work&quot;</span>)
826
+ <span class="ruby-keyword kw">end</span>
827
+ </pre>
828
+ </div>
829
+ </div>
830
+ </div>
831
+ <div class="method">
832
+ <div class="title">
833
+ <a name="M000069"></a><b>test_parse_extra_cdata</b>()
834
+ </div>
835
+ <div class="description">
836
+ <p>
837
+ Test handling extra cruft Some things are best ignored or normalized
838
+ </p>
839
+ </div>
840
+ <div class="sourcecode">
841
+ <p class="source-link">[ <a href="javascript:toggleSource('M000069_source')" id="l_M000069_source">show source</a> ]</p>
842
+ <div id="M000069_source" class="dyn-source">
843
+ <pre>
844
+ <span class="ruby-comment cmt"># File tests.rb, line 214</span>
845
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_parse_extra_cdata</span>
846
+ <span class="ruby-identifier">a</span> = <span class="ruby-value str">&quot;&lt;foo&gt;&lt;![CDATA[&lt;greeting&gt;Hello, world!&lt;/greeting&gt;]]&gt;&lt;/foo&gt;&quot;</span>
847
+ <span class="ruby-identifier">a_out</span> = <span class="ruby-value str">&quot;&lt;foo&gt;&amp;lt;greeting&amp;gt;Hello, world!&amp;lt;/greeting&amp;gt;&lt;/foo&gt;&quot;</span>
848
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">a_out</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">a</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse(x).to_s should equal normalized x&quot;</span>)
849
+ <span class="ruby-keyword kw">end</span>
850
+ </pre>
851
+ </div>
852
+ </div>
853
+ </div>
854
+ <div class="method">
855
+ <div class="title">
856
+ <a name="M000072"></a><b>test_parse_extra_comment</b>()
857
+ </div>
858
+ <div class="description">
859
+ <p>
860
+ Test handling (=ignoring) DTDs
861
+ </p>
862
+ </div>
863
+ <div class="sourcecode">
864
+ <p class="source-link">[ <a href="javascript:toggleSource('M000072_source')" id="l_M000072_source">show source</a> ]</p>
865
+ <div id="M000072_source" class="dyn-source">
866
+ <pre>
867
+ <span class="ruby-comment cmt"># File tests.rb, line 235</span>
868
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_parse_extra_comment</span>
869
+ <span class="ruby-identifier">c</span> = <span class="ruby-value str">&quot;&lt;!-- this is a comment --&gt;&lt;greeting&gt;Hello,&lt;!-- another comment --&gt; world!&lt;/greeting&gt;&quot;</span>
870
+ <span class="ruby-identifier">c_out</span> = <span class="ruby-value str">&quot;&lt;greeting&gt;Hello, world!&lt;/greeting&gt;&quot;</span>
871
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">c_out</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">c</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse(x).to_s should equal normalized x&quot;</span>)
872
+ <span class="ruby-keyword kw">end</span>
873
+ </pre>
874
+ </div>
875
+ </div>
876
+ </div>
877
+ <div class="method">
878
+ <div class="title">
879
+ <a name="M000071"></a><b>test_parse_extra_dtd</b>()
880
+ </div>
881
+ <div class="description">
882
+ <p>
883
+ Test handling (=ignoring) DTDs
884
+ </p>
885
+ </div>
886
+ <div class="sourcecode">
887
+ <p class="source-link">[ <a href="javascript:toggleSource('M000071_source')" id="l_M000071_source">show source</a> ]</p>
888
+ <div id="M000071_source" class="dyn-source">
889
+ <pre>
890
+ <span class="ruby-comment cmt"># File tests.rb, line 228</span>
891
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_parse_extra_dtd</span>
892
+ <span class="ruby-identifier">c</span> = <span class="ruby-value str">&quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot; ?&gt;&lt;!DOCTYPE greeting [&lt;!ELEMENT greeting (#PCDATA)&gt;]&gt;&lt;greeting&gt;Hello, world!&lt;/greeting&gt;&quot;</span>
893
+ <span class="ruby-identifier">c_out</span> = <span class="ruby-value str">&quot;&lt;greeting&gt;Hello, world!&lt;/greeting&gt;&quot;</span>
894
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">c_out</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">c</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse(x).to_s should equal normalized x&quot;</span>)
895
+ <span class="ruby-keyword kw">end</span>
896
+ </pre>
897
+ </div>
898
+ </div>
899
+ </div>
900
+ <div class="method">
901
+ <div class="title">
902
+ <a name="M000068"></a><b>test_parse_extra_escapes</b>()
903
+ </div>
904
+ <div class="description">
905
+ <p>
906
+ Test parsing &amp;-entities
907
+ </p>
908
+ </div>
909
+ <div class="sourcecode">
910
+ <p class="source-link">[ <a href="javascript:toggleSource('M000068_source')" id="l_M000068_source">show source</a> ]</p>
911
+ <div id="M000068_source" class="dyn-source">
912
+ <pre>
913
+ <span class="ruby-comment cmt"># File tests.rb, line 205</span>
914
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_parse_extra_escapes</span>
915
+ <span class="ruby-identifier">a</span> = <span class="ruby-value str">&quot;&lt;foo&gt;&amp;quot; &amp;apos;&lt;/foo&gt;&quot;</span>
916
+ <span class="ruby-identifier">a_out</span> = <span class="ruby-value str">&quot;&lt;foo&gt;\&quot; '&lt;/foo&gt;&quot;</span>
917
+
918
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">a_out</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">a</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse(x).to_s should normalize entities in x&quot;</span>)
919
+ <span class="ruby-keyword kw">end</span>
920
+ </pre>
921
+ </div>
922
+ </div>
923
+ </div>
924
+ <div class="method">
925
+ <div class="title">
926
+ <a name="M000070"></a><b>test_parse_extra_qxml</b>()
927
+ </div>
928
+ <div class="description">
929
+ <p>
930
+ Test handling (=ignoring) <a href="XML.html">XML</a> declarations
931
+ </p>
932
+ </div>
933
+ <div class="sourcecode">
934
+ <p class="source-link">[ <a href="javascript:toggleSource('M000070_source')" id="l_M000070_source">show source</a> ]</p>
935
+ <div id="M000070_source" class="dyn-source">
936
+ <pre>
937
+ <span class="ruby-comment cmt"># File tests.rb, line 221</span>
938
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_parse_extra_qxml</span>
939
+ <span class="ruby-identifier">b</span> = <span class="ruby-value str">&quot;&lt;?xml version=\&quot;1.0\&quot;?&gt;&lt;greeting&gt;Hello, world!&lt;/greeting&gt;&quot;</span>
940
+ <span class="ruby-identifier">b_out</span> = <span class="ruby-value str">&quot;&lt;greeting&gt;Hello, world!&lt;/greeting&gt;&quot;</span>
941
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">b_out</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">b</span>).<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse(x).to_s should equal normalized x&quot;</span>)
942
+ <span class="ruby-keyword kw">end</span>
943
+ </pre>
944
+ </div>
945
+ </div>
946
+ </div>
947
+ <div class="method">
948
+ <div class="title">
949
+ <a name="M000073"></a><b>test_parse_file</b>()
950
+ </div>
951
+ <div class="description">
952
+ <p>
953
+ Test reading from a file
954
+ </p>
955
+ </div>
956
+ <div class="sourcecode">
957
+ <p class="source-link">[ <a href="javascript:toggleSource('M000073_source')" id="l_M000073_source">show source</a> ]</p>
958
+ <div id="M000073_source" class="dyn-source">
959
+ <pre>
960
+ <span class="ruby-comment cmt"># File tests.rb, line 242</span>
961
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_parse_file</span>
962
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-value str">&quot;test.xml&quot;</span>).<span class="ruby-identifier">xml_parse</span>
963
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">from_file</span>(<span class="ruby-value str">&quot;test.xml&quot;</span>)
964
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">from_url</span>(<span class="ruby-value str">&quot;file:test.xml&quot;</span>)
965
+ <span class="ruby-identifier">d</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">from_url</span>(<span class="ruby-value str">&quot;string:&lt;foo&gt;&lt;bar&gt;&lt;/bar&gt;&lt;/foo&gt;&quot;</span>)
966
+ <span class="ruby-identifier">e</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar&gt;&lt;/bar&gt;&lt;/foo&gt;&quot;</span>)
967
+ <span class="ruby-identifier">f</span> = <span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar&gt;&lt;/bar&gt;&lt;/foo&gt;&quot;</span>.<span class="ruby-identifier">xml_parse</span>
968
+ <span class="ruby-identifier">g</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">foo</span> { <span class="ruby-identifier">bar!</span> }
969
+
970
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">g</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;File#xml_parse should work&quot;</span>)
971
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">g</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">b</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.from_file should work&quot;</span>)
972
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">g</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.from_url(\&quot;file:...\&quot;) should work&quot;</span>)
973
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">g</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">d</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.from_url(\&quot;string:...\&quot;) should work&quot;</span>)
974
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">g</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML.parse should work&quot;</span>)
975
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">g</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">f</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;String#xml_parse should work&quot;</span>)
976
+ <span class="ruby-keyword kw">end</span>
977
+ </pre>
978
+ </div>
979
+ </div>
980
+ </div>
981
+ <div class="method">
982
+ <div class="title">
983
+ <a name="M000098"></a><b>test_parsing_entities</b>()
984
+ </div>
985
+ <div class="description">
986
+ <p>
987
+ Test <a href="XML.html#M000022">XML.parse</a>(str, :extra_entities =&gt;
988
+ &#8230;)
989
+ </p>
990
+ </div>
991
+ <div class="sourcecode">
992
+ <p class="source-link">[ <a href="javascript:toggleSource('M000098_source')" id="l_M000098_source">show source</a> ]</p>
993
+ <div id="M000098_source" class="dyn-source">
994
+ <pre>
995
+ <span class="ruby-comment cmt"># File tests.rb, line 752</span>
996
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_parsing_entities</span>
997
+ <span class="ruby-identifier">a</span> = <span class="ruby-value str">&quot;&lt;foo&gt;&amp;cat; &amp;amp; &amp;dog;&lt;/foo&gt;&quot;</span>
998
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">a</span>, <span class="ruby-identifier">:extra_entities</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">lambda</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span>
999
+ <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">e</span>
1000
+ <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;cat&quot;</span>
1001
+ <span class="ruby-value str">&quot;neko&quot;</span>
1002
+ <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;dog&quot;</span>
1003
+ <span class="ruby-value str">&quot;inu&quot;</span>
1004
+ <span class="ruby-keyword kw">end</span>
1005
+ })
1006
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">a</span>, <span class="ruby-identifier">:extra_entities</span> =<span class="ruby-operator">&gt;</span> {<span class="ruby-value str">&quot;cat&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;neko&quot;</span>, <span class="ruby-value str">&quot;dog&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;inu&quot;</span>})
1007
+
1008
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;neko &amp; inu&quot;</span>, <span class="ruby-identifier">b</span>.<span class="ruby-identifier">text</span>, <span class="ruby-value str">&quot;XML#parse(str, :extra_entities=&gt;Proc) should work&quot;</span>)
1009
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;neko &amp; inu&quot;</span>, <span class="ruby-identifier">c</span>.<span class="ruby-identifier">text</span>, <span class="ruby-value str">&quot;XML#parse(str, :extra_entities=&gt;Hash) should work&quot;</span>)
1010
+
1011
+ <span class="ruby-identifier">d</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">a</span>, <span class="ruby-identifier">:extra_entities</span> =<span class="ruby-operator">&gt;</span> {<span class="ruby-value str">&quot;cat&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;neko&quot;</span>, <span class="ruby-value str">&quot;dog&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;inu&quot;</span>})
1012
+
1013
+ <span class="ruby-comment cmt"># Central European characters escapes</span>
1014
+ <span class="ruby-identifier">e</span> = <span class="ruby-value str">&quot;&lt;foo&gt;&amp;zdot;&amp;oacute;&amp;lstrok;w&lt;/foo&gt;&quot;</span>
1015
+ <span class="ruby-identifier">f</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">e</span>, <span class="ruby-identifier">:extra_entities</span> =<span class="ruby-operator">&gt;</span> {<span class="ruby-value str">&quot;zdot&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">380</span>, <span class="ruby-value str">&quot;oacute&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">243</span>, <span class="ruby-value str">&quot;lstrok&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">322</span>})
1016
+
1017
+ <span class="ruby-comment cmt"># Assumes \number does bytes, UTF8</span>
1018
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;\305\274\303\263\305\202w&quot;</span>, <span class="ruby-identifier">f</span>.<span class="ruby-identifier">text</span>, <span class="ruby-value str">&quot;XML#parse(str, :extra_entities=&gt;...) should work with integer codepoints&quot;</span>)
1019
+ <span class="ruby-keyword kw">end</span>
1020
+ </pre>
1021
+ </div>
1022
+ </div>
1023
+ </div>
1024
+ <div class="method">
1025
+ <div class="title">
1026
+ <a name="M000096"></a><b>test_parsing_extras</b>()
1027
+ </div>
1028
+ <div class="description">
1029
+ <p>
1030
+ Test extra arguments to <a href="XML.html#M000022">XML#parse</a> -
1031
+ :comments and :pi
1032
+ </p>
1033
+ </div>
1034
+ <div class="sourcecode">
1035
+ <p class="source-link">[ <a href="javascript:toggleSource('M000096_source')" id="l_M000096_source">show source</a> ]</p>
1036
+ <div id="M000096_source" class="dyn-source">
1037
+ <pre>
1038
+ <span class="ruby-comment cmt"># File tests.rb, line 714</span>
1039
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_parsing_extras</span>
1040
+ <span class="ruby-identifier">a</span> = <span class="ruby-value str">&quot;&lt;foo&gt;&lt;?xml-stylesheet href='http://www.blogger.com/styles/atom.css' type='text/css'?&gt;&lt;/foo&gt;&quot;</span>
1041
+ <span class="ruby-identifier">b</span> = <span class="ruby-value str">&quot;&lt;foo&gt;&lt;!-- This is a comment --&gt;&lt;/foo&gt;&quot;</span>
1042
+
1043
+ <span class="ruby-identifier">ax</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">a</span>)
1044
+ <span class="ruby-identifier">bx</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">b</span>)
1045
+
1046
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo/&gt;&quot;</span>, <span class="ruby-identifier">ax</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#parse should drop PI by default&quot;</span>)
1047
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo/&gt;&quot;</span>, <span class="ruby-identifier">bx</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#parse should drop comments by default&quot;</span>)
1048
+
1049
+ <span class="ruby-identifier">ay</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">a</span>, <span class="ruby-identifier">:comments</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span>, <span class="ruby-identifier">:pi</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span>)
1050
+ <span class="ruby-identifier">by</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">b</span>, <span class="ruby-identifier">:comments</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span>, <span class="ruby-identifier">:pi</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span>)
1051
+
1052
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">a</span>, <span class="ruby-identifier">ay</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#parse(str, :pi=&gt;true) should include PI&quot;</span>)
1053
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">b</span>, <span class="ruby-identifier">by</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#parse(str, :comments=&gt;true) should include comments&quot;</span>)
1054
+ <span class="ruby-keyword kw">end</span>
1055
+ </pre>
1056
+ </div>
1057
+ </div>
1058
+ </div>
1059
+ <div class="method">
1060
+ <div class="title">
1061
+ <a name="M000097"></a><b>test_parsing_nopp</b>()
1062
+ </div>
1063
+ <div class="description">
1064
+ <p>
1065
+ Test extra arguments to <a href="XML.html#M000022">XML#parse</a> -
1066
+ :remove_pretty_printing. FIXME: How about a shorter (but still mnemonic)
1067
+ name for that ?
1068
+ </p>
1069
+ </div>
1070
+ <div class="sourcecode">
1071
+ <p class="source-link">[ <a href="javascript:toggleSource('M000097_source')" id="l_M000097_source">show source</a> ]</p>
1072
+ <div id="M000097_source" class="dyn-source">
1073
+ <pre>
1074
+ <span class="ruby-comment cmt"># File tests.rb, line 733</span>
1075
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_parsing_nopp</span>
1076
+ <span class="ruby-identifier">a</span> = <span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar&gt;100&lt;/bar&gt;&lt;bar&gt;200&lt;/bar&gt;&lt;/foo&gt;&quot;</span>
1077
+ <span class="ruby-identifier">b</span> = <span class="ruby-value str">&quot;&lt;foo&gt;
1078
+ &lt;bar&gt;
1079
+ 100
1080
+ &lt;/bar&gt;
1081
+ &lt;bar&gt;
1082
+ 200
1083
+ &lt;/bar&gt;
1084
+ &lt;/foo&gt;&quot;</span>
1085
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">a</span>)
1086
+ <span class="ruby-identifier">d</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">b</span>)
1087
+ <span class="ruby-identifier">e</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">b</span>, <span class="ruby-identifier">:remove_pretty_printing</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span>)
1088
+
1089
+ <span class="ruby-identifier">assert_not_equal</span>(<span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">d</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#parse should not ignore pretty printing by default&quot;</span>)
1090
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#parse(str, :remove_pretty_printing=&gt;true) should work&quot;</span>)
1091
+ <span class="ruby-keyword kw">end</span>
1092
+ </pre>
1093
+ </div>
1094
+ </div>
1095
+ </div>
1096
+ <div class="method">
1097
+ <div class="title">
1098
+ <a name="M000090"></a><b>test_patterns</b>()
1099
+ </div>
1100
+ <div class="description">
1101
+ <p>
1102
+ Test patterns support
1103
+ </p>
1104
+ </div>
1105
+ <div class="sourcecode">
1106
+ <p class="source-link">[ <a href="javascript:toggleSource('M000090_source')" id="l_M000090_source">show source</a> ]</p>
1107
+ <div id="M000090_source" class="dyn-source">
1108
+ <pre>
1109
+ <span class="ruby-comment cmt"># File tests.rb, line 552</span>
1110
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_patterns</span>
1111
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span> <span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar color='blue'&gt;Hello&lt;/bar&gt;, &lt;bar color='red'&gt;world&lt;/bar&gt;&lt;excl&gt;!&lt;/excl&gt;&lt;/foo&gt;&quot;</span>
1112
+ <span class="ruby-identifier">a</span>.<span class="ruby-identifier">normalize!</span>
1113
+
1114
+ <span class="ruby-identifier">blue</span> = []
1115
+ <span class="ruby-identifier">nocolor</span> = []
1116
+ <span class="ruby-identifier">bar</span> = []
1117
+ <span class="ruby-comment cmt">#hello = []</span>
1118
+
1119
+ <span class="ruby-identifier">a</span>.<span class="ruby-identifier">descendants</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">d</span><span class="ruby-operator">|</span>
1120
+ <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">d</span>
1121
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:bar</span>
1122
+ <span class="ruby-identifier">bar</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">d</span>
1123
+ <span class="ruby-keyword kw">end</span>
1124
+
1125
+ <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">d</span>
1126
+ <span class="ruby-keyword kw">when</span> {<span class="ruby-identifier">:color</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'blue'</span>}
1127
+ <span class="ruby-identifier">blue</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">d</span>
1128
+ <span class="ruby-keyword kw">end</span>
1129
+
1130
+ <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">d</span>
1131
+ <span class="ruby-keyword kw">when</span> {<span class="ruby-identifier">:color</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>}
1132
+ <span class="ruby-identifier">nocolor</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">d</span>
1133
+ <span class="ruby-keyword kw">end</span>
1134
+
1135
+ <span class="ruby-comment cmt">#case d</span>
1136
+ <span class="ruby-comment cmt">#when /Hello/</span>
1137
+ <span class="ruby-comment cmt"># hello &lt;&lt; d</span>
1138
+ <span class="ruby-comment cmt">#end</span>
1139
+ }
1140
+
1141
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;bar color='blue'&gt;Hello&lt;/bar&gt;&quot;</span>), <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;bar color='red'&gt;world&lt;/bar&gt;&quot;</span>)], <span class="ruby-identifier">bar</span>, <span class="ruby-value str">&quot;Pattern matching should work&quot;</span>)
1142
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;bar color='blue'&gt;Hello&lt;/bar&gt;&quot;</span>)], <span class="ruby-identifier">blue</span>, <span class="ruby-value str">&quot;Pattern matching should work&quot;</span>)
1143
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;excl&gt;!&lt;/excl&gt;&quot;</span>)], <span class="ruby-identifier">nocolor</span>, <span class="ruby-value str">&quot;Pattern matching should work&quot;</span>)
1144
+ <span class="ruby-comment cmt"># Commented out, as it requires overloading Regexp#=~ and therefore Binding.of_caller</span>
1145
+ <span class="ruby-comment cmt">#assert_equal([XML.parse(&quot;&lt;bar color='blue'&gt;Hello&lt;/bar&gt;&quot;), &quot;Hello&quot;], hello, &quot;Pattern matching should work&quot;)</span>
1146
+ <span class="ruby-keyword kw">end</span>
1147
+ </pre>
1148
+ </div>
1149
+ </div>
1150
+ </div>
1151
+ <div class="method">
1152
+ <div class="title">
1153
+ <a name="M000091"></a><b>test_patterns_2</b>()
1154
+ </div>
1155
+ <div class="description">
1156
+ <p>
1157
+ Test pattern support in descendants (works the same way in children)
1158
+ </p>
1159
+ </div>
1160
+ <div class="sourcecode">
1161
+ <p class="source-link">[ <a href="javascript:toggleSource('M000091_source')" id="l_M000091_source">show source</a> ]</p>
1162
+ <div id="M000091_source" class="dyn-source">
1163
+ <pre>
1164
+ <span class="ruby-comment cmt"># File tests.rb, line 591</span>
1165
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_patterns_2</span>
1166
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span> <span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar color='blue'&gt;Hello&lt;/bar&gt;, &lt;bar color='red'&gt;world&lt;/bar&gt;&lt;excl color='blue'&gt;!&lt;/excl&gt;&lt;/foo&gt;&quot;</span>
1167
+ <span class="ruby-identifier">a</span>.<span class="ruby-identifier">normalize!</span>
1168
+
1169
+ <span class="ruby-identifier">bar</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">descendants</span>(<span class="ruby-identifier">:bar</span>)
1170
+ <span class="ruby-identifier">blue</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">descendants</span>({<span class="ruby-identifier">:color=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">'blue'</span>})
1171
+ <span class="ruby-identifier">blue_bar</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">descendants</span>(<span class="ruby-identifier">all</span>(<span class="ruby-identifier">:bar</span>, {<span class="ruby-identifier">:color=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">'blue'</span>}))
1172
+ <span class="ruby-comment cmt">#hello = a.descendants(/Hello/)</span>
1173
+ <span class="ruby-identifier">xml</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">descendants</span>(<span class="ruby-constant">XML</span>)
1174
+ <span class="ruby-identifier">string</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">descendants</span>(<span class="ruby-constant">String</span>)
1175
+
1176
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;bar color='blue'&gt;Hello&lt;/bar&gt;&quot;</span>), <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;bar color='red'&gt;world&lt;/bar&gt;&quot;</span>)], <span class="ruby-identifier">bar</span>, <span class="ruby-value str">&quot;Pattern matching should work&quot;</span>)
1177
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;bar color='blue'&gt;Hello&lt;/bar&gt;&quot;</span>), <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;excl color='blue'&gt;!&lt;/excl&gt;&quot;</span>)], <span class="ruby-identifier">blue</span>, <span class="ruby-value str">&quot;Pattern matching should work&quot;</span>)
1178
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;bar color='blue'&gt;Hello&lt;/bar&gt;&quot;</span>)], <span class="ruby-identifier">blue_bar</span>, <span class="ruby-value str">&quot;Pattern matching should work&quot;</span>)
1179
+ <span class="ruby-comment cmt"># Commented out, as it requires overloading Regexp#=~ and therefore Binding.of_caller</span>
1180
+ <span class="ruby-comment cmt">#assert_equal([XML.parse(&quot;&lt;bar color='blue'&gt;Hello&lt;/bar&gt;&quot;), &quot;Hello&quot;], hello, &quot;Pattern matching should work&quot;)</span>
1181
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;bar color='blue'&gt;Hello&lt;/bar&gt;&quot;</span>), <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;bar color='red'&gt;world&lt;/bar&gt;&quot;</span>), <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;excl color='blue'&gt;!&lt;/excl&gt;&quot;</span>)], <span class="ruby-identifier">xml</span>, <span class="ruby-value str">&quot;Pattern matching should work&quot;</span>)
1182
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-value str">'Hello'</span>, <span class="ruby-value str">', '</span>, <span class="ruby-value str">'world'</span>, <span class="ruby-value str">'!'</span>], <span class="ruby-identifier">string</span>, <span class="ruby-value str">&quot;Pattern matching should work&quot;</span>)
1183
+ <span class="ruby-keyword kw">end</span>
1184
+ </pre>
1185
+ </div>
1186
+ </div>
1187
+ </div>
1188
+ <div class="method">
1189
+ <div class="title">
1190
+ <a name="M000092"></a><b>test_patterns_3</b>()
1191
+ </div>
1192
+ <div class="description">
1193
+ <p>
1194
+ Test patterns =~ support
1195
+ </p>
1196
+ </div>
1197
+ <div class="sourcecode">
1198
+ <p class="source-link">[ <a href="javascript:toggleSource('M000092_source')" id="l_M000092_source">show source</a> ]</p>
1199
+ <div id="M000092_source" class="dyn-source">
1200
+ <pre>
1201
+ <span class="ruby-comment cmt"># File tests.rb, line 612</span>
1202
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_patterns_3</span>
1203
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span> <span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar color='blue'&gt;Hello&lt;/bar&gt;, &lt;bar color='red'&gt;world&lt;/bar&gt;&lt;excl&gt;!&lt;/excl&gt;&lt;/foo&gt;&quot;</span>
1204
+ <span class="ruby-identifier">a</span>.<span class="ruby-identifier">normalize!</span>
1205
+
1206
+ <span class="ruby-identifier">blue</span> = []
1207
+ <span class="ruby-identifier">nocolor</span> = []
1208
+ <span class="ruby-identifier">bar</span> = []
1209
+ <span class="ruby-identifier">hello</span> = []
1210
+
1211
+ <span class="ruby-identifier">a</span>.<span class="ruby-identifier">descendants</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">d</span><span class="ruby-operator">|</span>
1212
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">d</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">:bar</span>
1213
+ <span class="ruby-identifier">bar</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">d</span>
1214
+ <span class="ruby-keyword kw">end</span>
1215
+
1216
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">d</span> <span class="ruby-operator">=~</span> {<span class="ruby-identifier">:color</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'blue'</span>}
1217
+ <span class="ruby-identifier">blue</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">d</span>
1218
+ <span class="ruby-keyword kw">end</span>
1219
+
1220
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">d</span> <span class="ruby-operator">=~</span> {<span class="ruby-identifier">:color</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>}
1221
+ <span class="ruby-identifier">nocolor</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">d</span>
1222
+ <span class="ruby-keyword kw">end</span>
1223
+
1224
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">d</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/Hello/</span>
1225
+ <span class="ruby-identifier">hello</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">d</span>
1226
+ <span class="ruby-keyword kw">end</span>
1227
+ }
1228
+
1229
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;bar color='blue'&gt;Hello&lt;/bar&gt;&quot;</span>), <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;bar color='red'&gt;world&lt;/bar&gt;&quot;</span>)], <span class="ruby-identifier">bar</span>, <span class="ruby-value str">&quot;Pattern matching should work&quot;</span>)
1230
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;bar color='blue'&gt;Hello&lt;/bar&gt;&quot;</span>)], <span class="ruby-identifier">blue</span>, <span class="ruby-value str">&quot;Pattern matching should work&quot;</span>)
1231
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;excl&gt;!&lt;/excl&gt;&quot;</span>)], <span class="ruby-identifier">nocolor</span>, <span class="ruby-value str">&quot;Pattern matching should work&quot;</span>)
1232
+ <span class="ruby-identifier">assert_equal</span>([<span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;bar color='blue'&gt;Hello&lt;/bar&gt;&quot;</span>), <span class="ruby-value str">&quot;Hello&quot;</span>], <span class="ruby-identifier">hello</span>, <span class="ruby-value str">&quot;Pattern matching should work&quot;</span>)
1233
+ <span class="ruby-keyword kw">end</span>
1234
+ </pre>
1235
+ </div>
1236
+ </div>
1237
+ </div>
1238
+ <div class="method">
1239
+ <div class="title">
1240
+ <a name="M000093"></a><b>test_patterns_any_all</b>()
1241
+ </div>
1242
+ <div class="sourcecode">
1243
+ <p class="source-link">[ <a href="javascript:toggleSource('M000093_source')" id="l_M000093_source">show source</a> ]</p>
1244
+ <div id="M000093_source" class="dyn-source">
1245
+ <pre>
1246
+ <span class="ruby-comment cmt"># File tests.rb, line 645</span>
1247
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_patterns_any_all</span>
1248
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span> <span class="ruby-value str">&quot;&lt;foo&gt;
1249
+ &lt;bar color='blue' size='big'&gt;1&lt;/bar&gt;
1250
+ &lt;bar color='blue'&gt;2&lt;/bar&gt;
1251
+ &lt;bar color='blue' size='normal'&gt;3&lt;/bar&gt;
1252
+ &lt;bar color='red' size='big'&gt;4&lt;/bar&gt;
1253
+ &lt;bar color='red'&gt;5&lt;/bar&gt;
1254
+ &lt;bar color='red' size='normal'&gt;6&lt;/bar&gt;
1255
+ &lt;/foo&gt;&quot;</span>
1256
+
1257
+ <span class="ruby-identifier">p</span> = <span class="ruby-identifier">all</span>({<span class="ruby-identifier">:color</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'red'</span>}, <span class="ruby-identifier">any</span>({<span class="ruby-identifier">:size</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>}, {<span class="ruby-identifier">:size</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'normal'</span>}))
1258
+ <span class="ruby-comment cmt"># Select childern which color red and size either normal or not specified</span>
1259
+ <span class="ruby-identifier">b</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">children</span>(<span class="ruby-identifier">p</span>)
1260
+ <span class="ruby-identifier">c</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">find_all</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">p</span> }
1261
+ <span class="ruby-identifier">d</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">find_all</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">x</span> }
1262
+
1263
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar color='red'&gt;5&lt;/bar&gt;&lt;bar color='red' size='normal'&gt;6&lt;/bar&gt;&quot;</span>, <span class="ruby-identifier">b</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Pattern matching with any/all should work&quot;</span>)
1264
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar color='red'&gt;5&lt;/bar&gt;&lt;bar color='red' size='normal'&gt;6&lt;/bar&gt;&quot;</span>, <span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Pattern matching with any/all should work&quot;</span>)
1265
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar color='red'&gt;5&lt;/bar&gt;&lt;bar color='red' size='normal'&gt;6&lt;/bar&gt;&quot;</span>, <span class="ruby-identifier">d</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;Pattern matching with any/all should work&quot;</span>)
1266
+ <span class="ruby-keyword kw">end</span>
1267
+ </pre>
1268
+ </div>
1269
+ </div>
1270
+ </div>
1271
+ <div class="method">
1272
+ <div class="title">
1273
+ <a name="M000102"></a><b>test_pretty_printer</b>()
1274
+ </div>
1275
+ <div class="description">
1276
+ <p>
1277
+ Test <a href="XML.html#M000019">XML.load</a>
1278
+ </p>
1279
+ </div>
1280
+ <div class="sourcecode">
1281
+ <p class="source-link">[ <a href="javascript:toggleSource('M000102_source')" id="l_M000102_source">show source</a> ]</p>
1282
+ <div id="M000102_source" class="dyn-source">
1283
+ <pre>
1284
+ <span class="ruby-comment cmt"># File tests.rb, line 812</span>
1285
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_pretty_printer</span>
1286
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar&gt;x&lt;/bar&gt;Boo!&lt;bar&gt;&lt;y&gt;&lt;z&gt;f&lt;/z&gt;&lt;/y&gt;&lt;/bar&gt;&lt;xyzzy /&gt;&lt;bar&gt;Mutiline\nText\n:-)&lt;/bar&gt;&lt;/foo&gt;&quot;</span>)
1287
+ <span class="ruby-identifier">a</span>.<span class="ruby-identifier">add_pretty_printing!</span>
1288
+ <span class="ruby-identifier">expected</span> = <span class="ruby-value str">&quot;&lt;foo&gt;
1289
+ &lt;bar&gt;
1290
+ x
1291
+ &lt;/bar&gt;
1292
+ Boo!
1293
+ &lt;bar&gt;
1294
+ &lt;y&gt;
1295
+ &lt;z&gt;
1296
+ f
1297
+ &lt;/z&gt;
1298
+ &lt;/y&gt;
1299
+ &lt;/bar&gt;
1300
+ &lt;xyzzy/&gt;
1301
+ &lt;bar&gt;
1302
+ Mutiline
1303
+ Text
1304
+ :-)
1305
+ &lt;/bar&gt;
1306
+ &lt;/foo&gt;&quot;</span>
1307
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">expected</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#pretty_print! should work&quot;</span>)
1308
+ <span class="ruby-keyword kw">end</span>
1309
+ </pre>
1310
+ </div>
1311
+ </div>
1312
+ </div>
1313
+ <div class="method">
1314
+ <div class="title">
1315
+ <a name="M000087"></a><b>test_pseudoattributes_read</b>()
1316
+ </div>
1317
+ <div class="description">
1318
+ <p>
1319
+ Test <a href="XML.html">XML</a>#[:@foo] pseudoattributes
1320
+ </p>
1321
+ </div>
1322
+ <div class="sourcecode">
1323
+ <p class="source-link">[ <a href="javascript:toggleSource('M000087_source')" id="l_M000087_source">show source</a> ]</p>
1324
+ <div id="M000087_source" class="dyn-source">
1325
+ <pre>
1326
+ <span class="ruby-comment cmt"># File tests.rb, line 506</span>
1327
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_pseudoattributes_read</span>
1328
+ <span class="ruby-comment cmt"># Ignore the second &lt;x&gt;...&lt;/x&gt;</span>
1329
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo x='10'&gt;&lt;x&gt;20&lt;/x&gt;&lt;y&gt;30&lt;/y&gt;&lt;x&gt;40&lt;/x&gt;&lt;/foo&gt;&quot;</span>)
1330
+
1331
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;10&quot;</span>, <span class="ruby-identifier">a</span>[<span class="ruby-identifier">:x</span>], <span class="ruby-value str">&quot;XML#[] real attributes should work&quot;</span>)
1332
+ <span class="ruby-identifier">assert_nil</span>(<span class="ruby-identifier">a</span>[<span class="ruby-identifier">:y</span>], <span class="ruby-value str">&quot;XML#[] real attributes should work&quot;</span>)
1333
+ <span class="ruby-identifier">assert_nil</span>(<span class="ruby-identifier">a</span>[<span class="ruby-identifier">:z</span>], <span class="ruby-value str">&quot;XML#[] real attributes should work&quot;</span>)
1334
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;20&quot;</span>, <span class="ruby-identifier">a</span>[<span class="ruby-identifier">:@x</span>], <span class="ruby-value str">&quot;XML#[] pseudoattributes should work&quot;</span>)
1335
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;30&quot;</span>, <span class="ruby-identifier">a</span>[<span class="ruby-identifier">:@y</span>], <span class="ruby-value str">&quot;XML#[] pseudoattributes should work&quot;</span>)
1336
+ <span class="ruby-identifier">assert_nil</span>(<span class="ruby-identifier">a</span>[<span class="ruby-identifier">:@z</span>], <span class="ruby-value str">&quot;XML#[] pseudoattributes should work&quot;</span>)
1337
+ <span class="ruby-keyword kw">end</span>
1338
+ </pre>
1339
+ </div>
1340
+ </div>
1341
+ </div>
1342
+ <div class="method">
1343
+ <div class="title">
1344
+ <a name="M000088"></a><b>test_pseudoattributes_write</b>()
1345
+ </div>
1346
+ <div class="description">
1347
+ <p>
1348
+ Test <a href="XML.html">XML</a>#[:@foo] pseudoattributes
1349
+ </p>
1350
+ </div>
1351
+ <div class="sourcecode">
1352
+ <p class="source-link">[ <a href="javascript:toggleSource('M000088_source')" id="l_M000088_source">show source</a> ]</p>
1353
+ <div id="M000088_source" class="dyn-source">
1354
+ <pre>
1355
+ <span class="ruby-comment cmt"># File tests.rb, line 519</span>
1356
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_pseudoattributes_write</span>
1357
+ <span class="ruby-comment cmt"># Ignore the second &lt;x&gt;...&lt;/x&gt;</span>
1358
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo x='10'&gt;&lt;x&gt;20&lt;/x&gt;&lt;y&gt;30&lt;/y&gt;&lt;x&gt;40&lt;/x&gt;&lt;/foo&gt;&quot;</span>)
1359
+
1360
+ <span class="ruby-identifier">a</span>[<span class="ruby-identifier">:x</span>] = <span class="ruby-value">100</span>
1361
+ <span class="ruby-identifier">a</span>[<span class="ruby-identifier">:y</span>] = <span class="ruby-value">200</span>
1362
+ <span class="ruby-identifier">a</span>[<span class="ruby-identifier">:z</span>] = <span class="ruby-value">300</span>
1363
+ <span class="ruby-identifier">a</span>[<span class="ruby-identifier">:@x</span>] = <span class="ruby-value">1000</span>
1364
+ <span class="ruby-identifier">a</span>[<span class="ruby-identifier">:@y</span>] = <span class="ruby-value">2000</span>
1365
+ <span class="ruby-identifier">a</span>[<span class="ruby-identifier">:@z</span>] = <span class="ruby-value">3000</span>
1366
+
1367
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo x='100' y='200' z='300'&gt;&lt;x&gt;1000&lt;/x&gt;&lt;y&gt;2000&lt;/y&gt;&lt;x&gt;40&lt;/x&gt;&lt;z&gt;3000&lt;/z&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#[]= pseudoattributes should work&quot;</span>)
1368
+ <span class="ruby-keyword kw">end</span>
1369
+ </pre>
1370
+ </div>
1371
+ </div>
1372
+ </div>
1373
+ <div class="method">
1374
+ <div class="title">
1375
+ <a name="M000081"></a><b>test_range</b>()
1376
+ </div>
1377
+ <div class="description">
1378
+ <p>
1379
+ Test <a href="XML.html#M000035">XML#range</a>
1380
+ </p>
1381
+ </div>
1382
+ <div class="sourcecode">
1383
+ <p class="source-link">[ <a href="javascript:toggleSource('M000081_source')" id="l_M000081_source">show source</a> ]</p>
1384
+ <div id="M000081_source" class="dyn-source">
1385
+ <pre>
1386
+ <span class="ruby-comment cmt"># File tests.rb, line 347</span>
1387
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_range</span>
1388
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span> <span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar i='0'/&gt;&lt;bar i='1'/&gt;&lt;bar i='2'/&gt;&lt;bar i='3'/&gt;&lt;bar i='4'/&gt;&lt;/foo&gt;&quot;</span>
1389
+ <span class="ruby-identifier">b</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">children</span>(<span class="ruby-identifier">:bar</span>)
1390
+
1391
+ <span class="ruby-comment cmt"># Non-recursive case</span>
1392
+ <span class="ruby-identifier">ar_n_n</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">range</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>)
1393
+ <span class="ruby-identifier">ar_0_n</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">range</span>(<span class="ruby-identifier">b</span>[<span class="ruby-value">0</span>], <span class="ruby-keyword kw">nil</span>)
1394
+ <span class="ruby-identifier">ar_1_n</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">range</span>(<span class="ruby-identifier">b</span>[<span class="ruby-value">1</span>], <span class="ruby-keyword kw">nil</span>)
1395
+ <span class="ruby-identifier">ar_4_n</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">range</span>(<span class="ruby-identifier">b</span>[<span class="ruby-value">4</span>], <span class="ruby-keyword kw">nil</span>)
1396
+ <span class="ruby-identifier">ar_n_4</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">range</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">b</span>[<span class="ruby-value">4</span>])
1397
+ <span class="ruby-identifier">ar_n_3</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">range</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">b</span>[<span class="ruby-value">3</span>])
1398
+ <span class="ruby-identifier">ar_n_0</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">range</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">b</span>[<span class="ruby-value">0</span>])
1399
+
1400
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar i='0'/&gt;&lt;bar i='1'/&gt;&lt;bar i='2'/&gt;&lt;bar i='3'/&gt;&lt;bar i='4'/&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">ar_n_n</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#range should work&quot;</span>)
1401
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar i='1'/&gt;&lt;bar i='2'/&gt;&lt;bar i='3'/&gt;&lt;bar i='4'/&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">ar_0_n</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#range should work&quot;</span>)
1402
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar i='2'/&gt;&lt;bar i='3'/&gt;&lt;bar i='4'/&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">ar_1_n</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#range should work&quot;</span>)
1403
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo/&gt;&quot;</span>, <span class="ruby-identifier">ar_4_n</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#range should work&quot;</span>)
1404
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar i='0'/&gt;&lt;bar i='1'/&gt;&lt;bar i='2'/&gt;&lt;bar i='3'/&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">ar_n_4</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#range should work&quot;</span>)
1405
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar i='0'/&gt;&lt;bar i='1'/&gt;&lt;bar i='2'/&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">ar_n_3</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#range should work&quot;</span>)
1406
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo/&gt;&quot;</span>, <span class="ruby-identifier">ar_n_0</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#range should work&quot;</span>)
1407
+
1408
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span> <span class="ruby-value str">&quot;&lt;a&gt;
1409
+ &lt;b i='0'&gt;&lt;c i='0'/&gt;&lt;c i='1'/&gt;&lt;c i='2'/&gt;&lt;/b&gt;
1410
+ &lt;b i='1'&gt;&lt;c i='3'/&gt;&lt;c i='4'/&gt;&lt;c i='5'/&gt;&lt;/b&gt;
1411
+ &lt;b i='2'&gt;&lt;c i='6'/&gt;&lt;c i='7'/&gt;&lt;c i='8'/&gt;&lt;/b&gt;
1412
+ &lt;/a&gt;&quot;</span>
1413
+ <span class="ruby-identifier">c</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">descendants</span>(<span class="ruby-identifier">:c</span>)
1414
+
1415
+ <span class="ruby-identifier">c</span>.<span class="ruby-identifier">each_with_index</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">ci</span>,<span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
1416
+ <span class="ruby-identifier">c</span>.<span class="ruby-identifier">each_with_index</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">cj</span>,<span class="ruby-identifier">j</span><span class="ruby-operator">|</span>
1417
+ <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">j</span>
1418
+ <span class="ruby-identifier">ar</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">range</span>(<span class="ruby-identifier">ci</span>,<span class="ruby-identifier">cj</span>)
1419
+ <span class="ruby-identifier">cs_present</span> = <span class="ruby-identifier">ar</span>.<span class="ruby-identifier">descendants</span>(<span class="ruby-identifier">:c</span>).<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span><span class="ruby-identifier">n</span>[<span class="ruby-identifier">:i</span>].<span class="ruby-identifier">to_i</span>}
1420
+ <span class="ruby-identifier">assert_equal</span>(((<span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)<span class="ruby-operator">...</span><span class="ruby-identifier">j</span>).<span class="ruby-identifier">to_a</span>, <span class="ruby-identifier">cs_present</span>, <span class="ruby-node">&quot;XML#range(c#{i}, c#{j}) should contain cs between #{i} and #{j}, exclusive, instead got: #{ar}&quot;</span>)
1421
+ }
1422
+ <span class="ruby-identifier">ar</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">range</span>(<span class="ruby-identifier">ci</span>,<span class="ruby-keyword kw">nil</span>)
1423
+ <span class="ruby-identifier">cs_present</span> = <span class="ruby-identifier">ar</span>.<span class="ruby-identifier">descendants</span>(<span class="ruby-identifier">:c</span>).<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span><span class="ruby-identifier">n</span>[<span class="ruby-identifier">:i</span>].<span class="ruby-identifier">to_i</span>}
1424
+ <span class="ruby-identifier">assert_equal</span>(((<span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)<span class="ruby-operator">..</span><span class="ruby-value">8</span>).<span class="ruby-identifier">to_a</span>, <span class="ruby-identifier">cs_present</span>, <span class="ruby-node">&quot;XML#range(c#{i}, nil) should contain cs from #{i+1} to 8, instead got: #{ar}&quot;</span>)
1425
+
1426
+ <span class="ruby-identifier">ar</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">range</span>(<span class="ruby-keyword kw">nil</span>,<span class="ruby-identifier">ci</span>)
1427
+ <span class="ruby-identifier">cs_present</span> = <span class="ruby-identifier">ar</span>.<span class="ruby-identifier">descendants</span>(<span class="ruby-identifier">:c</span>).<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span><span class="ruby-identifier">n</span>[<span class="ruby-identifier">:i</span>].<span class="ruby-identifier">to_i</span>}
1428
+ <span class="ruby-identifier">assert_equal</span>((<span class="ruby-value">0</span><span class="ruby-operator">...</span><span class="ruby-identifier">i</span>).<span class="ruby-identifier">to_a</span>, <span class="ruby-identifier">cs_present</span>, <span class="ruby-node">&quot;XML#range(nil, c#{i}) should contain cs from 0 to #{i-1}, instead got: #{ar}&quot;</span>)
1429
+ }
1430
+ <span class="ruby-keyword kw">end</span>
1431
+ </pre>
1432
+ </div>
1433
+ </div>
1434
+ </div>
1435
+ <div class="method">
1436
+ <div class="title">
1437
+ <a name="M000084"></a><b>test_real_method_missing</b>()
1438
+ </div>
1439
+ <div class="description">
1440
+ <p>
1441
+ Methods XML#foo! are all catched, but how about other methods ?
1442
+ </p>
1443
+ </div>
1444
+ <div class="sourcecode">
1445
+ <p class="source-link">[ <a href="javascript:toggleSource('M000084_source')" id="l_M000084_source">show source</a> ]</p>
1446
+ <div id="M000084_source" class="dyn-source">
1447
+ <pre>
1448
+ <span class="ruby-comment cmt"># File tests.rb, line 458</span>
1449
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_real_method_missing</span>
1450
+ <span class="ruby-identifier">foo</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:foo</span>)
1451
+ <span class="ruby-identifier">exception_raised</span> = <span class="ruby-keyword kw">false</span>
1452
+ <span class="ruby-keyword kw">begin</span>
1453
+ <span class="ruby-identifier">foo</span>.<span class="ruby-identifier">bar</span>()
1454
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">NoMethodError</span>
1455
+ <span class="ruby-identifier">exception_raised</span> = <span class="ruby-keyword kw">true</span>
1456
+ <span class="ruby-keyword kw">end</span>
1457
+ <span class="ruby-comment cmt"># FIXME: There are other assertions than assert_equal ;-)</span>
1458
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-keyword kw">true</span>, <span class="ruby-identifier">exception_raised</span>, <span class="ruby-value str">&quot;XML#bar should raise NoMethodError&quot;</span>)
1459
+ <span class="ruby-keyword kw">end</span>
1460
+ </pre>
1461
+ </div>
1462
+ </div>
1463
+ </div>
1464
+ <div class="method">
1465
+ <div class="title">
1466
+ <a name="M000094"></a><b>test_remove_pretty_printing</b>()
1467
+ </div>
1468
+ <div class="description">
1469
+ <p>
1470
+ Test parse option :ignore_pretty_printing
1471
+ </p>
1472
+ </div>
1473
+ <div class="sourcecode">
1474
+ <p class="source-link">[ <a href="javascript:toggleSource('M000094_source')" id="l_M000094_source">show source</a> ]</p>
1475
+ <div id="M000094_source" class="dyn-source">
1476
+ <pre>
1477
+ <span class="ruby-comment cmt"># File tests.rb, line 667</span>
1478
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_remove_pretty_printing</span>
1479
+ <span class="ruby-identifier">a</span> = <span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar&gt;100&lt;/bar&gt;&lt;bar&gt;200&lt;/bar&gt;&lt;/foo&gt;&quot;</span>
1480
+ <span class="ruby-identifier">b</span> = <span class="ruby-value str">&quot;&lt;foo&gt;
1481
+ &lt;bar&gt;
1482
+ 100
1483
+ &lt;/bar&gt;
1484
+ &lt;bar&gt;
1485
+ 200
1486
+ &lt;/bar&gt;
1487
+ &lt;/foo&gt;&quot;</span>
1488
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">a</span>)
1489
+ <span class="ruby-identifier">d</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">b</span>)
1490
+ <span class="ruby-identifier">e</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">b</span>)
1491
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">remove_pretty_printing!</span>
1492
+
1493
+ <span class="ruby-identifier">assert_not_equal</span>(<span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">d</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#parse should not ignore pretty printing by default&quot;</span>)
1494
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#remove_pretty_printing! should work&quot;</span>)
1495
+
1496
+ <span class="ruby-identifier">f</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt; &lt;bar&gt;Hello world&lt;/bar&gt; &lt;/foo&gt;&quot;</span>)
1497
+ <span class="ruby-identifier">f</span>.<span class="ruby-identifier">remove_pretty_printing!</span>
1498
+ <span class="ruby-identifier">g</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar&gt;Hello world&lt;/bar&gt;&lt;/foo&gt;&quot;</span>)
1499
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">f</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">g</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#remove_pretty_printing! should work&quot;</span>)
1500
+ <span class="ruby-keyword kw">end</span>
1501
+ </pre>
1502
+ </div>
1503
+ </div>
1504
+ </div>
1505
+ <div class="method">
1506
+ <div class="title">
1507
+ <a name="M000095"></a><b>test_remove_pretty_printing_conditional</b>()
1508
+ </div>
1509
+ <div class="description">
1510
+ <p>
1511
+ Test remove_pretty_printing! with exception list
1512
+ </p>
1513
+ </div>
1514
+ <div class="sourcecode">
1515
+ <p class="source-link">[ <a href="javascript:toggleSource('M000095_source')" id="l_M000095_source">show source</a> ]</p>
1516
+ <div id="M000095_source" class="dyn-source">
1517
+ <pre>
1518
+ <span class="ruby-comment cmt"># File tests.rb, line 692</span>
1519
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_remove_pretty_printing_conditional</span>
1520
+ <span class="ruby-identifier">a</span> = <span class="ruby-value str">&quot;&lt;foo&gt;
1521
+ &lt;pre&gt;
1522
+ &lt;a&gt; 100 &lt;/a&gt;
1523
+ &lt;/pre&gt;
1524
+ &lt;xyzzy&gt;
1525
+ &lt;a&gt; 200 &lt;/a&gt;
1526
+ &lt;/xyzzy&gt;
1527
+ &lt;/foo&gt;&quot;</span>
1528
+ <span class="ruby-identifier">b</span> = <span class="ruby-value str">&quot;&lt;foo&gt;&lt;pre&gt;
1529
+ &lt;a&gt; 100 &lt;/a&gt;
1530
+ &lt;/pre&gt;&lt;xyzzy&gt;&lt;a&gt;200&lt;/a&gt;&lt;/xyzzy&gt;&lt;/foo&gt;&quot;</span>
1531
+
1532
+ <span class="ruby-identifier">ax</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">a</span>)
1533
+ <span class="ruby-identifier">bx</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">b</span>)
1534
+
1535
+ <span class="ruby-identifier">ax</span>.<span class="ruby-identifier">remove_pretty_printing!</span>([<span class="ruby-identifier">:pre</span>])
1536
+
1537
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-identifier">bx</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">ax</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#remove_pretty_printing!(exceptions) should work&quot;</span>)
1538
+ <span class="ruby-keyword kw">end</span>
1539
+ </pre>
1540
+ </div>
1541
+ </div>
1542
+ </div>
1543
+ <div class="method">
1544
+ <div class="title">
1545
+ <a name="M000080"></a><b>test_renormalize</b>()
1546
+ </div>
1547
+ <div class="description">
1548
+ <p>
1549
+ Test <a href="XML.html#M000024">XML#renormalize</a> and <a
1550
+ href="XML.html#M000025">XML#renormalize_sequence</a>
1551
+ </p>
1552
+ </div>
1553
+ <div class="sourcecode">
1554
+ <p class="source-link">[ <a href="javascript:toggleSource('M000080_source')" id="l_M000080_source">show source</a> ]</p>
1555
+ <div id="M000080_source" class="dyn-source">
1556
+ <pre>
1557
+ <span class="ruby-comment cmt"># File tests.rb, line 337</span>
1558
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_renormalize</span>
1559
+ <span class="ruby-identifier">a</span> = <span class="ruby-value str">&quot;&lt;foo&gt;&lt;/foo&gt;&quot;</span>
1560
+ <span class="ruby-identifier">b</span> = <span class="ruby-value str">&quot;&lt;foo&gt;&lt;/foo&gt;&lt;bar&gt;&lt;/bar&gt;&quot;</span>
1561
+
1562
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo/&gt;&quot;</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">renormalize</span>(<span class="ruby-identifier">a</span>), <span class="ruby-value str">&quot;XML#renormalize should work&quot;</span>)
1563
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo/&gt;&quot;</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">renormalize_sequence</span>(<span class="ruby-identifier">a</span>), <span class="ruby-value str">&quot;XML#renormalize_sequence should work&quot;</span>)
1564
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo/&gt;&lt;bar/&gt;&quot;</span>, <span class="ruby-constant">XML</span>.<span class="ruby-identifier">renormalize_sequence</span>(<span class="ruby-identifier">b</span>), <span class="ruby-value str">&quot;XML#renormalize_sequence should work&quot;</span>)
1565
+ <span class="ruby-keyword kw">end</span>
1566
+ </pre>
1567
+ </div>
1568
+ </div>
1569
+ </div>
1570
+ <div class="method">
1571
+ <div class="title">
1572
+ <a name="M000058"></a><b>test_sort_by</b>()
1573
+ </div>
1574
+ <div class="description">
1575
+ <p>
1576
+ Test sort_by and children_sort_by
1577
+ </p>
1578
+ </div>
1579
+ <div class="sourcecode">
1580
+ <p class="source-link">[ <a href="javascript:toggleSource('M000058_source')" id="l_M000058_source">show source</a> ]</p>
1581
+ <div id="M000058_source" class="dyn-source">
1582
+ <pre>
1583
+ <span class="ruby-comment cmt"># File tests.rb, line 32</span>
1584
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_sort_by</span>
1585
+ <span class="ruby-identifier">doc</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar id='5'/&gt;a&lt;bar id='3'/&gt;c&lt;bar id='4'/&gt;b&lt;bar id='1'/&gt;&lt;/foo&gt;&quot;</span>)
1586
+
1587
+ <span class="ruby-identifier">doc_by_id</span> = <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">sort_by</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">c</span>[<span class="ruby-identifier">:id</span>]}
1588
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar id='1'/&gt;&lt;bar id='3'/&gt;&lt;bar id='4'/&gt;&lt;bar id='5'/&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">doc_by_id</span>.<span class="ruby-identifier">to_s</span>)
1589
+
1590
+ <span class="ruby-identifier">doc_all_by_id</span> = <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">children_sort_by</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">XML</span> <span class="ruby-keyword kw">then</span> [<span class="ruby-value">0</span>, <span class="ruby-identifier">c</span>[<span class="ruby-identifier">:id</span>]] <span class="ruby-keyword kw">else</span> [<span class="ruby-value">1</span>, <span class="ruby-identifier">c</span>] <span class="ruby-keyword kw">end</span>}
1591
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar id='1'/&gt;&lt;bar id='3'/&gt;&lt;bar id='4'/&gt;&lt;bar id='5'/&gt;abc&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">doc_all_by_id</span>.<span class="ruby-identifier">to_s</span>)
1592
+ <span class="ruby-keyword kw">end</span>
1593
+ </pre>
1594
+ </div>
1595
+ </div>
1596
+ </div>
1597
+ <div class="method">
1598
+ <div class="title">
1599
+ <a name="M000082"></a><b>test_subsequence</b>()
1600
+ </div>
1601
+ <div class="description">
1602
+ <p>
1603
+ Test <a href="XML.html#M000036">XML#subsequence</a>
1604
+ </p>
1605
+ </div>
1606
+ <div class="sourcecode">
1607
+ <p class="source-link">[ <a href="javascript:toggleSource('M000082_source')" id="l_M000082_source">show source</a> ]</p>
1608
+ <div id="M000082_source" class="dyn-source">
1609
+ <pre>
1610
+ <span class="ruby-comment cmt"># File tests.rb, line 393</span>
1611
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_subsequence</span>
1612
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span> <span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar i='0'/&gt;&lt;bar i='1'/&gt;&lt;bar i='2'/&gt;&lt;bar i='3'/&gt;&lt;bar i='4'/&gt;&lt;/foo&gt;&quot;</span>
1613
+ <span class="ruby-identifier">b</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">children</span>(<span class="ruby-identifier">:bar</span>)
1614
+
1615
+ <span class="ruby-comment cmt"># Non-recursive case</span>
1616
+ <span class="ruby-identifier">ar_n_n</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">subsequence</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>)
1617
+ <span class="ruby-identifier">ar_0_n</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">subsequence</span>(<span class="ruby-identifier">b</span>[<span class="ruby-value">0</span>], <span class="ruby-keyword kw">nil</span>)
1618
+ <span class="ruby-identifier">ar_1_n</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">subsequence</span>(<span class="ruby-identifier">b</span>[<span class="ruby-value">1</span>], <span class="ruby-keyword kw">nil</span>)
1619
+ <span class="ruby-identifier">ar_4_n</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">subsequence</span>(<span class="ruby-identifier">b</span>[<span class="ruby-value">4</span>], <span class="ruby-keyword kw">nil</span>)
1620
+ <span class="ruby-identifier">ar_n_4</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">subsequence</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">b</span>[<span class="ruby-value">4</span>])
1621
+ <span class="ruby-identifier">ar_n_3</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">subsequence</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">b</span>[<span class="ruby-value">3</span>])
1622
+ <span class="ruby-identifier">ar_n_0</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">subsequence</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">b</span>[<span class="ruby-value">0</span>])
1623
+
1624
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar i='0'/&gt;&lt;bar i='1'/&gt;&lt;bar i='2'/&gt;&lt;bar i='3'/&gt;&lt;bar i='4'/&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">ar_n_n</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#subsequence should work&quot;</span>)
1625
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar i='1'/&gt;&lt;bar i='2'/&gt;&lt;bar i='3'/&gt;&lt;bar i='4'/&gt;&quot;</span>, <span class="ruby-identifier">ar_0_n</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#subsequence should work&quot;</span>)
1626
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar i='2'/&gt;&lt;bar i='3'/&gt;&lt;bar i='4'/&gt;&quot;</span>, <span class="ruby-identifier">ar_1_n</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#subsequence should work&quot;</span>)
1627
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-identifier">ar_4_n</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#subsequence should work&quot;</span>)
1628
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar i='0'/&gt;&lt;bar i='1'/&gt;&lt;bar i='2'/&gt;&lt;bar i='3'/&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">ar_n_4</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#subsequence should work&quot;</span>)
1629
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar i='0'/&gt;&lt;bar i='1'/&gt;&lt;bar i='2'/&gt;&lt;/foo&gt;&quot;</span>, <span class="ruby-identifier">ar_n_3</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#subsequence should work&quot;</span>)
1630
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo/&gt;&quot;</span>, <span class="ruby-identifier">ar_n_0</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value str">&quot;XML#subsequence should work&quot;</span>)
1631
+
1632
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span> <span class="ruby-value str">&quot;&lt;a&gt;
1633
+ &lt;b j='0'&gt;&lt;c i='0'/&gt;&lt;c i='1'/&gt;&lt;c i='2'/&gt;&lt;/b&gt;
1634
+ &lt;b j='1'&gt;&lt;c i='3'/&gt;&lt;c i='4'/&gt;&lt;c i='5'/&gt;&lt;/b&gt;
1635
+ &lt;b j='2'&gt;&lt;c i='6'/&gt;&lt;c i='7'/&gt;&lt;c i='8'/&gt;&lt;/b&gt;
1636
+ &lt;/a&gt;&quot;</span>
1637
+ <span class="ruby-identifier">c</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">descendants</span>(<span class="ruby-identifier">:c</span>)
1638
+
1639
+ <span class="ruby-comment cmt"># (ar + ar.descendants).find_all{|x| x.is_a? XML and x.name == :c}</span>
1640
+ <span class="ruby-comment cmt"># instead of ar.descendants(:c) because </span>
1641
+ <span class="ruby-comment cmt"># we might have returned [&lt;c i='?'/&gt;] as a result,</span>
1642
+ <span class="ruby-comment cmt"># and then it's not a descendant of the result then.</span>
1643
+ <span class="ruby-comment cmt"># This is ugly, and it should be fixed somewhere in magic/xml</span>
1644
+ <span class="ruby-identifier">c</span>.<span class="ruby-identifier">each_with_index</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">ci</span>,<span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
1645
+ <span class="ruby-identifier">c</span>.<span class="ruby-identifier">each_with_index</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">cj</span>,<span class="ruby-identifier">j</span><span class="ruby-operator">|</span>
1646
+ <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">j</span>
1647
+ <span class="ruby-identifier">ar</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">subsequence</span>(<span class="ruby-identifier">ci</span>,<span class="ruby-identifier">cj</span>)
1648
+ <span class="ruby-identifier">cs_present</span> = (<span class="ruby-identifier">ar</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">ar</span>.<span class="ruby-identifier">descendants</span>).<span class="ruby-identifier">find_all</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">XML</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:c</span>}.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> <span class="ruby-identifier">n</span>[<span class="ruby-identifier">:i</span>].<span class="ruby-identifier">to_i</span>}
1649
+ <span class="ruby-identifier">assert_equal</span>(((<span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)<span class="ruby-operator">...</span><span class="ruby-identifier">j</span>).<span class="ruby-identifier">to_a</span>, <span class="ruby-identifier">cs_present</span>, <span class="ruby-node">&quot;XML#subsequence(c#{i}, c#{j}) should contain cs between #{i} and #{j}, exclusive, instead got: #{ar}&quot;</span>)
1650
+ }
1651
+ <span class="ruby-identifier">ar</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">subsequence</span>(<span class="ruby-identifier">ci</span>,<span class="ruby-keyword kw">nil</span>)
1652
+ <span class="ruby-identifier">cs_present</span> = (<span class="ruby-identifier">ar</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">ar</span>.<span class="ruby-identifier">descendants</span>).<span class="ruby-identifier">find_all</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">XML</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:c</span>}.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> <span class="ruby-identifier">n</span>[<span class="ruby-identifier">:i</span>].<span class="ruby-identifier">to_i</span>}
1653
+ <span class="ruby-identifier">assert_equal</span>(((<span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)<span class="ruby-operator">..</span><span class="ruby-value">8</span>).<span class="ruby-identifier">to_a</span>, <span class="ruby-identifier">cs_present</span>, <span class="ruby-node">&quot;XML#subsequence(c#{i}, nil) should contain cs from #{i+1} to 8, instead got: #{ar}&quot;</span>)
1654
+
1655
+ <span class="ruby-identifier">ar</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">subsequence</span>(<span class="ruby-keyword kw">nil</span>,<span class="ruby-identifier">ci</span>)
1656
+ <span class="ruby-identifier">cs_present</span> = (<span class="ruby-identifier">ar</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">ar</span>.<span class="ruby-identifier">descendants</span>).<span class="ruby-identifier">find_all</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">XML</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:c</span>}.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> <span class="ruby-identifier">n</span>[<span class="ruby-identifier">:i</span>].<span class="ruby-identifier">to_i</span>}
1657
+ <span class="ruby-identifier">assert_equal</span>((<span class="ruby-value">0</span><span class="ruby-operator">...</span><span class="ruby-identifier">i</span>).<span class="ruby-identifier">to_a</span>, <span class="ruby-identifier">cs_present</span>, <span class="ruby-node">&quot;XML#subsequence(nil, c#{i}) should contain cs from 0 to #{i-1}, instead got: #{ar}&quot;</span>)
1658
+ }
1659
+ <span class="ruby-keyword kw">end</span>
1660
+ </pre>
1661
+ </div>
1662
+ </div>
1663
+ </div>
1664
+ <div class="method">
1665
+ <div class="title">
1666
+ <a name="M000079"></a><b>test_text</b>()
1667
+ </div>
1668
+ <div class="description">
1669
+ <p>
1670
+ Test <a href="XML.html#M000047">XML#text</a>
1671
+ </p>
1672
+ </div>
1673
+ <div class="sourcecode">
1674
+ <p class="source-link">[ <a href="javascript:toggleSource('M000079_source')" id="l_M000079_source">show source</a> ]</p>
1675
+ <div id="M000079_source" class="dyn-source">
1676
+ <pre>
1677
+ <span class="ruby-comment cmt"># File tests.rb, line 324</span>
1678
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_text</span>
1679
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;Hello&lt;/foo&gt;&quot;</span>)
1680
+ <span class="ruby-identifier">b</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;/foo&gt;&quot;</span>)
1681
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;&lt;bar&gt;Hello&lt;/bar&gt;&lt;/foo&gt;&quot;</span>)
1682
+ <span class="ruby-identifier">d</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">&quot;&lt;foo&gt;He&lt;bar&gt;llo&lt;/bar&gt;&lt;/foo&gt;&quot;</span>)
1683
+
1684
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;Hello&quot;</span>, <span class="ruby-identifier">a</span>.<span class="ruby-identifier">text</span>, <span class="ruby-value str">&quot;XML#text should work&quot;</span>)
1685
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-identifier">b</span>.<span class="ruby-identifier">text</span>, <span class="ruby-value str">&quot;XML#text should work&quot;</span>)
1686
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;Hello&quot;</span>, <span class="ruby-identifier">c</span>.<span class="ruby-identifier">text</span>, <span class="ruby-value str">&quot;XML#text should work&quot;</span>)
1687
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;Hello&quot;</span>, <span class="ruby-identifier">d</span>.<span class="ruby-identifier">text</span>, <span class="ruby-value str">&quot;XML#text should work&quot;</span>)
1688
+ <span class="ruby-keyword kw">end</span>
1689
+ </pre>
1690
+ </div>
1691
+ </div>
1692
+ </div>
1693
+ <div class="method">
1694
+ <div class="title">
1695
+ <a name="M000083"></a><b>test_xml_bang</b>()
1696
+ </div>
1697
+ <div class="description">
1698
+ <p>
1699
+ Test xml! at top level
1700
+ </p>
1701
+ </div>
1702
+ <div class="sourcecode">
1703
+ <p class="source-link">[ <a href="javascript:toggleSource('M000083_source')" id="l_M000083_source">show source</a> ]</p>
1704
+ <div id="M000083_source" class="dyn-source">
1705
+ <pre>
1706
+ <span class="ruby-comment cmt"># File tests.rb, line 444</span>
1707
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_xml_bang</span>
1708
+ <span class="ruby-identifier">real_stdout</span> = <span class="ruby-identifier">$stdout</span>
1709
+ <span class="ruby-identifier">$stdout</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
1710
+ <span class="ruby-identifier">xml!</span>(<span class="ruby-identifier">:foo</span>)
1711
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;foo/&gt;&quot;</span>, <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">string</span>, <span class="ruby-value str">&quot;xml! should work&quot;</span>)
1712
+
1713
+ <span class="ruby-identifier">$stdout</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
1714
+ <span class="ruby-constant">XML</span>.<span class="ruby-identifier">bar!</span>
1715
+ <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&lt;bar/&gt;&quot;</span>, <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">string</span>, <span class="ruby-value str">&quot;XML#foo! should work&quot;</span>)
1716
+ <span class="ruby-identifier">$stdout</span> = <span class="ruby-identifier">real_stdout</span>
1717
+ <span class="ruby-keyword kw">end</span>
1718
+ </pre>
1719
+ </div>
1720
+ </div>
1721
+ </div>
1722
+ </div>
1723
+
1724
+ </div>
1725
+
1726
+ </body>
1727
+ </html>