libxml-ruby 2.8.0 → 3.2.1

Sign up to get free protection for your applications and to get access to all the features.
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