libxml-ruby 2.8.0 → 3.2.1

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 (204) hide show
  1. checksums.yaml +5 -5
  2. data/HISTORY +842 -775
  3. data/LICENSE +20 -20
  4. data/MANIFEST +166 -166
  5. data/README.rdoc +217 -184
  6. data/Rakefile +90 -78
  7. data/ext/libxml/extconf.h +3 -0
  8. data/ext/libxml/extconf.rb +61 -116
  9. data/ext/libxml/libxml.c +80 -76
  10. data/ext/libxml/ruby_libxml.h +67 -75
  11. data/ext/libxml/ruby_xml.c +933 -893
  12. data/ext/libxml/ruby_xml.h +10 -10
  13. data/ext/libxml/ruby_xml_attr.c +333 -333
  14. data/ext/libxml/ruby_xml_attr.h +12 -12
  15. data/ext/libxml/ruby_xml_attr_decl.c +153 -153
  16. data/ext/libxml/ruby_xml_attr_decl.h +11 -11
  17. data/ext/libxml/ruby_xml_attributes.c +275 -275
  18. data/ext/libxml/ruby_xml_attributes.h +15 -15
  19. data/ext/libxml/ruby_xml_cbg.c +85 -85
  20. data/ext/libxml/ruby_xml_document.c +1123 -1147
  21. data/ext/libxml/ruby_xml_document.h +11 -11
  22. data/ext/libxml/ruby_xml_dtd.c +248 -268
  23. data/ext/libxml/ruby_xml_dtd.h +9 -9
  24. data/ext/libxml/ruby_xml_encoding.c +250 -260
  25. data/ext/libxml/ruby_xml_encoding.h +16 -19
  26. data/ext/libxml/ruby_xml_error.c +996 -996
  27. data/ext/libxml/ruby_xml_error.h +12 -12
  28. data/ext/libxml/ruby_xml_html_parser.c +89 -92
  29. data/ext/libxml/ruby_xml_html_parser.h +10 -10
  30. data/ext/libxml/ruby_xml_html_parser_context.c +337 -338
  31. data/ext/libxml/ruby_xml_html_parser_context.h +10 -10
  32. data/ext/libxml/ruby_xml_html_parser_options.c +46 -46
  33. data/ext/libxml/ruby_xml_html_parser_options.h +10 -10
  34. data/ext/libxml/ruby_xml_input_cbg.c +191 -191
  35. data/ext/libxml/ruby_xml_input_cbg.h +20 -20
  36. data/ext/libxml/ruby_xml_io.c +47 -50
  37. data/ext/libxml/ruby_xml_io.h +10 -10
  38. data/ext/libxml/ruby_xml_namespace.c +153 -153
  39. data/ext/libxml/ruby_xml_namespace.h +10 -10
  40. data/ext/libxml/ruby_xml_namespaces.c +293 -293
  41. data/ext/libxml/ruby_xml_namespaces.h +9 -9
  42. data/ext/libxml/ruby_xml_node.c +1402 -1452
  43. data/ext/libxml/ruby_xml_node.h +13 -11
  44. data/ext/libxml/ruby_xml_parser.c +91 -94
  45. data/ext/libxml/ruby_xml_parser.h +12 -12
  46. data/ext/libxml/ruby_xml_parser_context.c +999 -1001
  47. data/ext/libxml/ruby_xml_parser_context.h +10 -10
  48. data/ext/libxml/ruby_xml_parser_options.c +66 -66
  49. data/ext/libxml/ruby_xml_parser_options.h +12 -12
  50. data/ext/libxml/ruby_xml_reader.c +1239 -1228
  51. data/ext/libxml/ruby_xml_reader.h +17 -17
  52. data/ext/libxml/ruby_xml_relaxng.c +110 -111
  53. data/ext/libxml/ruby_xml_relaxng.h +10 -10
  54. data/ext/libxml/ruby_xml_sax2_handler.c +326 -328
  55. data/ext/libxml/ruby_xml_sax2_handler.h +10 -10
  56. data/ext/libxml/ruby_xml_sax_parser.c +116 -120
  57. data/ext/libxml/ruby_xml_sax_parser.h +10 -10
  58. data/ext/libxml/ruby_xml_schema.c +278 -301
  59. data/ext/libxml/ruby_xml_schema.h +809 -809
  60. data/ext/libxml/ruby_xml_schema_attribute.c +109 -109
  61. data/ext/libxml/ruby_xml_schema_attribute.h +15 -15
  62. data/ext/libxml/ruby_xml_schema_element.c +95 -94
  63. data/ext/libxml/ruby_xml_schema_element.h +14 -14
  64. data/ext/libxml/ruby_xml_schema_facet.c +52 -52
  65. data/ext/libxml/ruby_xml_schema_facet.h +13 -13
  66. data/ext/libxml/ruby_xml_schema_type.c +232 -259
  67. data/ext/libxml/ruby_xml_schema_type.h +9 -9
  68. data/ext/libxml/ruby_xml_version.h +9 -9
  69. data/ext/libxml/ruby_xml_writer.c +1133 -1137
  70. data/ext/libxml/ruby_xml_writer.h +10 -10
  71. data/ext/libxml/ruby_xml_xinclude.c +16 -16
  72. data/ext/libxml/ruby_xml_xinclude.h +11 -11
  73. data/ext/libxml/ruby_xml_xpath.c +194 -188
  74. data/ext/libxml/ruby_xml_xpath.h +13 -13
  75. data/ext/libxml/ruby_xml_xpath_context.c +360 -361
  76. data/ext/libxml/ruby_xml_xpath_context.h +9 -9
  77. data/ext/libxml/ruby_xml_xpath_expression.c +81 -81
  78. data/ext/libxml/ruby_xml_xpath_expression.h +10 -10
  79. data/ext/libxml/ruby_xml_xpath_object.c +338 -335
  80. data/ext/libxml/ruby_xml_xpath_object.h +17 -17
  81. data/ext/libxml/ruby_xml_xpointer.c +99 -99
  82. data/ext/libxml/ruby_xml_xpointer.h +11 -11
  83. data/ext/vc/libxml_ruby.sln +17 -15
  84. data/lib/libxml-ruby.rb +30 -0
  85. data/lib/libxml.rb +3 -33
  86. data/lib/libxml/node.rb +2 -78
  87. data/lib/libxml/parser.rb +0 -266
  88. data/lib/libxml/sax_parser.rb +0 -17
  89. data/lib/libxml/schema.rb +47 -66
  90. data/lib/libxml/schema/attribute.rb +19 -19
  91. data/lib/libxml/schema/element.rb +19 -27
  92. data/lib/libxml/schema/type.rb +21 -29
  93. data/libxml-ruby.gemspec +48 -44
  94. data/script/benchmark/depixelate +634 -634
  95. data/script/benchmark/hamlet.xml +9054 -9054
  96. data/script/benchmark/parsecount +170 -170
  97. data/script/benchmark/throughput +41 -41
  98. data/script/test +6 -6
  99. data/setup.rb +0 -1
  100. data/test/c14n/given/example-1.xml +14 -14
  101. data/test/c14n/given/example-2.xml +11 -11
  102. data/test/c14n/given/example-3.xml +18 -18
  103. data/test/c14n/given/example-4.xml +9 -9
  104. data/test/c14n/given/example-5.xml +12 -12
  105. data/test/c14n/given/example-6.xml +2 -2
  106. data/test/c14n/given/example-7.xml +11 -11
  107. data/test/c14n/given/example-8.xml +11 -11
  108. data/test/c14n/given/example-8.xpath +9 -9
  109. data/test/c14n/result/1-1-without-comments/example-1 +3 -3
  110. data/test/c14n/result/1-1-without-comments/example-2 +10 -10
  111. data/test/c14n/result/1-1-without-comments/example-3 +13 -13
  112. data/test/c14n/result/1-1-without-comments/example-4 +8 -8
  113. data/test/c14n/result/1-1-without-comments/example-5 +2 -2
  114. data/test/c14n/result/with-comments/example-1 +5 -5
  115. data/test/c14n/result/with-comments/example-2 +10 -10
  116. data/test/c14n/result/with-comments/example-3 +13 -13
  117. data/test/c14n/result/with-comments/example-4 +8 -8
  118. data/test/c14n/result/with-comments/example-5 +3 -3
  119. data/test/c14n/result/without-comments/example-1 +3 -3
  120. data/test/c14n/result/without-comments/example-2 +10 -10
  121. data/test/c14n/result/without-comments/example-3 +13 -13
  122. data/test/c14n/result/without-comments/example-4 +8 -8
  123. data/test/c14n/result/without-comments/example-5 +2 -2
  124. data/test/model/atom.xml +12 -12
  125. data/test/model/bands.iso-8859-1.xml +4 -4
  126. data/test/model/bands.utf-8.xml +4 -4
  127. data/test/model/bands.xml +4 -4
  128. data/test/model/books.xml +153 -153
  129. data/test/model/cwm_1_0.xml +11336 -0
  130. data/test/model/merge_bug_data.xml +58 -58
  131. data/test/model/ruby-lang.html +238 -238
  132. data/test/model/rubynet.xml +79 -79
  133. data/test/model/shiporder.rnc +28 -28
  134. data/test/model/shiporder.rng +86 -86
  135. data/test/model/shiporder.xml +22 -22
  136. data/test/model/shiporder.xsd +39 -39
  137. data/test/model/soap.xml +27 -27
  138. data/test/model/xinclude.xml +4 -4
  139. data/test/test.xml +2 -0
  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} +32 -27
  146. data/test/test_document_write.rb +146 -0
  147. data/test/{tc_dtd.rb → test_dtd.rb} +28 -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 +3 -10
  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} +41 -42
  167. data/test/{tc_properties.rb → test_properties.rb} +6 -7
  168. data/test/test_reader.rb +363 -0
  169. data/test/test_relaxng.rb +53 -0
  170. data/test/{tc_sax_parser.rb → test_sax_parser.rb} +36 -37
  171. data/test/{tc_schema.rb → test_schema.rb} +43 -37
  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 +262 -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 +117 -95
  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_xml.rb +0 -226
  204. data/test/tc_xpath_expression.rb +0 -38
@@ -0,0 +1,12 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'xml/libxml'
4
+
5
+ class TestDeprecatedRequire < Minitest::Test
6
+ def test_basic
7
+ xp = LibXML::XML::Parser.string('<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>')
8
+ assert_instance_of(LibXML::XML::Parser, xp)
9
+ @doc = xp.parse
10
+ assert_instance_of(LibXML::XML::Document, @doc)
11
+ end
12
+ end
@@ -1,13 +1,12 @@
1
1
  # encoding: UTF-8
2
- require './test_helper'
3
- require 'test/unit'
2
+ require_relative './test_helper'
4
3
 
5
- class TestDocument < Test::Unit::TestCase
4
+ class TestDocument < Minitest::Test
6
5
  def setup
7
- xp = XML::Parser.string('<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>')
8
- assert_instance_of(XML::Parser, xp)
6
+ xp = LibXML::XML::Parser.string('<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>')
7
+ assert_instance_of(LibXML::XML::Parser, xp)
9
8
  @doc = xp.parse
10
- assert_instance_of(XML::Document, @doc)
9
+ assert_instance_of(LibXML::XML::Document, @doc)
11
10
  end
12
11
 
13
12
  def teardown
@@ -15,24 +14,24 @@ class TestDocument < Test::Unit::TestCase
15
14
  end
16
15
 
17
16
  def test_klass
18
- assert_instance_of(XML::Document, @doc)
17
+ assert_instance_of(LibXML::XML::Document, @doc)
19
18
  end
20
19
 
21
20
  def test_context
22
21
  context = @doc.context
23
- assert_instance_of(XML::XPath::Context, context)
22
+ assert_instance_of(LibXML::XML::XPath::Context, context)
24
23
  end
25
24
 
26
25
  def test_find
27
26
  set = @doc.find('/ruby_array/fixnum')
28
- assert_instance_of(XML::XPath::Object, set)
29
- assert_raise(NoMethodError) {
30
- xpt = set.xpath
27
+ assert_instance_of(LibXML::XML::XPath::Object, set)
28
+ assert_raises(NoMethodError) {
29
+ set.xpath
31
30
  }
32
31
  end
33
32
 
34
33
  def test_compression
35
- if XML.enabled_zlib?
34
+ if LibXML::XML.enabled_zlib?
36
35
  0.upto(9) do |i|
37
36
  assert_equal(i, @doc.compression = i)
38
37
  assert_equal(i, @doc.compression)
@@ -60,41 +59,41 @@ class TestDocument < Test::Unit::TestCase
60
59
  def test_version
61
60
  assert_equal('1.0', @doc.version)
62
61
 
63
- doc = XML::Document.new('6.9')
62
+ doc = LibXML::XML::Document.new('6.9')
64
63
  assert_equal('6.9', doc.version)
65
64
  end
66
65
 
67
66
  def test_write_root
68
- @doc.root = XML::Node.new('rubynet')
69
- assert_instance_of(XML::Node, @doc.root)
70
- assert_instance_of(XML::Document, @doc.root.doc)
67
+ @doc.root = LibXML::XML::Node.new('rubynet')
68
+ assert_instance_of(LibXML::XML::Node, @doc.root)
69
+ assert_instance_of(LibXML::XML::Document, @doc.root.doc)
71
70
  assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rubynet/>\n",
72
71
  @doc.to_s(:indent => false))
73
72
  end
74
73
 
75
74
  def test_doc_node_type
76
- assert_equal(XML::Node::DOCUMENT_NODE, XML::Document.new.node_type)
75
+ assert_equal(LibXML::XML::Node::DOCUMENT_NODE, LibXML::XML::Document.new.node_type)
77
76
  end
78
77
 
79
78
  def test_doc_node_type_name
80
- assert_equal('document_xml', XML::Document.new.node_type_name)
79
+ assert_equal('document_xml', LibXML::XML::Document.new.node_type_name)
81
80
  end
82
81
 
83
82
  def test_xhtml
84
- doc = XML::Document.new
83
+ doc = LibXML::XML::Document.new
85
84
  assert(!doc.xhtml?)
86
- XML::Dtd.new "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", nil, doc, true
85
+ LibXML::XML::Dtd.new "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", nil, doc, true
87
86
  assert(doc.xhtml?)
88
- end
87
+ end
89
88
 
90
89
  def test_document_root
91
90
  doc1 = LibXML::XML::Document.string("<one/>")
92
91
  doc2 = LibXML::XML::Document.string("<two/>")
93
92
 
94
- error = assert_raise(XML::Error) do
93
+ error = assert_raises(LibXML::XML::Error) do
95
94
  doc1.root = doc2.root
96
95
  end
97
- assert_equal(" Nodes belong to different documents. You must first import the node by calling XML::Document.import.",
96
+ assert_equal(" Nodes belong to different documents. You must first import the node by calling LibXML::XML::Document.import.",
98
97
  error.to_s)
99
98
 
100
99
  doc2.root << doc2.import(doc1.root)
@@ -106,16 +105,16 @@ class TestDocument < Test::Unit::TestCase
106
105
  end
107
106
 
108
107
  def test_import_node
109
- doc1 = XML::Parser.string('<nums><one></one></nums>').parse
110
- doc2 = XML::Parser.string('<nums><two></two></nums>').parse
108
+ doc1 = LibXML::XML::Parser.string('<nums><one></one></nums>').parse
109
+ doc2 = LibXML::XML::Parser.string('<nums><two></two></nums>').parse
111
110
 
112
111
  node = doc1.root.child
113
112
 
114
- error = assert_raise(XML::Error) do
113
+ error = assert_raises(LibXML::XML::Error) do
115
114
  doc2.root << node
116
115
  end
117
116
 
118
- assert_equal(" Nodes belong to different documents. You must first import the node by calling XML::Document.import.",
117
+ assert_equal(" Nodes belong to different documents. You must first import the node by calling LibXML::XML::Document.import.",
119
118
  error.to_s)
120
119
 
121
120
  doc2.root << doc2.import(node)
@@ -123,4 +122,10 @@ class TestDocument < Test::Unit::TestCase
123
122
  assert_equal("<nums><two/><one/></nums>",
124
123
  doc2.root.to_s(:indent => false))
125
124
  end
125
+
126
+ def test_nonet
127
+ xml_string = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
128
+ xml = LibXML::XML::Document.string(xml_string, options: LibXML::XML::Parser::Options::NONET)
129
+ schema_document = LibXML::XML::Document.file('d:/src/libxml-ruby/test/model/atom.xml', options: LibXML::XML::Parser::Options::NONET)
130
+ end
126
131
  end
@@ -0,0 +1,146 @@
1
+ # encoding: UTF-8
2
+
3
+ require_relative './test_helper'
4
+ require 'tmpdir'
5
+
6
+ class TestDocumentWrite < Minitest::Test
7
+ def setup
8
+ @file_name = "model/bands.utf-8.xml"
9
+
10
+ # Strip spaces to make testing easier
11
+ LibXML::XML.default_keep_blanks = false
12
+ file = File.join(File.dirname(__FILE__), @file_name)
13
+ @doc = LibXML::XML::Document.file(file)
14
+ end
15
+
16
+ def teardown
17
+ LibXML::XML.default_keep_blanks = true
18
+ @doc = nil
19
+ end
20
+
21
+ # --- to_s tests ---
22
+ def test_to_s_default
23
+ # Default to_s has indentation
24
+ assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bands genre=\"metal\">\n <m\u00F6tley_cr\u00FCe country=\"us\">M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\u00F6tley_cr\u00FCe>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n",
25
+ @doc.to_s)
26
+ end
27
+
28
+ def test_to_s_no_global_indentation
29
+ # No indentation due to global setting
30
+ LibXML::XML.indent_tree_output = false
31
+ value = @doc.to_s
32
+
33
+ assert_equal(Encoding::UTF_8, value.encoding)
34
+ assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bands genre=\"metal\">\n<m\u00F6tley_cr\u00FCe country=\"us\">M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\u00F6tley_cr\u00FCe>\n<iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n",
35
+ value)
36
+ ensure
37
+ LibXML::XML.indent_tree_output = true
38
+ end
39
+
40
+ def test_to_s_no_indentation
41
+ # No indentation due to local setting
42
+ value = @doc.to_s(:indent => false)
43
+ assert_equal(Encoding::UTF_8, value.encoding)
44
+ assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bands genre=\"metal\"><m\u00F6tley_cr\u00FCe country=\"us\">M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\u00F6tley_cr\u00FCe><iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden></bands>\n",
45
+ value)
46
+ end
47
+
48
+ def test_to_s_encoding
49
+ # Test encodings
50
+
51
+ # UTF8:
52
+ # ö - c3 b6 in hex, \303\266 in octal
53
+ # ü - c3 bc in hex, \303\274 in octal
54
+ value = @doc.to_s(:encoding => LibXML::XML::Encoding::UTF_8)
55
+ assert_equal(Encoding::UTF_8, value.encoding)
56
+ assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bands genre=\"metal\">\n <m\u00F6tley_cr\u00FCe country=\"us\">M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\u00F6tley_cr\u00FCe>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n",
57
+ value)
58
+
59
+ # ISO_8859_1:
60
+ # ö - f6 in hex, \366 in octal
61
+ # ü - fc in hex, \374 in octal
62
+ value = @doc.to_s(:encoding => LibXML::XML::Encoding::ISO_8859_1)
63
+ assert_equal(Encoding::ISO8859_1, value.encoding)
64
+ assert_equal("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<bands genre=\"metal\">\n <m\xF6tley_cr\xFCe country=\"us\">M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\xF6tley_cr\xFCe>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n".force_encoding(Encoding::ISO8859_1),
65
+ @doc.to_s(:encoding => LibXML::XML::Encoding::ISO_8859_1))
66
+
67
+ # Invalid encoding
68
+ error = assert_raises(ArgumentError) do
69
+ @doc.to_s(:encoding => -9999)
70
+ end
71
+ assert_equal('Unknown encoding value: -9999', error.to_s)
72
+ end
73
+
74
+ # --- save tests -----
75
+ def test_save_utf8
76
+ temp_filename = File.join(Dir.tmpdir, "tc_document_write_test_save_utf8.xml")
77
+
78
+ bytes = @doc.save(temp_filename)
79
+ assert_equal(305, bytes)
80
+
81
+ contents = File.read(temp_filename, nil, nil, :encoding => Encoding::UTF_8)
82
+ assert_equal(Encoding::UTF_8, contents.encoding)
83
+ assert_equal("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<bands genre=\"metal\">\n <m\u00F6tley_cr\u00FCe country=\"us\">M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\u00F6tley_cr\u00FCe>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n",
84
+ contents)
85
+ ensure
86
+ File.delete(temp_filename)
87
+ end
88
+
89
+ def test_save_utf8_no_indents
90
+ temp_filename = File.join(Dir.tmpdir, "tc_document_write_test_save_utf8_no_indents.xml")
91
+
92
+ bytes = @doc.save(temp_filename, :indent => false)
93
+ assert_equal(298, bytes)
94
+
95
+ contents = File.read(temp_filename, nil, nil, :encoding => Encoding::UTF_8)
96
+ assert_equal("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<bands genre=\"metal\"><m\u00F6tley_cr\u00FCe country=\"us\">M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\u00F6tley_cr\u00FCe><iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden></bands>\n",
97
+ contents)
98
+ ensure
99
+ File.delete(temp_filename)
100
+ end
101
+
102
+ def test_save_iso_8859_1
103
+ temp_filename = File.join(Dir.tmpdir, "tc_document_write_test_save_iso_8859_1.xml")
104
+ bytes = @doc.save(temp_filename, :encoding => LibXML::XML::Encoding::ISO_8859_1)
105
+ assert_equal(304, bytes)
106
+
107
+ contents = File.read(temp_filename, nil, nil, :encoding => Encoding::ISO8859_1)
108
+ assert_equal(Encoding::ISO8859_1, contents.encoding)
109
+ assert_equal("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<bands genre=\"metal\">\n <m\xF6tley_cr\xFCe country=\"us\">M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\xF6tley_cr\xFCe>\n <iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden>\n</bands>\n".force_encoding(Encoding::ISO8859_1),
110
+ contents)
111
+ ensure
112
+ File.delete(temp_filename)
113
+ end
114
+
115
+ def test_save_iso_8859_1_no_indent
116
+ temp_filename = File.join(Dir.tmpdir, "tc_document_write_test_save_iso_8859_1_no_indent.xml")
117
+ bytes = @doc.save(temp_filename, :indent => false, :encoding => LibXML::XML::Encoding::ISO_8859_1)
118
+ assert_equal(297, bytes)
119
+
120
+ contents = File.read(temp_filename, nil, nil, :encoding => Encoding::ISO8859_1)
121
+ assert_equal(Encoding::ISO8859_1, contents.encoding)
122
+ assert_equal("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<bands genre=\"metal\"><m\xF6tley_cr\xFCe country=\"us\">M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.</m\xF6tley_cr\xFCe><iron_maiden country=\"uk\">Iron Maiden is a British heavy metal band formed in 1975.</iron_maiden></bands>\n".force_encoding(Encoding::ISO8859_1),
123
+ contents)
124
+ ensure
125
+ File.delete(temp_filename)
126
+ end
127
+
128
+ def test_thread_set_root
129
+ # Previously a segmentation fault occurred when running libxml in
130
+ # background threads.
131
+ thread = Thread.new do
132
+ 100000.times do |i|
133
+ document = LibXML::XML::Document.new
134
+ node = LibXML::XML::Node.new('test')
135
+ document.root = node
136
+ end
137
+ end
138
+ thread.join
139
+ assert(true)
140
+ end
141
+
142
+ # --- Debug ---
143
+ def test_debug
144
+ assert(@doc.debug)
145
+ end
146
+ end
@@ -1,12 +1,11 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require './test_helper'
3
+ require_relative './test_helper'
4
4
 
5
- require 'test/unit'
6
5
 
7
- class TestDtd < Test::Unit::TestCase
6
+ class TestDtd < Minitest::Test
8
7
  def setup
9
- xp = XML::Parser.string(<<-EOS)
8
+ xp = LibXML::XML::Parser.string(<<-EOS)
10
9
  <root>
11
10
  <head a="ee" id="1">Colorado</head>
12
11
  <descr>Lots of nice mountains</descr>
@@ -20,7 +19,7 @@ class TestDtd < Test::Unit::TestCase
20
19
  end
21
20
 
22
21
  def dtd
23
- XML::Dtd.new(<<-EOS)
22
+ LibXML::XML::Dtd.new(<<-EOS)
24
23
  <!ELEMENT root (head, descr)>
25
24
  <!ELEMENT head (#PCDATA)>
26
25
  <!ATTLIST head
@@ -32,64 +31,64 @@ class TestDtd < Test::Unit::TestCase
32
31
  end
33
32
 
34
33
  def test_internal_subset
35
- xhtml_dtd = XML::Dtd.new "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", nil, nil, true
34
+ xhtml_dtd = LibXML::XML::Dtd.new "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", nil, nil, true
36
35
  assert xhtml_dtd.name.nil?
37
36
  assert_equal "-//W3C//DTD XHTML 1.0 Transitional//EN", xhtml_dtd.external_id
38
37
  assert_equal "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", xhtml_dtd.uri
39
38
  assert_equal "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", xhtml_dtd.system_id
40
39
 
41
- xhtml_dtd = XML::Dtd.new "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", "xhtml1", nil, true
40
+ xhtml_dtd = LibXML::XML::Dtd.new "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", "xhtml1", nil, true
42
41
  assert_equal "xhtml1", xhtml_dtd.name
43
42
  assert_equal "-//W3C//DTD XHTML 1.0 Transitional//EN", xhtml_dtd.external_id
44
43
  assert_equal "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", xhtml_dtd.uri
45
44
  assert_equal "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", xhtml_dtd.system_id
46
- end
45
+ end
47
46
 
48
47
  def test_external_subset
49
- xhtml_dtd = XML::Dtd.new "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", nil
48
+ xhtml_dtd = LibXML::XML::Dtd.new "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", nil
50
49
  assert xhtml_dtd.name.nil?
51
50
  assert_equal "-//W3C//DTD XHTML 1.0 Transitional//EN", xhtml_dtd.external_id
52
51
  assert_equal "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", xhtml_dtd.uri
53
52
  assert_equal "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", xhtml_dtd.system_id
54
53
 
55
- xhtml_dtd = XML::Dtd.new "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", "xhtml1"
54
+ xhtml_dtd = LibXML::XML::Dtd.new "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", "xhtml1"
56
55
  assert_equal "xhtml1", xhtml_dtd.name
57
56
  assert_equal "-//W3C//DTD XHTML 1.0 Transitional//EN", xhtml_dtd.external_id
58
57
  assert_equal "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", xhtml_dtd.uri
59
58
  assert_equal "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", xhtml_dtd.system_id
60
- end
59
+ end
61
60
 
62
61
  def test_valid
63
62
  assert(@doc.validate(dtd))
64
63
  end
65
64
 
66
65
  def test_node_type
67
- assert_equal(XML::Node::DTD_NODE, dtd.node_type)
66
+ assert_equal(LibXML::XML::Node::DTD_NODE, dtd.node_type)
68
67
  end
69
68
 
70
69
  def test_invalid
71
- new_node = XML::Node.new('invalid', 'this will mess up validation')
70
+ new_node = LibXML::XML::Node.new('invalid', 'this will mess up validation')
72
71
  @doc.root << new_node
73
72
 
74
- error = assert_raise(XML::Error) do
73
+ error = assert_raises(LibXML::XML::Error) do
75
74
  @doc.validate(dtd)
76
75
  end
77
76
 
78
77
  # Check the error worked
79
- assert_not_nil(error)
80
- assert_kind_of(XML::Error, error)
78
+ refute_nil(error)
79
+ assert_kind_of(LibXML::XML::Error, error)
81
80
  assert_equal("Error: No declaration for element invalid.", error.message)
82
- assert_equal(XML::Error::VALID, error.domain)
83
- assert_equal(XML::Error::DTD_UNKNOWN_ELEM, error.code)
84
- assert_equal(XML::Error::ERROR, error.level)
81
+ assert_equal(LibXML::XML::Error::VALID, error.domain)
82
+ assert_equal(LibXML::XML::Error::DTD_UNKNOWN_ELEM, error.code)
83
+ assert_equal(LibXML::XML::Error::ERROR, error.level)
85
84
  assert_nil(error.file)
86
85
  assert_nil(error.line)
87
86
  assert_equal('invalid', error.str1)
88
- assert_equal('invalid', error.str2)
87
+ assert_nil(error.str2)
89
88
  assert_nil(error.str3)
90
89
  assert_equal(0, error.int1)
91
90
  assert_equal(0, error.int2)
92
- assert_not_nil(error.node)
91
+ refute_nil(error.node)
93
92
  assert_equal('invalid', error.node.name)
94
93
  end
95
94
 
@@ -102,28 +101,28 @@ class TestDtd < Test::Unit::TestCase
102
101
  EOS
103
102
 
104
103
  errors = Array.new
105
- XML::Error.set_handler do |error|
104
+ LibXML::XML::Error.set_handler do |error|
106
105
  errors << error
107
106
  end
108
107
 
109
- XML.default_load_external_dtd = false
110
- doc = XML::Parser.string(xml).parse
108
+ LibXML::XML.default_load_external_dtd = false
109
+ LibXML::XML::Parser.string(xml).parse
111
110
  assert_equal(0, errors.length)
112
111
 
113
112
  errors.clear
114
- XML.default_load_external_dtd = true
115
- doc = XML::Parser.string(xml).parse
113
+ LibXML::XML.default_load_external_dtd = true
114
+ LibXML::XML::Parser.string(xml).parse
116
115
  assert_equal(1, errors.length)
117
116
  assert_equal("Warning: failed to load external entity \"test.dtd\" at :1.",
118
117
  errors[0].to_s)
119
118
 
120
119
  errors = Array.new
121
- doc = XML::Parser.string(xml, :options => XML::Parser::Options::DTDLOAD).parse
120
+ LibXML::XML::Parser.string(xml, :options => LibXML::XML::Parser::Options::DTDLOAD).parse
122
121
  assert_equal(1, errors.length)
123
122
  assert_equal("Warning: failed to load external entity \"test.dtd\" at :1.",
124
123
  errors[0].to_s)
125
124
  ensure
126
- XML.default_load_external_dtd = false
127
- XML::Error.reset_handler
125
+ LibXML::XML.default_load_external_dtd = false
126
+ LibXML::XML::Error.reset_handler
128
127
  end
129
128
  end
@@ -1,126 +1,129 @@
1
- # encoding: UTF-8
2
-
3
- require './test_helper'
4
- require 'test/unit'
5
-
6
- # Code UTF8 Latin1 Hex
7
- # m 109 109 6D
8
- # ö 195 182 246 C3 B6 / F6
9
- # t 116 116 74
10
- # l 108 108 6C
11
- # e 101 101 65
12
- # y 121 121 79
13
- # _ 95 95 5F
14
- # c 99 99 63
15
- # r 114 114 72
16
- # ü 195 188 252 C3 BC / FC
17
- # e 101 101 65
18
-
19
- # See:
20
- # http://en.wikipedia.org/wiki/ISO/IEC_8859-1
21
- # http://en.wikipedia.org/wiki/List_of_Unicode_characters
22
-
23
- class TestEncoding < Test::Unit::TestCase
24
- def setup
25
- Encoding.default_internal = nil
26
- end
27
-
28
- def file_for_encoding(encoding)
29
- file_name = "model/bands.#{encoding.name.downcase}.xml"
30
- File.join(File.dirname(__FILE__), file_name)
31
- end
32
-
33
- def load_encoding(encoding)
34
- @encoding = encoding
35
- file = file_for_encoding(encoding)
36
-
37
- # Strip spaces to make testing easier
38
- XML.default_keep_blanks = false
39
- @doc = XML::Document.file(file)
40
- end
41
-
42
- def test_encoding
43
- doc = XML::Document.new
44
- assert_equal(XML::Encoding::NONE, doc.encoding)
45
- assert_equal(Encoding::ASCII_8BIT, doc.rb_encoding) if defined?(Encoding)
46
-
47
- file = File.expand_path(File.join(File.dirname(__FILE__), 'model/bands.xml'))
48
- doc = XML::Document.file(file)
49
- assert_equal(XML::Encoding::UTF_8, doc.encoding)
50
- assert_equal(Encoding::UTF_8, doc.rb_encoding) if defined?(Encoding)
51
-
52
- doc.encoding = XML::Encoding::ISO_8859_1
53
- assert_equal(XML::Encoding::ISO_8859_1, doc.encoding)
54
- assert_equal(Encoding::ISO8859_1, doc.rb_encoding) if defined?(Encoding)
55
- end
56
-
57
- def test_no_internal_encoding_iso_8859_1
58
- Encoding.default_internal = nil
59
- load_encoding(Encoding::ISO_8859_1)
60
- node = @doc.root.children.first
61
-
62
- name = node.name
63
- assert_equal(Encoding::UTF_8, name.encoding)
64
- assert_equal("m\u00F6tley_cr\u00FCe", name)
65
- assert_equal("109 195 182 116 108 101 121 95 99 114 195 188 101",
66
- name.bytes.to_a.join(" "))
67
- assert_equal("M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.",
68
- node.content)
69
-
70
- name = name.encode(Encoding::ISO_8859_1)
71
- assert_equal(Encoding::ISO_8859_1, name.encoding)
72
- assert_equal("m\xF6tley_cr\xFCe".force_encoding(Encoding::ISO_8859_1), name)
73
- assert_equal("109 246 116 108 101 121 95 99 114 252 101",
74
- name.bytes.to_a.join(" "))
75
- assert_equal("M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.".force_encoding(Encoding::ISO_8859_1),
76
- node.content.encode(Encoding::ISO_8859_1))
77
- end
78
-
79
- def test_internal_encoding_iso_8859_1
80
- Encoding.default_internal = Encoding::ISO_8859_1
81
- load_encoding(Encoding::ISO_8859_1)
82
- node = @doc.root.children.first
83
-
84
- name = node.name
85
- assert_equal(Encoding::ISO_8859_1, name.encoding)
86
- assert_equal("109 246 116 108 101 121 95 99 114 252 101",
87
- name.bytes.to_a.join(" "))
88
- assert_equal("m\xF6tley_cr\xFCe".force_encoding(Encoding::ISO_8859_1), name)
89
- assert_equal("109 246 116 108 101 121 95 99 114 252 101",
90
- name.bytes.to_a.join(" "))
91
- assert_equal("M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.".force_encoding(Encoding::ISO_8859_1),
92
- node.content.encode(Encoding::ISO_8859_1))
93
- end
94
-
95
- def test_no_internal_encoding_utf_8
96
- Encoding.default_internal = nil
97
- load_encoding(Encoding::UTF_8)
98
- node = @doc.root.children.first
99
-
100
- name = node.name
101
- assert_equal(@encoding, name.encoding)
102
- assert_equal("109 195 182 116 108 101 121 95 99 114 195 188 101",
103
- name.bytes.to_a.join(" "))
104
-
105
- name = name.encode(Encoding::ISO_8859_1)
106
- assert_equal(Encoding::ISO_8859_1, name.encoding)
107
- assert_equal("109 246 116 108 101 121 95 99 114 252 101",
108
- name.bytes.to_a.join(" "))
109
- end
110
-
111
- def test_internal_encoding_utf_8
112
- Encoding.default_internal = Encoding::ISO_8859_1
113
- load_encoding(Encoding::UTF_8)
114
- node = @doc.root.children.first
115
-
116
- name = node.name
117
- assert_equal(Encoding::ISO_8859_1, name.encoding)
118
- assert_equal("109 246 116 108 101 121 95 99 114 252 101",
119
- name.bytes.to_a.join(" "))
120
- end
121
-
122
- def test_encoding_conversions
123
- assert_equal("UTF-8", XML::Encoding.to_s(XML::Encoding::UTF_8))
124
- assert_equal(XML::Encoding::UTF_8, XML::Encoding.from_s("UTF-8"))
125
- end
126
- end
1
+ # encoding: UTF-8
2
+
3
+ require_relative './test_helper'
4
+
5
+ # Code UTF8 Latin1 Hex
6
+ # m 109 109 6D
7
+ # ö 195 182 246 C3 B6 / F6
8
+ # t 116 116 74
9
+ # l 108 108 6C
10
+ # e 101 101 65
11
+ # y 121 121 79
12
+ # _ 95 95 5F
13
+ # c 99 99 63
14
+ # r 114 114 72
15
+ # ü 195 188 252 C3 BC / FC
16
+ # e 101 101 65
17
+
18
+ # See:
19
+ # http://en.wikipedia.org/wiki/ISO/IEC_8859-1
20
+ # http://en.wikipedia.org/wiki/List_of_Unicode_characters
21
+
22
+ class TestEncoding < Minitest::Test
23
+ def setup
24
+ @original_encoding = Encoding.default_internal
25
+ Encoding.default_internal = nil
26
+ end
27
+
28
+ def teardown
29
+ Encoding.default_internal = @original_encoding
30
+ end
31
+
32
+ def file_for_encoding(encoding)
33
+ file_name = "model/bands.#{encoding.name.downcase}.xml"
34
+ File.join(File.dirname(__FILE__), file_name)
35
+ end
36
+
37
+ def load_encoding(encoding)
38
+ @encoding = encoding
39
+ file = file_for_encoding(encoding)
40
+
41
+ # Strip spaces to make testing easier
42
+ LibXML::XML.default_keep_blanks = false
43
+ @doc = LibXML::XML::Document.file(file)
44
+ LibXML::XML.default_keep_blanks = true
45
+ end
46
+
47
+ def test_encoding
48
+ doc = LibXML::XML::Document.new
49
+ assert_equal(LibXML::XML::Encoding::NONE, doc.encoding)
50
+ assert_equal(Encoding::ASCII_8BIT, doc.rb_encoding)
51
+
52
+ file = File.expand_path(File.join(File.dirname(__FILE__), 'model/bands.xml'))
53
+ doc = LibXML::XML::Document.file(file)
54
+ assert_equal(LibXML::XML::Encoding::UTF_8, doc.encoding)
55
+ assert_equal(Encoding::UTF_8, doc.rb_encoding)
56
+
57
+ doc.encoding = LibXML::XML::Encoding::ISO_8859_1
58
+ assert_equal(LibXML::XML::Encoding::ISO_8859_1, doc.encoding)
59
+ assert_equal(Encoding::ISO8859_1, doc.rb_encoding)
60
+ end
61
+
62
+ def test_no_internal_encoding_iso_8859_1
63
+ load_encoding(Encoding::ISO_8859_1)
64
+ node = @doc.root.children.first
65
+
66
+ name = node.name
67
+ assert_equal(Encoding::UTF_8, name.encoding)
68
+ assert_equal("m\u00F6tley_cr\u00FCe", name)
69
+ assert_equal("109 195 182 116 108 101 121 95 99 114 195 188 101",
70
+ name.bytes.to_a.join(" "))
71
+ assert_equal("M\u00F6tley Cr\u00FCe is an American heavy metal band formed in Los Angeles, California in 1981.",
72
+ node.content)
73
+
74
+ name = name.encode(Encoding::ISO_8859_1)
75
+ assert_equal(Encoding::ISO_8859_1, name.encoding)
76
+ assert_equal("m\xF6tley_cr\xFCe".force_encoding(Encoding::ISO_8859_1), name)
77
+ assert_equal("109 246 116 108 101 121 95 99 114 252 101",
78
+ name.bytes.to_a.join(" "))
79
+ assert_equal("M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.".force_encoding(Encoding::ISO_8859_1),
80
+ node.content.encode(Encoding::ISO_8859_1))
81
+ end
82
+
83
+ def test_internal_encoding_iso_8859_1
84
+ Encoding.default_internal = Encoding::ISO_8859_1
85
+ load_encoding(Encoding::ISO_8859_1)
86
+ node = @doc.root.children.first
87
+
88
+ name = node.name
89
+ assert_equal(Encoding::ISO_8859_1, name.encoding)
90
+ assert_equal("109 246 116 108 101 121 95 99 114 252 101",
91
+ name.bytes.to_a.join(" "))
92
+ assert_equal("m\xF6tley_cr\xFCe".force_encoding(Encoding::ISO_8859_1), name)
93
+ assert_equal("109 246 116 108 101 121 95 99 114 252 101",
94
+ name.bytes.to_a.join(" "))
95
+ assert_equal("M\xF6tley Cr\xFCe is an American heavy metal band formed in Los Angeles, California in 1981.".force_encoding(Encoding::ISO_8859_1),
96
+ node.content.encode(Encoding::ISO_8859_1))
97
+ end
98
+
99
+ def test_no_internal_encoding_utf_8
100
+ load_encoding(Encoding::UTF_8)
101
+ node = @doc.root.children.first
102
+
103
+ name = node.name
104
+ assert_equal(@encoding, name.encoding)
105
+ assert_equal("109 195 182 116 108 101 121 95 99 114 195 188 101",
106
+ name.bytes.to_a.join(" "))
107
+
108
+ name = name.encode(Encoding::ISO_8859_1)
109
+ assert_equal(Encoding::ISO_8859_1, name.encoding)
110
+ assert_equal("109 246 116 108 101 121 95 99 114 252 101",
111
+ name.bytes.to_a.join(" "))
112
+ end
113
+
114
+ def test_internal_encoding_utf_8
115
+ Encoding.default_internal = Encoding::ISO_8859_1
116
+ load_encoding(Encoding::UTF_8)
117
+ node = @doc.root.children.first
118
+
119
+ name = node.name
120
+ assert_equal(Encoding::ISO_8859_1, name.encoding)
121
+ assert_equal("109 246 116 108 101 121 95 99 114 252 101",
122
+ name.bytes.to_a.join(" "))
123
+ end
124
+
125
+ def test_encoding_conversions
126
+ assert_equal("UTF-8", LibXML::XML::Encoding.to_s(LibXML::XML::Encoding::UTF_8))
127
+ assert_equal(LibXML::XML::Encoding::UTF_8, LibXML::XML::Encoding.from_s("UTF-8"))
128
+ end
129
+ end