libxml-ruby 2.8.0 → 3.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (205) hide show
  1. checksums.yaml +5 -5
  2. data/HISTORY +859 -775
  3. data/LICENSE +20 -20
  4. data/MANIFEST +166 -166
  5. data/README.rdoc +217 -184
  6. data/Rakefile +98 -78
  7. data/ext/libxml/extconf.rb +61 -116
  8. data/ext/libxml/libxml.c +80 -76
  9. data/ext/libxml/ruby_libxml.h +67 -75
  10. data/ext/libxml/ruby_xml.c +937 -893
  11. data/ext/libxml/ruby_xml.h +10 -10
  12. data/ext/libxml/ruby_xml_attr.c +333 -333
  13. data/ext/libxml/ruby_xml_attr.h +12 -12
  14. data/ext/libxml/ruby_xml_attr_decl.c +153 -153
  15. data/ext/libxml/ruby_xml_attr_decl.h +11 -11
  16. data/ext/libxml/ruby_xml_attributes.c +275 -275
  17. data/ext/libxml/ruby_xml_attributes.h +15 -15
  18. data/ext/libxml/ruby_xml_cbg.c +85 -85
  19. data/ext/libxml/ruby_xml_document.c +1123 -1147
  20. data/ext/libxml/ruby_xml_document.h +11 -11
  21. data/ext/libxml/ruby_xml_dtd.c +248 -268
  22. data/ext/libxml/ruby_xml_dtd.h +9 -9
  23. data/ext/libxml/ruby_xml_encoding.c +250 -260
  24. data/ext/libxml/ruby_xml_encoding.h +16 -19
  25. data/ext/libxml/ruby_xml_error.c +996 -996
  26. data/ext/libxml/ruby_xml_error.h +12 -12
  27. data/ext/libxml/ruby_xml_html_parser.c +89 -92
  28. data/ext/libxml/ruby_xml_html_parser.h +10 -10
  29. data/ext/libxml/ruby_xml_html_parser_context.c +337 -338
  30. data/ext/libxml/ruby_xml_html_parser_context.h +10 -10
  31. data/ext/libxml/ruby_xml_html_parser_options.c +46 -46
  32. data/ext/libxml/ruby_xml_html_parser_options.h +10 -10
  33. data/ext/libxml/ruby_xml_input_cbg.c +191 -191
  34. data/ext/libxml/ruby_xml_input_cbg.h +20 -20
  35. data/ext/libxml/ruby_xml_io.c +47 -50
  36. data/ext/libxml/ruby_xml_io.h +10 -10
  37. data/ext/libxml/ruby_xml_namespace.c +154 -153
  38. data/ext/libxml/ruby_xml_namespace.h +10 -10
  39. data/ext/libxml/ruby_xml_namespaces.c +293 -293
  40. data/ext/libxml/ruby_xml_namespaces.h +9 -9
  41. data/ext/libxml/ruby_xml_node.c +1406 -1452
  42. data/ext/libxml/ruby_xml_node.h +13 -11
  43. data/ext/libxml/ruby_xml_parser.c +91 -94
  44. data/ext/libxml/ruby_xml_parser.h +12 -12
  45. data/ext/libxml/ruby_xml_parser_context.c +999 -1001
  46. data/ext/libxml/ruby_xml_parser_context.h +10 -10
  47. data/ext/libxml/ruby_xml_parser_options.c +66 -66
  48. data/ext/libxml/ruby_xml_parser_options.h +12 -12
  49. data/ext/libxml/ruby_xml_reader.c +1239 -1228
  50. data/ext/libxml/ruby_xml_reader.h +17 -17
  51. data/ext/libxml/ruby_xml_relaxng.c +110 -111
  52. data/ext/libxml/ruby_xml_relaxng.h +10 -10
  53. data/ext/libxml/ruby_xml_sax2_handler.c +326 -328
  54. data/ext/libxml/ruby_xml_sax2_handler.h +10 -10
  55. data/ext/libxml/ruby_xml_sax_parser.c +116 -120
  56. data/ext/libxml/ruby_xml_sax_parser.h +10 -10
  57. data/ext/libxml/ruby_xml_schema.c +350 -301
  58. data/ext/libxml/ruby_xml_schema.h +806 -809
  59. data/ext/libxml/ruby_xml_schema_attribute.c +61 -109
  60. data/ext/libxml/ruby_xml_schema_attribute.h +15 -15
  61. data/ext/libxml/ruby_xml_schema_element.c +69 -94
  62. data/ext/libxml/ruby_xml_schema_element.h +14 -14
  63. data/ext/libxml/ruby_xml_schema_facet.c +46 -52
  64. data/ext/libxml/ruby_xml_schema_facet.h +13 -13
  65. data/ext/libxml/ruby_xml_schema_type.c +214 -259
  66. data/ext/libxml/ruby_xml_schema_type.h +9 -9
  67. data/ext/libxml/ruby_xml_version.h +9 -9
  68. data/ext/libxml/ruby_xml_writer.c +1133 -1137
  69. data/ext/libxml/ruby_xml_writer.h +10 -10
  70. data/ext/libxml/ruby_xml_xinclude.c +16 -16
  71. data/ext/libxml/ruby_xml_xinclude.h +11 -11
  72. data/ext/libxml/ruby_xml_xpath.c +194 -188
  73. data/ext/libxml/ruby_xml_xpath.h +13 -13
  74. data/ext/libxml/ruby_xml_xpath_context.c +360 -361
  75. data/ext/libxml/ruby_xml_xpath_context.h +9 -9
  76. data/ext/libxml/ruby_xml_xpath_expression.c +81 -81
  77. data/ext/libxml/ruby_xml_xpath_expression.h +10 -10
  78. data/ext/libxml/ruby_xml_xpath_object.c +338 -335
  79. data/ext/libxml/ruby_xml_xpath_object.h +17 -17
  80. data/ext/libxml/ruby_xml_xpointer.c +99 -99
  81. data/ext/libxml/ruby_xml_xpointer.h +11 -11
  82. data/ext/vc/libxml_ruby.sln +17 -15
  83. data/lib/libxml/node.rb +2 -78
  84. data/lib/libxml/parser.rb +0 -266
  85. data/lib/libxml/sax_parser.rb +0 -17
  86. data/lib/libxml/schema/attribute.rb +19 -19
  87. data/lib/libxml/schema/element.rb +19 -27
  88. data/lib/libxml/schema/type.rb +21 -29
  89. data/lib/libxml/schema.rb +47 -66
  90. data/lib/libxml-ruby.rb +30 -0
  91. data/lib/libxml.rb +3 -33
  92. data/libxml-ruby.gemspec +48 -44
  93. data/script/benchmark/depixelate +634 -634
  94. data/script/benchmark/hamlet.xml +9054 -9054
  95. data/script/benchmark/parsecount +170 -170
  96. data/script/benchmark/throughput +41 -41
  97. data/script/test +6 -6
  98. data/setup.rb +0 -1
  99. data/test/c14n/given/example-1.xml +14 -14
  100. data/test/c14n/given/example-2.xml +11 -11
  101. data/test/c14n/given/example-3.xml +18 -18
  102. data/test/c14n/given/example-4.xml +9 -9
  103. data/test/c14n/given/example-5.xml +12 -12
  104. data/test/c14n/given/example-6.xml +2 -2
  105. data/test/c14n/given/example-7.xml +11 -11
  106. data/test/c14n/given/example-8.xml +11 -11
  107. data/test/c14n/given/example-8.xpath +9 -9
  108. data/test/c14n/result/1-1-without-comments/example-1 +3 -3
  109. data/test/c14n/result/1-1-without-comments/example-2 +10 -10
  110. data/test/c14n/result/1-1-without-comments/example-3 +13 -13
  111. data/test/c14n/result/1-1-without-comments/example-4 +8 -8
  112. data/test/c14n/result/1-1-without-comments/example-5 +2 -2
  113. data/test/c14n/result/with-comments/example-1 +5 -5
  114. data/test/c14n/result/with-comments/example-2 +10 -10
  115. data/test/c14n/result/with-comments/example-3 +13 -13
  116. data/test/c14n/result/with-comments/example-4 +8 -8
  117. data/test/c14n/result/with-comments/example-5 +3 -3
  118. data/test/c14n/result/without-comments/example-1 +3 -3
  119. data/test/c14n/result/without-comments/example-2 +10 -10
  120. data/test/c14n/result/without-comments/example-3 +13 -13
  121. data/test/c14n/result/without-comments/example-4 +8 -8
  122. data/test/c14n/result/without-comments/example-5 +2 -2
  123. data/test/model/atom.xml +12 -12
  124. data/test/model/bands.iso-8859-1.xml +4 -4
  125. data/test/model/bands.utf-8.xml +4 -4
  126. data/test/model/bands.xml +4 -4
  127. data/test/model/books.xml +153 -153
  128. data/test/model/cwm_1_0.xml +11336 -0
  129. data/test/model/merge_bug_data.xml +58 -58
  130. data/test/model/ruby-lang.html +238 -238
  131. data/test/model/rubynet.xml +79 -79
  132. data/test/model/shiporder.rnc +28 -28
  133. data/test/model/shiporder.rng +86 -86
  134. data/test/model/shiporder.xml +22 -22
  135. data/test/model/shiporder.xsd +44 -40
  136. data/test/model/shiporder_bad.xsd +40 -0
  137. data/test/model/shiporder_import.xsd +45 -0
  138. data/test/model/soap.xml +27 -27
  139. data/test/model/xinclude.xml +4 -4
  140. data/test/{tc_attr.rb → test_attr.rb} +23 -25
  141. data/test/{tc_attr_decl.rb → test_attr_decl.rb} +13 -14
  142. data/test/{tc_attributes.rb → test_attributes.rb} +11 -18
  143. data/test/{tc_canonicalize.rb → test_canonicalize.rb} +36 -41
  144. data/test/test_deprecated_require.rb +12 -0
  145. data/test/{tc_document.rb → test_document.rb} +33 -27
  146. data/test/test_document_write.rb +146 -0
  147. data/test/{tc_dtd.rb → test_dtd.rb} +29 -29
  148. data/test/{tc_encoding.rb → test_encoding.rb} +129 -126
  149. data/test/{tc_encoding_sax.rb → test_encoding_sax.rb} +7 -6
  150. data/test/test_error.rb +178 -0
  151. data/test/test_helper.rb +4 -9
  152. data/test/test_html_parser.rb +162 -0
  153. data/test/test_html_parser_context.rb +23 -0
  154. data/test/test_namespace.rb +60 -0
  155. data/test/{tc_namespaces.rb → test_namespaces.rb} +34 -44
  156. data/test/{tc_node.rb → test_node.rb} +68 -47
  157. data/test/{tc_node_cdata.rb → test_node_cdata.rb} +12 -13
  158. data/test/{tc_node_comment.rb → test_node_comment.rb} +7 -8
  159. data/test/{tc_node_copy.rb → test_node_copy.rb} +4 -6
  160. data/test/{tc_node_edit.rb → test_node_edit.rb} +23 -41
  161. data/test/{tc_node_pi.rb → test_node_pi.rb} +37 -40
  162. data/test/{tc_node_text.rb → test_node_text.rb} +10 -12
  163. data/test/{tc_node_write.rb → test_node_write.rb} +18 -29
  164. data/test/test_node_xlink.rb +28 -0
  165. data/test/test_parser.rb +324 -0
  166. data/test/{tc_parser_context.rb → test_parser_context.rb} +42 -49
  167. data/test/{tc_properties.rb → test_properties.rb} +6 -7
  168. data/test/test_reader.rb +364 -0
  169. data/test/test_relaxng.rb +53 -0
  170. data/test/{tc_sax_parser.rb → test_sax_parser.rb} +44 -38
  171. data/test/test_schema.rb +231 -0
  172. data/test/test_suite.rb +38 -40
  173. data/test/{tc_traversal.rb → test_traversal.rb} +5 -6
  174. data/test/{tc_writer.rb → test_writer.rb} +468 -448
  175. data/test/{tc_xinclude.rb → test_xinclude.rb} +4 -5
  176. data/test/test_xml.rb +263 -0
  177. data/test/{tc_xpath.rb → test_xpath.rb} +31 -32
  178. data/test/{tc_xpath_context.rb → test_xpath_context.rb} +8 -9
  179. data/test/test_xpath_expression.rb +37 -0
  180. data/test/{tc_xpointer.rb → test_xpointer.rb} +16 -18
  181. metadata +122 -100
  182. data/lib/libxml/ns.rb +0 -22
  183. data/lib/libxml/properties.rb +0 -23
  184. data/lib/libxml/reader.rb +0 -29
  185. data/lib/libxml/xpath_object.rb +0 -16
  186. data/test/etc_doc_to_s.rb +0 -21
  187. data/test/ets_doc_file.rb +0 -17
  188. data/test/ets_doc_to_s.rb +0 -23
  189. data/test/ets_gpx.rb +0 -28
  190. data/test/ets_node_gc.rb +0 -23
  191. data/test/ets_test.xml +0 -2
  192. data/test/ets_tsr.rb +0 -11
  193. data/test/tc_deprecated_require.rb +0 -13
  194. data/test/tc_document_write.rb +0 -196
  195. data/test/tc_error.rb +0 -180
  196. data/test/tc_html_parser.rb +0 -153
  197. data/test/tc_html_parser_context.rb +0 -24
  198. data/test/tc_namespace.rb +0 -62
  199. data/test/tc_node_xlink.rb +0 -29
  200. data/test/tc_parser.rb +0 -381
  201. data/test/tc_reader.rb +0 -400
  202. data/test/tc_relaxng.rb +0 -54
  203. data/test/tc_schema.rb +0 -162
  204. data/test/tc_xml.rb +0 -226
  205. data/test/tc_xpath_expression.rb +0 -38
@@ -1,12 +1,11 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require './test_helper'
4
- require 'test/unit'
3
+ require_relative './test_helper'
5
4
 
6
- class TestXInclude < Test::Unit::TestCase
5
+ class TestXInclude < Minitest::Test
7
6
  def setup
8
- @doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/xinclude.xml'))
9
- assert_instance_of(XML::Document, @doc)
7
+ @doc = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/xinclude.xml'))
8
+ assert_instance_of(LibXML::XML::Document, @doc)
10
9
  end
11
10
 
12
11
  def teardown
data/test/test_xml.rb ADDED
@@ -0,0 +1,263 @@
1
+ # encoding: UTF-8
2
+
3
+ require_relative './test_helper'
4
+ require 'stringio'
5
+
6
+ class TestXml < Minitest::Test
7
+ # ----- Constants ------
8
+ def test_lib_versions
9
+ assert(LibXML::XML.check_lib_versions)
10
+ end
11
+
12
+ def test_debug_entities
13
+ original = LibXML::XML.debug_entities
14
+
15
+ LibXML::XML.debug_entities = false
16
+ refute(LibXML::XML.debug_entities)
17
+
18
+ LibXML::XML.debug_entities = true
19
+ assert(LibXML::XML.debug_entities)
20
+
21
+ LibXML::XML.debug_entities = false
22
+ refute(LibXML::XML.debug_entities)
23
+
24
+ LibXML::XML.debug_entities = original
25
+ end
26
+
27
+ def test_default_compression
28
+ return unless LibXML::XML.default_compression
29
+
30
+ original = LibXML::XML.default_compression
31
+
32
+ 0.upto(9) do |i|
33
+ LibXML::XML.default_compression = i
34
+ assert_equal(i, LibXML::XML.default_compression)
35
+ end
36
+
37
+ 9.downto(0) do |i|
38
+ assert_equal(i, LibXML::XML.default_compression = i)
39
+ assert_equal(i, LibXML::XML.default_compression)
40
+ end
41
+
42
+ 0.downto(-10) do |i|
43
+ assert_equal(i, LibXML::XML.default_compression = i)
44
+ assert_equal(0, LibXML::XML.default_compression)
45
+ end
46
+
47
+ 10.upto(20) do |i|
48
+ assert_equal(i, LibXML::XML.default_compression = i)
49
+ assert_equal(9, LibXML::XML.default_compression)
50
+ end
51
+
52
+ LibXML::XML.default_compression = original
53
+ end
54
+
55
+ def test_default_keep_blanks
56
+ original = LibXML::XML.default_keep_blanks
57
+
58
+ LibXML::XML.default_keep_blanks = false
59
+ refute(LibXML::XML.default_keep_blanks)
60
+ assert_equal(LibXML::XML::Parser::Options::NOBLANKS, LibXML::XML.default_options)
61
+
62
+ LibXML::XML.default_keep_blanks = true
63
+ assert(LibXML::XML.default_keep_blanks)
64
+ assert_equal(0, LibXML::XML.default_options)
65
+
66
+ LibXML::XML.default_keep_blanks = original
67
+ end
68
+
69
+ def test_default_line_numbers
70
+ original = LibXML::XML.default_line_numbers
71
+
72
+ LibXML::XML.default_line_numbers = false
73
+ refute(LibXML::XML.default_line_numbers)
74
+
75
+ LibXML::XML.default_line_numbers = true
76
+ assert(LibXML::XML.default_line_numbers)
77
+
78
+ LibXML::XML.default_line_numbers = false
79
+ refute(LibXML::XML.default_line_numbers)
80
+
81
+ LibXML::XML.default_line_numbers = original
82
+ end
83
+
84
+ def test_default_substitute_entities
85
+ original = LibXML::XML.default_substitute_entities
86
+
87
+ LibXML::XML.default_substitute_entities = false
88
+ refute(LibXML::XML.default_substitute_entities)
89
+ assert_equal(0, LibXML::XML.default_options)
90
+
91
+ LibXML::XML.default_substitute_entities = true
92
+ assert(LibXML::XML.default_substitute_entities)
93
+ assert_equal(LibXML::XML::Parser::Options::NOENT, LibXML::XML.default_options)
94
+
95
+ LibXML::XML.default_substitute_entities = false
96
+ refute(LibXML::XML.default_substitute_entities)
97
+
98
+ LibXML::XML.default_substitute_entities = original
99
+ end
100
+
101
+ def test_default_tree_indent_string
102
+ original = LibXML::XML.default_tree_indent_string
103
+
104
+ s = LibXML::XML.default_tree_indent_string
105
+ assert_instance_of(String, s)
106
+ assert_equal(' ', s)
107
+ LibXML::XML.default_tree_indent_string = 'uga'
108
+ s = LibXML::XML.default_tree_indent_string
109
+ assert_instance_of(String, s)
110
+ assert_equal('uga', s)
111
+ LibXML::XML.default_tree_indent_string = ' '
112
+ s = LibXML::XML.default_tree_indent_string
113
+ assert_instance_of(String, s)
114
+ assert_equal(' ', s)
115
+
116
+ LibXML::XML.default_tree_indent_string = original
117
+ end
118
+
119
+ def test_default_validity_checking
120
+ original = LibXML::XML.default_validity_checking
121
+
122
+ LibXML::XML.default_validity_checking = false
123
+ refute(LibXML::XML.default_validity_checking)
124
+ assert_equal(0, LibXML::XML.default_options)
125
+
126
+ LibXML::XML.default_validity_checking = true
127
+ assert(LibXML::XML.default_validity_checking)
128
+ assert_equal(LibXML::XML::Parser::Options::DTDVALID, LibXML::XML.default_options)
129
+
130
+ LibXML::XML.default_validity_checking = false
131
+ refute(LibXML::XML.default_validity_checking)
132
+
133
+ LibXML::XML.default_validity_checking = original
134
+ end
135
+
136
+ def test_default_warnings
137
+ original = LibXML::XML.default_warnings
138
+
139
+ LibXML::XML.default_warnings = false
140
+ refute(LibXML::XML.default_warnings)
141
+ assert_equal(LibXML::XML::Parser::Options::NOWARNING, LibXML::XML.default_options)
142
+
143
+ LibXML::XML.default_warnings = true
144
+ assert(LibXML::XML.default_warnings)
145
+ assert_equal(0, LibXML::XML.default_options)
146
+
147
+ LibXML::XML.default_warnings = false
148
+ refute(LibXML::XML.default_warnings)
149
+
150
+ LibXML::XML.default_warnings = original
151
+ end
152
+
153
+ def test_enabled_automata
154
+ assert(LibXML::XML.enabled_automata?)
155
+ end
156
+
157
+ def test_enabled_c14n
158
+ assert(LibXML::XML.enabled_c14n?)
159
+ end
160
+
161
+ def test_enabled_catalog
162
+ assert(LibXML::XML.enabled_catalog?)
163
+ end
164
+
165
+ def test_enabled_debug
166
+ assert(LibXML::XML.enabled_debug?)
167
+ end
168
+
169
+ def test_enabled_docbook
170
+ assert(LibXML::XML.enabled_docbook?)
171
+ end
172
+
173
+ def test_enabled_ftp
174
+ assert(LibXML::XML.enabled_ftp?)
175
+ end
176
+
177
+ def test_enabled_http
178
+ assert(LibXML::XML.enabled_http?)
179
+ end
180
+
181
+ def test_enabled_html
182
+ assert(LibXML::XML.enabled_html?)
183
+ end
184
+
185
+ def test_enabled_iconv
186
+ iconv_enabled = RUBY_PLATFORM !~ /darwin/
187
+ assert_equal(iconv_enabled, LibXML::XML.enabled_iconv?)
188
+ end
189
+
190
+ def test_enabled_memory_debug
191
+ assert_equal(false, LibXML::XML.enabled_memory_debug?)
192
+ end
193
+
194
+ def test_enabled_regexp
195
+ assert(LibXML::XML.enabled_regexp?)
196
+ end
197
+
198
+ def test_enabled_schemas
199
+ assert(LibXML::XML.enabled_schemas?)
200
+ end
201
+
202
+ def test_enabled_thread
203
+ assert(LibXML::XML.enabled_thread?)
204
+ end
205
+
206
+ def test_enabled_unicode
207
+ assert(LibXML::XML.enabled_unicode?)
208
+ end
209
+
210
+ def test_enabled_xinclude
211
+ assert(LibXML::XML.enabled_xinclude?)
212
+ end
213
+
214
+ def test_enabled_xpath
215
+ assert(LibXML::XML.enabled_xpath?)
216
+ end
217
+
218
+ def test_enabled_xpointer
219
+ assert(LibXML::XML.enabled_xpointer?)
220
+ end
221
+
222
+ def test_enabled_zlib
223
+ assert(LibXML::XML.enabled_zlib?.is_a?(TrueClass) || LibXML::XML.enabled_zlib?.is_a?(FalseClass))
224
+ end
225
+
226
+ def test_intent_tree_output
227
+ assert(TrueClass, LibXML::XML.indent_tree_output)
228
+
229
+ LibXML::XML.indent_tree_output = false
230
+ assert(FalseClass, LibXML::XML.indent_tree_output)
231
+
232
+ LibXML::XML.indent_tree_output = true
233
+ assert(TrueClass, LibXML::XML.indent_tree_output)
234
+ end
235
+
236
+ def test_version
237
+ assert_instance_of(String, LibXML::XML::VERSION)
238
+ end
239
+
240
+ def test_vernum
241
+ assert_instance_of(Integer, LibXML::XML::VERNUM)
242
+ end
243
+
244
+ def test_libxml_parser_features
245
+ assert_instance_of(Array, LibXML::XML.features)
246
+ end
247
+
248
+ def test_default_options
249
+ assert_equal(0, LibXML::XML.default_options)
250
+ end
251
+
252
+ def test_default_save_no_empty_tags
253
+ original = LibXML::XML.default_save_no_empty_tags
254
+
255
+ LibXML::XML.default_save_no_empty_tags = false
256
+ refute(LibXML::XML.default_save_no_empty_tags)
257
+
258
+ LibXML::XML.default_save_no_empty_tags = true
259
+ assert(LibXML::XML.default_save_no_empty_tags)
260
+
261
+ LibXML::XML.default_save_no_empty_tags = original
262
+ end
263
+ end
@@ -1,12 +1,11 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require './test_helper'
3
+ require_relative './test_helper'
4
4
  require 'tempfile'
5
- require 'test/unit'
6
5
 
7
- class TestXPath < Test::Unit::TestCase
6
+ class TestXPath < Minitest::Test
8
7
  def setup
9
- @doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
8
+ @doc = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
10
9
  end
11
10
 
12
11
  def teardown
@@ -15,14 +14,14 @@ class TestXPath < Test::Unit::TestCase
15
14
 
16
15
  def test_doc_find
17
16
  nodes = @doc.find('/soap:Envelope')
18
- assert_instance_of(XML::XPath::Object, nodes)
17
+ assert_instance_of(LibXML::XML::XPath::Object, nodes)
19
18
  assert_equal(1, nodes.length)
20
- assert_equal(nodes.xpath_type, XML::XPath::NODESET)
19
+ assert_equal(nodes.xpath_type, LibXML::XML::XPath::NODESET)
21
20
  end
22
21
 
23
22
  def test_doc_find_first
24
23
  node = @doc.find_first('/soap:Envelope/soap:Body')
25
- assert_instance_of(XML::Node, node)
24
+ assert_instance_of(LibXML::XML::Node, node)
26
25
  end
27
26
 
28
27
  def test_ns
@@ -34,7 +33,7 @@ class TestXPath < Test::Unit::TestCase
34
33
  _stress = GC.stress
35
34
  GC.stress = true
36
35
 
37
- doc = XML::Document.string('<foo xmlns="http://bar.com" />')
36
+ doc = LibXML::XML::Document.string('<foo xmlns="http://bar.com" />')
38
37
  node = doc.root
39
38
  # This line segfaults on prior versions of libxml-ruby
40
39
  node.find("namespace::*")
@@ -90,7 +89,7 @@ class TestXPath < Test::Unit::TestCase
90
89
 
91
90
  def test_default_ns5
92
91
  # Find all nodes with http://services.somewhere.com namespace
93
- XML::Namespace.new(@doc.root, 'ns', 'http://services.somewhere.com')
92
+ LibXML::XML::Namespace.new(@doc.root, 'ns', 'http://services.somewhere.com')
94
93
  nodes = @doc.find('//ns:*')
95
94
  assert_equal(2, nodes.length)
96
95
  assert_equal('getManufacturerNamesResponse', nodes[0].name)
@@ -106,20 +105,20 @@ class TestXPath < Test::Unit::TestCase
106
105
  end
107
106
 
108
107
  def test_register_default_ns
109
- doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/atom.xml'))
108
+ doc = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/atom.xml'))
110
109
 
111
110
  # No namespace has been yet defined
112
- assert_raise(XML::Error) do
113
- node = doc.find("atom:title")
111
+ assert_raises(LibXML::XML::Error) do
112
+ doc.find("atom:title")
114
113
  end
115
114
 
116
115
  node = doc.find('atom:title', 'atom:http://www.w3.org/2005/Atom')
117
- assert_not_nil(node)
116
+ refute_nil(node)
118
117
 
119
118
  # Register namespace
120
119
  doc.root.namespaces.default_prefix = 'atom'
121
120
  node = doc.find("atom:title")
122
- assert_not_nil(node)
121
+ refute_nil(node)
123
122
  end
124
123
 
125
124
  def test_node_find
@@ -129,7 +128,7 @@ class TestXPath < Test::Unit::TestCase
129
128
  # Since we are searching on the node, don't have to register namespace
130
129
  nodes = node.find('ns1:name')
131
130
  assert_equal(1, nodes.length)
132
- assert_equal(nodes.first.object_id, nodes.last.object_id, 'First and last should be the same')
131
+ refute_equal(nodes.first.object_id, nodes.last.object_id)
133
132
  assert_equal('name', nodes.first.name)
134
133
  assert_equal('man1', nodes.first.content)
135
134
  end
@@ -144,8 +143,8 @@ class TestXPath < Test::Unit::TestCase
144
143
  end
145
144
 
146
145
  def test_node_no_doc
147
- node = XML::Node.new('header', 'some content')
148
- assert_raise(TypeError) do
146
+ node = LibXML::XML::Node.new('header', 'some content')
147
+ assert_raises(TypeError) do
149
148
  node = node.find_first('/header')
150
149
  end
151
150
  end
@@ -158,63 +157,63 @@ class TestXPath < Test::Unit::TestCase
158
157
  # to the document's nodes. A segmentation fault then happens.
159
158
 
160
159
  1000.times do
161
- doc = XML::Document.new('1.0')
162
- doc.root = XML::Node.new("header")
160
+ doc = LibXML::XML::Document.new('1.0')
161
+ doc.root = LibXML::XML::Node.new("header")
163
162
 
164
163
  1000.times do
165
- doc.root << XML::Node.new("footer")
164
+ doc.root << LibXML::XML::Node.new("footer")
166
165
  end
167
166
 
168
- nodes = doc.find('/header/footer')
167
+ doc.find('/header/footer')
169
168
  end
170
169
  end
171
170
 
172
171
  # Test that document doesn't get freed before nodes
173
172
  def test_xpath_free
174
- doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
173
+ doc = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
175
174
  nodes = doc.find('//*')
176
175
  GC.start
177
176
  assert_equal('Envelope', nodes.first.name)
178
177
  end
179
178
 
180
179
  def test_xpath_namespace_nodes
181
- doc = XML::Document.string('<feed xmlns="http://www.w3.org/2005/Atom" xmlns:xhtml="http://www.w3.org/1999/xhtml"><entry/></feed>')
180
+ doc = LibXML::XML::Document.string('<feed xmlns="http://www.w3.org/2005/Atom" xmlns:xhtml="http://www.w3.org/1999/xhtml"><entry/></feed>')
182
181
  nodes = doc.find('//atom:entry|namespace::*', :atom => "http://www.w3.org/2005/Atom")
183
182
  assert_equal(4, nodes.length)
184
183
 
185
184
  node = nodes[0]
186
- assert_equal(XML::Node::ELEMENT_NODE, node.node_type)
185
+ assert_equal(LibXML::XML::Node::ELEMENT_NODE, node.node_type)
187
186
 
188
187
  node = nodes[1]
189
- assert_equal(XML::Node::NAMESPACE_DECL, node.node_type)
188
+ assert_equal(LibXML::XML::Node::NAMESPACE_DECL, node.node_type)
190
189
 
191
190
  node = nodes[2]
192
- assert_equal(XML::Node::NAMESPACE_DECL, node.node_type)
191
+ assert_equal(LibXML::XML::Node::NAMESPACE_DECL, node.node_type)
193
192
 
194
193
  node = nodes[3]
195
- assert_equal(XML::Node::NAMESPACE_DECL, node.node_type)
194
+ assert_equal(LibXML::XML::Node::NAMESPACE_DECL, node.node_type)
196
195
  end
197
196
 
198
197
  # Test to make sure we don't get nil on empty results.
199
198
  # This is also to test that we don't segfault due to our C code getting a NULL pointer
200
199
  # and not handling it properly.
201
200
  def test_xpath_empty_result
202
- doc = XML::Document.string('<html><body><p>Welcome to XHTML land!</p></body></html>')
201
+ doc = LibXML::XML::Document.string('<html><body><p>Welcome to XHTML land!</p></body></html>')
203
202
  nodes = doc.find("//object/param[translate(@name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = 'wmode']")
204
- assert_not_nil nodes
203
+ refute_nil nodes
205
204
  end
206
205
 
207
206
  def test_invalid_expression
208
207
  xml = LibXML::XML::Document.string('<a></a>')
209
208
 
210
209
  # Using the expression twice used to cause a Segmentation Fault
211
- error = assert_raise(XML::Error) do
210
+ error = assert_raises(LibXML::XML::Error) do
212
211
  xml.find('//a/')
213
212
  end
214
213
  assert_equal("Error: Invalid expression.", error.to_s)
215
214
 
216
215
  # Try again - this used to cause a Segmentation Fault
217
- error = assert_raise(XML::Error) do
216
+ error = assert_raises(LibXML::XML::Error) do
218
217
  xml.find('//a/')
219
218
  end
220
219
  assert_equal("Error: Invalid expression.", error.to_s)
@@ -242,4 +241,4 @@ class TestXPath < Test::Unit::TestCase
242
241
  assert_equal(1, nodes.length)
243
242
  assert_equal(nodes[0].content, ' my comment ')
244
243
  end
245
- end
244
+ end
@@ -1,10 +1,9 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require './test_helper'
3
+ require_relative './test_helper'
4
4
  require "tempfile"
5
- require "test/unit"
6
5
 
7
- class TestXPathContext < Test::Unit::TestCase
6
+ class TestXPathContext < Minitest::Test
8
7
  SOAP_PREFIX = 'soap'
9
8
  SOAP_URI = 'http://schemas.xmlsoap.org/soap/envelope/'
10
9
 
@@ -12,8 +11,8 @@ class TestXPathContext < Test::Unit::TestCase
12
11
  NS0_URI = 'http://services.somewhere.com'
13
12
 
14
13
  def setup
15
- doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
16
- @context = XML::XPath::Context.new(doc)
14
+ doc = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
15
+ @context = LibXML::XML::XPath::Context.new(doc)
17
16
  end
18
17
 
19
18
  def teardown()
@@ -21,7 +20,7 @@ class TestXPathContext < Test::Unit::TestCase
21
20
  end
22
21
 
23
22
  def test_no_ns
24
- error = assert_raise(LibXML::XML::Error) do
23
+ error = assert_raises(LibXML::XML::Error) do
25
24
  @context.find('/soap:Envelope')
26
25
  end
27
26
  assert_equal("Error: Undefined namespace prefix.", error.to_s)
@@ -80,9 +79,9 @@ class TestXPathContext < Test::Unit::TestCase
80
79
  end
81
80
 
82
81
  def test_require_doc
83
- doc = XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
84
- error = assert_raise(TypeError) do
85
- @context = XML::XPath::Context.new(doc.root)
82
+ doc = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/soap.xml'))
83
+ error = assert_raises(TypeError) do
84
+ @context = LibXML::XML::XPath::Context.new(doc.root)
86
85
  end
87
86
  assert_equal("Supplied argument must be a document or node.", error.to_s)
88
87
  end
@@ -0,0 +1,37 @@
1
+ # encoding: UTF-8
2
+
3
+ require_relative './test_helper'
4
+
5
+
6
+ class TestXPathExpression < Minitest::Test
7
+ def setup
8
+ xp = LibXML::XML::Parser.string('<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>')
9
+ @doc = xp.parse
10
+ end
11
+
12
+ def teardown
13
+ @doc = nil
14
+ end
15
+
16
+ def test_nodes
17
+ expr = LibXML::XML::XPath::Expression.compile('/ruby_array/fixnum')
18
+ set = @doc.find(expr)
19
+ assert_instance_of(LibXML::XML::XPath::Object, set)
20
+ assert_equal(2, set.size)
21
+ end
22
+
23
+ def test_find_class
24
+ expr = LibXML::XML::XPath::Expression.new('/ruby_array/fixnum')
25
+ set = @doc.find(expr)
26
+ assert_instance_of(LibXML::XML::XPath::Object, set)
27
+ assert_equal(2, set.size)
28
+ end
29
+
30
+ def test_find_invalid
31
+ error = assert_raises(TypeError) do
32
+ @doc.find(999)
33
+ end
34
+ assert_equal('Argument should be an instance of a String or XPath::Expression',
35
+ error.to_s)
36
+ end
37
+ end
@@ -1,15 +1,13 @@
1
1
  # encoding: UTF-8
2
+ require_relative './test_helper'
2
3
 
3
- require './test_helper'
4
- require "test/unit"
5
-
6
- class TC_XML_XPointer < Test::Unit::TestCase
4
+ class TC_XML_XPointer < Minitest::Test
7
5
  def setup()
8
- xp = XML::Parser.string('<!DOCTYPE ra [<!ELEMENT ra (foo+)><!ATTLIST ra id ID #IMPLIED><!ELEMENT foo (#PCDATA)><!ATTLIST foo id ID #IMPLIED>]><ra id="start"><foo id="one">one</foo><foo id="two">two</foo><foo id="three">three</foo></ra>')
6
+ xp = LibXML::XML::Parser.string('<!DOCTYPE ra [<!ELEMENT ra (foo+)><!ATTLIST ra id ID #IMPLIED><!ELEMENT foo (#PCDATA)><!ATTLIST foo id ID #IMPLIED>]><ra id="start"><foo id="one">one</foo><foo id="two">two</foo><foo id="three">three</foo></ra>')
9
7
  @doc = xp.parse
10
- assert_instance_of(XML::Document, @doc)
8
+ assert_instance_of(LibXML::XML::Document, @doc)
11
9
  @root = @doc.root
12
- assert_instance_of(XML::Node, @root)
10
+ assert_instance_of(LibXML::XML::Node, @root)
13
11
  end
14
12
 
15
13
  def teardown()
@@ -20,20 +18,20 @@ class TC_XML_XPointer < Test::Unit::TestCase
20
18
 
21
19
  def test_libxml_xpointer_id
22
20
  xptr = @root.pointer('xpointer(id("two"))')
23
- assert_instance_of(XML::XPath::Object, xptr)
21
+ assert_instance_of(LibXML::XML::XPath::Object, xptr)
24
22
  xptr.each do |node|
25
23
  # It seems from the spec that the pointer should
26
24
  # be the whole node, rather than just the ID attr.
27
25
  assert_equal('two', node.content)
28
- assert_instance_of(XML::Node, node)
26
+ assert_instance_of(LibXML::XML::Node, node)
29
27
  assert_equal('two', node['id'])
30
28
  end
31
29
 
32
30
  # FIXME: Not sure at all about this kind of range
33
31
  if ENV['NOTWORKING']
34
32
  @xptr = @root.pointer('xpointer(id("two")) xpointer(id("three"))')
35
- assert_instance_of(XML::XPath, @xptr)
36
- assert_instance_of(XML::Node::Set, @xptr.set)
33
+ assert_instance_of(LibXML::XML::XPath, @xptr)
34
+ assert_instance_of(LibXML::XML::Node::Set, @xptr.set)
37
35
  assert_equal(2, @xptr.set.length)
38
36
  for n in @xptr.set
39
37
  assert_match(/two|three/, n.to_s)
@@ -47,13 +45,13 @@ class TC_XML_XPointer < Test::Unit::TestCase
47
45
  nstart = nend = nil
48
46
  @xptr = @root.pointer('xpointer(id("one"))').set
49
47
  @xptr.each{|n| nstart = n}
50
- assert_instance_of(XML::Node, nstart)
48
+ assert_instance_of(LibXML::XML::Node, nstart)
51
49
  @xptr = @root.pointer('xpointer(id("three"))').set
52
50
  @xptr.each{|n| nend = n}
53
- assert_instance_of(XML::Node, nend)
54
- range = XML::XPointer.range(nstart, nend)
55
- assert_instance_of(XML::XPath, range)
56
- assert_instance_of(XML::Node::Set, range.set)
51
+ assert_instance_of(LibXML::XML::Node, nend)
52
+ range = LibXML::XML::XPointer.range(nstart, nend)
53
+ assert_instance_of(LibXML::XML::XPath, range)
54
+ assert_instance_of(LibXML::XML::Node::Set, range.set)
57
55
 
58
56
  for n in range.set
59
57
  assert_match(/one|two|three/, n.to_s)
@@ -64,9 +62,9 @@ class TC_XML_XPointer < Test::Unit::TestCase
64
62
 
65
63
  # def test_libxml_xpointer_start_point()
66
64
  # @xptr = @root.pointer('xpointer(start-point("one"))')
67
- # assert_instance_of(XML::XPath, @xptr)
65
+ # assert_instance_of(LibXML::XML::XPath, @xptr)
68
66
  # set = @xptr.set
69
- # assert_instance_of(XML::Node::Set, set)
67
+ # assert_instance_of(LibXML::XML::Node::Set, set)
70
68
  # for n in set
71
69
  # assert_match(/one|two|three/, n.to_s)
72
70
  # end