libxml-ruby 2.8.0 → 3.2.3

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 (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
data/test/tc_parser.rb DELETED
@@ -1,381 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require './test_helper'
4
- require 'test/unit'
5
- require 'stringio'
6
-
7
- class TestParser < Test::Unit::TestCase
8
- def setup
9
- XML::Error.set_handler(&XML::Error::QUIET_HANDLER)
10
- end
11
-
12
- def teardown
13
- GC.start
14
- GC.start
15
- GC.start
16
- end
17
-
18
- # ----- Sources -------
19
- def test_document
20
- file = File.expand_path(File.join(File.dirname(__FILE__), 'model/bands.utf-8.xml'))
21
- parser = XML::Parser.file(file)
22
- doc = parser.parse
23
-
24
- parser = XML::Parser.document(doc)
25
-
26
- doc = parser.parse
27
-
28
- assert_instance_of(XML::Document, doc)
29
- assert_instance_of(XML::Parser::Context, parser.context)
30
- end
31
-
32
- def test_nil_document
33
- error = assert_raise(TypeError) do
34
- XML::Parser.document(nil)
35
- end
36
-
37
- assert_equal("Must pass an XML::Document object", error.to_s)
38
- end
39
-
40
- def test_file
41
- file = File.expand_path(File.join(File.dirname(__FILE__), 'model/rubynet.xml'))
42
-
43
- parser = XML::Parser.file(file)
44
- doc = parser.parse
45
- assert_instance_of(XML::Document, doc)
46
- assert_instance_of(XML::Parser::Context, parser.context)
47
- end
48
-
49
- def test_noexistent_file
50
- error = assert_raise(XML::Error) do
51
- XML::Parser.file('i_dont_exist.xml')
52
- end
53
-
54
- assert_equal('Warning: failed to load external entity "i_dont_exist.xml".', error.to_s)
55
- end
56
-
57
- def test_nil_file
58
- error = assert_raise(TypeError) do
59
- XML::Parser.file(nil)
60
- end
61
-
62
- assert_match(/nil into String/, error.to_s)
63
- end
64
-
65
- def test_file_encoding
66
- file = File.expand_path(File.join(File.dirname(__FILE__), 'model/bands.utf-8.xml'))
67
- parser = XML::Parser.file(file, :encoding => XML::Encoding::ISO_8859_1)
68
-
69
- error = assert_raise(XML::Error) do
70
- doc = parser.parse
71
- end
72
-
73
- assert(error.to_s.match(/Fatal error: Extra content at the end of the document/))
74
-
75
- parser = XML::Parser.file(file, :encoding => XML::Encoding::UTF_8)
76
- doc = parser.parse
77
- assert_not_nil(doc)
78
- end
79
-
80
- def test_file_base_uri
81
- file = File.expand_path(File.join(File.dirname(__FILE__), 'model/bands.utf-8.xml'))
82
-
83
- parser = XML::Parser.file(file)
84
- doc = parser.parse
85
- assert(doc.child.base_uri.match(/test\/model\/bands.utf-8.xml/))
86
-
87
- parser = XML::Parser.file(file, :base_uri => "http://libxml.org")
88
- doc = parser.parse
89
- assert(doc.child.base_uri.match(/test\/model\/bands.utf-8.xml/))
90
- end
91
-
92
- def test_io
93
- File.open(File.join(File.dirname(__FILE__), 'model/rubynet.xml')) do |io|
94
- parser = XML::Parser.io(io)
95
- assert_instance_of(XML::Parser, parser)
96
-
97
- doc = parser.parse
98
- assert_instance_of(XML::Document, doc)
99
- assert_instance_of(XML::Parser::Context, parser.context)
100
- end
101
- end
102
-
103
- def test_io_gc
104
- # Test that the reader keeps a reference
105
- # to the io object
106
- file = File.open(File.join(File.dirname(__FILE__), 'model/rubynet.xml'))
107
- parser = XML::Parser.io(file)
108
- file = nil
109
- GC.start
110
- assert(parser.parse)
111
- end
112
-
113
- def test_nil_io
114
- error = assert_raise(TypeError) do
115
- XML::Parser.io(nil)
116
- end
117
-
118
- assert_equal("Must pass in an IO object", error.to_s)
119
- end
120
-
121
- def test_string_io
122
- data = File.read(File.join(File.dirname(__FILE__), 'model/rubynet.xml'))
123
- string_io = StringIO.new(data)
124
- parser = XML::Parser.io(string_io)
125
-
126
- doc = parser.parse
127
- assert_instance_of(XML::Document, doc)
128
- assert_instance_of(XML::Parser::Context, parser.context)
129
- end
130
-
131
- def test_string_io_thread
132
- thread = Thread.new do
133
- data = File.read(File.join(File.dirname(__FILE__), 'model/rubynet.xml'))
134
- string_io = StringIO.new(data)
135
- parser = XML::Parser.io(string_io)
136
-
137
- doc = parser.parse
138
- assert_instance_of(XML::Document, doc)
139
- assert_instance_of(XML::Parser::Context, parser.context)
140
- end
141
-
142
- thread.join
143
- assert(true)
144
- end
145
-
146
- def test_string
147
- str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
148
-
149
- parser = XML::Parser.string(str)
150
- assert_instance_of(XML::Parser, parser)
151
-
152
- doc = parser.parse
153
- assert_instance_of(XML::Document, doc)
154
- assert_instance_of(XML::Parser::Context, parser.context)
155
- end
156
-
157
- def test_nil_string
158
- error = assert_raise(TypeError) do
159
- XML::Parser.string(nil)
160
- end
161
-
162
- assert_equal("wrong argument type nil (expected String)", error.to_s)
163
- end
164
-
165
- def test_string_options
166
- xml = <<-EOS
167
- <!DOCTYPE foo [<!ENTITY foo 'bar'>]>
168
- <test>
169
- <cdata><![CDATA[something]]></cdata>
170
- <entity>&foo;</entity>
171
- </test>
172
- EOS
173
-
174
- XML::default_substitute_entities = false
175
-
176
- # Parse normally
177
- parser = XML::Parser.string(xml)
178
- doc = parser.parse
179
- assert_nil(doc.child.base_uri)
180
-
181
- # Cdata section should be cdata nodes
182
- node = doc.find_first('/test/cdata').child
183
- assert_equal(XML::Node::CDATA_SECTION_NODE, node.node_type)
184
-
185
- # Entities should not be subtituted
186
- node = doc.find_first('/test/entity')
187
- assert_equal('&foo;', node.child.to_s)
188
-
189
- # Parse with options
190
- parser = XML::Parser.string(xml, :base_uri => 'http://libxml.rubyforge.org',
191
- :options => XML::Parser::Options::NOCDATA | XML::Parser::Options::NOENT)
192
- doc = parser.parse
193
- assert_equal(doc.child.base_uri, 'http://libxml.rubyforge.org')
194
-
195
- # Cdata section should be text nodes
196
- node = doc.find_first('/test/cdata').child
197
- assert_equal(XML::Node::TEXT_NODE, node.node_type)
198
-
199
- # Entities should be subtituted
200
- node = doc.find_first('/test/entity')
201
- assert_equal('bar', node.child.to_s)
202
- end
203
-
204
- def test_string_encoding
205
- # ISO_8859_1:
206
- # ö - f6 in hex, \366 in octal
207
- # ü - fc in hex, \374 in octal
208
-
209
- xml = <<-EOS
210
- <bands>
211
- <metal>m\366tley_cr\374e</metal>
212
- </bands>
213
- EOS
214
-
215
- # Parse as UTF_8
216
- parser = XML::Parser.string(xml, :encoding => XML::Encoding::UTF_8)
217
-
218
- error = assert_raise(XML::Error) do
219
- doc = parser.parse
220
- end
221
-
222
- assert_equal("Fatal error: Input is not proper UTF-8, indicate encoding !\nBytes: 0xF6 0x74 0x6C 0x65 at :2.",
223
- error.to_s)
224
-
225
- # Parse as ISO_8859_1:
226
- parser = XML::Parser.string(xml, :encoding => XML::Encoding::ISO_8859_1)
227
- doc = parser.parse
228
- node = doc.find_first('//metal')
229
- if defined?(Encoding)
230
- assert_equal(Encoding::UTF_8, node.content.encoding)
231
- assert_equal("m\303\266tley_cr\303\274e", node.content)
232
- else
233
- assert_equal("m\303\266tley_cr\303\274e", node.content)
234
- end
235
- end
236
-
237
- def test_fd_gc
238
- # Test opening # of documents up to the file limit for the OS.
239
- # Ideally it should run until libxml emits a warning,
240
- # thereby knowing we've done a GC sweep. For the time being,
241
- # re-open the same doc `limit descriptors` times.
242
- # If we make it to the end, then we've succeeded,
243
- # otherwise an exception will be thrown.
244
- XML::Error.set_handler {|error|}
245
-
246
- max_fd = if RUBY_PLATFORM.match(/mswin32|mingw/i)
247
- 500
248
- else
249
- (`ulimit -n`.chomp.to_i) + 1
250
- end
251
-
252
- file = File.join(File.dirname(__FILE__), 'model/rubynet.xml')
253
- max_fd.times do
254
- XML::Parser.file(file).parse
255
- end
256
- XML::Error.reset_handler {|error|}
257
- end
258
-
259
- def test_open_many_files
260
- 1000.times do
261
- doc = XML::Parser.file('model/atom.xml').parse
262
- end
263
- end
264
-
265
- # ----- Errors ------
266
- def test_error
267
- error = assert_raise(XML::Error) do
268
- XML::Parser.string('<foo><bar/></foz>').parse
269
- end
270
-
271
- assert_not_nil(error)
272
- assert_kind_of(XML::Error, error)
273
- assert_equal("Fatal error: Opening and ending tag mismatch: foo line 1 and foz at :1.", error.message)
274
- assert_equal(XML::Error::PARSER, error.domain)
275
- assert_equal(XML::Error::TAG_NAME_MISMATCH, error.code)
276
- assert_equal(XML::Error::FATAL, error.level)
277
- assert_nil(error.file)
278
- assert_equal(1, error.line)
279
- assert_equal('foo', error.str1)
280
- assert_equal('foz', error.str2)
281
- assert_nil(error.str3)
282
- assert_equal(1, error.int1)
283
- assert_equal(20, error.int2)
284
- assert_nil(error.node)
285
- end
286
-
287
- def test_bad_xml
288
- parser = XML::Parser.string('<ruby_array uga="booga" foo="bar"<fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>')
289
- error = assert_raise(XML::Error) do
290
- assert_not_nil(parser.parse)
291
- end
292
-
293
- assert_not_nil(error)
294
- assert_kind_of(XML::Error, error)
295
- assert_equal("Fatal error: Extra content at the end of the document at :1.", error.message)
296
- assert_equal(XML::Error::PARSER, error.domain)
297
- assert_equal(XML::Error::DOCUMENT_END, error.code)
298
- assert_equal(XML::Error::FATAL, error.level)
299
- assert_nil(error.file)
300
- assert_equal(1, error.line)
301
- assert_nil(error.str1)
302
- assert_nil(error.str2)
303
- assert_nil(error.str3)
304
- assert_equal(0, error.int1)
305
- assert_equal(20, error.int2)
306
- assert_nil(error.node)
307
- end
308
-
309
- # Deprecated methods
310
- def test_document_deprecated
311
- file = File.expand_path(File.join(File.dirname(__FILE__), 'model/bands.utf-8.xml'))
312
- parser = XML::Parser.file(file)
313
- doc = parser.parse
314
-
315
- parser = XML::Parser.new
316
- parser.document = doc
317
- doc = parser.parse
318
-
319
- assert_instance_of(XML::Document, doc)
320
- assert_instance_of(XML::Parser::Context, parser.context)
321
- end
322
-
323
- def test_file_deprecated
324
- file = File.expand_path(File.join(File.dirname(__FILE__), 'model/rubynet.xml'))
325
-
326
- parser = XML::Parser.new
327
- parser.file = file
328
- doc = parser.parse
329
- assert_instance_of(XML::Document, doc)
330
- assert_instance_of(XML::Parser::Context, parser.context)
331
- end
332
-
333
- def test_io_deprecated
334
- File.open(File.join(File.dirname(__FILE__), 'model/rubynet.xml')) do |io|
335
- parser = XML::Parser.new
336
- assert_instance_of(XML::Parser, parser)
337
- parser.io = io
338
-
339
- doc = parser.parse
340
- assert_instance_of(XML::Document, doc)
341
- assert_instance_of(XML::Parser::Context, parser.context)
342
- end
343
- end
344
-
345
- def test_string_deprecated
346
- str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
347
-
348
- parser = XML::Parser.new
349
- parser.string = str
350
- assert_instance_of(XML::Parser, parser)
351
-
352
- doc = parser.parse
353
- assert_instance_of(XML::Document, doc)
354
- assert_instance_of(XML::Parser::Context, parser.context)
355
- end
356
-
357
- def test_errors_from_background_thread
358
- errors = []
359
- background_errors = []
360
-
361
- begin
362
- XML::Error.set_handler do |error|
363
- errors << error
364
- end
365
- parser = XML::Parser.string("<moo>")
366
-
367
- thread = Thread.new do
368
- XML::Error.set_handler do |error|
369
- background_errors << error
370
- end
371
- parser.parse rescue nil
372
- end
373
- thread.join
374
- ensure
375
- XML::Error.set_handler(&XML::Error::QUIET_HANDLER)
376
- end
377
-
378
- assert_equal(errors.size, 0)
379
- assert_equal(background_errors.size, 1)
380
- end
381
- end