libxml-ruby 5.0.6 → 6.0.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 (131) hide show
  1. checksums.yaml +4 -4
  2. data/{HISTORY → CHANGELOG.md} +875 -930
  3. data/LICENSE +20 -20
  4. data/README.md +67 -0
  5. data/Rakefile +13 -34
  6. data/ext/libxml/extconf.rb +34 -20
  7. data/ext/libxml/libxml.c +2 -14
  8. data/ext/libxml/ruby_libxml.h +1 -1
  9. data/ext/libxml/ruby_xml_attr.c +27 -22
  10. data/ext/libxml/ruby_xml_attr.h +1 -0
  11. data/ext/libxml/ruby_xml_attr_decl.c +19 -12
  12. data/ext/libxml/ruby_xml_attributes.c +18 -9
  13. data/ext/libxml/ruby_xml_document.c +111 -98
  14. data/ext/libxml/ruby_xml_document.h +1 -0
  15. data/ext/libxml/ruby_xml_dtd.c +49 -19
  16. data/ext/libxml/ruby_xml_dtd.h +1 -0
  17. data/ext/libxml/ruby_xml_html_parser.c +1 -1
  18. data/ext/libxml/ruby_xml_html_parser_context.c +19 -6
  19. data/ext/libxml/ruby_xml_html_parser_context.h +1 -0
  20. data/ext/libxml/ruby_xml_input_cbg.c +45 -17
  21. data/ext/libxml/ruby_xml_io.c +3 -1
  22. data/ext/libxml/ruby_xml_namespace.c +20 -12
  23. data/ext/libxml/ruby_xml_namespace.h +1 -0
  24. data/ext/libxml/ruby_xml_namespaces.c +40 -20
  25. data/ext/libxml/ruby_xml_node.c +71 -32
  26. data/ext/libxml/ruby_xml_node.h +2 -0
  27. data/ext/libxml/ruby_xml_parser.c +1 -1
  28. data/ext/libxml/ruby_xml_parser_context.c +54 -47
  29. data/ext/libxml/ruby_xml_parser_context.h +1 -0
  30. data/ext/libxml/ruby_xml_reader.c +25 -15
  31. data/ext/libxml/ruby_xml_registry.c +31 -0
  32. data/ext/libxml/ruby_xml_registry.h +22 -0
  33. data/ext/libxml/ruby_xml_relaxng.c +21 -5
  34. data/ext/libxml/ruby_xml_relaxng.h +1 -0
  35. data/ext/libxml/ruby_xml_sax_parser.c +1 -1
  36. data/ext/libxml/ruby_xml_schema.c +18 -11
  37. data/ext/libxml/ruby_xml_schema.h +1 -0
  38. data/ext/libxml/ruby_xml_schema_attribute.c +7 -7
  39. data/ext/libxml/ruby_xml_schema_element.c +8 -8
  40. data/ext/libxml/ruby_xml_schema_facet.c +7 -7
  41. data/ext/libxml/ruby_xml_schema_type.c +12 -19
  42. data/ext/libxml/ruby_xml_version.h +4 -4
  43. data/ext/libxml/ruby_xml_writer.c +18 -6
  44. data/ext/libxml/ruby_xml_xpath.c +2 -2
  45. data/ext/libxml/ruby_xml_xpath.h +1 -1
  46. data/ext/libxml/ruby_xml_xpath_context.c +72 -26
  47. data/ext/libxml/ruby_xml_xpath_expression.c +11 -5
  48. data/ext/libxml/ruby_xml_xpath_expression.h +1 -0
  49. data/ext/libxml/ruby_xml_xpath_object.c +69 -54
  50. data/ext/libxml/ruby_xml_xpath_object.h +3 -1
  51. data/ext/vc/libxml_ruby/libxml_ruby.vcxproj +271 -0
  52. data/ext/xcode/libxml-ruby.xcodeproj/project.pbxproj +633 -0
  53. data/ext/xcode/libxml-ruby.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  54. data/ext/xcode/libxml-ruby.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  55. data/ext/xcode/libxml-ruby.xcodeproj/xcshareddata/xcschemes/libxml-ruby.xcscheme +80 -0
  56. data/lib/libxml/document.rb +0 -29
  57. data/lib/libxml/error.rb +30 -3
  58. data/lib/libxml/html_parser.rb +0 -16
  59. data/lib/libxml/node.rb +1 -3
  60. data/lib/libxml/parser.rb +0 -8
  61. data/lib/libxml/schema/attribute.rb +27 -19
  62. data/lib/libxml/schema/element.rb +20 -0
  63. data/lib/libxml/schema/type.rb +44 -21
  64. data/lib/libxml/schema.rb +47 -47
  65. data/lib/libxml-ruby.rb +30 -30
  66. data/libxml-ruby.gemspec +12 -16
  67. data/test/c14n/result/1-1-without-comments/example-1 +3 -3
  68. data/test/c14n/result/1-1-without-comments/example-2 +10 -10
  69. data/test/c14n/result/1-1-without-comments/example-3 +13 -13
  70. data/test/c14n/result/1-1-without-comments/example-4 +8 -8
  71. data/test/c14n/result/1-1-without-comments/example-5 +2 -2
  72. data/test/c14n/result/with-comments/example-1 +5 -5
  73. data/test/c14n/result/with-comments/example-2 +10 -10
  74. data/test/c14n/result/with-comments/example-3 +13 -13
  75. data/test/c14n/result/with-comments/example-4 +8 -8
  76. data/test/c14n/result/with-comments/example-5 +3 -3
  77. data/test/c14n/result/without-comments/example-1 +3 -3
  78. data/test/c14n/result/without-comments/example-2 +10 -10
  79. data/test/c14n/result/without-comments/example-3 +13 -13
  80. data/test/c14n/result/without-comments/example-4 +8 -8
  81. data/test/c14n/result/without-comments/example-5 +2 -2
  82. data/test/test_attr.rb +179 -180
  83. data/test/test_attr_decl.rb +131 -131
  84. data/test/test_attributes.rb +135 -135
  85. data/test/test_canonicalize.rb +122 -120
  86. data/test/test_document.rb +2 -4
  87. data/test/test_dtd.rb +12 -4
  88. data/test/test_encoding_sax.rb +114 -114
  89. data/test/test_error.rb +1 -1
  90. data/test/test_html_parser.rb +6 -2
  91. data/test/test_html_parser_context.rb +22 -22
  92. data/test/test_input_callbacks.rb +36 -0
  93. data/test/test_namespace.rb +1 -1
  94. data/test/test_namespaces.rb +200 -200
  95. data/test/test_node.rb +16 -0
  96. data/test/test_node_cdata.rb +50 -50
  97. data/test/test_node_comment.rb +32 -32
  98. data/test/test_node_copy.rb +40 -40
  99. data/test/test_node_edit.rb +176 -158
  100. data/test/test_node_pi.rb +37 -37
  101. data/test/test_node_text.rb +69 -69
  102. data/test/test_node_xlink.rb +28 -28
  103. data/test/test_parser.rb +5 -41
  104. data/test/test_parser_context.rb +198 -198
  105. data/test/test_properties.rb +38 -38
  106. data/test/test_reader.rb +55 -6
  107. data/test/test_relaxng.rb +59 -53
  108. data/test/test_sax_parser.rb +345 -345
  109. data/test/test_schema.rb +28 -0
  110. data/test/test_traversal.rb +152 -152
  111. data/test/test_writer.rb +0 -31
  112. data/test/test_xinclude.rb +20 -20
  113. data/test/test_xml.rb +3 -7
  114. data/test/test_xpath.rb +244 -244
  115. data/test/test_xpath_context.rb +87 -87
  116. data/test/test_xpath_expression.rb +37 -37
  117. metadata +32 -25
  118. data/README.rdoc +0 -208
  119. data/ext/libxml/extconf.h +0 -4
  120. data/ext/libxml/ruby_xml_cbg.c +0 -85
  121. data/lib/libxml/hpricot.rb +0 -78
  122. data/lib/libxml.rb +0 -5
  123. data/lib/xml/libxml.rb +0 -10
  124. data/lib/xml.rb +0 -14
  125. data/script/benchmark/depixelate +0 -634
  126. data/script/benchmark/hamlet.xml +0 -9055
  127. data/script/benchmark/parsecount +0 -170
  128. data/script/benchmark/sock_entries.xml +0 -507
  129. data/script/benchmark/throughput +0 -41
  130. data/script/test +0 -6
  131. data/test/test_deprecated_require.rb +0 -12
@@ -1,28 +1,28 @@
1
- # encoding: UTF-8
2
-
3
- # $Id$
4
- require_relative './test_helper'
5
-
6
-
7
- class TC_XML_Node_XLink < Minitest::Test
8
- def setup()
9
- xp = LibXML::XML::Parser.string('<ruby_array xmlns:xlink="http://www.w3.org/1999/xlink/namespace/"><fixnum xlink:type="simple">one</fixnum></ruby_array>')
10
- doc = xp.parse
11
- assert_instance_of(LibXML::XML::Document, doc)
12
- @root = doc.root
13
- assert_instance_of(LibXML::XML::Node, @root)
14
- end
15
-
16
- def teardown()
17
- @root = nil
18
- end
19
-
20
- def test_xml_node_xlink()
21
- for elem in @root.find('fixnum')
22
- assert_instance_of(LibXML::XML::Node, elem)
23
- assert_instance_of(TrueClass, elem.xlink?)
24
- assert_equal("simple", elem.xlink_type_name)
25
- assert_equal(LibXML::XML::Node::XLINK_TYPE_SIMPLE, elem.xlink_type)
26
- end
27
- end
28
- end
1
+ # encoding: UTF-8
2
+
3
+ # $Id$
4
+ require_relative './test_helper'
5
+
6
+
7
+ class TC_XML_Node_XLink < Minitest::Test
8
+ def setup()
9
+ xp = LibXML::XML::Parser.string('<ruby_array xmlns:xlink="http://www.w3.org/1999/xlink/namespace/"><fixnum xlink:type="simple">one</fixnum></ruby_array>')
10
+ doc = xp.parse
11
+ assert_instance_of(LibXML::XML::Document, doc)
12
+ @root = doc.root
13
+ assert_instance_of(LibXML::XML::Node, @root)
14
+ end
15
+
16
+ def teardown()
17
+ @root = nil
18
+ end
19
+
20
+ def test_xml_node_xlink()
21
+ for elem in @root.find('fixnum')
22
+ assert_instance_of(LibXML::XML::Node, elem)
23
+ assert_instance_of(TrueClass, elem.xlink?)
24
+ assert_equal("simple", elem.xlink_type_name)
25
+ assert_equal(LibXML::XML::Node::XLINK_TYPE_SIMPLE, elem.xlink_type)
26
+ end
27
+ end
28
+ end
data/test/test_parser.rb CHANGED
@@ -44,7 +44,7 @@ class TestParser < Minitest::Test
44
44
  LibXML::XML::Parser.file('i_dont_exist.xml')
45
45
  end
46
46
 
47
- assert_equal('Warning: failed to load external entity "i_dont_exist.xml".', error.message)
47
+ assert_match(/Warning: failed to load.*i_dont_exist\.xml/, error.message)
48
48
  end
49
49
 
50
50
  def test_nil_file
@@ -63,11 +63,7 @@ class TestParser < Minitest::Test
63
63
  parser.parse
64
64
  end
65
65
 
66
- if windows?
67
- assert_match(/Fatal error: Opening and ending tag mismatch/, error.message)
68
- else
69
- assert_match(/Fatal error: Extra content at the end of the document/, error.message)
70
- end
66
+ assert_match(/Fatal error:/, error.message)
71
67
 
72
68
  parser = LibXML::XML::Parser.file(file, :encoding => LibXML::XML::Encoding::UTF_8)
73
69
  doc = parser.parse
@@ -215,8 +211,7 @@ class TestParser < Minitest::Test
215
211
  parser.parse
216
212
  end
217
213
 
218
- assert_equal("Fatal error: Input is not proper UTF-8, indicate encoding !\nBytes: 0xF6 0x74 0x6C 0x65 at :2.",
219
- error.message)
214
+ assert_match(/Fatal error:.*at :2\./m, error.message)
220
215
 
221
216
  # Parse as ISO_8859_1:
222
217
  parser = LibXML::XML::Parser.string(xml, :encoding => LibXML::XML::Encoding::ISO_8859_1)
@@ -225,37 +220,7 @@ class TestParser < Minitest::Test
225
220
  assert_equal(Encoding::UTF_8, node.content.encoding)
226
221
  assert_equal("m\303\266tley_cr\303\274e", node.content)
227
222
  end
228
-
229
- def test_fd_gc
230
- # Test opening # of documents up to the file limit for the OS.
231
- # Ideally it should run until libxml emits a warning,
232
- # thereby knowing we've done a GC sweep. For the time being,
233
- # re-open the same doc `limit descriptors` times.
234
- # If we make it to the end, then we've succeeded,
235
- # otherwise an exception will be thrown.
236
- LibXML::XML::Error.set_handler {|error|}
237
-
238
- max_fd = if RUBY_PLATFORM.match(/mswin32|mswin64|mingw/i)
239
- 500
240
- else
241
- Process.getrlimit(Process::RLIMIT_NOFILE)[0] + 1
242
- end
243
-
244
- file = File.join(File.dirname(__FILE__), 'model/rubynet.xml')
245
- max_fd.times do
246
- LibXML::XML::Parser.file(file).parse
247
- end
248
- LibXML::XML::Error.reset_handler {|error|}
249
- end
250
-
251
- def test_open_many_files
252
- file = File.expand_path(File.join(File.dirname(__FILE__), 'model/atom.xml'))
253
- 1000.times do
254
- LibXML::XML::Parser.file(file).parse
255
- end
256
- end
257
-
258
- # ----- Errors ------
223
+
259
224
  def test_error
260
225
  error = assert_raises(LibXML::XML::Error) do
261
226
  LibXML::XML::Parser.string('<foo><bar/></foz>').parse
@@ -285,7 +250,7 @@ class TestParser < Minitest::Test
285
250
 
286
251
  refute_nil(error)
287
252
  assert_kind_of(LibXML::XML::Error, error)
288
- if windows?
253
+ if Gem::Version.new(LibXML::XML::LIBXML_VERSION) >= Gem::Version.new("2.12")
289
254
  assert_equal("Fatal error: Couldn't find end of Start Tag ruby_array line 1 at :1.", error.message)
290
255
  assert_equal(LibXML::XML::Error::GT_REQUIRED, error.code)
291
256
  assert_equal("ruby_array", error.str1)
@@ -302,7 +267,6 @@ class TestParser < Minitest::Test
302
267
  assert_equal(1, error.line)
303
268
  assert_nil(error.str2)
304
269
  assert_nil(error.str3)
305
- assert_equal(34, error.int2)
306
270
  assert_nil(error.node)
307
271
  end
308
272
 
@@ -1,198 +1,198 @@
1
- # encoding: UTF-8
2
-
3
- require_relative './test_helper'
4
-
5
-
6
- class TestParserContext < Minitest::Test
7
- def test_string
8
- # UTF8
9
- xml = <<-EOS
10
- <bands>
11
- <metal>m\303\266tley_cr\303\274e</metal>
12
- </bands>
13
- EOS
14
-
15
- context = LibXML::XML::Parser::Context.string(xml)
16
- assert_instance_of(LibXML::XML::Parser::Context, context)
17
- assert_equal(LibXML::XML::Encoding::NONE, context.encoding)
18
- assert_nil(context.base_uri)
19
- end
20
-
21
- def test_encoding
22
- # ISO_8859_1:
23
- xml = <<-EOS
24
- <bands>
25
- <metal>m\366tley_cr\374e</metal>
26
- </bands>
27
- EOS
28
-
29
- context = LibXML::XML::Parser::Context.string(xml)
30
- assert_equal(LibXML::XML::Encoding::NONE, context.encoding)
31
-
32
- context.encoding = LibXML::XML::Encoding::ISO_8859_1
33
- assert_equal(LibXML::XML::Encoding::ISO_8859_1, context.encoding)
34
- end
35
-
36
- def test_invalid_encoding
37
- # UTF8
38
- xml = <<-EOS
39
- <bands>
40
- <metal>m\303\266tley_cr\303\274e</metal>
41
- </bands>
42
- EOS
43
-
44
- context = LibXML::XML::Parser::Context.string(xml)
45
-
46
- error = assert_raises(ArgumentError) do
47
- context.encoding = -999
48
- end
49
- assert_equal("Unknown encoding: -999", error.to_s)
50
- end
51
-
52
- def test_base_uri
53
- # UTF8
54
- xml = <<-EOS
55
- <bands>
56
- <metal>m\303\266tley_cr\303\274e</metal>
57
- </bands>
58
- EOS
59
-
60
- context = LibXML::XML::Parser::Context.string(xml)
61
- assert_nil(context.base_uri)
62
-
63
- context.base_uri = 'http://libxml.rubyforge.org'
64
- assert_equal('http://libxml.rubyforge.org', context.base_uri)
65
- end
66
-
67
- def test_string_empty
68
- error = assert_raises(TypeError) do
69
- LibXML::XML::Parser::Context.string(nil)
70
- end
71
- assert_equal("wrong argument type nil (expected String)", error.to_s)
72
-
73
- error = assert_raises(ArgumentError) do
74
- LibXML::XML::Parser::Context.string('')
75
- end
76
- assert_equal("Must specify a string with one or more characters", error.to_s)
77
- end
78
-
79
- def test_well_formed
80
- parser = LibXML::XML::Parser.string("<abc/>")
81
- parser.parse
82
- assert(parser.context.well_formed?)
83
- end
84
-
85
- def test_not_well_formed
86
- parser = LibXML::XML::Parser.string("<abc>")
87
- assert_raises(LibXML::XML::Error) do
88
- parser.parse
89
- end
90
- assert(!parser.context.well_formed?)
91
- end
92
-
93
- def test_version_info
94
- file = File.expand_path(File.join(File.dirname(__FILE__), 'model/bands.utf-8.xml'))
95
- parser = LibXML::XML::Parser.file(file)
96
- assert_nil(parser.context.version)
97
- parser.parse
98
- assert_equal("1.0", parser.context.version)
99
- end
100
-
101
- def test_depth
102
- context = LibXML::XML::Parser::Context.new
103
- assert_instance_of(Integer, context.depth)
104
- end
105
-
106
- def test_disable_sax
107
- context = LibXML::XML::Parser::Context.new
108
- assert(!context.disable_sax?)
109
- end
110
-
111
- def test_docbook
112
- context = LibXML::XML::Parser::Context.new
113
- assert(!context.docbook?)
114
- end
115
-
116
- def test_html
117
- context = LibXML::XML::Parser::Context.new
118
- assert(!context.html?)
119
- end
120
-
121
- def test_keep_blanks
122
- context = LibXML::XML::Parser::Context.new
123
- if context.keep_blanks?
124
- assert_instance_of(TrueClass, context.keep_blanks?)
125
- else
126
- assert_instance_of(FalseClass, context.keep_blanks?)
127
- end
128
- end
129
-
130
- def test_replace_entities
131
- context = LibXML::XML::Parser::Context.new
132
- assert(!context.replace_entities?)
133
-
134
- context.options = LibXML::XML::Parser::Options::NOENT
135
- assert(context.replace_entities?)
136
-
137
- context.options = 0
138
- assert(!context.replace_entities?)
139
-
140
- context.replace_entities = true
141
- assert(context.replace_entities?)
142
- end
143
-
144
- def test_space_depth
145
- context = LibXML::XML::Parser::Context.new
146
- assert_equal(1, context.space_depth)
147
- end
148
-
149
- def test_subset_external
150
- context = LibXML::XML::Parser::Context.new
151
- assert(!context.subset_external?)
152
- end
153
-
154
- def test_data_directory_get
155
- context = LibXML::XML::Parser::Context.new
156
- assert_nil(context.data_directory)
157
- end
158
-
159
- def test_parse_error
160
- xp = LibXML::XML::Parser.string('<foo><bar/></foz>')
161
-
162
- assert_raises(LibXML::XML::Error) do
163
- xp.parse
164
- end
165
-
166
- # Now check context
167
- context = xp.context
168
- assert_nil(context.data_directory)
169
- assert_equal(0, context.depth)
170
- assert_equal(true, context.disable_sax?)
171
- assert_equal(false, context.docbook?)
172
- assert_equal(LibXML::XML::Encoding::NONE, context.encoding)
173
- assert_equal(76, context.errno)
174
- assert_equal(false, context.html?)
175
- assert_equal(5, context.io_max_num_streams)
176
- assert_equal(1, context.io_num_streams)
177
- assert_equal(true, context.keep_blanks?)
178
- assert_equal(1, context.io_num_streams)
179
- assert_nil(context.name_node)
180
- assert_equal(0, context.name_depth)
181
- assert_equal(10, context.name_depth_max)
182
- assert([0, 17].include?(context.num_chars))
183
- assert_equal(false, context.replace_entities?)
184
- assert_equal(1, context.space_depth)
185
- assert_equal(10, context.space_depth_max)
186
- assert_equal(false, context.subset_external?)
187
- assert_nil(context.subset_external_system_id)
188
- assert_nil(context.subset_external_uri)
189
- assert_equal(false, context.subset_internal?)
190
- assert_nil(context.subset_internal_name)
191
- assert_equal(false, context.stats?)
192
- assert_equal(true, context.standalone?)
193
- assert_equal(false, context.valid)
194
- assert_equal(false, context.validate?)
195
- assert_equal('1.0', context.version)
196
- assert_equal(false, context.well_formed?)
197
- end
198
- end
1
+ # encoding: UTF-8
2
+
3
+ require_relative './test_helper'
4
+
5
+
6
+ class TestParserContext < Minitest::Test
7
+ def test_string
8
+ # UTF8
9
+ xml = <<-EOS
10
+ <bands>
11
+ <metal>m\303\266tley_cr\303\274e</metal>
12
+ </bands>
13
+ EOS
14
+
15
+ context = LibXML::XML::Parser::Context.string(xml)
16
+ assert_instance_of(LibXML::XML::Parser::Context, context)
17
+ assert_equal(LibXML::XML::Encoding::NONE, context.encoding)
18
+ assert_nil(context.base_uri)
19
+ end
20
+
21
+ def test_encoding
22
+ # ISO_8859_1:
23
+ xml = <<-EOS
24
+ <bands>
25
+ <metal>m\366tley_cr\374e</metal>
26
+ </bands>
27
+ EOS
28
+
29
+ context = LibXML::XML::Parser::Context.string(xml)
30
+ assert_equal(LibXML::XML::Encoding::NONE, context.encoding)
31
+
32
+ context.encoding = LibXML::XML::Encoding::ISO_8859_1
33
+ assert_equal(LibXML::XML::Encoding::ISO_8859_1, context.encoding)
34
+ end
35
+
36
+ def test_invalid_encoding
37
+ # UTF8
38
+ xml = <<-EOS
39
+ <bands>
40
+ <metal>m\303\266tley_cr\303\274e</metal>
41
+ </bands>
42
+ EOS
43
+
44
+ context = LibXML::XML::Parser::Context.string(xml)
45
+
46
+ error = assert_raises(ArgumentError) do
47
+ context.encoding = -999
48
+ end
49
+ assert_equal("Unknown encoding: -999", error.to_s)
50
+ end
51
+
52
+ def test_base_uri
53
+ # UTF8
54
+ xml = <<-EOS
55
+ <bands>
56
+ <metal>m\303\266tley_cr\303\274e</metal>
57
+ </bands>
58
+ EOS
59
+
60
+ context = LibXML::XML::Parser::Context.string(xml)
61
+ assert_nil(context.base_uri)
62
+
63
+ context.base_uri = 'http://libxml.rubyforge.org'
64
+ assert_equal('http://libxml.rubyforge.org', context.base_uri)
65
+ end
66
+
67
+ def test_string_empty
68
+ error = assert_raises(TypeError) do
69
+ LibXML::XML::Parser::Context.string(nil)
70
+ end
71
+ assert_equal("wrong argument type nil (expected String)", error.to_s)
72
+
73
+ error = assert_raises(ArgumentError) do
74
+ LibXML::XML::Parser::Context.string('')
75
+ end
76
+ assert_equal("Must specify a string with one or more characters", error.to_s)
77
+ end
78
+
79
+ def test_well_formed
80
+ parser = LibXML::XML::Parser.string("<abc/>")
81
+ parser.parse
82
+ assert(parser.context.well_formed?)
83
+ end
84
+
85
+ def test_not_well_formed
86
+ parser = LibXML::XML::Parser.string("<abc>")
87
+ assert_raises(LibXML::XML::Error) do
88
+ parser.parse
89
+ end
90
+ assert(!parser.context.well_formed?)
91
+ end
92
+
93
+ def test_version_info
94
+ file = File.expand_path(File.join(File.dirname(__FILE__), 'model/bands.utf-8.xml'))
95
+ parser = LibXML::XML::Parser.file(file)
96
+ assert_nil(parser.context.version)
97
+ parser.parse
98
+ assert_equal("1.0", parser.context.version)
99
+ end
100
+
101
+ def test_depth
102
+ context = LibXML::XML::Parser::Context.new
103
+ assert_instance_of(Integer, context.depth)
104
+ end
105
+
106
+ def test_disable_sax
107
+ context = LibXML::XML::Parser::Context.new
108
+ assert(!context.disable_sax?)
109
+ end
110
+
111
+ def test_docbook
112
+ context = LibXML::XML::Parser::Context.new
113
+ assert(!context.docbook?)
114
+ end
115
+
116
+ def test_html
117
+ context = LibXML::XML::Parser::Context.new
118
+ assert(!context.html?)
119
+ end
120
+
121
+ def test_keep_blanks
122
+ context = LibXML::XML::Parser::Context.new
123
+ if context.keep_blanks?
124
+ assert_instance_of(TrueClass, context.keep_blanks?)
125
+ else
126
+ assert_instance_of(FalseClass, context.keep_blanks?)
127
+ end
128
+ end
129
+
130
+ def test_replace_entities
131
+ context = LibXML::XML::Parser::Context.new
132
+ assert(!context.replace_entities?)
133
+
134
+ context.options = LibXML::XML::Parser::Options::NOENT
135
+ assert(context.replace_entities?)
136
+
137
+ context.options = 0
138
+ assert(!context.replace_entities?)
139
+
140
+ context.replace_entities = true
141
+ assert(context.replace_entities?)
142
+ end
143
+
144
+ def test_space_depth
145
+ context = LibXML::XML::Parser::Context.new
146
+ assert_equal(1, context.space_depth)
147
+ end
148
+
149
+ def test_subset_external
150
+ context = LibXML::XML::Parser::Context.new
151
+ assert(!context.subset_external?)
152
+ end
153
+
154
+ def test_data_directory_get
155
+ context = LibXML::XML::Parser::Context.new
156
+ assert_nil(context.data_directory)
157
+ end
158
+
159
+ def test_parse_error
160
+ xp = LibXML::XML::Parser.string('<foo><bar/></foz>')
161
+
162
+ assert_raises(LibXML::XML::Error) do
163
+ xp.parse
164
+ end
165
+
166
+ # Now check context
167
+ context = xp.context
168
+ assert_nil(context.data_directory)
169
+ assert_equal(0, context.depth)
170
+ assert_equal(true, context.disable_sax?)
171
+ assert_equal(false, context.docbook?)
172
+ assert_equal(LibXML::XML::Encoding::NONE, context.encoding)
173
+ assert_equal(76, context.errno)
174
+ assert_equal(false, context.html?)
175
+ assert_equal(5, context.io_max_num_streams)
176
+ assert_equal(1, context.io_num_streams)
177
+ assert_equal(true, context.keep_blanks?)
178
+ assert_equal(1, context.io_num_streams)
179
+ assert_nil(context.name_node)
180
+ assert_equal(0, context.name_depth)
181
+ assert_equal(10, context.name_depth_max)
182
+ assert([0, 17].include?(context.num_chars))
183
+ assert_equal(false, context.replace_entities?)
184
+ assert_equal(1, context.space_depth)
185
+ assert_equal(10, context.space_depth_max)
186
+ assert_equal(false, context.subset_external?)
187
+ assert_nil(context.subset_external_system_id)
188
+ assert_nil(context.subset_external_uri)
189
+ assert_equal(false, context.subset_internal?)
190
+ assert_nil(context.subset_internal_name)
191
+ assert_equal(false, context.stats?)
192
+ assert_equal(true, context.standalone?)
193
+ assert_equal(false, context.valid)
194
+ assert_equal(false, context.validate?)
195
+ assert_equal('1.0', context.version)
196
+ assert_equal(false, context.well_formed?)
197
+ end
198
+ end
@@ -1,38 +1,38 @@
1
- # encoding: UTF-8
2
-
3
- require_relative './test_helper'
4
-
5
-
6
- # attributes is deprecated - use attributes instead.
7
- # Tests for backwards compatibility
8
-
9
- class Testattributes < Minitest::Test
10
- def setup()
11
- xp = LibXML::XML::Parser.string('<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>')
12
- @doc = xp.parse
13
- end
14
-
15
- def teardown()
16
- @doc = nil
17
- end
18
-
19
- def test_traversal
20
- attributes = @doc.root.attributes
21
-
22
- assert_instance_of(LibXML::XML::Attributes, attributes)
23
- attribute = attributes.first
24
- assert_equal('uga', attribute.name)
25
- assert_equal('booga', attribute.value)
26
-
27
- attribute = attribute.next
28
- assert_instance_of(LibXML::XML::Attr, attribute)
29
- assert_equal('foo', attribute.name)
30
- assert_equal('bar', attribute.value)
31
- end
32
-
33
- def test_no_attributes
34
- attributes = @doc.root.child.attributes
35
- assert_instance_of(LibXML::XML::Attributes, attributes)
36
- assert_equal(0, attributes.length)
37
- end
38
- end
1
+ # encoding: UTF-8
2
+
3
+ require_relative './test_helper'
4
+
5
+
6
+ # attributes is deprecated - use attributes instead.
7
+ # Tests for backwards compatibility
8
+
9
+ class Testattributes < Minitest::Test
10
+ def setup()
11
+ xp = LibXML::XML::Parser.string('<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>')
12
+ @doc = xp.parse
13
+ end
14
+
15
+ def teardown()
16
+ @doc = nil
17
+ end
18
+
19
+ def test_traversal
20
+ attributes = @doc.root.attributes
21
+
22
+ assert_instance_of(LibXML::XML::Attributes, attributes)
23
+ attribute = attributes.first
24
+ assert_equal('uga', attribute.name)
25
+ assert_equal('booga', attribute.value)
26
+
27
+ attribute = attribute.next
28
+ assert_instance_of(LibXML::XML::Attr, attribute)
29
+ assert_equal('foo', attribute.name)
30
+ assert_equal('bar', attribute.value)
31
+ end
32
+
33
+ def test_no_attributes
34
+ attributes = @doc.root.child.attributes
35
+ assert_instance_of(LibXML::XML::Attributes, attributes)
36
+ assert_equal(0, attributes.length)
37
+ end
38
+ end